11 密码学Hash函数
Hash函数输入长度可变,而输出长度固定
合格的Hash函数输出应该均匀分布,看起来随机
Hash函数两个要求:1. 抗碰撞性(找到两个不同的输入对应相同的输出在计算上不可行),2.单向性(通过Hash值找到输入值在计算上不可行)
Hash函数的操作过程:
- 把输入数据的长度填充成固定长度分组的整数倍,填充内容包括原始消息的位长度信息,填充长度信息能够增加攻击者更改数据而要保持hash值不变的难度
11.1 密码学Hash函数的应用
Hash函数用于各种安全应用和网络协议中
11.1.1 消息认证
用于检验消息的完整度,有两件事情要做:1.是确保数据正确,2是确保发送方的身份真实
并且当提供消息认证功能时,Hash值通常称为信息摘要
操作过程:发送者先将信息M(以后均用M代表信息)进行Hash,然后将【M+Hash】一起发送给B,B再做一次Hash运算将结果与Hash值比较,相同则没有篡改
注意:此种情况下必须保证Hash的安全传输,因为中间人攻击完全可以改完信息之后再算一个新的Hash值,接收者并不会发现
使用不同方法提供消息认证服务
- 使用对称密码一起加密M和Hash:认证功能+保密性
- 使用对称密码只加密Hash:认证功能
- 不使用加密算法,但是使用一个双方都知道的秘密值S和M一起计算Has