5

我需要在我的基于 Java 的 Web 应用程序(使用 jasypt)中加密用户输入的数据,这些数据保存在 MySQL 数据库中,我希望能够定期(例如 90 天)更改加密密钥/密码。该应用程序位于 Web 中的服务器上。

现有的已经加密的数据需要用新密钥重新加密,但为了这样做,它当然需要旧密钥。

  1. 轮换密钥的常见做法是什么?
  2. 使系统可以使用加密密钥的常用方法是什么(例如,通过命令行传递的系统属性、加密的属性文件、通过 https 从另一台服务器下载)

我希望对此没有单一的答案,但我想获得一些提示、指针和流行语,以便朝着正确的方向进行调查。

4

1 回答 1

5

首先,了解密钥轮换的目的很重要。您的用例是加密静态数据。在这种情况下,密钥轮换的目的是在密钥泄露或加密数据集泄露并受到暴力解密攻击的情况下遏制数据泄露。密钥轮换的常见做法:

  • 有时限的密钥轮换:在这种做法中,密钥会定期更新。
  • 交易级密钥:在这种做法中,每笔交易都使用自己的唯一密钥进行加密,从而降低了更高级别的数据泄露风险。

使系统可以使用密钥:这通常使用密钥管理服务器来完成。该服务器的核心是根据参数向请求者分发(通常是对称的)密钥。服务器可以选择安全地存档生成的密钥以供以后检索,或者确保它们的密钥是基于一个固定的函数生成的,该函数保证在给定相同的参数集的情况下生成相同的密钥。

您可以选择编写自己的服务器或购买/许可一个。如果您需要满足特定的安全合规性准则并需要检查合规性项目,则许可此组件可能是更好的选择。对于现成的解决方案,以StrongAuthPorticor为例。

于 2013-02-07T00:22:31.473 回答