SQL Server 2005+对象加密的缺点?

时间:2009-05-28 16:46:00

标签: sql-server encryption

对于远程部署产品附带的数据库,通过MS SQL Server 2005和2008中的WITH ENCRYPTION子句加密所有代码对象(过程,函数,视图)是否有任何缺点?

这些优势是对领域中“自定义”变化的威慑,可以在创造更多需求的同时解决一个需求。目标不是保护IP或数据,而是在无法管理更改对象的权限时帮助防止未经授权的代码更改(安全性不在开发人员手中,但修复其他人引起的问题的责任在于)。

采用这种方法可能导致哪些新问题?

4 个答案:

答案 0 :(得分:2)

Microsoft专门为此目的创建了此功能。我能看到的唯一缺点是保护力弱;它可以通过公开可用的脚本来规避,SQL Profiler可用于查看解密过程的明文。但它仍然应该起到有效的威慑作用。

答案 1 :(得分:0)

我们在我们部署到200多个网站的企业产品中实施加密,原因是您指示并阻止逆向工程。

在我们的案例中,它比它的价值更麻烦。我们的客户从未真正改变任何事情,这使我们很难在现场调试问题。在加密所有内容时,Profiler不会为您提供所需的详细信息。我们经常需要加载未加密版本的SPROC等来调试问题。

此外,它使您的架构变得更难以与您期望的版本一致。大多数差异工具都无法区分加密对象。

答案 2 :(得分:0)

你走错了路。 WITH ENCRYPTION是SQL 2000天的一个过时选项。围绕它的方法是众所周知的,minimal google search skills的任何人都可以发现它。正确的方法是使用code signing。最好的方法是创建证书,签署程序,然后删除私钥。这样,没有人,甚至你,都可以在不破坏签名的情况下改变代码。这并不妨碍任何人修改程序,但一旦修改它们就会破坏签名封条并且篡改是显而易见的。您可以更进一步,确保程序本身无权执行其目的(即,无法读取尝试访问的表)但权限来自其签名(用于签署它们的证书被授予所需的权利)。这样,如果他们篡改代码,不仅会破坏密封,还会导致系统停止运行。解释这些行为的后果通常具有足够的威慑力。

答案 3 :(得分:0)

有许多工具可以解密SQL Server中的存储过程。 有一种名为SQL Shield的商用工具可以改变加密机制,使得更难以显示和更改源代码。 但是我必须说加密程序使维护更难:比较,制作差异等等。