如何在Java中安全地存储加密密钥?[已关闭]

2022-09-02 04:25:54

我有一个java属性对象,其中包含Web服务的身份验证信息。我需要加密该数据,但我不知道我需要在哪里存储加密密钥以保持安全。

加密此数据并以安全方式检索数据的最佳做法是什么?

使用密钥库有什么好处吗?

ws_user=username
ws_password=password
ws_url=https://www.whatever.com/myservice

答案 1

您的问题是一个常见的问题。在 linux 中,用户密码存储在纯文本文件中。虽然只存储密码哈希,但如果攻击者可以访问该文件,他不会花很长时间使用离线字典攻击发现一些密码。在这种情况下,操作系统依靠文件权限来拒绝未经授权的用户访问。在您的情况下,它没有太大区别。您必须正确配置密码文件权限,并确保服务器的物理安全性。


答案 2

底线是某个地方需要以未加密的形式拥有“链根”密码。受操作系统保护的本地文件、受操作系统保护的远程文件、在源中硬编码等。

解决这个问题的唯一方法是要求人类在应用程序启动时键入初始密码,这对于需要自动启动的应用程序来说显然是不可能的。


推荐