簡體   English   中英

如何在Java中安全地存儲加密密鑰?

[英]How do I securely store encryption keys in java?

我有一個java屬性對象,其中包含Web服務的身份驗證信息。 我需要加密這些數據,但我不知道在哪里需要存儲加密密鑰才能保持安全。

有關加密此數據並以安全方式檢索數據的最佳做法是什么?

使用密鑰庫有什么好處嗎?

ws_user=username
ws_password=password
ws_url=https://www.whatever.com/myservice

你的問題很常見。 在linux中,用戶密碼存儲在純文本文件中。 雖然只存儲了密碼哈希值,但如果攻擊者可以訪問該文件,他就不會花很長時間使用離線字典攻擊來發現一些密碼。 在這種情況下,操作系統依賴文件權限拒絕訪問未經授權的用戶。 在你的情況下,它沒有太大的不同。 您必須正確配置密碼文件權限並確保服務器的物理安全性。

這是一個雞蛋問題。
然后,您需要找到存儲密鑰庫密碼的位置等等.....

根據您的安全要求和需求,您可以使用對稱加密來獲取數據,並使用客戶端證書身份驗證通過遠程服務器(您的服務器)檢索密碼。

或者你可以使用對稱的enryption加密數據,並在你的jar中硬編碼密碼,這是不安全的,但需要一些努力來找到它,你可以將責任委托給誰可以訪問你的文件的文件系統權限。

最重要的是,某個地方需要以未加密的形式擁有“根鏈”密碼。 受OS保護的本地文件,受OS保護的遠程文件,在源中硬編碼等。

唯一的方法是要求人在應用程序啟動時鍵入初始密碼,這對於需要自動啟動的應用程序顯然是不可能的。

我成功地使用JasyptStringEncrytor來加密屬性文件中的敏感信息以及一些用於生成salt和檢索密碼的內部過程。 由於您使用的是Web服務,因此您可以使用Jasypt的Web PBE配置在部署時手動輸入密碼,甚至可以使用自己的類似解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM