1

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

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

4

1 回答 1

2

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

  1. 生成随机密码以加密您要保护的明文凭据
  2. 派生一个密钥以保护此随机密码免受用户密码的影响
  3. 使用步骤 2 中的密码加密步骤 1 中的密码

现在,您可以在用户登录后访问受保护的凭据(因为您知道用户输入的密码)。当用户更改他的密码时,您只需从步骤 1 重新加密密钥(以防您在多个地方使用此密钥;因此您不能错过任何一个)。

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

于 2013-03-13T07:45:09.503 回答