手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SQL Server 2008中的代码安全(三) 通过PassPhrase加密
SQL Server 2008中的代码安全(三) 通过PassPhrase加密
摘要:前言:在SQLServer2005和SQLServer2008之前。如果希望加密敏感数据,如财务信息、工资或身份证号,必须借助外部应用程序或...

前言:

在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

*/

复制代码 代码如下:

/************

想知道原文本的内容,使用以下语句:

--------3w@live.cn

**********************/

SELECT CAST(DecryptByPassPhrase(

'My Password Used To Encrypt This String in 2008.',

MySecret) as varchar(max))

FROM #SecretInfo

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

注意:

1、使用通行短语进行加密数据,不用担心sysadmin服务器角色成员读取数据(在后面文章会看到,服务器角色成员sysadmin拥有读取其他形式的加密数据的内在权限。)

2、假定没有将密码存储在表中或在任何模块(存储过程、触发器等)中使用密码,加密的数据将防止从数据库备份被偷窃或在SQL Server实例中的数据库中渗透。如果通行短语没有正确共享,数据就可以被解密。

邀月

【SQL Server 2008中的代码安全(三) 通过PassPhrase加密】相关文章:

SQL Server 2005支持的两条新语法

SQL Server的复制功能

Sql Server代码设置主键并自动生长

SQL Server 2005中的外联结用法

SQL Server数据库中的存储过程介绍

SQL Server 2005中更改sa的用户名的方法

SQLServer中的事务和锁

SQL Server 2005 中使用 Try Catch 处理异常

SQL Server 2008 r2 完全卸载方法分享

SQL Server 2005的cmd_shell组件的开启方法

精品推荐
分类导航