我需要使用只能通过密码访问的外部服务。
我不喜欢将明文密码存储在服务器上的想法,但是 AFAIK 我无能为力。
考虑到该服务只能由客户端访问(也无法知道整个密码),我试图让黑客更难的想法是将“一半”的密钥存储在服务器上,并且客户端上的“一半”密钥。
我知道这也不是完美的,并且可以完全访问服务器的人将能够找到密码,但总比没有好。(欢迎提出其他建议。)
考虑到密码不时更改,并且我不想更改此密码的“服务器一半”,到目前为止我最好的想法是:
- 生成随机密钥 K 并存储在服务器上
- 用K加密密码(P),生成E,并将E交给客户端
- 现在,每次客户端想要访问服务时,它都会提供 E 并且服务器将使用 K 解密 E。
- 当密码(P)更改(变为 P')时,我只需要再次用 K 对其进行加密,并将新的 E' 提供给客户端。
这看起来合理吗?还有其他想法吗?