2009-06-16 44 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