本文参考资料:
[1]李森. MD5算法的分析与研究[D].杭州电子科技大学,2018.
[4] https://blog.csdn.net/weixin_67603503/article/details/143316977
MD5+盐值加密算法简介
MD5算法属于Hash函数算法的一种。在1992年,Rivest在MD4算法的基础上设计出了MD5算法,其安全性要比MD4算法的安全性高。但是该加密算法于2004年被王小云教授破解,导致其在安全性上大打折扣。于是要想办法加强该算法的安全性,其中一种方法就是采用加盐值的方法。本文先介绍Hash函数的定义和性质,再介绍针对Hash函数的攻击方法,再具体分析MD5算法的原理,最后采用加盐值的方法,增强该加密算法的安全性。
定义:Hash函数是一个映射 h:{0,1}*→{0,1}n; {0,1}*是任意长度的明文消息。{0,1}n是长度为n比特的Hash值。那么从该定义可以看出,Hash函数是一个压缩的过程,因为明文长度可能很长,最终被压缩成为有限的密文空间。Hash函数可以依据是否使用密钥将其分为两类:带密钥和不带密钥的Hash函数。从上世纪90年代至今,在密码学中应用的Hash函数几乎都是不带密钥的。上述定义中也是不带密钥的Hash函数。
性质:对于一个给定的输入消息,去计算消息的Hash值是简单的。因此Hash函数在信息安全领域得到了普遍的应用。那么,安全的Hash函数应当符合以下条件:
- 压缩性:对于既定的任何的输入明文M∈{0,1}*,输出的Hash值为h=H(M)∈{0,1}n,并且h是很容易得到的;
- 抗碰撞攻击:已知输入消息M,寻找另外一个消息M’≠M,满足H(M)≠H(M’),在运算上是非常不容易的;
- 抗原像攻击:对任意一个明文M∈{0,1}*,通过Hash函数的运算,很轻易的得到h=H(M) ∈{0,1}n,但是从M的Hash值H(M)很难反向推出其对应的明文M,此时明文M被称为Hash值H(M)的原像。由于Hash函数具有单向性,因此它具有抗原像攻击性;
- 抗第二原像攻击:对于给定的明文消息M,通过Hash函数的运算可以得出M的Hash值H(M),找到另外一个不同的M’使得H(M’)=H(M)是非常困难的。
以上为Hash函数的四个性质,对于该性质的后面三条性质,有一些攻击方法针对于此。
在对Hash函数进行攻击时,攻击者的目的就是找到碰撞或原像。Hash函数的攻击方法有以下几种:
- 碰撞攻击:找到两个不一样的明文,通过Hash函数的运算,得到一样的Hash值;
- 原像攻击:对于一个给定的Hash值,攻击者企图寻找产生该Hash值的明文(原像);