2009-06-16 57 views
7

首先,我的問題不是密碼哈希,而是密碼加密。我正在構建一個需要將用戶認證爲第三方服務的桌面應用程序。爲了加速登錄過程,我想讓用戶選擇保存他的憑據。由於我需要密碼來認證他的服務,所以不能被散列。如何在Linux上可靠地存儲密碼?

我想過使用pyCrypto模塊及其Blowfish或AES實現來加密證書。問題在於存儲密鑰的位置。我知道一些應用程序將密鑰直接存儲在源代碼中,但由於我正在編寫一個開源應用程序,所以這看起來不是一個非常有效的解決方案。

所以我想知道在Linux上如何實現用戶特定或系統特定的密鑰來增加密碼存儲安全性。

如果您比使用pyCrypto和系統/用戶特定鍵有更好的解決方案,請不要猶豫分享。正如我之前所說的,哈希不是解決方案,我知道密碼加密是脆弱的,但我想給用戶提供選項。使用Gnome-Keyring也不是一種選擇,因爲很多人(包括我自己)都不會使用它。

+0

織補。我正在建議gnome-keyring :( – Zifre 2009-06-16 14:14:10

回答

5

加密密碼並不真正爲您購買比純文本存儲更多的保護。任何能夠訪問數據庫的人都可能擁有對Web服務器機器的完全訪問權限。然而,如果安全性的損失是可以接受的,並且你真的需要這個,我會在安裝過程中產生一個新的密鑰文件(來自一個很好的隨機數據源)並使用它。顯然存儲此密鑰儘可能安全(鎖定文件權限等)。使用嵌入源中的單個密鑰並不是一個好主意 - 沒有理由說爲什麼單獨安裝應該有相同的密鑰。

5

嘗試使用PAM。您可以創建一個模塊,在用戶登錄時自動解密密鑰。這是GNOME-Keyring在內部的工作原理(如果可能的話)。你甚至可以用Python編寫PAM模塊pam_python