【问题标题】:What is the best way to store an AES encryption key?存储 AES 加密密钥的最佳方式是什么?
【发布时间】:2009-09-04 14:47:31
【问题描述】:

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

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

【问题讨论】:

    标签: java tomcat encryption key-storage


    【解决方案1】:

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

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

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

    你的提议:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我相信您只能将公钥/私钥对(非对称密钥)存储在标准密钥库中。不是 AES 对称密钥。有一个允许对称密钥的密钥库实现:khylo.blogspot.com/2009/12/…
      【解决方案3】:

      我有以下建议,

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-18
        • 2011-06-25
        • 2011-01-03
        • 1970-01-01
        • 1970-01-01
        • 2022-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多