第四章 hash函数与消息认证码
合集下载
网络安全-11:消息认证和Hash函数

下层是某种产生认证符的函数 上层协议进行验证
产生认证符的函数类型
消息加密:消息的密文作为认证符 消息认证码:消息和密钥的公开函数,产生定长的值作为认证符。 MAC: message authentication code Hash函数:将任意长消息映射为定长的hash值作为认证符
消息认证函数(2)
*
西安电子科技大学计算机学院
*
消息加密(1)
消息加密也能提供一种认证的方法
对称密码,既可以提供认证又可以提供保密性,但不是绝对的。
*
西安电子科技大学计算机学院
*
消息加密(2)
公钥体制中:
加密不能提供对发送方的认证(公钥是公开的) 发送方可用自己的私钥进行签名 接收方可用发送方的公钥进行验证 保密性和可认证性
Hash函数用途举例
*
西安电子科技大学计算机学院
*
哈希函数的应用
三个重要的hash函数 MD5 SHA-1 RIPEMD-160
Hash函数和数字签名
*
西安电子科技大学计算机学院
*
*
西安电子科技大学计算机学院
*
可用于任何尺寸的消息M 产生固定长度的输出 h 对任何消息M ,计算h=H(M)是容易的。 给定 h ,计算满足H(x)=h的x在计算上是不可行的 单向性 给定x,计算满足H(y)=H(x)的y在计算上是不可行的 抗弱碰撞性(weak collision resistance) 找到任何满足 H(y)=H(x)的偶对( x,y ),在计算上是不可行的。 抗碰撞性(strong collision resistance)
对Hash函数的要求
*
西安电子科技大学计算机学院
*
生日攻击
产生认证符的函数类型
消息加密:消息的密文作为认证符 消息认证码:消息和密钥的公开函数,产生定长的值作为认证符。 MAC: message authentication code Hash函数:将任意长消息映射为定长的hash值作为认证符
消息认证函数(2)
*
西安电子科技大学计算机学院
*
消息加密(1)
消息加密也能提供一种认证的方法
对称密码,既可以提供认证又可以提供保密性,但不是绝对的。
*
西安电子科技大学计算机学院
*
消息加密(2)
公钥体制中:
加密不能提供对发送方的认证(公钥是公开的) 发送方可用自己的私钥进行签名 接收方可用发送方的公钥进行验证 保密性和可认证性
Hash函数用途举例
*
西安电子科技大学计算机学院
*
哈希函数的应用
三个重要的hash函数 MD5 SHA-1 RIPEMD-160
Hash函数和数字签名
*
西安电子科技大学计算机学院
*
*
西安电子科技大学计算机学院
*
可用于任何尺寸的消息M 产生固定长度的输出 h 对任何消息M ,计算h=H(M)是容易的。 给定 h ,计算满足H(x)=h的x在计算上是不可行的 单向性 给定x,计算满足H(y)=H(x)的y在计算上是不可行的 抗弱碰撞性(weak collision resistance) 找到任何满足 H(y)=H(x)的偶对( x,y ),在计算上是不可行的。 抗碰撞性(strong collision resistance)
对Hash函数的要求
*
西安电子科技大学计算机学院
*
生日攻击
HASH函数

B C D
A
MD4 (1990年10月作为RFC1320发表) by Ron Rivest at MIT
• MD4的设计目标 • 安全性: • 速度:32位体系结构下计算速度快. • 简明与紧凑:易于编程. • 有利的小数在前的结构(Intel 80xxx, Pentium ) • MD4与MD5的区别 • MD4用3轮,每轮16 步,MD5用4轮,每轮16步. • MD4中第一轮没有常量加;MD5中64步每一步用了一 个不同的常量 T[i]; • MD5用了四个基本逻辑函数,每轮一个;MD4用了三 个. • MD5每轮加上前一步的结果;MD4没有.
y 取 k 个随机值得到函数的 k 个输出中至少有一个 等于h(x)的概率为 1-[1-1/n]k 由(1+x)k≈1+kx,其中|x|<<1,可得
1-[1-1/n]k≈1-[1-k/n]=k/n
给定 h(x) ,如果对 h 随机取 k 个输入,至少有一个 输入 y 使得 h(y)=h(x) 的概率为 1-[1-1/n]k≈1-[1-k/n]=k/n • 若使上述概率等于0.5,则 k=n/2。特别地,如果 h 的输出为 m 比特长,即可能的输出个数 n=2m,则 k=2m-1。
• 生日攻击(基于生日悖论) 在k个人中,找一个与某人生日相同的人的 概率超过0.5时,只需k>183; 而在此人群中, 至少有两个人生日相同的概率超过0.5,只 需k>23.
将生日悖论推广为下述问题:已知一个在1到n 之间均匀分布的整数型随机变量,若该变量的 k 个 取值中至少有两个取值相同的概率大于0.5,则k至 少多大? n! P(n, k ) 1 与上类似, (n k )!n k 令P(n, k)>0.5,可得 k 1.18 n n 若取 n=365,则
A
MD4 (1990年10月作为RFC1320发表) by Ron Rivest at MIT
• MD4的设计目标 • 安全性: • 速度:32位体系结构下计算速度快. • 简明与紧凑:易于编程. • 有利的小数在前的结构(Intel 80xxx, Pentium ) • MD4与MD5的区别 • MD4用3轮,每轮16 步,MD5用4轮,每轮16步. • MD4中第一轮没有常量加;MD5中64步每一步用了一 个不同的常量 T[i]; • MD5用了四个基本逻辑函数,每轮一个;MD4用了三 个. • MD5每轮加上前一步的结果;MD4没有.
y 取 k 个随机值得到函数的 k 个输出中至少有一个 等于h(x)的概率为 1-[1-1/n]k 由(1+x)k≈1+kx,其中|x|<<1,可得
1-[1-1/n]k≈1-[1-k/n]=k/n
给定 h(x) ,如果对 h 随机取 k 个输入,至少有一个 输入 y 使得 h(y)=h(x) 的概率为 1-[1-1/n]k≈1-[1-k/n]=k/n • 若使上述概率等于0.5,则 k=n/2。特别地,如果 h 的输出为 m 比特长,即可能的输出个数 n=2m,则 k=2m-1。
• 生日攻击(基于生日悖论) 在k个人中,找一个与某人生日相同的人的 概率超过0.5时,只需k>183; 而在此人群中, 至少有两个人生日相同的概率超过0.5,只 需k>23.
将生日悖论推广为下述问题:已知一个在1到n 之间均匀分布的整数型随机变量,若该变量的 k 个 取值中至少有两个取值相同的概率大于0.5,则k至 少多大? n! P(n, k ) 1 与上类似, (n k )!n k 令P(n, k)>0.5,可得 k 1.18 n n 若取 n=365,则
精品文档-密码学基础(范九伦)-第4章

第4章 Hash函数
实际应用中的Hash函数可分为简单的Hash函数和带密钥的 Hash函数。带密钥的Hash函数通常用来作为消息认证码(Message Authentication Code)。假定Alice和Bob有一个共享的密钥k, 通过该密钥可以产生一个Hash函数Hk。对于消息x,Alice和Bob 都能够计算出相应的消息摘要y=Hk(x)。Alice通过公共通信信道 将二元组(x,y)发送给Bob。当Bob接收到(x,y)后,它可以通过 检验y=Hk(x)是否成立来确定消息x的完整性。如果y=Hk(x)成立, 说明消息x和消息摘要y都没有被篡改。
第4章 Hash函数
下面给出带密钥的Hash函数族的定义。 定义4.1.4 一个带密钥的Hash函数族包括以下构成要素: (1) X:所有消息的集合(有限集或无限集); (2) Y:所有消息摘要构成的有限集合; (3) K:密钥空间,是所有密钥的有限集合; (4) 对任意的k∈K,都存在一个Hash函数Hk∈H,Hk: X→Y。 如果Hk(x)=y,则二元组(x,y)∈X×Y称为在密钥k下是有效 的。
第4章 Hash函数 生日攻击的思想来源于概率论中一个著名的问题——生日问
题。该问题是问一个班级中至少要有多少个学生才能够使得有两 个学生生日相同的概率大于1/2。该问题的答案是23。即只要班 级中学生的人数大于23人,则班上有两个人生日相同的概率就将 大于1/2。基于生日问题的生日攻击意味着要保证消息摘要对碰 撞问题是安全的,则安全消息摘要的长度就有一个下界。例如, 长度为40比特的消息摘要是非常不安全的,因为仅仅在220(大约 为一百万)个随机Hash函数值中就有50%的概率发现一个碰撞。所 以对于安全的消息摘要,现在通常建议可接受的最小长度为128 比特(此时生日攻击需要超过264个Hash函数值)。而实际使用的消 息摘要一般为160比特甚至更长。
消息认证与哈希函数

需要在信息的发送方和接收方之间共享密钥。 2)哈希函数:是不带密钥的公开函数,它将任意长度的输入 消息映射为固定长度的输出值。哈希函数与数字签名算法相结合,
提供对于消息的完整性检验。
消息认证
基于密钥哈希函数的MAC
基于密钥哈希函数的MAC的形式如下。 MAC=H(k‖M)
使用哈希函数构造的MAC,称为HMAC HMAC= H (k‖M‖k)
哈希函数H(·):{0,1}*→{0,1}l称为具有抗
第二原像性(Second Preimage Resistant),
是指任意给定M∈{0,1}*及其信息摘要H(M),求 出M′∈{0,1}*且M′≠M,使得H(M′)=H(M)是
困难的。
哈希函数的性质
定义
哈希函数H(·):{0,1}*→{0,1}l称为具有抗
消息认证
消息认证
消息认证是使消息的接收者能够检验收到的消息是否是真实的认证方法 消息认证的目的有两个:其一是消息源的认证,即验证消息的来源是真实的;其 二是消息的认证,即验证信息在传送过程中未被篡改。
1)消息认证码MAC(Message Authentication Code):是以 消息和密钥作为输入的公开函数,可以生成定长的输出。该方法
首先对报文进行填充,填充方法
SHA-1算步法骤具1:体附的加处填将面息充理特H(中一,的2比S作被,5间步H个这长×特A是分H以-6个度骤331的是足一4成及,2算6比分比长:够个45最H法特比组个4特度先 多无终(的使的附特3)与添的符2结S倍用填加的比的H4加比号果A数了4充到长特缓-消8一特整,1刚1模前报度字存算息6个0数这好05,的文被H来法开比101减使2消后看,6存中头特同0去填H放比每循1余16充,,4环,比后然地即特的后处为报填理5文充1消2 息序列
提供对于消息的完整性检验。
消息认证
基于密钥哈希函数的MAC
基于密钥哈希函数的MAC的形式如下。 MAC=H(k‖M)
使用哈希函数构造的MAC,称为HMAC HMAC= H (k‖M‖k)
哈希函数H(·):{0,1}*→{0,1}l称为具有抗
第二原像性(Second Preimage Resistant),
是指任意给定M∈{0,1}*及其信息摘要H(M),求 出M′∈{0,1}*且M′≠M,使得H(M′)=H(M)是
困难的。
哈希函数的性质
定义
哈希函数H(·):{0,1}*→{0,1}l称为具有抗
消息认证
消息认证
消息认证是使消息的接收者能够检验收到的消息是否是真实的认证方法 消息认证的目的有两个:其一是消息源的认证,即验证消息的来源是真实的;其 二是消息的认证,即验证信息在传送过程中未被篡改。
1)消息认证码MAC(Message Authentication Code):是以 消息和密钥作为输入的公开函数,可以生成定长的输出。该方法
首先对报文进行填充,填充方法
SHA-1算步法骤具1:体附的加处填将面息充理特H(中一,的2比S作被,5间步H个这长×特A是分H以-6个度骤331的是足一4成及,2算6比分比长:够个45最H法特比组个4特度先 多无终(的使的附特3)与添的符2结S倍用填加的比的H4加比号果A数了4充到长特缓-消8一特整,1刚1模前报度字存算息6个0数这好05,的文被H来法开比101减使2消后看,6存中头特同0去填H放比每循1余16充,,4环,比后然地即特的后处为报填理5文充1消2 息序列
Hash函数(消息认证)

14
3
应用
由于加密软件慢、硬件费用高、加密算法专利保护 和出口限制等因素, 人们倾向于不使用带有加密的认 证方法,愿意使用方法(3)。 数据源认证方案不能提供数据源的不可拒绝性,因 为任何一方都可以使用共享密钥创建一个消息及其 认证。如果需要解决这种潜在的争执,可以使用可 信第三方或公钥技术。 使用MAC能够确定数据是在过去某个时间由特定一 方生成的,但是不能提供唯一性和时间上的保证, 也不能发现消息是否重用或重发。为了解决这些问 题,必须使用随时间变化的参数,例如时间戳、序 列号和随机数等。
击者也能计算压缩函数的输出。 (2) 即使IV是随机的和秘密的,攻击者也能找到Hash函数的碰 撞。
在目前的计算水平下,使用MD5和SHA-1等作为HMAC 算法所嵌入的Hash函数,HMAC的安全性是可以保证的。
10
3 应用
数据完整性 数据完整性是指数据在生成、传送或存储过程中没有 被非法篡改. 使用Hash函数可以保证数据的完整性 使用MAC
MD5-MAC软件实现比较容易,其运算速度与MD5 大体相近 .
5
2
HMAC算法
消息认证码HMAC(keyed-hashing for message authentication code)是Bellare等人于1996年提出, 1997年作为RFC 2104发表,成为事实上的Internet 标准,包括IPSec协议在内的一些安全协议都使用 了HMAC算法。 HMAC算法利用已有的Hash函数,关键问题是如何 使用密钥。使用不同的Hash函数,就可以得到不同 的HMAC。选用MD5时的HMAC记为HMAC-MD5, 选用SHA-1时的HMAC记为HMAC-SHA1。
发送方 A x hK’ x1 || EK C DK x 接收方B hK’
3
应用
由于加密软件慢、硬件费用高、加密算法专利保护 和出口限制等因素, 人们倾向于不使用带有加密的认 证方法,愿意使用方法(3)。 数据源认证方案不能提供数据源的不可拒绝性,因 为任何一方都可以使用共享密钥创建一个消息及其 认证。如果需要解决这种潜在的争执,可以使用可 信第三方或公钥技术。 使用MAC能够确定数据是在过去某个时间由特定一 方生成的,但是不能提供唯一性和时间上的保证, 也不能发现消息是否重用或重发。为了解决这些问 题,必须使用随时间变化的参数,例如时间戳、序 列号和随机数等。
击者也能计算压缩函数的输出。 (2) 即使IV是随机的和秘密的,攻击者也能找到Hash函数的碰 撞。
在目前的计算水平下,使用MD5和SHA-1等作为HMAC 算法所嵌入的Hash函数,HMAC的安全性是可以保证的。
10
3 应用
数据完整性 数据完整性是指数据在生成、传送或存储过程中没有 被非法篡改. 使用Hash函数可以保证数据的完整性 使用MAC
MD5-MAC软件实现比较容易,其运算速度与MD5 大体相近 .
5
2
HMAC算法
消息认证码HMAC(keyed-hashing for message authentication code)是Bellare等人于1996年提出, 1997年作为RFC 2104发表,成为事实上的Internet 标准,包括IPSec协议在内的一些安全协议都使用 了HMAC算法。 HMAC算法利用已有的Hash函数,关键问题是如何 使用密钥。使用不同的Hash函数,就可以得到不同 的HMAC。选用MD5时的HMAC记为HMAC-MD5, 选用SHA-1时的HMAC记为HMAC-SHA1。
发送方 A x hK’ x1 || EK C DK x 接收方B hK’
3消息认证和Hash函数

若要提供认证,则A用其私钥对消息加密,而B用A的 公钥对接收的消息解密。因为只有A拥有PRa,能产 生用PUa可解密的密文,所以该消息一定来自A。 同样,对明文也必须有某种内部结构以使接收方能 区分真实的明文和随机的位串。
源A 宿B D E(PRa, M) PUa M
M
E PRa
(c) 公钥加密:认证和签名
其中:M=输入消息, C=MAC函数 K=共享的密钥,MAC=消息认证
消息认证码
1. 2.
3.
发送方将消息和MAC一起发送给接收方。接收方对 收到的消息用相同的密钥K进行相同的计算得出新 的MAC,并将接收到的MAC与其计算出的MAC进行 比较。 如果我们假定只有收发双方知道密钥K,那么若接 收到的MAC与计算得出的MAC相等,则: 接收方可以相信消息未被修改。 接收方可以相信消息来自真正的发送方。 如果消息中含有序列号,那么接收方可以相信消息 顺序是正确的。
MAC的性质
性质2:C(k,M)应是均匀分布的,即对任何随 机选择的消息M和M’, C(k,M) = C(k,M’)的概率 是2-n,其中n是MAC的位数。
该要求是为了阻止基于选择明文的穷举攻击,也就 是说,假定攻击者不知道K,但是他可以访问MAC 函数,能对消息产生MAC,那么攻击者可以对各种 消息计算MAC,直至找到与给定MAC相同的消息为 止。如果MAC函数具有均匀分布的特征,那么穷举 方法平均需要2n-1步才能找到具有给定MAC的消息。
消息认证码的基本用法
提供认证
(a)消息认证 (b)消息认证和保密性:与明文有关的认证 (c)消息认证和保密性:与密文有关的认证
提供认证和保密性
Hash函数与消息认证

Hash函数与消息认证
一、 Hash函数概述 二、 Hash函数MD5 三、安全Hash算法SHA 四、基于分组密码与离散对数的Hash函数 五、消息认证
2019/11/15
1
一、 Hash函数概述
2019/11/15 2
Hash函数
• 单向函数 函数f(x):A→B若满足下面两个条件,则 称为单向函数
2019/11/15
26
MDq , 128
Yq
A B CD
512
ABCD"fF(ABCD,Yq,T[1…16])
A B CD
ABCD"fH(ABCD,Yq,T[33…48])
A B CD
ABCD"fH(ABCD,Yq,T[33…48])
A B CD
ABCD"fI(ABCD,Yq,T[49…64])
2019/11/15
25
Hash函数MD5
MD5是四轮运算,各轮逻辑函数不同。每轮 又要进行16步迭代运算,4轮共需64步完成。 每步完成
a b+CLSS (a+g(B,C,D)+X[k]+T[i]) 其中a,b,c,d=缓存器中的四个字,按特定次序 变化。g=基本逻辑函数F, G, H, I中之一,算 法的每一轮用其中之一。
– 输入:任意长度的消息 – 输出:128位消息摘要 – 处理:以512位输入数据块为单位
2019/11/15
22
Hash函数MD5
MD5算法
• 对明文输入按512bit分组,最后要填充使 其成为512 bit的整数倍,且最后一组的后 64 bit用来表示消息长在mod 264下的值K ,故填充位数为1~512 bit,填充数字图 样为(100…0),得Y0,Y1,…,YL-1。其中, Yl为512 bit,即16个长为32 bit的字,按字 计消息长为N=L×16。
一、 Hash函数概述 二、 Hash函数MD5 三、安全Hash算法SHA 四、基于分组密码与离散对数的Hash函数 五、消息认证
2019/11/15
1
一、 Hash函数概述
2019/11/15 2
Hash函数
• 单向函数 函数f(x):A→B若满足下面两个条件,则 称为单向函数
2019/11/15
26
MDq , 128
Yq
A B CD
512
ABCD"fF(ABCD,Yq,T[1…16])
A B CD
ABCD"fH(ABCD,Yq,T[33…48])
A B CD
ABCD"fH(ABCD,Yq,T[33…48])
A B CD
ABCD"fI(ABCD,Yq,T[49…64])
2019/11/15
25
Hash函数MD5
MD5是四轮运算,各轮逻辑函数不同。每轮 又要进行16步迭代运算,4轮共需64步完成。 每步完成
a b+CLSS (a+g(B,C,D)+X[k]+T[i]) 其中a,b,c,d=缓存器中的四个字,按特定次序 变化。g=基本逻辑函数F, G, H, I中之一,算 法的每一轮用其中之一。
– 输入:任意长度的消息 – 输出:128位消息摘要 – 处理:以512位输入数据块为单位
2019/11/15
22
Hash函数MD5
MD5算法
• 对明文输入按512bit分组,最后要填充使 其成为512 bit的整数倍,且最后一组的后 64 bit用来表示消息长在mod 264下的值K ,故填充位数为1~512 bit,填充数字图 样为(100…0),得Y0,Y1,…,YL-1。其中, Yl为512 bit,即16个长为32 bit的字,按字 计消息长为N=L×16。
Hash函数与消息认证概论

2020/11/24
3
Hash函数
Hash函数
• 设H:将A*映射到An,H满足:
– H是单向函数。
– 已知 x, 找 x*∈A* ,使H (x)= H (x*)在计 算上是不可能的。
– 找一对 x 和 x* ,x ≠ x* ,使H (x)= H (x*) 在计算上也是不可能的。
H称为安全的Hash函数。
2020/11/24
11
Hash函数
对Hash函数的基本攻击方法
• 生日攻击:这种攻击法不涉及Hash算法的 结构,可用于攻击任何Hash算法。强无碰撞 函数正是基于生日悖论一类的攻击法定义的 。穷举和生日攻击都属选择明文攻击。生日 攻 击 给 定 初 值 H0 寻 找 MM’ , 使H(H0, M’)=H(H0, M),也可对初始值H0不 加 限 制 , 即 寻 找 H0’, M’ 使 满 足 h(H0’, M’)=h(H0, M)。
Hash函数
• 迭代函数以E表示,一般E又都是通过基 本轮函数的多轮迭代实现的,因此,轮 函数的设计是Hash函数设计的核心。
• 迭代Hash函数的构造方法
– 安全迭代函数E
– 消息M划分成组M1, M2,…, Mi ,…, Mt – 选定密钥为K,
– H0为初始向量IV,
2020/11/24
16
Hash函数
• Rabin法:
H0=IV; Hi=E(Mi, Hi-1) i=1,…,t; H(M)=Ht 。 密码分组链接(CBC)法:
H0=IV;Hi=E(K, Mi Hi-1) i=1,2,…,t; H(M)=Ht 。 • 密码反馈(CFB)法:
Hi=E(K, Hi-1Mi),i=1, 2,…,t;H(M)=Ht
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
—按位与运算 —按位取反 —模264加
" " " " " "
" " —按位异或运算
k>2t-1
• SHA-1: t=160
k 2t 1 2159 7.311047
难以奏效
2、生日攻击(birthday attack)
• 在一个房间中坐了k人,k的数量至少为多 少时,找一个与某特定人生日相同的概率 大于1/2?
183
• K至少为多少时,此房间中至少有两个人 生日相同的概率大于1/2?
• 也称密码校验和 • 功能与HASH函数基本相同
• 可认为是带密钥的Hash函数
• 可以认证以下内容:
接收者可以判断消息是否被篡改。 HASH函数也可 接收者可以判断消息发送者的真假。 HASH函数不可
二、消息认证码(MAC)
2、要求
• 已知输入消息m和Ck(m),找到另一满足 Ck(m’)=Ck(m)的消息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
长 度
• 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 — 两个中间变量
山东大学王小云教授成功破解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。
步骤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
• 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?
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比特
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
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 )]
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)
第4章
Hash函数与消息认证码
本章内容
• • • • hash函数和MAC概述 安全hash函数算法SHA-512 欧洲hash函数算法Whirlpool MAC算法
第4章
hash函数与消息认证码
教学பைடு நூலகம்求
• • • • 了解hash函数和MAC的基本概念 掌握SHA-512的基本原理 了解Whirlpool算法 了解MAC算法
一、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:输出
4.1 概述
一、hash函数
散列函数 杂凑函数 哈希函数
功能
将任意长度文本 变换为很短的固 定长度文本
困难
特点 •单向特性 •雪崩特性 •无陷门 应用
容易
散列值,消息摘要码 数字指纹
•数字签名
•消息认证
hash函数的相关术语
HASH和 消息摘要
密码校验和 压缩编码 消息摘要码 指纹
印章,记号
一、hash函数
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
1、定义
设M是所有可能消息m的集合,Y是由 所有可能的消息摘要码y构成的有限集,则 把从M到Y的映射 h:M→Y 称为一个hash函数。
M是无限集,Y是有限集。
一、hash函数
2、要求
• 基本要求:
有密钥时为MAC
算法公开 有数据压缩 易于计算
一、hash函数
2、要求
• 安全要求:
单向性 弱抗碰撞特性 强抗碰撞特性
1、步骤1:消息的预处理
• 首先在输入消息m的右边添加若干比特,使其长度恰 好为一个比1024的倍数大896的数,即模1024与896 同余。填充比特的第1位是“1”,后续均为“0”; • 然后用128个比特的无符号整数表示原始消息m的长 度(最高有效字节在前),附加在最后; • 经预处理后产生了一个长度为1024整数倍的扩展消 息,将其以1024比特分组划分为n个消息分组 m1,m2,…,mn,其中每个分组mi(i=1,2,…,n)都是 1024比特。
二、消息认证码(MAC)
(message authentication code,MAC)
1、定义
MAC=Ck(m)
• • • • k —— 通信双方共享的密钥 m —— 输入的消息(长度不固定) C —— MAC函数 MAC —— 消息认证码(固定长度)
" " " " " "
" " —按位异或运算
k>2t-1
• SHA-1: t=160
k 2t 1 2159 7.311047
难以奏效
2、生日攻击(birthday attack)
• 在一个房间中坐了k人,k的数量至少为多 少时,找一个与某特定人生日相同的概率 大于1/2?
183
• K至少为多少时,此房间中至少有两个人 生日相同的概率大于1/2?
• 也称密码校验和 • 功能与HASH函数基本相同
• 可认为是带密钥的Hash函数
• 可以认证以下内容:
接收者可以判断消息是否被篡改。 HASH函数也可 接收者可以判断消息发送者的真假。 HASH函数不可
二、消息认证码(MAC)
2、要求
• 已知输入消息m和Ck(m),找到另一满足 Ck(m’)=Ck(m)的消息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
长 度
• 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 — 两个中间变量
山东大学王小云教授成功破解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。
步骤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
• 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?
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比特
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
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 )]
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)
第4章
Hash函数与消息认证码
本章内容
• • • • hash函数和MAC概述 安全hash函数算法SHA-512 欧洲hash函数算法Whirlpool MAC算法
第4章
hash函数与消息认证码
教学பைடு நூலகம்求
• • • • 了解hash函数和MAC的基本概念 掌握SHA-512的基本原理 了解Whirlpool算法 了解MAC算法
一、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:输出
4.1 概述
一、hash函数
散列函数 杂凑函数 哈希函数
功能
将任意长度文本 变换为很短的固 定长度文本
困难
特点 •单向特性 •雪崩特性 •无陷门 应用
容易
散列值,消息摘要码 数字指纹
•数字签名
•消息认证
hash函数的相关术语
HASH和 消息摘要
密码校验和 压缩编码 消息摘要码 指纹
印章,记号
一、hash函数
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
1、定义
设M是所有可能消息m的集合,Y是由 所有可能的消息摘要码y构成的有限集,则 把从M到Y的映射 h:M→Y 称为一个hash函数。
M是无限集,Y是有限集。
一、hash函数
2、要求
• 基本要求:
有密钥时为MAC
算法公开 有数据压缩 易于计算
一、hash函数
2、要求
• 安全要求:
单向性 弱抗碰撞特性 强抗碰撞特性
1、步骤1:消息的预处理
• 首先在输入消息m的右边添加若干比特,使其长度恰 好为一个比1024的倍数大896的数,即模1024与896 同余。填充比特的第1位是“1”,后续均为“0”; • 然后用128个比特的无符号整数表示原始消息m的长 度(最高有效字节在前),附加在最后; • 经预处理后产生了一个长度为1024整数倍的扩展消 息,将其以1024比特分组划分为n个消息分组 m1,m2,…,mn,其中每个分组mi(i=1,2,…,n)都是 1024比特。
二、消息认证码(MAC)
(message authentication code,MAC)
1、定义
MAC=Ck(m)
• • • • k —— 通信双方共享的密钥 m —— 输入的消息(长度不固定) C —— MAC函数 MAC —— 消息认证码(固定长度)