Java Web应用程序加密/解密/密钥轮换的现有做法是什么
我需要在基于java的web应用程序(使用jasypt)中加密用户输入的数据,该应用程序保存在MySQL数据库中,我希望能够定期(例如90天)更改加密密钥/密码短语。应用程序位于web中的服务器上 现有的已经加密的数据将需要使用新密钥重新加密,但为了这样做,它当然需要旧密钥Java Web应用程序加密/解密/密钥轮换的现有做法是什么,java,security,Java,Security,我需要在基于java的web应用程序(使用jasypt)中加密用户输入的数据,该应用程序保存在MySQL数据库中,我希望能够定期(例如90天)更改加密密钥/密码短语。应用程序位于web中的服务器上 现有的已经加密的数据将需要使用新密钥重新加密,但为了这样做,它当然需要旧密钥 旋转键的常见做法是什么 使加密密钥可用于系统的常用方法有哪些(例如,通过命令行传递的系统属性、加密属性文件、通过https从另一台服务器下载) 我希望没有一个单一的答案,但我想得到一些提示,指针和流行语,以调查在正确的方向
我希望没有一个单一的答案,但我想得到一些提示,指针和流行语,以调查在正确的方向 首先,了解关键点旋转的目的很重要。您的用例是在静止时加密数据。在这种情况下,密钥轮换的目的是在密钥泄漏或加密数据集泄漏并遭受暴力解密攻击的情况下遏制数据泄露。钥匙轮换的常见做法:
- 有时间限制的关键点旋转:在这种实践中,关键点会定期更新
- 事务级密钥:在这种做法中,每个事务都使用自己的唯一密钥进行加密,从而实现更高级别的数据泄露缓解
您可以选择编写自己的服务器或购买/许可服务器。如果您需要满足特定的安全合规性指导原则,并且需要检查合规性项目,那么授权此组件可能是一个更好的选择。对于现成的解决方案,请查看或作为示例。应用程序位于何处?Web/application server?目前它是一个运行Jetty的Web应用程序。这并不能回答问题…问题是,当加密密钥更改时是否需要重新加密数据(除了使用旧密钥解密和使用新密钥加密),我看不到任何建议。