一、散列函数的具体应用
1.单向散列函数在密码学中的应用
A.数字签名技术
a. 利用单向散列函数计算出需要签名的消息的邮摘,再利用签名算法对邮摘签名来代替直接对原来的消息进行签名。
b.有效地提高了签名的效率和速度,也减少了传输的信息量,节约了网络的带宽。
B.消息的完整性认证
a.通常做法是文件的所有者用Hash算法计算出文件的Hash值,自己保存Hash值的一份拷贝,然后把文件存放在一个公开的地方。需要验证一个 文件的完整性时,就用一个Hash算法计算存储文件的Hash值,和原来自己保存的Hash值相比较,相等则完整,反之则有改动。
b.实际中使用 在网络上利用Hash函数进行完整性鉴别
这种方法实现了再不安全的通信信道上的完整性认证,广泛地使用在电子商务的认证系统中。
C.一种改进的用户密钥管理方案
a.用户的口令使用DES算法加密后存放在机器中的,但该算法对被加密的数据的长度有要求,即用户不能输入过长的密钥。
b.利用单向散列函数提出一种安全的用户密钥管理方案 如果K=E(H(P1))
这个方法改进后允许用户输入任意长度的口令,由于单项散列函数的单向性,还可以弥补DES的一些不有缺陷,同时能够对付穷举攻击的威胁。2.其他方面的应用
A.保密增强邮件 PEM(Privacy Enhanced Mail)
因特网保密性增强邮件标准,提供的消息完整性检查中的鉴别使用的单项散列函数MD2和MD5,邮件加密软件PGP 中2.6.3版本中使用的单项散列 函数是MD5。
B.文件校验
a.奇偶校验和CRC校验并没有抗数据篡改的能力
b.MD5 Hash算法的“数字指纹特性”,使它成为目前应用最广泛的一种文件网整形校验和(Checksum)算法
c.应用场景为:
文件传送后的校验 得到的目标文件计算md5 checksum与源文件的做比对
用作保存二进制文件系统的数字指纹,以便检测文件系统是否未经允许的被修改
C.鉴权协议
pop3协议中就有这一应用:
需要鉴权的一方,向被鉴权的一方发送随机串(“挑战”),被鉴权方将该随机串和自己的鉴权口令字一起进行 Hash 运算后,返还鉴权方,鉴权 方将收到的Hash值与在己端用该随机串和对方的鉴权口令字进行 Hash 运算的结果相比较(“认证”),如相同,则可在统计上认为对方拥有该口 令字,即通过鉴权。
二.结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。
1.散列函数的安全性
A.MD5和SHA-1算法