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

时间:2014-11-19 13:19:02

标签: encryption configuration desktop-application key-management

关于存储加密密钥的堆栈溢出和security.stackexchange上有很多文章,但我仍然感到困惑,所以这就是我决定再次询问的原因。

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

我将

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

    1. 我需要将加密密钥存储在一个单独的位置,以便黑客很难找到,但问题是我的应用程序是用Python编写的,它将是开源应用程序,所以黑客可以查看源代码并获取存储密钥的目录的路径。
    2. 第二个解决方案是我可以有一个主密码用作密钥,当用户在启动计算机后第一次打开应用程序时,应用程序会询问主密码,然后我可以存储关键在RAM。
    3. 在互联网上查看关于这个主题的所有文章,这是一个重复,但我会学习制作应用程序,过去两天我进入循环但没有成功。

      OS:Linux Ubuntu 14.04

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

1 个答案:

答案 0 :(得分:0)

您的理解是正确的。

无法阻止访问本地密钥的攻击者访问密码。模糊存储它的路径几乎不提供额外的安全性 - 任何具有执行解密所需的专有技术的攻击者都很容易绕过这种机制。

唯一安全的方法是存储计算机的密钥(或密钥的密钥) out - 在用户的想法中,如果是主密码机制。

如果您最终使用主密码,请不要忘记使用正确的key derivation function,理想情况下使用key-stretching机制,例如PBKDF2或bcrypt。 不要直接使用密码作为密钥(或者甚至是密码的简单哈希。