第3章_单向散列函数详解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
Network and Information Security
第3章
单向散列函数
1)
4) 按512位的分组处 理输入消息
附加填充位
填充位
2) 附加长度64
消息长度(K mod 264)
L 512bit N 32bit
Kbit 消息 100…0
512bit Y0 512 IV 128 HMD5 CV1 128
•
● 给定M,要找到另一消息M'并满足H(M)=H(M')很难。
• 在某些应用中,单向散列函数还需要满足抗碰撞 (Collision)的条件:要找到两个随机的消息M和M',使 H(M)=H(M')很难。
3
Network and Information Security
第3章
单向散列函数
Hash函数的良好性质
4
Network and Information Security
第3章
单向散列函数
( 5 ) 抗弱对抗性
确定与x有相同位数的y,使H(x)=H(y), 在现有的计算环境下是不可 行的。 ( 6 ) 抗强对抗性 找到两个不同位数信息x,y,使H(x)=H(y),在现有的计算环境下是不 可行的。 注:以上两种,哪一种更容易找?
9
Network and Information Security
第3章
单向散列函数
3) 初始化MD缓冲区
初始化用于计算消息摘要的128位缓冲区。这个缓冲 区由四个32位寄存器 A 、B 、 C、 D表示。寄存器的初始 化值为(按低位字节在前的顺序存放): A: 01 23 45 67 B: 89 ab cd ef C: fe dc ba 98 D: 76 54 32 10 4) 按512位的分组处理输入消息 这一步为MD5的主循环,包括四轮,如图3-3所示。 每个循环都以当前的正在处理的512比特分组Yq和128 比特缓冲值ABCD为输入,然后更新缓冲内容。
• ( 1 )广泛的应用性 • Hash函数能用于任何大小的消息。
• ( 2 ) 定长输出
• 将消息集合∑中的任意长度的消息M映射为长度为m的 消息摘要。
• ( 3 ) 实现性
• 对Hash函数的一个非常重要的要求是简单易实现性。 • ( 4 ) 单向性质 • 要求Hash函数是单向函数。给定h值,求信息M (是一对 多的关系) ,只有通过枚举,在现有的计算环境下是不 可行的。
( 7 ) 独立性
哈希函数值“不依赖输入信息”,从某种程度上说是由算法决定的。 ( 8 )抗近冲突
Hash 函数满足独立性,输入信息某一位的变化,应该引起平均一半 的输出位的变化。
(9 ) 安全性 在很广泛的条件下, Hash值H(M)的分布是均匀分布的.
5
Network and Information Security
第3章
单向散列函数
第3章 单向散列函数
3.1 单向散列函数概述
3.2
3.3
MD5算法
SHA-1算法
3.4
3.5
消息认证码(MAC)
对单向散列函数的攻击
1
Network and Information Security
第3章
单向散列函数
• 随着以Internet为基础的电子商务技术的迅猛发展,以
公钥密码、数字签名等为代表的加密安全技术已成为
第3章
单向散列函数
散列函数工作模式
消息分组 1
消息分组 2
…
消息分组 n
填充位百度文库
IV
压缩 函数
压缩 函数
…
压缩 函数
函数值
图3-1 单向散列函数工作模式
6
Network and Information Security
第3章
单向散列函数
3.2 MD5 算 法 3.2.1 算法 MD 表示消息摘要 (Message Digest) 。 MD5 是 MD4 的改进版,该算法对输入的 任意长度消息产生 128 位散列值 ( 或消息 摘要) 。MD5算法可用图3-2表示。
10
Network and Information Security
第3章
单向散列函数
Yq A B CV q C D 第 一 轮 第 二 轮 第 三 轮 第 四 轮 + + + + A B C D CV q+ 1
图3-3 单个512比特分组的MD5主循环处理
11
Network and Information Security
1) 附加填充位 首先填充消息,使其长度为一个比 512的倍数小64位的 数。填充方法:在消息后面填充一位1,然后填充所需数 量的0。填充位的位数从1~512。 填充消息长度=512-(k+64) mod 512 2) 附加长度 将原消息长度的 64 位表示附加在填充后的消息后面。 当原消息长度大于264时,用消息长度mod 264填充。这时, 总长度恰好是 512的整数倍。令M[0 1…N−1]为填充后消 息的各个字(每字为32位),N是16的倍数。
研究的热点。 • 单向散列函数是数字签名中的一个关键环节,可以大大 缩短签名时间并提高安全性,另外在消息完整性检测, 内存的散布分配,软件系统中帐号口令的安全存储单向 散列函数也有重要应用。
2
Network and Information Security
第3章
单向散列函数
3.1
单向散列函数概述
• 所谓的单向散列函数 (Hash Function,又称哈希函数、杂 凑函数),是将任意长度的消息M映射成一个固定长度散列 值h(设长度为m)的函数H: • h=H(M) • 散列函数要具有单向性,则必须满足如下特性: • • ● 给定M,很容易计算h。 ● 给定h,根据H(M)=h反推M很难。
512bit Y1 512 HMD5 … CVL-1 128 图3-2 MD5算法 …
512bit YL-1 512 HMD5 128位消息摘要
3) 初始化MD 缓冲区
8
图3-2 MD5算法
5) 输出
Network and Information Security
第3章
单向散列函数
由上图可知,MD5算法包括以下五个步骤。
第3章
单向散列函数
图3-3中,四轮的操作类似,每一轮进行16次操作。
各轮的操作过程如图3-4所示。
a b c d 非线性函数 +
a M j T[i] b + + <<<s + c d
j:0—15, i:1—64(共四轮, 每一轮用的都不同) 图3-4 MD5某一轮的1次执行过程