Java首选项本地安全存储

时间:2012-07-31 15:40:47

标签: java encryption login

我正在寻找一个安全进程来在Java客户端应用程序中存储密码。 我将使用Preferences API来存储数据客户端。

我希望我的客户能够存储登录信息(登录名和密码)以加快下次登录的速度。我不想保持密码清晰,所以我会加密它。 客户端/服务器通信是通过SSL建立的,因此我可以在服务器端存储密钥。

我的第一个主张是,在成功登录后,服务器会向客户端发送密钥以加密密码然后存储它。然后在下一个会话开始时,客户端将其最后一个会话ID发送回通过解密密钥回答的服务器。

这可能是使用私钥/公钥或只使用一个密钥。

我认为它不安全,因为会话ID将被清除,所以任何人都可以解密密码......

任何提议,都必须有一个经典的过程......?

提前致谢!

1 个答案:

答案 0 :(得分:2)

没办法,真的。您希望计算机记住一个秘密,以便用户不必与系统交互以进行身份​​验证。您可以加密密码并自动解密,但这仍然可以用于机器上的信息。有权访问本地存储的攻击者将能够回放您实施的任何方案并检索密码。

一种妥协是一种钥匙串系统,其中用户的所有存储密码都是由用户在登录时产生的主密码加密的,因此他只需要记住一个密码。但这超出了单个应用程序的范围。