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

压力山大8815

压力山大8815

2016-02-19 10:39

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐SQL Server 2008中的代码安全(三) 通过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可以减少数据和实际的加密密钥耦合。

此部分内容共分六篇文章:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

1、通过PassPhrase加密

2、主密钥

3、非对称密钥加密

4、对称密钥加密

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

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

邀月工作室

注意:

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

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

邀月
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
SQL Server 2008中的代码安全(三) 通过PassPhrase加密

SQL Server 2008中的代码安全(六) 对称密钥加密

编程语言 网络编程
SQL Server 2008中的代码安全(六) 对称密钥加密

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL Server 2008中的代码安全(八)透明加密(TDE)

编程语言 网络编程
SQL Server 2008中的代码安全(八)透明加密(TDE)

在SQL Server 2008中执行透明数据加密

编程语言 网络编程
在SQL Server 2008中执行透明数据加密

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

SQLServer 2008中的代码安全(七) 证书加密

编程语言 网络编程
SQLServer 2008中的代码安全(七) 证书加密

SQLServer 2008中的代码安全(五) 非对称密钥加密

编程语言 网络编程
SQLServer 2008中的代码安全(五) 非对称密钥加密

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用javascript动态调整iframe高度的方法

用javascript动态调整iframe高度的方法

Sql server 2008 express远程登录实例设置 图文教程

Sql server 2008 express远程登录实例设置 图文教程
下拉加载更多内容 ↓