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