sql-server – 如何控制用户可以解密SQL Server对称密钥加密的内容

前端之家收集整理的这篇文章主要介绍了sql-server – 如何控制用户可以解密SQL Server对称密钥加密的内容前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在考虑加密sql Server中的一些敏感数据,例如银行帐号和社会安全号码,以符合新的州法律.我使用sql Server 2008作为我的.NET代码数据库.我使用.NET来加密密码,但为此我想通过简单的对称密钥加密加密我需要的几列数据来使用微软的内置加密.如果我使用sql Server加密,我可以解密来自外部报告工具的数据,而不仅仅是在我的.NET应用程序中.这是我正在使用的示例:
http://blog.sqlauthority.com/2009/04/28/sql-server-introduction-to-sql-server-encryption-and-symmetric-key-encryption-tutorial-with-script/

它使用由sql Server创建的证书,然后使用DecryptByKey函数来解密数据,但我试图确定它到底有多安全?如何控制用户可以解密数据的内容,或者任何人只要打开对称密钥并使用解密功能就可以执行此操作?

解决方法

你有两个选择:

>加密控制.只有这一点,知道密码的用户才能解密数据.缺点是用户每次访问数据时都必须输入解密密码.报告必须包含一个Password参数,运行报告的用户填写数据访问密码.应用程序必须从用户请求密码.网站必须向访问者请求密码.等等等等
>访问控制.数据使用sql Server自身可以访问的密钥进行加密(最终,ecnryption链一直到服务主密钥,并使用DPAPI加密).除了授予和拒绝SELECT给你之外,这给你没有更大的保护:是访问控制,而不是加密控制.这样的方案只能防止意外丢失媒体(有人找到了你的数据库的磁盘,或者你的笔记本电脑上放了数据库).您可以使用Transparent Data Encryption文件级加密(BitLocker)实现相同的目标.

通用数据加密方案是使用对称密钥加密数据,然后使用非对称密钥(通常是证书的私钥)加密对称密钥.然后使用密码对非对称密钥进行加密,并且在尝试访问数据时必须提供此密码.这种两级间接的主要原因是密码更改:当密码或私钥被泄露时,对称密钥使用不同的非对称密钥重新加密,或者使用不同的密码重新加密非对称密钥.这样,访问密码已更改,无需重新加密所有数据.如果访问权限将直接授予对称密钥,则密码泄露可能需要重新加密所有数据,可能是数TB的数据.

我提出的两个场景的不同之处在于非对称密钥是否也与数据库主密钥一起使用.案例1)它不是,案例2)它是.这一切都在Encryption Hierarchy中解释.

原文链接:https://www.f2er.com/mssql/78983.html

猜你在找的MsSQL相关文章