第四章 hash函数与消息认证码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山东大学王小云教授成功破解MD系列算法
2004 年 8 月 17 日 的 美 国 加 州 圣 巴 巴 拉 , 正 在 召 开 的 国 际 密 码 学 会 议 (Crypto’2004)安排了三场关于杂凑函数的特别报告。在国际著名密码学家 Eli Biham和Antoine Joux相继做了对SHA-1的分析与给出SHA-0的一个碰撞之 后,来自山东大学的王小云教授做了破译 MD5 、HAVAL-128 、 MD4 和 RIPEMD 算 法的报告。在会场上,当她公布了MD 系列算法的破解结果之后,报告被激动 的掌声打断。王小云教授的报告轰动了全场,得到了与会专家的赞叹。报告 结束时,与会者长时间热烈鼓掌,部分学者起立鼓掌致敬,这在密码学会议 上是少见的盛况。王小云教授的报告缘何引起如此大的反响?因为她的研究 成果作为密码学领域的重大发现宣告了固若金汤的世界通行密码标准 MD 5的 堡垒轰然倒塌,引发了密码学界的轩然大波。会议总结报告这样写道:“我 们该怎么办? MD5 被重创了;它即将从应用中淘汰。 SHA-1 仍然活着,但也见 到了它的末日。现在就得开始更换SHA-1了。” 果然,2005年初,王小云教授就宣布,已经成功破解SHA-1。美国《新科 学家》立即发表了《崩溃!密码学的危机》文章,美国的 NIST 也宣布,美国 政府5年内将不再使用SHA-1。
g
h
轮函数(第t轮)
Kt
• Wt为消息字
• Kt为轮常数
W79
a
b c
d
e
f
g
h
轮函数(第79轮)
K79
• 轮函数后面介绍
+ + + + + + + +
512bit H
i
步骤3:SHA-512算法的主循环
H i(0) a H i(0) 1
• 每一个消息分组 经处理后的中间 摘要值计算 • 模264加 • Hi(j)为Hi的第j个 64比特
1、定义
设M是所有可能消息m的集合,Y是由 所有可能的消息摘要码y构成的有限集,则 把从M到Y的映射 h:M→Y 称为一个hash函数。
M是无限集,Y是有限集。
一、hash函数
2、要求
• 基本要求:
有密钥时为MAC
算法公开 有数据压缩 易于计算
一、hash函数
2、要求
• 安全要求:
单向性 弱抗碰撞特性 强抗碰撞特性
T1 h 1 (e) Ch(e, f , g ) K t Wt
512
Ch(e, f , g ) (e f ) (e g ) Maj(a, b, c) (a b) (a c) (b c)
T2 0 (a ) Maj (a, b, c)
23
生日悖论
生日攻击方法
• 假设Hash函数的摘要值为t个比特。 • 攻击者首先产生一真一假两条消息。 • 将真消息通过变形(如增加空格)表示成一组2t/2 个不同的变形消息,产生一份合法的消息组。 • 也将假消息通过变形表示成一组2t/2个不同的变形 消息,生成一组非法的消息组。 • 分别计算以上两组合法、非法消息组的消息摘要 值,找出具有相同摘要值的一对合法、非法消息 对,其成功概率大于1/2。
k>2t-1
• SHA-1: t=160
k 2t 1 2159 7.311047
难以奏效
2、生日攻击(birthday attack)
• 在一个房间中坐了k人,k的数量至少为多 少时,找一个与某特定人生日相同的概率 大于1/2?
183
• K至少为多少时,此房间中至少有两个人 生日相同的概率大于1/2?
步骤3:SHA-512算法的主循环
mi Hi-1
1024bit
W0 W1
512bit
f f g g h h
K0 K1
消息调度
a a
b b
c c
d d
e e
• 每个1024比特分组消 息mi的处理过程:80 轮处理,外加模264加 法运算
轮函数(第0轮) 轮函数(第1轮)
64bit
Wt
a
b c
d
e
f
• Ck(m)应均匀分布,即随机选取两个消息m和m’, Ck(m’)=Ck(m)的概率是2-n。 • 若m’是m的某个变换,即m’=f(m),Ck(m’)=Ck(m) 的概率是2-n。
三、hash类函数的攻击类型
• 直接攻击 • 生日攻击
1、直接攻击
• • • • 对消息的穷举攻击 t比特长度的消息摘要 消息摘要输出有2t个可能 采用穷举搜索法,攻击者要尝试的消息数k 至少要多大,才能找到一个特定的m’,使 h(m’)=h(m) 的概率超过1/2?
第4章
Hash函数与消息认证码
本章内容
• • • • hash函数和MAC概述 安全hash函数算法SHA-512 欧洲hash函数算法Whirlpool MAC算法
第4章
hash函数与消息认证码
教学要求
• • • • 了解hash函数和MAC的基本概念 掌握SHA-512的基本原理 了解Whirlpool算法 了解MAC算法
步骤2:初始化消息摘要缓冲区
• 缓冲区用8个64比特的寄存器(a,b,c,d,e,f,g,h) 表示,初始化数值为 a=H0(0)= 6a09e667f3bcc908 b=H0(1)= bb67ae8584caa73b 64比特字取 c=H0(2)= 3c6ef372fe94f82b 自前8个素 d=H0(3)= a54ff53a5f1d36f1 数的平方 e=H0(4)= 510e527fade682d1 根,取小 f=H0(5)= 9b05688c2b3e6c1f 数部分的 g=H0(6)= 1f83d9abfb41bd6b 前 64 比特 h=H0(7)=5be0cd19137e2179
4.1 概述
一、hash函数
散列函数 杂凑函数 哈希函数
功能
将任意长度文本 变换为很短的固 定长度文本
困难
特点 •单向特性 •雪崩特性 •无陷门 应用
容易
散列值,消息摘要码 数字指纹
•数字签名
•消息认证
hash函数的相关术语
HASH和 消息摘要
密码校验和 压缩编码 消息摘要码 指纹
印章,记号
一、hash函数
6.2 安全hash函数算法SHA-512
Secure Hash Algorithm
SHA系列参数
SHA-1 消息摘要长度(比特) 消息长度(比特) 分组长度(比特) 字长(比特) 轮数 160 <264 512 32 80 SHA-224 224 <264 512 32 64 SHA-256 256 <264 512 32 64 SHA-384 384 <2128 1024 64 80 SHA-512 512 <2128 1024 64 80
二、消息认证码(MAC)
(message authentication code,MAC)
1、定义
MAC=Ck(m)
• • • • k —— 通信双方共享的密钥 m —— 输入的消息(长度不固定) C —— MAC函数 MAC —— 消息认证码(固定长度)
二、消息认证码(MAC)
MAC=Ck(m)
HASH函数填充举例
•HASH函数MD4 要求输入为512比特的整数倍长度 •假设输入m是1800比特 1800264 mod 512 •输入填充结果:
512×4=2048
512-264-1-64=183
512
512
512
信息位
512
264 1 183(0串) 64(L)
标 填 志 充 位 0
长 度
1、步骤1:消息的预处理
• 首先在输入消息m的右边添加若干比特,使其长度恰 好为一个比1024的倍数大896的数,即模1024与896 同余。填充比特的第1位是“1”,后续均为“0”; • 然后用128个比特的无符号整数表示原始消息m的长 度(最高有效字节在前),附加在最后; • 经预处理后产生了一个长度为1024整数倍的扩展消 息,将其以1024比特分组划分为n个消息分组 m1,m2,…,mn,其中每个分组mi(i=1,2,…,n)都是 1024比特。
一、SHA-512的算法原理
128bit
输入消息m
n*1024bit
填充
消息长度
m1
1024bit 1024bit
m2
mn
1024bit
H0
512bit
f
+
H1
f
+
H2
Hn-1
f
+
Hn
512bit
消息摘要值
图6-2 SHA-512的算法结构
一、SHA-512的算法原理
•实现步骤
• 步骤1:添加填充位,并附加消息 长度值(消息预处理) • 步骤2:初始化消息摘要的缓冲区 • 步骤3:以1024比特的消息分组为 单位进行处理 • 步骤4:输出
ROTR n ( x )
SHR n ( x )
80个轮常数Kt
取自前 80个素 数的立 方根小 数部分 的前64 比特
步骤4:输出
• 依次对消息m的n个1024比特分组进行处理, 第n个分组处理后的输出值Hn即是消息m的 消息摘要值:
H
(0) n
|| H
(1) n
|| H
(2) n
|| H
(3) n
H i(1) b H i(1) 1 H
(2) i
cH
(2) i 1
H i(3) d H i(3) 1 H i(4) e H i(4) 1 H i(5) f H i(5) 1 H i(6) g H i(6) 1 H
(7) i
hH
(7) i 1
• SUM64
• MD
——对应的字进行模264加
——输入消息的消息摘要值
二、轮函数:SHA-512算法核心
• 对缓冲区中8个64比特字和消息字、轮常数进行运 b c d e f g h 算并代换。 a
Ch + + + + T1 +
∑
+ T2 +
Maj
∑
Wt Kt
a
b
c
d
e
f
g
h
轮函数运算过程
T1,T2 — 两个中间变量
一、hash函数
3、类型
一、hash函数
4、一般结构
预处理 输入消息 m
m1 m2 mt
迭代压缩
mi Hi-1 Hi Ht
压缩函数f
输出变换g
消息摘要 h(m)
迭代t次
迭代结构
迭代结构
最后1个分 组块包括输 入长度、填 充的0等
压缩函数f
最后一个分组块数据填充
无标志,不好区分
wk.baidu.com
有标志,好区分
512
hg g f f e e d T1 d c cb ba a T1 T2
512 1 512 0
(e) [ ROTR14 (e)] [ ROTR18 (e)] [ ROTR 41 (e)] (a ) [ ROTR 28 (a )] [ ROTR 34 (a )] [ ROTR 39 (a )]
消息调度算法:产生Wt
• 从1024比特数据分组mi中通过消息调度算法导出 80个消息字Wt(t=0,1,2…,79),参与后续核心算法 80轮轮函数的迭加压缩运算。Wt为64比特的字。
Wt m( i ) t
m(i)t为mi的第t个64比特
(0 t 15)
(16 t 79)
Wt 1512 (Wt 2 ) Wt 7 0512 (Wt 15 ) Wt 16
其中: 512 ( x ) [ROTR19 ( x)] [ ROTR61 ( x)] [ SHR6 ( x)] 1
512 0 ( x ) [ ROTR1 ( x)] [ ROTR8 ( x)] [ SHR7 ( x)]
" "
" "
—模264加 —按位异或操作 —对64比特的字变量x,循环右移n比特。 —对64比特的字变量x,右移n比特,且左边填充0。
|| H
(4) n
|| H
(5) n
|| H
(6) n
|| H
(7) n
SHA-512算法总结
H 0 IV
H i SUM 64 ( H i1 , abcdefghi )
MD H n
• IV • Abcdefghi • n ——步骤2中定义的a,b,c,d,e,f,g,h缓冲区里的初始值 ——第i个消息分组的最后一轮轮函数后的输出 ——消息分组的数量
• 也称密码校验和 • 功能与HASH函数基本相同
• 可认为是带密钥的Hash函数
• 可以认证以下内容:
接收者可以判断消息是否被篡改。 HASH函数也可 接收者可以判断消息发送者的真假。 HASH函数不可
二、消息认证码(MAC)
2、要求
• 已知输入消息m和Ck(m),找到另一满足 Ck(m’)=Ck(m)的消息m’在计算上不可行。
—按位与运算 —按位取反 —模264加
" " " " " "
" " —按位异或运算