簡體   English   中英

如何在Linux上用Python可逆存儲密碼?

[英]How To Reversibly Store Password With Python On Linux?

首先,我的問題不是密碼散列,而是密碼加密。 我正在構建一個需要向第三方服務驗證用戶身份的桌面應用程序。 為了加快登錄過程,我想為用戶提供保存其憑據的選項。 由於我需要密碼來驗證他的服務身份,因此無法對其進行哈希處理。

我想到了使用 pyCrypto 模塊及其 Blowfish 或 AES 實現來加密憑據。 問題是在哪里存儲密鑰。 我知道有些應用程序將密鑰直接存儲在源代碼中,但由於我編寫的是開源應用程序,這似乎不是一個非常有效的解決方案。

所以我想知道,在 Linux 上,您將如何實施用戶特定或系統特定的密鑰來提高密碼存儲的安全性。

如果您有比使用 pyCrypto 和系統/用戶特定密鑰更好的解決此問題的方法,請不要猶豫,分享它。 正如我之前所說,散列不是解決方案,我知道密碼加密容易受到攻擊,但我想將選擇權提供給用戶。 使用 Gnome-Keyring 也不是一個選擇,因為很多人(包括我自己)不使用它。

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

加密密碼並不能真正為您提供比以明文存儲更多的保護。 任何能夠訪問數據庫的人可能也可以完全訪問您的網絡服務器機器。

但是,如果安全損失是可以接受的,並且您確實需要它,我會在安裝過程中生成一個新的密鑰文件(來自良好的隨機數據源)並使用它。 顯然盡可能安全地存儲此密鑰(鎖定文件權限等)。 使用嵌入在源代碼中的單個密鑰不是一個好主意 - 沒有理由單獨安裝應該具有相同的密鑰。

Password Safe 由 Bruce Schneier 設計並開源。 它適用於 Windows,但您應該能夠看到他們在做什么並可能重新使用它。

http://www.schneier.com/passsafe.html

http://passwordsafe.sourceforge.net/

請閱讀: 如果您在代碼中輸入 AES,那您就錯了。

暫無
暫無

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

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