SQL Server DMK密码

时间:2016-12-09 06:22:11

标签: sql-server

SQL Server数据库主密钥(DMK)密码存储在哪里?它存储在master数据库中吗?在注册表中?如果黑客获取了mdf文件,他是否能够获得用于创建DMK的密码?

1 个答案:

答案 0 :(得分:0)

SQL Server中有Encryption Hierarchy - 所有内容都被加密。您可以在每个数据库中创建一个Database Mater Key,以保护其中的证书,不对称和对称密钥 - DMK用于加密它们。

  

数据库主密钥受服务主密钥保护。该   Service Master Key由SQL Server安装程序创建并加密   使用Windows Data Protection API(DPAPI)。

enter image description here

假设我们有数据库备份并将其还原到本地实例。如果我尝试读取一些ecnrypted数据,而不知道DMK密码以加密证书,我收到以下错误:

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'I_DO_NOT_KNOW_THE_PASS';

SELECT *, CAST(DecryptByAsymKey(AsymKey_ID(N'smGK_АSymmetricKey_01'), BufferEncryptedEmail) AS NVARCHAR(444))
FROM SecurityUsersAssimetricKey

CLOSE MASTER KEY
  

消息15313,级别16,状态1,行1密钥未使用加密   指定的解密器。

所以,在我的情况下(当DMK被密码加密时),我只能读取知道密码的ecnrypted数据:

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'smGK_MasterKeyPassword';

SELECT *, CAST(DecryptByAsymKey(AsymKey_ID(N'smGK_АSymmetricKey_01'), BufferEncryptedEmail) AS NVARCHAR(444))
FROM SecurityUsersAssimetricKey

CLOSE MASTER KEY

为了保护整个数据,您可以查看backup encryption的制作方式。

如果应用了备份加密,则使用证书加密备份。如果没有此认证,则无法恢复备份。您可以在任何您喜欢的地方存储此证书。一般来说,你是正确的蛮力 - 如果数据库恢复,你可以尝试暴力破解DMK,当你拥有它,你可以读取所有加密列。但是,如果无法使用其备份还原数据库,则无法执行任何操作。