SQL Server 2008中的代碼平安(三) 經由過程PassPhrase加密。本站提示廣大學習愛好者:(SQL Server 2008中的代碼平安(三) 經由過程PassPhrase加密)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL Server 2008中的代碼平安(三) 經由過程PassPhrase加密正文
媒介:
在SQL Server 2005和SQL Server 2008之前。假如願望加密敏感數據,如財政信息、工資或身份證號,必需借助內部運用法式或算法。SQL Server 2005引入內建數據加密的才能,應用證書、密鑰和體系函數的組合來完成。
與數字證書相似。SQL Server 證書包含公鑰和私鑰這一對密鑰,它們都用來加密息爭密數據。SQL Server也具有創立非對稱密鑰和對稱密鑰對象的才能。非對稱密鑰(asymmetric key)與證書類似,公鑰用來加密數據庫,私鑰用來解密數據。非對稱密鑰和證書都供給了壯大的加密強度。但在完成龐雜的加密|解密進程中具有更多的機能開支。更合適對年夜量數據停止加密,且具有較低機能開支的處理計劃是對稱密鑰(symmetric key),它是對雷同數據停止加密息爭密的一個密鑰。
SQL Server許可將這些加密才能放到加密條理構造中。當裝置了SQL Server後,在數據庫master中創立名為辦事主密鑰的辦事器級別證書,並將其默綁定到SQL Server辦事賬號登錄名。辦事主密鑰用來加密一切其他數據庫證書和創立在SQL Server實例中的密鑰。別的,你也能夠在用戶數據庫中創立數據庫主密鑰(Database Master Key),它可以用來加密數據庫證書和密鑰。
在SQL Server 2008中,微軟引入了通明數據加密(TDE),它對全部數據庫停止加密,而不須要修正任何拜訪它的運用法式。數據、日記文件和相干的數據庫備份都是加密的。假設數據庫被偷,假如沒稀有據庫加密密鑰(DEK)是不克不及拜訪數據的。本文及前面幾篇文章將會舉例解釋。
在SQL Server 2008中,還引入了對可擴大密鑰治理(EKM)的支撐,也就意味著SQL Server可使用硬件平安模塊(HSM)來存儲和和治理加密密鑰。HSM可以削減數據和現實的加密密鑰耦合。
此部門內容共分六篇文章:
1、經由過程PassPhrase加密
2、主密鑰
3、非對稱密鑰加密
4、對稱密鑰加密
5、證書加密
6、通明數據加密
1、經由過程通行短語(PassPhrase)加密
關於不觸及證書及密鑰的應急的數據加密,可以直接基於用戶供給的暗碼來加密息爭密數據。通行短語(PassPhrase)是許可存在空格的暗碼。這個PassPhrase不會存儲在數據庫中,因此也就意味著不會被應用存儲的體系數據“破解”。同時,可使用空格創立一個長的、易於記憶的句子來加密息爭密敏感數據。
我們須要懂得的一對函數是ENCRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms190357.aspx)和DECRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms188910.aspx)
這一對函數必需應用雷同的參數。
我們看一個示例:
use DemoDB2008r2
go
-- Table used to store the encrypted data
-- for the purposes of this recipe
CREATE TABLE #SecretInfo
(MySecret varbinary(max) NOT NULL)
GO
INSERT #SecretInfo (MySecret)
SELECT EncryptByPassPhrase(
'My Password Used To Encrypt This String in 2008.',
'我把公司的辦事器數據庫暗碼記在誰人綠色的小簿子上了。')
SELECT MySecret FROM #SecretInfo
/*
平日的查詢成果:
0x01000000CCBC800C6B5CECE3F211FB975C2F8B681CC8301DDE74CF783C6A593
16C2BAC08D568151FD573E2FDE01C800805C8D1D5984727DEE95040C1FB604003
A3EFDD0444CE72D7E505D1A4
*/
/************
想曉得原文本的內容,應用以下語句:
[email protected]
**********************/
SELECT CAST(DecryptByPassPhrase(
'My Password Used To Encrypt This String in 2008.',
MySecret) as varchar(max))
FROM #SecretInfo
留意:
1、應用通行短語停止加密數據,不消擔憂sysadmin辦事器腳色成員讀取數據(在前面文章會看到,辦事器腳色成員sysadmin具有讀取其他情勢的加密數據的內涵權限。)
2、假定未將暗碼存儲在表中或在任何模塊(存儲進程、觸發器等)中應用暗碼,加密的數據將避免從數據庫備份被偷盜或在SQL Server實例中的數據庫中滲入滲出。假如通行短語沒有准確同享,數據便可以被解密。
邀月