首先,我的问题不是密码散列,而是密码加密。我正在构建一个桌面应用程序,需要将用户身份验证到第三方服务。为了加快登录过程,我想让用户选择保存他的凭据。由于我需要密码来验证他对服务的认可,因此无法进行哈希处理。

我想过使用pyCrypto模块及其Blowfish或AES实现来加密凭证。问题是存储密钥的位置。我知道有些应用程序将密钥直接存储在源代码中,但由于我编写的是一个开源应用程序,这似乎不是一个非常有效的解决方案。

所以我想知道在Linux上如何实现用户特定或系统特定的密钥以增加密码存储的安全性。

如果您比使用pyCrypto和系统/用户特定密钥有更好的解决方案,请不要犹豫,分享它。正如我之前所说,哈希不是一个解决方案,我知道密码加密是易受攻击的,但我想给用户提供选项。使用Gnome-Keyring也不是一种选择,因为很多人(包括我自己)都不使用它。

有帮助吗?

解决方案

加密密码实际上并没有比以纯文本格式存储更多的保护。任何能够访问数据库的人都可以完全访问您的Web服务器。

但是,如果安全性丢失是可以接受的,并且您真的需要这个,我会在安装过程中生成一个新的密钥文件(来自良好的随机数据源)并使用它。显然,尽可能安全地存储此密钥(锁定文件权限等)。使用源中嵌入的单个密钥不是一个好主意 - 没有理由为什么单独的安装应该具有相同的密钥。

其他提示

尝试使用 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归因
不隶属于 StackOverflow
scroll top