我有一个客户端java应用程序(在客户端计算机上运行的Web应用程序)。我想在客户端应用程序中存储加密密钥以加密/解密某些数据。此外,我还希望存储API密钥,以便从客户端应用程序调用我的REST服务。
如何在客户端安全地存储这些密钥,以确保它们不会被篡改或被盗?
我在考虑使用java密钥库,但问题仍然是如何安全地存储密钥库密码?
对此有何建议?
答案 0 :(得分:0)
你不能。这就像给某人一个锁定的盒子,并试图通过将其粘贴到盒子的底部来保密盒子的密钥。
尝试通过使用密钥库来增加这一点就像将密钥放在一个单独的小盒子中,并用另一个密钥锁定它,然后将其粘贴到盒子的底部。
如果您想要真正提高安全性,那么每当需要打开包装盒时,您都必须让客户端向服务器询问密钥,最好使用密码或其他可接受的密码。客户有权访问。
答案 1 :(得分:0)
在Windows上,我认为有Windows凭据管理器与Java解决方案https://github.com/dariusz-szczepaniak/java.jna.WindowsCredentialManager
结合使用的“胜过一切”解决方案我不是安全专家,但是我认为这将提供一些额外的保护,因为敌对的攻击者需要知道客户端计算机的用户名/密码才能获取Windows Credential Manager中的密码/证书/密钥。