2014-11-14 40 views
0

Pinal Dave's blog他给出了一个简单的教程创建数据库主密钥(密码保护),证书和对称密钥:通过密码和数据库防盗DMK encyption

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解密它?例如

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

如果是这样,什么是模仿通过密码加密第二个服务器上的数据库,而不会影响任何服务主密钥设置的正确方法?

回答

1

不完全。自动打开数据库主密钥只有在服务主密钥与最初部署数据库的服务器的主密钥匹配时才能使用。如果DMK的加密副本与它不匹配,则必须提供原始密码。

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