如何保护站点范围内的密钥


how to protect a site-wide secret key

  1. 想象一下,一个非常标准的网站,用户通过电子邮件/密码对进行身份验证。对于密码,它已经用随机盐进行了处理,但其余数据都是未加密的。

  2. 我们又向前迈进了一步,用密码密钥加密敏感数据,显然,应用程序应该知道密钥,以便能够为其操作描述数据。

  3. 我们不想在源代码中包含它,所以它被保存在一个文件中,并在需要时由应用程序读取。

  4. 我们已经保护了文件,这样只有执行应用程序的用户才能读取

  5. (这一点在下面的一些讨论后出现了(我们已经考虑过购买硬件HSM,并发现这是不可能的(例如,我们在虚拟机上运行服务器(

这样我们就可以相对地避免数据库被完全窃取,对吧?然而,如果有人能够访问具有读取权限的操作系统用户,则密钥可能会变为已知。

问题是:保持此类密钥安全的最佳做法是什么

购买硬件安全模块并将密钥保存在其中。密钥将无法读取。

Yubi生产价格合理的hsm$500,如果我没记错的话。

当我们在这里时,您的数据库服务器应该与您的web服务器位于不同网络区域的不同盒子上。