c# - SQL列加密

标签 c# asp.net security sql-server-2008

我个人认为SQL列加密是一种巨大的浪费;-),但由于客户的插入必须实现它。所以我的问题是:

  1. 它的实际作用是什么 - 管理员会看到加密数据,但应用程序会看到明文数据吗?
  2. 备份数据后会发生什么情况?我假设备份保持加密状态,在这种情况下,如果我们需要恢复到不同的服务器上,它们是否可用?
  3. 加密 key 实际上来自哪里?
  4. 我可以指定一个固定的加密 key ,这样至少可以在我移动到的服务器上轻松进行数据库恢复。我真的不想要一些神奇的 key 算法,当将来当 key 突然不可用时,这会让我搬起石头砸自己的脚。

最佳答案

如果客户正在插入列加密,但您不知道 key 实际上来自哪里,那么您的客户在浪费他的钱,而您也在浪费他的时间。如果您甚至考虑固定键,则更是如此。

MSDN 上有详尽的解释解释了 key encryption hierarchy 。所有方案都将 key 链 Root 于 DPAPI,以防服务本身必须访问加密存储而无需用户提供任何 key ,或者使用用户明确提供的密码。

加密是为减轻特定安全威胁而采取的措施。根据这些威胁是什么(您的帖子中没有指定它们),列级加密可能是正确的答案,但几乎总是部署 Transparent Database Encryption是一个更好的解决方案。

没有任何加密方案可以对想要查看内容的管理员隐藏内容。时期。所有声称相反的解决方案都是万金油。

关于c# - SQL列加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981417/

相关文章:

c# - EF Core 一对多与 IQueryable

c# - 带有 EF Core 的 ASP.NET Core - DTO 集合映射

c# - 如何在 Microsoft Photo UWP 应用程序中打开多个图像流?

asp.net - 什么、为什么或何时选择 cshtml 与 aspx 更好?

php - 什么密码强度被认为足以与 password_hash 函数一起使用?

c# - 单一职责 vs 封装

asp.net - 同时运行 2 个发布配置文件?

Asp.net 成员(member)数据库

security - grub2-mkpasswd-pbkdf2 - 它可以接受标准输入吗?

security - Firebase 数据库安全规则