2

我们将 Tomcat 用于我们的 Java Web 应用程序。WEB-INF 文件夹下有一个属性文件。

AES 加密将用于生成密钥和加密密码。加密的密码将存储在属性文件中。加密密钥应该存储在哪里?将密钥和加密密码放在同一个属性文件中是个好主意吗?还是应该将密钥存储在“webapps”目录之外?

4

3 回答 3

7

在 Windows 上,您可以使用注册表和 DPAPI。使用注册表确实很糟糕,但如果您想获得绝对的安全性,并利用操作系统来存储有价值的数据,这是一个必要的痛苦。

在其他 OS X 上,您可以使用钥匙串。

在 linux 上,我会使用文件权限来保护文件。

你的提议:

将密钥和加密密码放在同一个属性文件中是个好主意吗?

就像将钱存放在保险箱中,然后在便签上将密码写到保险箱中,然后将便条贴在保险箱上。你所做的只是让小偷不以为然,但没有增加任何有意义的安全级别。

如果属性文件足够安全以容纳加密密钥,那么您可以将密码以明文形式存储在其中。

于 2009-09-04T00:33:58.757 回答
2

您是否考虑过 Java API 中的 KeyStore 类。它是 Sun 的 Java 密码体系结构的一部分。

于 2009-09-04T06:47:31.727 回答
0

我有以下建议,

  1. 不要将密钥存储在 WAR 中。我们将确保每次安装的密钥的责任都交给我们。在生产中,我们实际上可以通过将密钥文件存储在智能卡上来保护它。

  2. 确保您的密钥是版本化的,以便您可以定期轮换它。

  3. 存储密码短语以生成密钥,而不是原始密钥材料。这使得添加新密钥变得更加容易(您不必担心算法或密钥大小等)。它也增加了一些模糊性。

于 2009-09-04T04:16:50.707 回答