2009-09-04 335 views
2

我们为我们的java web应用程序使用Tomcat。 WEB-INF文件夹下有一个属性文件。什么是存储AES加密密钥的最佳方式?

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

回答

7

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

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

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

你所提议:

它是把文件中相同属性的密钥和加密的密码是个好主意?

就像存储你的钱在一个安全的,然后写在组合保险箱在stickynote和坚持安全的说明。你所做的一切都对小偷不负责任,但没有增加任何有意义的安全级别。

如果属性文件足够安全以容纳加密密钥,则可以以明文形式存储密码。

+0

+1。默默无闻的安全性至多... – 2009-09-04 00:35:12

0

我有以下几点建议,

  1. 不要存放在战争中的关键。我们将安全钥匙的责任留给每个安装。在制作过程中,我们可以通过将密钥文件存储在智能卡上来保护它。

  2. 确保您的钥匙已经过版本控制,因此您可以定期旋转钥匙。

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

2

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

+0

我相信你只能将公钥/私钥对(非对称密钥)存储在标准密钥库中。不是AES对称密钥。 有一个keystore impl允许使用对称密钥:http://khylo.blogspot.com/2009/12/keytool-keystore-cannot-store-non.html – simonlord 2010-09-22 14:33:02

相关问题