2009-09-04 160 views
2

我們爲我們的java web應用程序使用Tomcat。 WEB-INF文件夾下有一個屬性文件。什麼是存儲AES加密密鑰的最佳方式?

AES加密將用於生成密鑰和加密密碼。加密的密碼將存儲在屬性文件中。應該在哪裏存儲加密密鑰?將密鑰和加密的密碼放在同一個屬性文件中是一個好主意嗎?還是應該將密鑰存儲在「webapps」目錄之外?

回答

7

在Windows上,您可以使用註冊表和DPAPI。使用註冊表確實很糟糕,但如果您想要獲得絕對的安全性,並且利用操作系統來存儲有價值的數據,那麼這是一種必要的痛苦。

在其他OS X上,您可以使用鑰匙串。

在linux上,我會使用文件權限來保護文件。

你所提議:

它是把文件中相同屬性的密鑰和加密的密碼是個好主意?

就像存儲你的錢在一個安全的,然後寫在組合保險箱在stickynote和堅持安全的說明。你所做的一切都對小偷不負責任,但沒有增加任何有意義的安全級別。

如果屬性文件足夠安全以容納加密密鑰,則可以以明文形式存儲密碼。

+0

+1。默默無聞的安全性至多... – 2009-09-04 00:35:12

0

我有以下幾點建議,

  1. 不要存放在戰爭中的關鍵。我們將安全鑰匙的責任留給每個安裝。在製作過程中,我們可以通過將密鑰文件存儲在智能卡上來保護它。

  2. 確保您的鑰匙已經過版本控制,因此您可以定期旋轉鑰匙。

  3. 存儲通行短語以生成密鑰,而不是原始密鑰材料。這使得更容易添加新的密鑰(您不必擔心算法或密鑰大小等)。它也增加了一些默默無聞。

2

您是否考慮過Java API中的KeyStore類。它是Sun Java密碼體系結構的一部分。

+0

我相信你只能將公鑰/私鑰對(非對稱密鑰)存儲在標準密鑰庫中。不是AES對稱密鑰。 有一個keystore impl允許使用對稱密鑰:http://khylo.blogspot.com/2009/12/keytool-keystore-cannot-store-non.html – simonlord 2010-09-22 14:33:02