She*_*els 7 sql-server encryption sql-server-2008
我正在使用.NET 3.5和SQL Server 2008开发一个新的Web应用程序,需要存储一些社会安全号码.我一直在做一些关于数据库加密的初步阅读,这有点令人困惑.
我很乐意使用非对称密钥加密SSN,因为面向公众的应用程序一旦加密就无法检索任何数据.我在想,只有管理界面才能解密并显示数据.但听起来SQL Server只使用对称密钥保护数据?
那么,在SQL Server 2008中加密SSN的最佳方法是什么?如果您链接到一个或两个好的教程,奖励积分.
如果您加密数据,那么您必须问自己谁将解密它.如果使用非对称加密系统(例如RSA),则加密使用公钥,解密使用相应的私钥; "不对称"来自以下事实:私钥不能从公钥重新计算(尽管两个密钥在数学上都是链接在一起的).
非对称加密往往会产生开销.第一个注意事项是这样的加密必须有一些随机的部分,因为每个人都可以加密(公钥是,是的,公共):如果加密过程是确定性的,那么任何人都可以加密所有可能的SSN(少于一个其中十亿,这对于现代计算机来说是一个非常小的数字)并且与加密值匹配.因此,在加密期间必须添加一些随机的,并且加密的SSN大于明文SSN.
已知的非对称加密系统使用具有其自身成本的数学结构.基本上,对于RSA加密系统,使用"足够强"的密钥,加密消息的长度至少为128字节.一些加密系统做得更好; 在坚持学术研究的良好路径的同时,我可以用41个字节左右(El-Gamal在NIST K-163椭圆曲线上).更小似乎更难.
因此,毫无疑问,默认情况下,给定的数据库系统不会包含此类功能.
对于您的问题,您应该首先定义(和写入),尽可能清楚:
然后你应该问自己加密是否适合这种工具.当预想的攻击者能够获得原始的存储数据时,加密是很好的.这意味着攻击者绕过了操作系统保护.此时,无论操作系统知道什么,攻击者也知道.如果数据库托管在一台机器上,并且有一个接口可以通过它获得解密的SSN,那么该机器"知道"如何获取数据,攻击者也是如此......另一方面,如果主机机器操作系统被认为足够弹性,然后根本不需要加密.
数据库上的对称加密可以解决较弱的问题,其中攻击者随后获得硬盘的副本.主机系统知道对称加密密钥,但它只在RAM中知道它.窃取硬盘的攻击者不会拥有该密钥.
您确实不想使用非对称加密,因为它非常慢。相反,您需要使用非对称密钥来保护对称密钥,然后将对称密钥放在方便的地方。老实说,我会坚持使用 SQL Server 中的内容,而不是自己设计东西。这里有一个非常好的开始http://dotnetslackers.com/articles/sql/IntroductionToSQLServerEncryptionAndSymmetricKeyEncryptionTutorial.aspx
归档时间: |
|
查看次数: |
12557 次 |
最近记录: |