通过密码和数据库防盗保护DMK加密

时间:2014-11-14 13:08:36

标签: sql-server sql-server-2012

Pinal Dave's blog上,他提供了一个简单的教程,用于创建数据库主密钥(受密码保护),证书和对称密钥:

CREATE CERTIFICATE EncryptTestCert WITH SUBJECT = 'SQLAuthority';
CREATE SYMMETRIC KEY TestTableKey WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE EncryptTestCert;

然后他显示加密数据......

enter image description here

......并说明

  

黑客即使以某种方式设法获取数据也无法使用它。

现在我假设数据库主密钥存储在的相应数据库中?如果是,如果黑客下载整个数据库,或者获得访问服务器的权限,如果DMK受到保护密码,黑客不能只使用相同的代码Pinal Dave做解密吗? e.g。

OPEN SYMMETRIC KEY TestTableKey DECRYPTION BY CERTIFICATE EncryptTestCert;
SELECT CONVERT(VARCHAR(50),DECRYPTBYKEY(EncryptSecondCol)) AS DecryptSecondCol
FROM TestTable;

如果是这样,在不影响任何服务主密钥设置的情况下,通过密码加密模拟第二台服务器上数据库的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

不完全是。仅当服务主密钥与最初部署数据库的服务器上的密钥匹配时,才能自动打开数据库主密钥。如果DMK的加密副本与之不匹配,则必须提供原始密码。

这是一个相关的主题,有足够的链接来满足您的好奇心:Restoring SQL Server Database - Master Key Not Opening