SQL Server透明数据加密方法分析

时间:2022-09-28 07:03:17

SQL Server透明数据加密方法分析

摘要:本文介绍了透明数据加密方法的理论知识和实现方法,分析了该加密方法的缺点和限制,并为方法的使用给出了一些建议。

关键词:透明数据加密 性能 SQL Server

中图分类号:TP311.13 文献标识码:A 文章编号:1007-9416(2013)03-0237-02

1 引言

数据库的安全性对数据库的管理工作是非常重要的内容,通过网络防护,设置身份验证和授权机制,可以防止外界对数据库的攻击。但是,在设计某些应用系统时,并不希望数据库的合法用户甚至数据库管理员能够看到所有的数据内容,这就需要我们应用数据库的加密技术。加密可以放在前台应用程序,也可以放置于后台数据库。目前,SQL Server数据库提供了多种层次的加密方式供选择,在SQL Server2008之后引入的透明加密技术,能够防止恶意破坏方对数据库文件的直接访问,对于之前数据加密方式进行了有效补充,可以更好的满足程序开发和数据库管理的需求。

2 透明数据加密技术

透明数据加密(TDE)是对整个数据库文件进行保护,不局限于数据库表的字段和记录,而是整个数据库和日志文件。它是应用于页面级别的,数据在从磁盘上写入之前和读取之后分别进行加密和解密。这些加解密操作,对于数据库应用程序来说是完全透明的,不需要对应用程序进行升级。

SQL Server的加密是基于密钥层次的。在结构的顶部是一个唯一的服务主密钥,对于TDE所使用的加密密钥采用如下的层次进行保护的,服务主密钥数据库主密钥证书数据加密密钥。 SQL Server提供以下几种加密算法:DES、RC、AES以及其加强算法。它们在速度和强度上都不一样。

3 实现

数据库加密密钥受主密钥和证书的保护,如果要使用透明数据加密,首先需要确定已创建了主密钥和受主密钥保护的证书,接着才能生成受证书保护的数据库加密密钥,然后使用加密密钥保护数据库。

下面以加密MyDatabase数据库为例。

--创建主密钥和证书。

USE master;

GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'pwd#$12345';

GO

CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'DEK Certificate';

GO

--生成数据库加密密钥。

USE MyDatabase;

GO

CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128

ENCRYPTION BY SERVER CERTIFICATE MyServerCert;

GO

创建密钥后,使用alter命令或者数据库属性来设置数据库加密或解密。

--加密数据库。

ALTER DATABASE MyDatabase SET ENCRYPTION ON;

GO

如果尝试在另一个SQL Server上还原或者附加该数据库时,会出现以下错误,这说明数据库的保护是有效的。

Msg 33111, Level 16, State 3, Line 1

在正常备份或者还原数据库的同时,就需要附带生成的证书。

--备份证书。

BACKUP CERTIFICATE MyServerCert TO FILE = 'C:\ MyServerCert.cert' WITH PRIVATE KEY

FILE = 'C:\ PrivateKey1.key',

ENCRYPTION BY PASSWORD = 'pwd#$987654'

);

GO

--恢复证书。

CREATE CERTIFICATE MyServerCert FROM FILE = ' C:\ MyServerCert.cert ' WITH PRIVATE KEY

FILE = 'C:\ PrivateKey1.key',

DECRYPTION BY PASSWORD = ' pwd#$987654'

);

GO

4 分析

透明数据加密可以保证数据库文件的安全性,但对于性能要求比较高的应用程序来说,不得不考虑由此带来的额外性能消耗,一些实验表明访问加密数据库的平均消耗时间成本增加了6.36%[3], 如果采用强度更高的算法和密钥,消耗可能会继续加大。

另外,使用透明数据加密时,还需要考虑以下限制因素:当进行数据库加密操作的重新加密扫描时,将禁用对数据库的维护操作;如果将数据库中的任何文件组标记为 READ ONLY,数据库加密操作将会失败;数据库加密会显著降低压缩率;复制不会以加密形式从启用了 TDE 的数据库中自动复制数据;即使启用了TDE,也不会加密 FILESTREAM 数据。

在实际应用中,需要综合考虑安全性和实用性的要求,采取适当的策略,比如增加硬件投入,只加密关键数据库,降低加密算法的强度,结合其它数据加密方法等,以达到最佳的应用效果。

5 结语

SQL Server的透明数据加密方法,是一种简单实用的全数据库加密方法,能够有效保护数据库文件。对于它的一些限制以及少量增加的性能消耗,需要选择合适的加密策略,以平衡对应用程序带来的影响。

参考文献

[1]刘云.筹划和实施SQL Server 2008透明数据加密[J].计算机光盘软件与应用,2012(2).11-12.

[2]王哲慧.数据库加密算法及其密钥技术研究.长春理工大学,2011,硕士.

[3]代翀,SQLServer2008透明数据加密的性能测试.IT专家网,http://.cn/.

上一篇:基于UG的渐开线圆柱齿轮参数化设计 下一篇:基于PBL模式的数字图像处理实践课程探索