佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > SQL Server 2008中的代碼安全(三) 通過PassPhrase加密

SQL Server 2008中的代碼安全(三) 通過PassPhrase加密

熱門標(biāo)簽:呼叫中心市場需求 AI電銷 Linux服務(wù)器 百度競價排名 服務(wù)外包 網(wǎng)站排名優(yōu)化 地方門戶網(wǎng)站 鐵路電話系統(tǒng)

前言

      在SQL Server 2005和SQL Server 2008之前。如果希望加密敏感數(shù)據(jù),如財務(wù)信息、工資或身份證號,必須借助外部應(yīng)用程序或算法。SQL Server 2005引入內(nèi)建數(shù)據(jù)加密的能力,使用證書、密鑰和系統(tǒng)函數(shù)的組合來完成。

    與數(shù)字證書類似。SQL Server 證書包括公鑰和私鑰這一對密鑰,它們都用來加密和解密數(shù)據(jù)。SQL Server也擁有創(chuàng)建非對稱密鑰和對稱密鑰對象的能力。非對稱密鑰(asymmetric key)與證書相似,公鑰用來加密數(shù)據(jù)庫,私鑰用來解密數(shù)據(jù)。非對稱密鑰和證書都提供了強(qiáng)大的加密強(qiáng)度。但在完成復(fù)雜的加密|解密過程中具有更多的性能開銷。更適合對大量數(shù)據(jù)進(jìn)行加密,且具有較低性能開銷的解決方案是對稱密鑰(symmetric key),它是對相同數(shù)據(jù)進(jìn)行加密和解密的一個密鑰。

    SQL Server允許將這些加密能力放到加密層次結(jié)構(gòu)中。當(dāng)安裝了SQL Server后,在數(shù)據(jù)庫master中創(chuàng)建名為服務(wù)主密鑰的服務(wù)器級別證書,并將其默綁定到SQL Server服務(wù)賬號登錄名。服務(wù)主密鑰用來加密所有其他數(shù)據(jù)庫證書和創(chuàng)建在SQL Server實例中的密鑰。另外,你也可以在用戶數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫主密鑰(Database Master Key),它可以用來加密數(shù)據(jù)庫證書和密鑰。

    在SQL Server 2008中,微軟引入了透明數(shù)據(jù)加密(TDE),它對整個數(shù)據(jù)庫進(jìn)行加密,而不需要修改任何訪問它的應(yīng)用程序。數(shù)據(jù)、日志文件和相關(guān)的數(shù)據(jù)庫備份都是加密的。假如數(shù)據(jù)庫被偷,如果沒有數(shù)據(jù)庫加密密鑰(DEK)是不能訪問數(shù)據(jù)的。本文及后面幾篇文章將會舉例說明。

    在SQL Server 2008中,還引入了對可擴(kuò)展密鑰管理(EKM)的支持,也就意味著SQL Server可以使用硬件安全模塊(HSM)來存儲和和管理加密密鑰。HSM可以減少數(shù)據(jù)和實際的加密密鑰耦合。

此部分內(nèi)容共分六篇文章:

1、通過PassPhrase加密

2、主密鑰

3、非對稱密鑰加密

4、對稱密鑰加密

5、證書加密

6、透明數(shù)據(jù)加密

一、通過通行短語(PassPhrase)加密

     對于不涉及證書及密鑰的應(yīng)急的數(shù)據(jù)加密,可以直接基于用戶提供的密碼來加密和解密數(shù)據(jù)。通行短語(PassPhrase)是允許存在空格的密碼。這個PassPhrase不會存儲在數(shù)據(jù)庫中,因而也就意味著不會被使用存儲的系統(tǒng)數(shù)據(jù)“破解”。同時,可以使用空格創(chuàng)建一個長的、易于記憶的句子來加密和解密敏感數(shù)據(jù)。

我們需要了解的一對函數(shù)是ENCRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms190357.aspx)和DECRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms188910.aspx)

    這一對函數(shù)必須使用相同的參數(shù)。

    我們看一個示例:

復(fù)制代碼 代碼如下:

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.',
'我把公司的服務(wù)器數(shù)據(jù)庫密碼記在那個綠色的小本子上了。')

SELECT MySecret FROM #SecretInfo

/*
通常的查詢結(jié)果:
0x01000000CCBC800C6B5CECE3F211FB975C2F8B681CC8301DDE74CF783C6A593
16C2BAC08D568151FD573E2FDE01C800805C8D1D5984727DEE95040C1FB604003
A3EFDD0444CE72D7E505D1A4
*/

復(fù)制代碼 代碼如下:

/************
想知道原文本的內(nèi)容,使用以下語句:
--------3w@live.cn
**********************/

SELECT CAST(DecryptByPassPhrase(
'My Password Used To Encrypt This String in 2008.',
MySecret) as varchar(max))
FROM #SecretInfo

邀月工作室

注意:

1、使用通行短語進(jìn)行加密數(shù)據(jù),不用擔(dān)心sysadmin服務(wù)器角色成員讀取數(shù)據(jù)(在后面文章會看到,服務(wù)器角色成員sysadmin擁有讀取其他形式的加密數(shù)據(jù)的內(nèi)在權(quán)限。)

2、假定沒有將密碼存儲在表中或在任何模塊(存儲過程、觸發(fā)器等)中使用密碼,加密的數(shù)據(jù)將防止從數(shù)據(jù)庫備份被偷竊或在SQL Server實例中的數(shù)據(jù)庫中滲透。如果通行短語沒有正確共享,數(shù)據(jù)就可以被解密。

邀月
您可能感興趣的文章:
  • SQLServer 2008中的代碼安全(五) 非對稱密鑰加密
  • SQL Server 2008中的代碼安全(六) 對稱密鑰加密
  • SQL Server儲過程加密和解密原理深入分析
  • SQLSERVER加密解密函數(shù)(非對稱密鑰 證書加密 對稱密鑰)使用方法代碼
  • 實例講解SQL Server加密功能

標(biāo)簽:湘潭 衡水 湖南 蘭州 崇左 黃山 銅川 仙桃

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server 2008中的代碼安全(三) 通過PassPhrase加密》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    江山市| 兴仁县| 垣曲县| 名山县| 师宗县| 女性| 梓潼县| 浠水县| 兖州市| 汤阴县| 新建县| 石楼县| 八宿县| 白山市| 唐山市| 寿宁县| 轮台县| 岢岚县| 宝丰县| 和田市| 新巴尔虎右旗| 班玛县| 宜君县| 伊宁市| 怀柔区| 扎赉特旗| 凌源市| 探索| 澄城县| 敦化市| 陇南市| 海丰县| 徐水县| 成都市| 正蓝旗| 剑河县| 平舆县| 阿坝县| 井陉县| 鹿泉市| 济源市|