2012-07-31 67 views
0

我在尋找一個安全進程在Java客戶端應用程序中存儲密碼。 我將使用Preferences API來存儲數據客戶端。Java首選項本地安全存儲

我希望我的客戶端能夠存儲登錄信息(登錄名和密碼)以加速下次登錄。我不想保持密碼清晰,所以我會加密它。客戶端/服務器通信通過SSL建立,因此我可以在服務器端存儲密鑰。

我的第一個提議是,在成功登錄時,服務器向客戶端發送一個密鑰來加密他的密碼,然後將其存儲。然後在下一次會話開始時,客戶端將其最後一個會話ID發送回由解密密鑰應答的服務器。

這可能是使用私鑰/公鑰或只有一個密鑰。

我的東西它沒有固定的會話ID將被存儲清楚,所以任何人都可以解密密碼...

的任何主張,必須有一個經典的過程..?

在此先感謝!

回答

2

沒辦法做到這一點,真的。您希望計算機記住一個祕密,以便用戶無需與系統進行交互即可進行身份驗證。您可以加密祕密並自動解密,但這仍然可以通過計算機上的信息進行操作。訪問本地存儲的攻擊者將能夠播放您實施的任何方案並檢索密碼。

一種妥協方式是鑰匙串系統,其中用戶存儲的所有密碼都由用戶在登錄時產生的主密碼加密,所以他只需要記住一個。但是這超出了單個應用程序的範圍。

+0

對,這就是我的想法。我受到撲克軟件的啓發,這些軟件經常實現這一點(比如Winamax客戶端)。我想知道他們是如何在法國成功通過安全測試的(ARJEL管理層正在控制安全性)。 – 2012-07-31 15:56:42