Encryption 存储桌面应用程序(电子邮件客户端)的加密密钥[重复]

Encryption 存储桌面应用程序(电子邮件客户端)的加密密钥[重复],encryption,configuration,desktop-application,key-management,Encryption,Configuration,Desktop Application,Key Management,关于堆栈溢出和安全性的文章太多了。stackexchange关于存储加密密钥的文章太多了,但我仍然感到困惑,所以我决定在这里再次提问 基本上,我正在创建一个用于教育目的的电子邮件客户端,用户可以创建一个帐户,在其中输入电子邮件ID和密码。我正在寻找安全的方式来保存信息 我会的 加密电子邮件ID和密码 并将加密密钥存储在用户PC上,因为我不希望用户每次发送电子邮件时都输入密码 从阅读中我了解到 我需要将加密密钥存储在一个单独的位置,这样黑客就很难找到它,但这里的问题是,我的应用程序是用Python

关于堆栈溢出和安全性的文章太多了。stackexchange关于存储加密密钥的文章太多了,但我仍然感到困惑,所以我决定在这里再次提问

基本上,我正在创建一个用于教育目的的电子邮件客户端,用户可以创建一个帐户,在其中输入电子邮件ID和密码。我正在寻找安全的方式来保存信息

我会的

加密电子邮件ID和密码 并将加密密钥存储在用户PC上,因为我不希望用户每次发送电子邮件时都输入密码 从阅读中我了解到

我需要将加密密钥存储在一个单独的位置,这样黑客就很难找到它,但这里的问题是,我的应用程序是用Python编写的,它将是开源应用程序,因此黑客可以查看源代码并获得密钥存储目录的路径。 第二个解决方案是,我可以有一个主密码,它将用作密钥,当用户在启动计算机后第一次打开应用程序时,应用程序将请求主密码,然后我可以将密钥存储在RAM中。 看看互联网上关于这个话题的所有文章,这只是重复,但我正在学习申请,在过去的两天里,我陷入了一个循环,没有成功

操作系统:Linux Ubuntu 14.04


编程语言/框架:Python/Gtk+

您的理解是正确的

无法阻止具有本地密钥访问权限的攻击者访问密码。隐藏其存储路径几乎不会提供额外的安全性—任何具备执行解密所需技术的攻击者都可以轻松绕过这种机制

要做到这一点,唯一安全的方法是将密钥或密钥的密钥存储在计算机之外——在用户的心目中,在主密码机制的情况下


如果您最终使用了主密码,请不要忘记使用适当的、理想情况下带有机制的密码,如PBKDF2或bcrypt。永远不要直接使用密码作为密钥,甚至不要简单地将密码散列。

我想,在找到更好的解决方案之前,我会选择主密码。