快捷搜索:

SQL Server 2008中的代码安全(三):通过PassPhrase加

导读:本文主要涉及EncryptByPassPhrase和DecryptByPassPhrase函数进行通畅短语(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、透明数据加密

一、经由过程通畅短语(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

*/

您可能还会对下面的文章感兴趣: