Java 应用程序中的静态数据加密

Data encryption at rest in Java Application

我有一个 Java 应用程序(ESB - 企业服务总线),它处理客户敏感数据并且需要支持静态数据加密以防止数据滥用。

应用程序将客户数据存储在文件系统上进行处理,应用程序通过 java.io.File API 与其进行交互。所以基本上,我需要在应用程序将文件保存在文件系统上之前加密文件,然后在应用程序读取它之前解密它,以便它可以被解析和处理。

是否有任何好的框架或库可以帮助我实现静态数据加密?我计划使用 PGP encryption/decryption 实现静态数据加密。

我正在寻找在我的 Java 应用程序中实现静态数据加密的最佳推荐方法,如有任何帮助,我们将不胜感激。

为什么您会认为 pgp 是解决此问题的正确工具?在我看来,您只需要一个对称密钥解决方案,所以 pgp 感觉像是错误的答案。

Java 中的密码学是一个雷区。做错事容易,做对事难。

话虽如此,如果您使用 BouncyCastle 而不是其他东西,您就有更好的机会不搞砸。他们有示例代码向您展示如何进行各种操作。

为了加密静态数据,我建议您在 CBC 模式或 CTR 模式下使用 AES。如果使用 CBC 模式,请确保以加密安全方式(不可预测)选择 IV。此外,切勿将 IV 重复用于任何操作模式。

您还应该考虑是否需要消息完整性。关于对称加密的一般指导 here.

尽管人们经常弄错密码,但更大的问题是密钥管理。这是一个全新的蠕虫罐头(不要误以为 pgp 提供了解决方案:它所做的只是将问题转移到其他地方)。