了解MS SQL Server加密和备份


13

因此,我在聊天询问有关SQL Server备份文件的安全性。

有人告诉我,如果攻击者可以访问未加密的.bak文件,则他们可以访问数据。

因此,让我们看一下这种情况:

OPEN SYMMETRIC KEY MySymetricKey DECRYPTION
BY CERTIFICATE MyCertificate

注意-这里没有密码。

然后我们通过以下方式加密表:

UPDATE tbl1
 SET namePAss = ENCRYPTBYKEY(KEY_GUID('MySymetricKey'),name)
GO

现在,假设有黑客窃取了我的bak文件。为了查看数据(在他自己的计算机和sql-server中),他要做的所有事情是:

SELECT  
       convert( NVARCHAR(max), decryptbykey(namePAss)) 
FROM tbl1

他仍然可以访问数据吗?

Answers:


9
OPEN SYMMETRIC KEY MySymetricKey DECRYPTION`  
 BY CERTIFICATE MyCertificate`

注意-这里没有密码。

就在这里。您MyCertificate 以某种方式打开了证书,不是吗?可能有几种情况,但其中每种都以密码结尾:

  • 您使用密码打开了证书(显然,在这种情况下有一个密码)
  • 证书已使用数据库主密钥加密,并且您使用DBMK密码->即密码打开了数据库主密钥
  • 证书用数据库主密钥加密,而DBMK用服务主密钥加密。依次使用服务帐户DPAPI存储密钥打开了服务主密钥,该密钥使用帐户密码->加密,即密码

在最后一个键中似乎没有密码,但是有一个:服务帐户密码。备份在其他主机上还原时,将缺少数据库主密钥的服务主密钥加密,这将使数据不可访问。

请参阅加密层次


嗨,是的,这里有密码,但是在上一个阶段。当我创建者:CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'DB Master key password!' GO-我确实使用密码创建了它。但是奇怪的是,当我打开它时-我不需要密码,这完全是您粘贴的代码。这是我不明白的事情。如果我是黑客-我不在乎用于创建它的密码。我需要做的只是通过OPEN SYMMETRIC KEY MySymetricKey DECRYPTION MyCertificate认证,这里没有密码。请纠正我
Royi Namir

3
@RoyiNamir请参阅Remus的最后一个要点。您没有指定密码,但是证书受保护,最终在这种情况下受服务帐户密码保护。
Mark Storey-Smith

@Remus能否请您看一下我的新问题(非常相关)dba.stackexchange.com/questions/29287/…–
Royi Namir

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.