1

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

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

我的第一个建议是,在成功登录时,服务器会向客户端发送一个密钥来加密他的密码然后存储它。然后在下一个会话打开时,客户端将他的最后一个会话 id 发送回服务器,服务器通过解密密钥进行回答。

这可以使用私钥/公钥或仅使用一个密钥。

我认为它不安全,因为会话 ID 将被清楚地存储,因此任何人都可以解密密码......

任何命题,都必须有一个经典的过程。

提前致谢 !

4

1 回答 1

3

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

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

于 2012-07-31T15:47:29.823 回答