如何在webapp中存储需要以纯文本形式传递给第三方的密码?

时间:2013-03-12 11:17:43

标签: passwords password-encryption gnupg

我有一个简单的网络应用程序,用户登录访问第三方API,也需要使用纯文本用户名和密码(没有OAuth或任何东西)的个人凭证。存储这些第三方密码的正确,安全,直接的方法是什么,以便我可以在需要时将其解密为纯文本,并最大限度地减少这些密码的泄漏?

我正在考虑硬编码GPG密钥以在webapp中加密以便存储,并在需要时从防火墙后面的另一台机器解密。

1 个答案:

答案 0 :(得分:2)

我认为这不是GPG特有的问题。您可以考虑以下方案(不需要公钥加密):

  1. 生成随机密码以加密要保护的纯文本凭据
  2. 从用户密码中获取密钥以保护此随机密码
  3. 使用步骤2中的密码
  4. 加密步骤1中的密码

    现在,您可以在用户登录后访问受保护的凭据(因为您知道用户输入的密码)。当用户更改密码时,您只需要重新加密步骤1中的密钥(如果您在多个地方使用此密钥,那么您就不能错过密码)。

    对于第2步,您应该使用一些(慢)密钥派生函数,如PBKDF2。这可确保在发生安全漏洞的情况下,无法对加密凭据进行简单的字典攻击。