需要 2 个密钥才能访问内容

信息安全 加密 密码学
2021-08-25 01:18:59

我需要使用只能通过密码访问的外部服务。

我不喜欢将明文密码存储在服务器上的想法,但是 AFAIK 我无能为力。

考虑到该服务只能由客户端访问(也无法知道整个密码),我试图让黑客更难的想法是将“一半”的密钥存储在服务器上,并且客户端上的“一半”密钥。

我知道这也不是完美的,并且可以完全访问服务器的人将能够找到密码,但总比没有好。(欢迎提出其他建议。)

考虑到密码不时更改,并且我不想更改此密码的“服务器一半”,到目前为止我最好的想法是:

  1. 生成随机密钥 K 并存储在服务器上
  2. 用K加密密码(P),生成E,并将E交给客户端
  3. 现在,每次客户端想要访问服务时,它都会提供 E 并且服务器将使用 K 解密 E。
  4. 当密码(P)更改(变为 P')时,我只需要再次用 K 对其进行加密,并将新的 E' 提供给客户端。

这看起来合理吗?还有其他想法吗?

2个回答

我不完全理解这个场景,你能提供一个简单的ASCII图吗?

无论如何,我不太喜欢将 E 提供给用户的想法,因为这将是一个很难记住的密码,也许你可以用另一种方式来做,把 K 给用户(这样你就可以选择它)和将 E 存储在服务器中。

我将在场景澄清后编辑我的回复:)

如果您无法使用客户端证书(这将是更可取的),那么是的,这可能是一个很好的解决方案,但请记住,如果应用程序被黑客入侵,那么游戏就结束了(一如既往)。