如何在不阅读的情况下存储第三方密码



我需要帮助我无法转过头的情况。我需要从第三方服务存储一个密码,我不希望它是人类可读的。

我提出了一个(可能是愚蠢的(解决方案:我的服务生成一个加密/解密密码的秘密键,并且它使用该键来解密密码,当需要访问第三方服务时,并在需要存储它。

问题 我的解决方案安全吗?是好还是坏?有更好的方法吗? 你能指出指示吗?

存储可检索的密码可能是密码学中最艰巨的任务之一。您的应用程序需要使这些密码明确,并且同样的攻击者具有足够的特权。但是,有一些常见的方法可以解决此问题:

  1. 如果目标网站提供了身份验证服务,则可以将明文密码与令牌交换,并存储此令牌(而不是密码(以获取将来的请求。OAuth2协议以这种方式工作。
  2. 您每次用户启动应用程序时都可以请求主密码。此主密码用于对网站密码进行加密,但从未存储过,只要应用程序运行。
  3. 大多数操作系统都提供某种关键存储,在Windows中,它被称为数据保护API(DPAPI(,在Android中,它是密钥库。一个钥匙店在OS级别上解决了问题,即不需要主键即可加密密码(这提出了将主键存储在哪里的问题...(。

上面的系统都不是子弹的证明,应用程序本身必须能够获取密码。这就是为什么如果可能的话,一个人试图避免完全存储密码(例如存储哈希(。

如果您负担得起专用的硬件,则可以将密码管理超出互联网无法访问的第二服务器,或者您可以考虑购买硬件Secuity模块。

相关内容

最新更新