APP下载

使用透明加密,保护数据库安全

2017-03-08

网络安全和信息化 2017年4期
关键词:加解密解密备份

使用一般的加密方法只能加密数据表中的某些字段。如果想对整个数据库进行加密,就需要使用透明加密技术(TDE)。这是 SQL Server 2008 R2提供的新功能之一。因为如果MDF数据库文件或备份文件被窃取,数据库的安全就无从谈起。透明加密运行在数据库级别,对于用户或者应用程序来说是透明的,犹如没有加密一样。加密和解密以数据库的最小存储单位(即页级别)进行,由数据库引擎实时加以执行。在数据写入时加密,在读取时解密。

TDE执行数据和日志文件的实时I/O加解密,当数据库文件被盗后,别人因为不知道密钥的情况下,是无法恢复或者附加数据库的。透明数据加密使用数据加密密钥(DEK)进行加密,DEK保存在Master数据库中并且由服务主密钥加以保护。其使用步骤是先创建主密钥,之后创建或获取由主密钥保护的证书,创建数据库加密密钥,并使用证书保护该密钥,最后将数据库设置为使用加密状态。

对于透明加密来说,会对整个数据库进行加密,包括对备份文件也进行了加密。而对于应用程序来说,不会受到加密和解密的任何影响,例如索引和数据类型不受影响,也不需要调用任何加解密函数等。当然,使用透明加密会对SQL Server性能有一定的影响,透明加密和压缩备份无法同时使用,当移动受到透明加密保护的数据库时,必须同时移动相关的证书或者非对称密钥。例如,当需要对名为“Clientzl”的数据库进行透明加密时, 执 行“USE master”,“GO”,“CREATE MASTER KEY ENCRYPTION BY PASSWORD ='Passw0rd'”语句,来创建数据库主密钥。执行“CREATE CERTIFICATE ClientzlCert WITH SUBJECT = 'My Certificate for Northwind database'”语句,创建名为“ClientzlCert”的证书。

执 行“USE Clientzl”,“GO”,“CREATE DATABASE E N C R Y P T I O N K E Y W I T H A L G O R I T H M =AES_128 ENCRYPTION BY SERVER CERTIFICATE ClientzlCert”,“GO” 等 语句,使用上述证书创建一个数据库加密密钥和密码。之后 执 行“ALTER DATABASE Clientzl SET ENCRYPTION ON”语句,激活针对该数据库的透明加密功能。这样,就可以将数据库保护起来。例如,执行“BACKUP DATABASE Clientzl TO DISK= 'd:ackupClientzl_encrypted.bak'”语 句,就可以创建加密型的备份文件了。当然,由于使用的是TDE技术,所以加密备份花费的时间会比未加密的备份稍长一些。但是,别人即使盗取了该备份文件,也无法将其恢复,SQL Server会提示找不到服务器证书。如果需要正常恢复该加密备份,必须得到相应的证书。

方 法 是 执 行“USE master”,“GO”,“BACKUP CERTIFICATE ClientzlCert TO FILE = 'd:zhengshuClientzlCert.cer WITH PRIVATE KEY (FILE ='d:zhengshuClientzl_Key.pvk' ENCRYPTION BY PASSWORD = 'passw0rd' )”,“GO”等语句,将证书文件导出来。在另外的SQL Server实例上执行“USE master”,“GO”,“CREATE MASTER KEY ENCRYPTION BY PASSWORD ='password01!'”,“GO”等 语句,创建数据库主密钥,注意其使用的密码和上述主密钥是不同的。

执 行“C R E A T E CERTIFICATE ClientzlCert F R O M F I L E = ' d:zhengshuClientzlCert.cer WITH PRIVATE KEY(FILE = ' d:zhengshuClientzl_Key.pvk 'DECRYPTION BY PASSWORD= ' passw0rd ')”,“GO”等语句来导入证书。注意,这里的主密钥必须与导出证书是使用的密码相同。有了证书的支持,就可以恢复加密的备份文件了,例如执 行“restore database Clientzl from DISK =' d:ackupClientzl_encrypted.bak ' with replace MOVE 'Clientzl'TO 'd:dbClientzl1.mdf' MOVE 'Northwind_log' TO 'd:dbClientzl_1.ldf'”,“GO”之类的语句,即可恢复加密的备份文件。

猜你喜欢

加解密解密备份
“备份”25年:邓清明圆梦
VSAT卫星通信备份技术研究
炫词解密
解密“一包三改”
创建vSphere 备份任务
炫词解密
PDF中隐私数据的保护方法
旧瓶装新酒天宫二号从备份变实验室
电子取证中常见数据加解密理论与方法研究
网络数据传输的加解密系统研究