怎么会有人破解SQL Server 2005加密堆栈?

时间:2009-03-02 03:39:40

标签: sql-server-2005 encryption

这是一个适合所有安全专家的人。

我有一个带有数据库主密钥的SQL Server 2005数据库,该数据库主密钥使用服务器密钥使用非常强的密码加密,而服务器密钥又使用Windows数据保护层中的服务帐户凭据进行加密。

我有一个使用数据库主密钥加密的证书。

我有一个使用AES256的对称密钥,它使用证书加密,我使用对称密钥加密和解密数据库中的机密字段。

有人需要破解数据库中的加密字段?我唯一的假设是,由于对称加密算法的强弱,无法使用蛮力,对称密钥本身受到4个额外加密层的保护:

Windows DPAPI - >服务器 - >数据库 - >证书 - >对称密钥

对我来说似乎很紧张。

让我们不要包括“通过吸毒和与他一起睡觉来获取系统管理员的用户名和密码”的明显答案,这绝对是相关的,但不是我所追求的。

4 个答案:

答案 0 :(得分:3)

这是一次潜在的攻击。它假设您已经有办法将任意代码作为服务帐户运行。例如,您可能会执行远程代码执行错误。完成此操作后,使用DPAPI获取服务器密钥相对简单。完成后,你可以获得master数据库密钥,虽然你需要一些强力方法来破解密码。

这听起来很难做,取决于密码的强度可能是不可能的。服务帐户是低权限还是高权限?如果是管理员帐户,您可以使用它(假设它被破坏)安装键盘记录器来获取密码。

答案 1 :(得分:2)

ķ。 Brian Kelley专注于SQL Server安全性,他撰写了几篇关于如何在SQL Server环境中绕过加密的好文章,如下所示:

如果您真的想要安全,我强烈建议订阅他的博客。他也可以在Twitter http://twitter.com/kbriankelley上找到。

答案 2 :(得分:0)

内存中的某个地方存储了这个未加密的密钥以便能够对其加密,是否有一种方法可以让攻击者获得对SYSTEM级别的访问权限,从而能够基本扫描内存,或者将额外的线程附加到MSSQL

此外,这些加密字段是否可用于任何前端应用程序? SELECT * FROM table时它们是否可见?例如,您可以根据需要在数据库和字段上获得尽可能多的安全性,但如果有人能够使用SQL注入编写自己的SQL查询,从而查看字段的值,那么您仍然可以返回到第一个字段。 / p>

答案 3 :(得分:0)

假设没有人工攻击是可能的,我会尝试将调试器附加到读取它的程序,获取它的内存快照并在暴力攻击中尝试每组字节。

即使我无法获取内存映像,我也会尝试使用源文件,以防密钥在那里。

实际上,你必须确保密钥永远不会在任何地方完好无损地打败这些攻击。