2011-03-18 121 views
2

我有SQL Server中的问题方案WRT数据cyphering或加密/解密2005年SQL服务器 - 加密数据库中的表的列数据

场景:

  • 有一个特定的表数据库
  • 表有一栏,让我们说“信用卡”
  • 的要求是,在本专栏的内容或数据应该被加密

必需(可信)溶液:被插入在该表的列

  • 数据应该被加密,即,是不可读运行直接查询数据库和/或表上的人;或者只使用特定的解密逻辑,这需要某种密钥
  • 在读取任何应用程序中的数据时,解密方法应该很容易,也许基于KEY
  • 该过程或方法应该很容易使用
  • 但难以打破

请给我一些建议或解决方案在这方面。

谢谢。

+0

数据只需要在存储器中进行加密,还是需要在数据库级别上不可访问未加密的数据? (应该在数据库层还是更高层完成加密; DAL还是应用程序?) – 2011-03-18 12:47:28

回答

3
  • 您使用对称密钥
  • 数据加密你的证书加密对称密钥
  • 您用密码加密证书
  • 定期生成新的对称密钥来加密新的数据
  • priodically您旋转证书并重新加密与新certifictae的对称密钥,丢弃旧证书

应用程序向用户请求密码并在会话中打开证书。然后它使用DECRYPTKEYBYAUTOCERT加密数据。这是通用的行业标准。它保护数据休息并防止意外媒体丢失以及不知道密码的人访问。

你会发现他的话题很多坏建议。任何“自动化”并且不要求用户输入解密密码的方案都是错误的。如果您想要“自动”加密或解密,您应该查看Transparent Data Encryption,它可以保护再次意外的媒体丢失。 TDE不能防止其他用户浏览数据,如果他们有访问权限。

+0

Remus,这仍然是SQL 2014的发展方向吗? – 2016-06-07 19:30:30

+1

@SteveGreene 2014是的。 2016添加了新功能,如[Always Encrypted](https://msdn.microsoft.com/en-us/library/mt163865.aspx) – 2016-06-07 20:35:25