关于密码加盐存储的笔记

  • 黑客入侵后,期望达到的目的:拿到原文去撞其他库。

  • 密码学的理论安全:就算你知道了整个具体算法,整个加解密的协议,以及密文保存的方法,所有源代码和数据库,只要不知道密钥是什么,就无法从密文破解出明文。(散列算法已经能做到知道密文拿不到原文。)

  • 密码学的应用安全:让破解成本超过获得的利益。

一开始的情况:MD5(原文)=密文

黑客拿到源码、密文之后:

使用记载大量原文+密文的彩虹表,加上可碰撞的特性(MD5(n原文)=1密文),获取大量弱口令用户的密码原文。

加盐:MD5(加盐(原文,盐))=密文

黑客拿到源码、数据库之后:
  • 没加盐的彩虹表失效了。足够长的盐,可以让加盐(原文,盐)的长度加长,不会出现在简单彩虹表里。

  • 每个用户的密文都不一样,无法通过出现频率高的密文猜出弱密码。

注意:如果盐值固定,那只需要对彩虹表进行修改,所有原文重新计算一次。相当于没有加盐

于是情况成了这样:

就算黑客拿到了密文、盐值、甚至加盐、加密算法,针对每个用户,都需要做一个加了这个用户专属的盐的彩虹表,去撞出原文,破解难度几何级增长。

疑惑:

在用户表中新增盐字段用来存盐,和直接用邮箱(邮箱是用户的唯一识别标识)做盐,在提高破解难度的角度上是否有区别?

关于密码加盐存储的笔记

http://blog.mothership.top/posts/dd95b236.html

作者

Mother Ship

发布于

2017-07-27

更新于

2023-02-13

许可协议

评论