常用¶
简介:
别名:
单向散列函数(one-way hash function)
消息摘要函数(message digest function)
哈希函数
杂凑函数
散列值:
哈希值
密码校验(cryptographic checksum)
指纹(fingerprint)
消息摘要(message digest)
原消息: 原像(pre-image)
完整性
等同一致性
摘要算法的特点:
1.不同的数据,即使是一字节改变,其摘要的结果变化非常大
2.无论摘要的输入长度是多少,其输出是固定长度,对于MD5而言输出16字节;对于SHA1而言,输出20字节
3.无法从摘要的结果中得出原文.只有输入相同的明文数据经过相同的摘要算法才能得到相同的结果
哈希函数的性质与应用:
1.抗碰撞性
2.原像不可逆
3.难题的友好性
特性:
1. 抗碰撞性(collision resistance)
鸽巢原理(pigeon-hole principle)
1.1 强抗碰撞性
找出相同散列值但互不相同的消息是困难的
or
如果难以找到任意两个明文,发生碰撞
1.2 弱抗碰撞性
找出和某条消息具备相同散列值的另一消息是困难的
or
如果给定一个明文前提下,难以找到碰撞的另一个明文
2. 单向性
指无法从散列值反算出消息
一个优秀的 hash 算法,将能实现:
* 正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。
* 逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。
* 输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。
* 冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。
实际应用:
PBE(Password Based Encryption)基于口令的加密
消息认证码
数字签名
伪随机数生成器
一次性口令(one-time password)
备注
数字摘要是 Hash 算法最重要的一个用途。在网络上下载软件或文件时,往往同时会提供一个数字摘要值,用户下载下来原始文件可以自行进行计算,并同提供的摘要值进行比对,以确保内容没有被修改过。
攻击/破解:
暴力破解:
从「冗余性」入手
破解「弱抗碰撞性」
原像攻击(pre-image Attach)
第二原像攻击(Second pre-image Attach)
生日攻击(Birthday Attach):
冲突攻击(Collision Attach)
破解「强抗碰撞性」
23个人就有一半以上的可能有2人生日相同
无法解决的问题:
能辨别「篡改」不能辨别「伪装」