首页 > 解决方案 > 如何使用本身加密的私钥/密码加密数据?

问题描述

我想使用 Java 以以下方式加密一些数据(一些简单的文本):

换句话说,我希望我的应用程序能够自己加密一些数据,而不需要每次都需要密钥,并且我希望这个密钥本身被加密(而不是以纯文本形式存储),这样攻击者就无法获得它。

我可以使用哪些工具/技术来实现这一目标?

标签: javaencryptionencryption-symmetric

解决方案


可以访问服务器的攻击者将无法获取存储的密钥

这通常是一个问题,主要是在您的数据旁边有一个加密密钥时。一旦密钥泄露,没有什么能阻止攻击者解密数据。您的主要任务是防止攻击者首先获得对密钥的访问权(我知道,这很容易说)。

似乎您只想将密钥保留在内存中,这在许多情况下可能是个好主意。解密时,最后密钥无论如何都需要在内存中。

我希望这个密钥本身被加密(不以纯文本形式存储)

然后您需要存储和维护一个加密密钥来加密第一个密钥。你有同样的问题来保护这两个密钥。

建议:

我经常看到使用外部服务来管理密钥或进行加密操作(密钥库、密钥管理服务、HSM、TPM 等)的解决方案。但是 - 如果攻击者获得完全的应用程序级访问权限,他可能会使用相同的服务来解密数据。

但至少如果数据泄露(根据我的经验,备份或旧副本经常泄露),这些服务将有助于使数据无法访问。


推荐阅读