【问题标题】:SQL Server - encrypting data in a database table's columnSQL Server - 加密数据库表列中的数据
【发布时间】:2011-07-18 03:32:45
【问题描述】:

我在 SQL Server 2005 中遇到了数据加密或加密/解密的问题。

场景:

  • 数据库中有特定的表
  • 表格有一列,比如说“信用卡”
  • 要求是该列的内容或数据要加密

需要的(合理的)解决方案:

  • 插入到该表列中的数据应该被加密,即对于在数据库和/或表上运行直接查询的人来说是不可读的;或者仅通过使用特定的解密逻辑,这需要某种 KEY
  • 在任何应用程序中读取数据时,解密方法应该很简单,可能基于 KEY
  • 流程或方法应该易于使用
  • 但很难破解

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

谢谢。

【问题讨论】:

  • 数据是否只需要在存储时加密,还是要求未加密的数据在数据库级别不可访问? (应该在数据库层还是更高层进行加密;DAL 还是应用程序?)

标签: sql sql-server sql-server-2005 encryption


【解决方案1】:

尝试查看DecryptByKey 函数。

【讨论】:

    【解决方案2】:
    • 您使用对称密钥加密数据
    • 您使用证书加密对称密钥
    • 您使用密码加密证书
    • 您会定期生成新的对称密钥来加密新数据
    • 通常您轮换证书并使用新证书重新加密对称密钥,丢弃旧证书

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

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

    【讨论】:

    • Remus,这仍然是 SQL 2014 的方式吗?
    • @SteveGreene 2014 是的。 2016 年增加了新功能,例如 Always Encrypted
    猜你喜欢
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    相关资源
    最近更新 更多