加密非用户特定的数据

时间:2014-02-13 16:27:35

标签: encryption

我需要在我的Web应用程序使用的数据库中存储(并且可能更改)一个特定的全局(即不相对于任何特定用户)数据。

它的值应该在数据库级别加密,但我的Web应用程序的用户应该能够读取其解密的值,而无需键入任何密码。

此Web应用程序的用户通过传统的用户名/密码机制进行身份验证。

是否可以按照描述实现可访问的加密值?

2 个答案:

答案 0 :(得分:1)

是 - 这是可能的,只需在需要时使用加密密钥加密和解密数据。真正的问题是如何在程序需要时获取加密密钥。您的选择取决于您在应用程序中所需的安全级别。

一些选项:

  • 使用防篡改密码并使用无法从此卡导出的密钥。所有加密和解密都在此卡上进行。防止数据在无法访问卡的情况下被解密。
  • 在启动时手动输入密钥(或使用智能卡/ USB棒等),并仅将其保留在内存中。有人在备份数据的情况下运行但无法使用它,除非他们记得从内存中获取密钥。
  • 每次需要时从其他外部系统获取密钥。数据小偷也需要在另一个地方窃取密钥。
  • 将密钥存储在数据库以外的其他位置。在另一台服务器上,在另一个用户下等,以最大限度地减少访问数据和密钥的可能性。

对这类事情的真正安全解决方案通常非常麻烦。

答案 1 :(得分:1)

如果您的数据库本身被认为是安全的,您可能会提供使这些数据可访问的存储过程。然后,您可以将加密密钥放入用户无法读取的表中,但允许它们执行存储过程,而该存储过程又允许读取密钥。

每个数据库产品的存储过程各不相同,但今天大多数都以某种方式允许这样做。您甚至可以创建一个在访问时解密的视图,并使用触发器来加密更改。