存储AES加密密钥的最佳方法是什么?

时间:2009-09-04 00:28:12

标签: java tomcat encryption key-storage

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

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

3 个答案:

答案 0 :(得分:7)

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

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

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

您提出的建议:

  

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

就像把钱存放在保险箱里一样,然后将组合写在便签上的保险箱上并将便条贴在保险箱上。你所做的一切都是对小偷的不满,但没有增加任何有意义的安全级别。

如果属性文件足够安全以容纳加密密钥,那么您可以用明文存储密码。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

我有以下建议,

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

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

  3. 存储密码以生成密钥,而不是原始密钥材料。这样可以更轻松地添加新密钥(您不必担心算法或密钥大小等)。它也增加了一些含糊不清的内容。