SQL Server 2008中SQL應(yīng)用系列--目錄索引
導(dǎo)讀:本文主要涉及EncryptByPassPhrase和DecryptByPassPhrase函數(shù)進(jìn)行通行短語(yǔ)(PassPhrase)加密。
前言 :
在SQL Server 2005和SQL Server 2008之前。如果希望加密敏感數(shù)據(jù),如財(cái)務(wù)信息、工資或身份證號(hào),必須借助外部應(yīng)用程序或算法。SQL Server 2005引入內(nèi)建數(shù)據(jù)加密的能力,使用證書(shū)、密鑰和系統(tǒng)函數(shù)的組合來(lái)完成。
與數(shù)字證書(shū)類(lèi)似。SQL Server 證書(shū)包括公鑰和私鑰這一對(duì)密鑰,它們都用來(lái)加密和解密數(shù)據(jù)。SQL Server也擁有創(chuàng)建非對(duì)稱(chēng)密鑰和對(duì)稱(chēng)密鑰對(duì)象的能力。非對(duì)稱(chēng)密鑰(asymmetric key)與證書(shū)相似,公鑰用來(lái)加密數(shù)據(jù)庫(kù),私鑰用來(lái)解密數(shù)據(jù)。非對(duì)稱(chēng)密鑰和證書(shū)都提供了強(qiáng)大的加密強(qiáng)度。但在完成復(fù)雜的加密|解密過(guò)程中具有更多的性能開(kāi)銷(xiāo)。更適合對(duì)大量數(shù)據(jù)進(jìn)行加密,且具有較低性能開(kāi)銷(xiāo)的解決方案是對(duì)稱(chēng)密鑰(symmetric key),它是對(duì)相同數(shù)據(jù)進(jìn)行加密和解密的一個(gè)密鑰。
SQL Server允許將這些加密能力放到加密層次結(jié)構(gòu)中。當(dāng)安裝了SQL Server后,在數(shù)據(jù)庫(kù)master中創(chuàng)建名為服務(wù)主密鑰的服務(wù)器級(jí)別證書(shū),并將其默綁定到SQL Server服務(wù)賬號(hào)登錄名。服務(wù)主密鑰用來(lái)加密所有其他數(shù)據(jù)庫(kù)證書(shū)和創(chuàng)建在SQL Server實(shí)例中的密鑰。另外,你也可以在用戶(hù)數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)庫(kù)主密鑰(Database Master Key),它可以用來(lái)加密數(shù)據(jù)庫(kù)證書(shū)和密鑰。
在SQL Server 2008中,微軟引入了透明數(shù)據(jù)加密(TDE),它對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行加密,而不需要修改任何訪問(wèn)它的應(yīng)用程序。數(shù)據(jù)、日志文件和相關(guān)的數(shù)據(jù)庫(kù)備份都是加密的。假如數(shù)據(jù)庫(kù)被偷,如果沒(méi)有數(shù)據(jù)庫(kù)加密密鑰(DEK)是不能訪問(wèn)數(shù)據(jù)的。本文及后面幾篇文章將會(huì)舉例說(shuō)明。
在SQL Server 2008中,還引入了對(duì)可擴(kuò)展密鑰管理(EKM)的支持,也就意味著SQL Server可以使用硬件安全模塊(HSM)來(lái)存儲(chǔ)和和管理加密密鑰。HSM可以減少數(shù)據(jù)和實(shí)際的加密密鑰耦合。
此部分內(nèi)容共分六篇文章:
1、通過(guò)PassPhrase加密
2、主密鑰
3、非對(duì)稱(chēng)密鑰加密
4、對(duì)稱(chēng)密鑰加密
5、證書(shū)加密
6、透明數(shù)據(jù)加密
一、 通過(guò)通行短語(yǔ)(PassPhrase)加密
對(duì)于不涉及證書(shū)及密鑰的應(yīng)急的數(shù)據(jù)加密,可以直接基于用戶(hù)提供的密碼來(lái)加密和解密數(shù)據(jù)。通行短語(yǔ)(PassPhrase)是允許存在空格的密碼。這個(gè)PassPhrase不會(huì)存儲(chǔ)在數(shù)據(jù)庫(kù)中,因而也就意味著不會(huì)被使用存儲(chǔ)的系統(tǒng)數(shù)據(jù)“破解”。同時(shí),可以使用空格創(chuàng)建一個(gè)長(zhǎng)的、易于記憶的句子來(lái)加密和解密敏感數(shù)據(jù)。
我們需要了解的一對(duì)函數(shù)是ENCRYPTBYPASSPHRASE( http://technet.microsoft.com/zh-cn/library/ms190357.aspx )和DECRYPTBYPASSPHRASE( http://technet.microsoft.com/zh-cn/library/ms188910.aspx )
這一對(duì)函數(shù)必須使用相同的參數(shù)。
我們看一個(gè)示例:
注意:
1、使用通行短語(yǔ)進(jìn)行加密數(shù)據(jù),不用擔(dān)心sysadmin服務(wù)器角色成員讀取數(shù)據(jù)(在后面文章會(huì)看到,服務(wù)器角色成員sysadmin擁有讀取其他形式的加密數(shù)據(jù)的內(nèi)在權(quán)限。
2、假定沒(méi)有將密碼存儲(chǔ)在表中或在任何模塊(存儲(chǔ)過(guò)程、觸發(fā)器等)中使用密碼,加密的數(shù)據(jù)將防止從數(shù)據(jù)庫(kù)備份被偷竊或在SQL Server實(shí)例中的數(shù)據(jù)庫(kù)中滲透。如果通行短語(yǔ)沒(méi)有正確共享,數(shù)據(jù)就可以被解密。
助人等于自助! 3w@live.cn
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
