用户口令(密码)应该如何传输?要不要加密? HTTPS 呢?举例分析

14次阅读

共计 375 个字符,预计需要花费 1 分钟才能阅读完成。

假设

口令在信道中传输时不会被窃取(就是未被安装伪造证书的 HTTPS),但服务端被攻破

1. 明文请求登录和存储

攻击者得到了用户的口令明文,可以去其他站点尝试 输入 登录

2. 哈希请求登录和直接存储

攻击者得到了用户的口令哈希,可以 构造请求 去其他站点尝试登录

3. 哈希请求登录和加盐存储

攻击者在拿到服务端日志或执行权限时,可能获得口令哈希,然后 构造请求 去其他站点尝试登录

4. 加弱盐哈希请求登录和加强盐存储

例如,前端用 SHA256($password + $hostname) 请求登录,服务端用 SHA256($hash + $salt) 存储。
攻击者可能得到请求的哈希值,但因为加盐的存在,即便用户在其他站点使用相同口令,也无法重新计算哈希 构造请求 登录

总结

第 4 种方法是最安全的。当然我们作为用户,还是每个站点都使用独立口令最好

后记:刚拔完智齿,闲得无聊,把很久以前的思考整理成文

正文完
 0