Java首选项本地安全存储

问题描述:

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

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

我的第一个提议是,在成功登录时,服务器向客户端发送一个密钥来加密他的密码,然后将其存储。然后在下一次会话开始时,客户端将其最后一个会话ID发送回由解密密钥应答的服务器。

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

我的东西它没有固定的会话ID将被存储清楚,所以任何人都可以解密密码...

的任何主张,必须有一个经典的过程..?

在此先感谢!

没办法做到这一点,真的。您希望计算机记住一个秘密,以便用户无需与系统进行交互即可进行身份验证。您可以加密秘密并自动解密,但这仍然可以通过计算机上的信息进行操作。访问本地存储的攻击者将能够播放您实施的任何方案并检索密码。

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

+0

对,这就是我的想法。我受到扑克软件的启发,这些软件经常实现这一点(比如Winamax客户端)。我想知道他们是如何在法国成功通过安全测试的(ARJEL管理层正在控制安全性)。 – 2012-07-31 15:56:42