0

关于 stack-overflow 和 security.stackexchange 关于存储加密密钥的文章有很多,但我仍然很困惑,所以我决定在这里再次询问。

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

我将会

  1. 加密电子邮件 ID 和密码
  2. 并将加密密钥存储在用户 PC 上,因为我不希望用户每次发送和发送电子邮件时都输入密码

从阅读中我了解到,

  1. 我需要将加密密钥存储在单独的位置,这样黑客很难找到,但这里的问题是我的应用程序是用 Python 编写的,它将是开源应用程序,所以黑客可以查看源代码代码并获取存储密钥的目录的路径。
  2. 第二种解决方案是我可以有一个主密码作为密钥,当用户在启动计算机后第一次打开应用程序时,应用程序会要求输入主密码,然后我可以将密钥存储在 RAM 中.

查看互联网上有关此主题的所有文章,这是重复,但我仍在学习制作应用程序,并且在过去的两天里,我一直在循环,但没有成功。

操作系统:Linux Ubuntu 14.04

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

4

1 回答 1

0

你的理解是正确的。

无法阻止有权访问本地密钥的攻击者访问密码。隐藏它的存储路径几乎可以提供零附加安全性 - 任何具有执行解密所需知识的攻击者都可以轻松绕过这种机制。

唯一安全的方法是将密钥(或密钥的密钥)存储计算机之外 - 在用户的脑海中,在主密码机制的情况下。

如果您最终使用主密码,请不要忘记使用适当的密钥派生函数,最好使用密钥拉伸机制,例如 PBKDF2 或 bcrypt。切勿将密码直接用作密钥(甚至是密码的简单哈希。

于 2014-11-19T13:35:22.813 回答