常用 #### 简介:: 别名: 单向散列函数(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) .. note:: 数字摘要是 Hash 算法最重要的一个用途。在网络上下载软件或文件时,往往同时会提供一个数字摘要值,用户下载下来原始文件可以自行进行计算,并同提供的摘要值进行比对,以确保内容没有被修改过。 攻击/破解:: 暴力破解: 从「冗余性」入手 破解「弱抗碰撞性」 原像攻击(pre-image Attach) 第二原像攻击(Second pre-image Attach) 生日攻击(Birthday Attach): 冲突攻击(Collision Attach) 破解「强抗碰撞性」 23个人就有一半以上的可能有2人生日相同 无法解决的问题:: 能辨别「篡改」不能辨别「伪装」