SQL Server数据库主密钥(DMK)密码存储在哪里?它存储在master数据库中吗?在注册表中?如果黑客获取了mdf文件,他是否能够获得用于创建DMK的密码?
答案 0 :(得分:0)
在SQL Server
中有Encryption Hierarchy - 所有内容都被加密。您可以在每个数据库中创建一个Database Mater Key
,以保护其中的证书,不对称和对称密钥 - DMK
用于加密它们。
数据库主密钥受服务主密钥保护。该 Service Master Key由SQL Server安装程序创建并加密 使用Windows Data Protection API(DPAPI)。
假设我们有数据库备份并将其还原到本地实例。如果我尝试读取一些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,当你拥有它,你可以读取所有加密列。但是,如果无法使用其备份还原数据库,则无法执行任何操作。