摘要 數(shù)據(jù)加密是SQL Server 2005新增的數(shù)據(jù)安全特性,這對應(yīng)用程序開發(fā)者來說是非常重要的改進(jìn)。本文從程序開發(fā)者角度,探討SQL Server 2005數(shù)據(jù)加密特性以及如何運(yùn)用該特性保證系統(tǒng)的數(shù)據(jù)安全。
關(guān)鍵詞 SQL Server 2005、數(shù)據(jù)加密、數(shù)據(jù)安全
SQL Server 2005是微軟開始實(shí)施其“可信賴計(jì)算” 計(jì)劃以來的第一個(gè)主要的產(chǎn)品,它提供了豐富的安全特性,為企業(yè)數(shù)據(jù)提供安全保障。對開發(fā)人員來說,最關(guān)注的是如何在程序設(shè)計(jì)過程中應(yīng)用這些特性來保護(hù)數(shù)據(jù)庫中的數(shù)據(jù)安全。本文將從應(yīng)用程序開發(fā)者角度探討基于SQL Server 2005數(shù)據(jù)加密特性的應(yīng)用。
SQL Server 2005數(shù)據(jù)加密技術(shù)
數(shù)據(jù)用數(shù)字方式存儲在服務(wù)器中并非萬無一失。實(shí)踐證明有太多的方法可以智取SQL Server 2000認(rèn)證保護(hù),最簡單的是通過使用沒有口令的sa賬號。盡管SQL Server 2005遠(yuǎn)比它以前的版本安全,但攻擊者還是有可能獲得存儲的數(shù)據(jù)。因此,數(shù)據(jù)加密成為更徹底的數(shù)據(jù)保護(hù)戰(zhàn)略,即使攻擊者得以存取數(shù)據(jù),還不得不解密,因而對數(shù)據(jù)增加了一層保護(hù)。
SQL Server 2000以前的版本沒有內(nèi)置數(shù)據(jù)加密功能,若要在SQL Server 2000中進(jìn)行數(shù)據(jù)加密,不得不買第三家產(chǎn)品,然后在服務(wù)器外部作COM調(diào)用或者是在數(shù)據(jù)送服務(wù)器之前在客戶端的應(yīng)用中執(zhí)行加密。這意味著加密的密鑰或證書不得不由加密者自己負(fù)責(zé)保護(hù),而保護(hù)密鑰是數(shù)據(jù)加密中最難的事,所以即使很多應(yīng)用中數(shù)據(jù)已被很強(qiáng)的加密過,數(shù)據(jù)保護(hù)仍然很弱。
SQL Server 2005通過將數(shù)據(jù)加密作為數(shù)據(jù)庫的內(nèi)在特性解決了這個(gè)問題。它除了提供多層次的密鑰和豐富的加密算法外,最大的好處是用戶可以選擇數(shù)據(jù)服務(wù)器管理密鑰。SQL Server 2005服務(wù)器支持的加密算法如下:
⑴ 對稱式加密(Symmetric Key Encryption):
對稱式加密方式對加密和解密使用相同的密鑰。通常,這種加密方式在應(yīng)用中難以實(shí)施,因?yàn)橛猛环N安全方式共享密鑰很難。但當(dāng)數(shù)據(jù)儲存在SQL Server中時(shí),這種方式很理想,你可以讓服務(wù)器管理它。SQL Server 2005 提供RC4、RC2、DES 和 AES 系列加密算法。
⑵ 非對稱密鑰加密(Asymmetric Key Encryption):
非對稱密鑰加密使用一組公共/私人密鑰系統(tǒng),加密時(shí)使用一種密鑰,解密時(shí)使用另一種密鑰。公共密鑰可以廣泛的共享和透露。當(dāng)需要用加密方式向服務(wù)器外部傳送數(shù)據(jù)時(shí),這種加密方式更方便。SQL Server 2005 支持 RSA 加密算法以及 512 位、1,024 位和 2,048 位的密鑰強(qiáng)度。
⑶ 數(shù)字證書(Certificate):
數(shù)字證書是一種非對稱密鑰加密,但是,一個(gè)組織可以使用證書并通過數(shù)字簽名將一組公鑰和私鑰與其擁有者相關(guān)聯(lián)。SQL Server 2005 支持“因特網(wǎng)工程工作組”(IETF) X.509 版本 3 (X.509v3) 規(guī)范。一個(gè)組織可以對 SQL Server 2005 使用外部生成的證書,或者可以使用 SQL Server 2005 生成證書。
SQL Server 2005 采用多級密鑰來保護(hù)它內(nèi)部的密鑰和數(shù)據(jù),如下圖所示:
圖1 SQL Server 2005采用多級密鑰保護(hù)它內(nèi)部的密鑰和數(shù)據(jù)
圖中引出箭頭的密鑰或服務(wù)用于保護(hù)箭頭所指的密鑰。所以服務(wù)主密鑰(service master key)保護(hù)數(shù)據(jù)庫主密鑰(database master keys),而數(shù)據(jù)庫主密鑰又保護(hù)證書(certificates)和非對稱密鑰(asymmetric keys)。而最底層的對稱性密鑰(symmetric keys)被證書、非對稱密鑰或其他的對稱性密鑰保護(hù)(箭頭又指回它本身)。用戶只需通過提供密碼來保護(hù)這一系列的密鑰。
圖中頂層的服務(wù)主密鑰,安裝SQL Server 2005新實(shí)例時(shí)自動產(chǎn)生和安裝,用戶不能刪除此密鑰,但數(shù)據(jù)庫管理員能對它進(jìn)行基本的維護(hù),如備份該密鑰到一個(gè)加密文件,當(dāng)其危及到安全時(shí)更新它,恢復(fù)它。
服務(wù)主密鑰由DPAPI(Data Protection API)管理。DPAPI在Windows 2000 中引入,建立于Windows的Crypt32 API之上。SQL Server 2005 管理與DPAPI的接口。服務(wù)主密鑰本身是對稱式加密,用來加密服務(wù)器中的數(shù)據(jù)庫主密鑰。
本新聞共
3頁,當(dāng)前在第
1頁
1 2 3