现代密码学-第5章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函数的要求
*
西安电子科技大学计算机学院
*
生日攻击
网络与信息安全第5章+数字签名和Hash函数

源自27-Apr-11返回
27-Apr-11
消息摘要是数字签名体系中实现信息完整性保障的技术,其工作原理是 将消息作为函数的输入数据进行处理,生成定长的输出数据(即消息摘 要),并将其作为消息的附加信息。利用Hash函数的两个基本特性—— —输入数据的任何细微变化将导致输出数据的巨大改变和难以逆运算, 消息接受方能验证收到的消息在传输过程中是否发生了改变,从而保证 了消息的完整性和有效性。消息摘要有时也称为消息的数字指纹。 公开密钥技术是数字签名体系中进行身份认证和保障抗否认性的主要技 术。利用发送者的私钥加密的信息只有用发送者的公钥才能解密,因此, 在A的私钥没有泄露的情况下,如果一个经过私钥加密的信息能被A的公 钥解密便说明该私钥属于A,从而可以确定该信息是由A发出的,A无法 否认自己曾经发送过这个信息。同理,别人也无法冒充A发送信息,因 为他没有A的私钥。 数字签名作为保障信息安全的重要技术之一,越来越得到人们的重视。 它涉及到了很多的其它关键技术,并且在很多安全应用领域中得到了广 泛的应用,如网上交易安全协议SET、无线传输层安全协议WTLS等都涉 及到了数字签名。在数字签名实现机制中,如何选择加密算法、Hash函 数,如何尽可能的统一数字签名规范等等问题都有待于进一步的研究和 探讨。
27-Apr-11
生日攻击对Hash函数提出了一个必要的安全条件, 即消息摘要必须足够的长。一个40比特长的消息 摘要是很不安全的,因为仅仅用220 (大约一百万) 次随机Hash可至少以1/2的概率找到一个碰撞。为 了抵抗生日攻击,通常建议消息摘要的长度至少 应选取为128比特,此时生日攻击需要约264次 Hash。统计结果表明,如hash(m)的长度为128位 (bit)时,则任意两个分别为M1,M2的输入报文具有 完全相同的h(m)的概率接近于零。安全Hash标准 的输出长度选为160比特。
27-Apr-11
消息摘要是数字签名体系中实现信息完整性保障的技术,其工作原理是 将消息作为函数的输入数据进行处理,生成定长的输出数据(即消息摘 要),并将其作为消息的附加信息。利用Hash函数的两个基本特性—— —输入数据的任何细微变化将导致输出数据的巨大改变和难以逆运算, 消息接受方能验证收到的消息在传输过程中是否发生了改变,从而保证 了消息的完整性和有效性。消息摘要有时也称为消息的数字指纹。 公开密钥技术是数字签名体系中进行身份认证和保障抗否认性的主要技 术。利用发送者的私钥加密的信息只有用发送者的公钥才能解密,因此, 在A的私钥没有泄露的情况下,如果一个经过私钥加密的信息能被A的公 钥解密便说明该私钥属于A,从而可以确定该信息是由A发出的,A无法 否认自己曾经发送过这个信息。同理,别人也无法冒充A发送信息,因 为他没有A的私钥。 数字签名作为保障信息安全的重要技术之一,越来越得到人们的重视。 它涉及到了很多的其它关键技术,并且在很多安全应用领域中得到了广 泛的应用,如网上交易安全协议SET、无线传输层安全协议WTLS等都涉 及到了数字签名。在数字签名实现机制中,如何选择加密算法、Hash函 数,如何尽可能的统一数字签名规范等等问题都有待于进一步的研究和 探讨。
27-Apr-11
生日攻击对Hash函数提出了一个必要的安全条件, 即消息摘要必须足够的长。一个40比特长的消息 摘要是很不安全的,因为仅仅用220 (大约一百万) 次随机Hash可至少以1/2的概率找到一个碰撞。为 了抵抗生日攻击,通常建议消息摘要的长度至少 应选取为128比特,此时生日攻击需要约264次 Hash。统计结果表明,如hash(m)的长度为128位 (bit)时,则任意两个分别为M1,M2的输入报文具有 完全相同的h(m)的概率接近于零。安全Hash标准 的输出长度选为160比特。
Hash函数(消息认证)

发送方 A x h x1 || EK C DK x 接收方B h
比较
x1
12
3
加密使用MAC和加密
应用
设A与B共享分组密码的密钥K和MAC的密钥K’,EK是加密 算法,hK’是MAC。用户A计算C=EK(x|| hK’(x)),并将数据C发 送给B. B利用密钥K进行解密, 得到x’和hK’(x),然后计算 hK’(x’), 并与接收到的hK’(x)相比较. 如果hK’(x’)=hK’(x), 则B确定消息x’是真实的.该技术的优点是即使加密算法被 攻破, MAC仍然能提供完整性保护作用. 其缺点是需要管理 K和K’两个密钥.
2
1 消息认证码
基于分组密码CBC工作模式构造MAC 基于分组密码CBC工作模式构造MAC算法已经成为 ISO/IEC 9797 标准,它使用密文链接和双密钥三重 加密技术。 设EK表示以K为密钥的加密算法,设K’是一个与K 不同的密钥,消息分组长度为n。 首先把消息x分成L个n位块 x=x1 x2…xL, 计算: H1 EK ( x1 ),
1
1 消息认证码
带密钥的Hash函数称为消息认证码(MAC:message authentication code). 消息认证码是实现消息认证的重要工具. MAC有两个不同的输入,一个是消息x,另一个是密钥K . MAC产生定长的输出. 实例: 某一个大公司A想给它的客户发布一个新产品的广告,A
设用户A将消息x发送给接收者B,A与B共享秘密的MAC密 钥K,hK是MAC。用户A计算x的MAC hK(x),将数据 C=x||hK(x)发送给B。B通过其它方法确定用户A的身份,分 开接收到的数据x’,使用共享密钥K计算hK(x’),并与接 收到的hK(x)相比较。如果hK(x’)=hK(x),则B确定消息x’ 是来自于具有密钥K的用户A,在传输过程中未被篡改。
比较
x1
12
3
加密使用MAC和加密
应用
设A与B共享分组密码的密钥K和MAC的密钥K’,EK是加密 算法,hK’是MAC。用户A计算C=EK(x|| hK’(x)),并将数据C发 送给B. B利用密钥K进行解密, 得到x’和hK’(x),然后计算 hK’(x’), 并与接收到的hK’(x)相比较. 如果hK’(x’)=hK’(x), 则B确定消息x’是真实的.该技术的优点是即使加密算法被 攻破, MAC仍然能提供完整性保护作用. 其缺点是需要管理 K和K’两个密钥.
2
1 消息认证码
基于分组密码CBC工作模式构造MAC 基于分组密码CBC工作模式构造MAC算法已经成为 ISO/IEC 9797 标准,它使用密文链接和双密钥三重 加密技术。 设EK表示以K为密钥的加密算法,设K’是一个与K 不同的密钥,消息分组长度为n。 首先把消息x分成L个n位块 x=x1 x2…xL, 计算: H1 EK ( x1 ),
1
1 消息认证码
带密钥的Hash函数称为消息认证码(MAC:message authentication code). 消息认证码是实现消息认证的重要工具. MAC有两个不同的输入,一个是消息x,另一个是密钥K . MAC产生定长的输出. 实例: 某一个大公司A想给它的客户发布一个新产品的广告,A
设用户A将消息x发送给接收者B,A与B共享秘密的MAC密 钥K,hK是MAC。用户A计算x的MAC hK(x),将数据 C=x||hK(x)发送给B。B通过其它方法确定用户A的身份,分 开接收到的数据x’,使用共享密钥K计算hK(x’),并与接 收到的hK(x)相比较。如果hK(x’)=hK(x),则B确定消息x’ 是来自于具有密钥K的用户A,在传输过程中未被篡改。
《现代密码学》散列函数与消息鉴别ppt课件

• SHA–1产生音讯摘要的过程类似MD5,如下图
填充位
L×512 bit= N×32 bit K bit
这一步为MD5的主循环,包括四轮。每个循环 都以当前的正在处置的512比特分组Yq和128比 特缓冲值ABCD为输入,然后更新缓冲内容。
3.MD5的输出
由A、B、C、D四个存放器的输出按低位字节在 前的顺序(即以A的低字节开场、D的高字节终 了)得到128位的音讯摘要。
• 单个512比特分组的MD5主循环处置:
对散列函数必需具有的性质的了解: 系统能够存在的伪造方式 伪造方式一:假设攻击者截获某一音讯摘要h,假
设H的逆函数H-1是易求的,可算出H-1(h)=m, 满足h=H(m)。为防止这一点,必需求求散列 函数H为单向的,即计算H的逆函数H-1在计算 上是不可行的。 伪造方式二:从一个有效签名(m,y)开场,此处y= sigk(H(m))。首先计算h=H(m),并企图找到一 个m’=m满足H(m’)=H(m)。假设做到这一点, 那么(m’,y)也将为有效签名。为防止这一点, 要求函数h具有弱抗冲突特性,即,对给定音 讯m,在计算上几乎找不到不同于m的m’ ∈ X 使H(m)=H(m’)。
(1)单向性:对任何给定的码h,寻觅m使得 H(m) = h在计算上是不可行的
(2)具有弱抗碰撞性〔week collision resistance〕 :对于任何给定的音讯m, 寻觅一个与m不同的音讯m’使得 H(m)=H(m’)在计算上不可行。
(3)具有强抗碰撞性〔 strong collision resistance 〕:寻觅恣意两个不同的音讯 m和m’使得使得H(m)=H(m’)在计算上不 可行。
对散列函数的生日攻击
• 假定其输出为m比特,那么寻觅一个音讯,使其散 列值与给定散列值一样那么需求计算2m次;而寻 觅两个音讯具有一样的散列值仅需求实验2m/2个 随机的音讯。
消息认证与哈希函数

需要在信息的发送方和接收方之间共享密钥。 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 息序列
第五章 信息安全原理与技术ch05-Hash函数和数字签名

攻击者可以按此方法不时对密钥停止测试,直到将 婚配数缩写到足够小的范围。平均来讲,假定 k=a n,那么需a次循环
2021/7/25
Ch5-音讯认证与数字签名
针对MAC算法的攻击
• 攻击者针对下面的MAC算法,那么不需求运用穷举攻击 即可取得密钥信息。
• 设音讯M=(X1||X2||…||Xm),即由64位分组Xi结合而成。 定义
2021/7/25
Ch5-音讯认证与数字签名
Yuval的生日攻击〔续〕
• (3) 攻击者在上述两个音讯集合中找出可以发生 相反散列值的一对音讯。依据〝生日悖论〞实际, 能找到这样一对音讯的概率是十分大的。假设找 不到这样的音讯,攻击者再发生一条有效的音讯 和伪造的音讯,并添加每组中的明文数目,直至 成功为止。
• 伪装:攻击者生成一个音讯并宣称这条 音讯是来自某合法实体,或许攻击者冒 充音讯接纳方向音讯发送方发送的关于 收到或未收到音讯的欺诈应对。
• 内容修正:对音讯内容的修正,包括拔 出、删除、转换和修正。
• 顺序修正:对通讯双方音讯顺序的修正, 包括拔出、删除和重新排序。
• 计时修正:对音讯的延迟和重放。在面
满足H(m) = h的m在计算上是不可行的; • 给定Hash函数的描画,关于给定的音讯m1,找到满
足m2 m1且H(m2)=H(m1)的m2在计算上是不可行 的; • 找就任何满足H(m1)=H(m2)且m1 m2的音讯对 (m1, m2)在计算上是不可行的。
2021/7/25
Ch5-音讯认证与数字签名
Ch5-音讯认证与数字签名
认证的目的
• 可提招认证功用的认证码的函数可分为 三类:
• 加密函数:运用音讯发送方和音讯接纳 方共享的密钥对整个音讯停止加密,那 么整个音讯的密文作为认证符。
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)消息认证和保密性:与密文有关的认证
提供认证和保密性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
22
第5章 Hash函数与数字签名
5.1 5.2 5.3 5.4 5.5
Hash函数概述 Hash函数MD5 安全Hash算法SHA1 基于分组密码与离散对数的Hash函数 消息认证
23
5.2 Hash函数MD5
MD5(MD:message digest,消息摘要) 1990年10月, 著名密码学家R. L. Rivest在 MIT(Massachusetts Institute of Technology)提出了一种 Hash函数,作为RFC 1320 (RFC:互联网研究和开发机构 工作记录)公开发表,称为MD4. MD5是MD4的改进版本, 于1992年4月作为RFC 1321公开发表. MD5特性 直接构造法: 不依赖任何密码系统和假设条件 算法简洁 计算速度快 特别适合32位计算机软件实现 倾向于使用低端结构.
21
5.1.3
Hash函数的迭代构造法
用上述方法构造的Hash函数称为迭代Hash函数。大多数 实用Hash函数都是迭代Hash函数 在预处理阶段,必须保证变换xy是单射。因为如果预 处理变换xy不是单射,则存在xx’使得y=y’,从而 h(x)=h(x’),即能够找到h的碰撞。 对于任意无碰撞的压缩函数,都可以使用迭代技术构造 一个无碰撞的Hash函数。
x1= x || 1 || 0 (407个) = x || 800000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000. =61626364 65800000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000.
18
5.1 Hash函数概述
5.1.1 Hash函数定义 5.1.2 Hash函数的安全性 5.1.3 Hash函数的迭代构造法
19
5.1.3 Hash函数的迭代构造法
压缩函数(compression function)
f : {0,1}mt {0,1}m (t 1)
迭代技术
11
5.1.2 Hash函数的安全性
生日攻击法 分别把消息m和M表示成r和R个变形的消息
12
5.1.2 Hash函数的安全性
生日攻击法 计算真消息m的变形与假消息M的变形发生碰撞的概率
由于n比特长的散列值共有2n个,所以对于给定m的变形mi 和M的变形Mj,mi与Mj不碰撞的概率是1-1/2n。由于M共有 R个变形,所以M的全部变形都不与mi碰撞的概率是:
25
5.2.1 MD5算法
步骤2: 附加消息长度值 用64位表示原始消息x的长度,并将其附加在步骤1所得 结果之。若填充前消息长度大于264,则只使用其低64位。 填充方法是把64比特的长度分成两个32比特的字,低32 比特字先填充,高32比特字后填充。 步骤1与步骤2一起称为消息的预处理 经预处理后,原消息长度变为512的倍数 设原消息x经预处理后变为消息 Y=Y0 Y1… YL1, 其中Yi(i =0,1,…,L1)是512比特 在后面的步骤中,将对512比特的分组Yi进行处理
1 1/ 2
n R
.
因为消息m共有r个变形,因此m的变形与M的变形都不碰撞的概 率是:
1 1 / 2
n rR
.
rR rR 2n
m的变形与M的变形发生碰撞的概率是:
1 P(n) 1 1 n 2
1 e
.
13
5.1.2 Hash函数的安全性
生日攻击法 当r=R=2n/2时,P(n)=1e10.63。对于Hash值长度为64比 特的Hash函数,生日攻击的时间复杂度约为232,所以是 不安全的。
为了抵抗生日攻击,建议Hash值长度至少为128 比特.
14
5.1.2 Hash函数的安全性
中间相遇攻击(in-the-middle attack) 用于攻击一类具有特殊结构的Hash函数 分析Hash函数运算的中间值相等的概率 讨论一类利用加密变换构造的Hash函数 设加密体制为:
K M n , EK : K M n
26
5.2.1 MD5算法
例5.1 假设消息为: x=“abcde”=01100001 01100010 01100011 01100100 01100101=(61 62 63 64 65)16, |x|=40=(28)16.
步骤1在x的右边填充1个“1”和407个“0”,将x变成448 比特的x1:
设x是一个长度为L 的比特串。重复应 用压缩函数f,对消 息x进行多次压缩, 最后得到x的散列值
20
5.1.3
Hash函数的迭代构造法
计算消息x的散列值h(x)的步骤 预处理: 用一个公开算法在消息x右方添加若干比特, 得到比特串y,使 得y的长度为t的倍数。即有 y= x || pad(x) = y1 || y 2 || … || yr , 其中| yi|=t (i =1, 2,…, r),pad(x)称为填充函数。典型的 填充函数是先添加x长度| x|的值,再添加若干比特(例 如0)。 迭代过程: 设H0=IV是一个长度为m的初始比特串, 重复使用压缩函数f,依次计算 Hi= f (Hi1|| yi) (i =1, 2,…, r). 输出变换: 设g: {0,1}m{0,1}t是一个公开函数,令 h(x)=g(Hr).
7
5.1.1 Hash函数定义
安全Hash函数h应具有以下性质: 对任意的消息x,计算h(x)是容易的; h是单向的; h是弱抗碰撞的,或是强抗碰撞的。
8
5.1 Hash函数概述
5.1.1 Hash函数定义 5.1.2 Hash函数的安全性 5.1.3 Hash函数的迭代构造法
10
5.1.2 Hash函数的安全性
生日攻击法 生日悖论原理可以用于构造对Hash函数的攻击 设Hash函数值有n个比特,m是真消息,M是伪造的假消息, 分别把消息m和M表示成r和R个变形的消息。消息与其变形 消息具有不同的形式,但有相同的含义。将消息表示成变 形消息的方法很多,例如增加空格、使用缩写、使用意义 相同的单词、去掉不必要的单词等。
16
5.1.2 Hash函数的安全性
变形 假消息的 第1部分 M1 M1,1 M1,2 M 1,r IV EK EK 中间值集合
EK
假消息的 第2部分 M2
M2,1 M2,2 M 2,R
DK DK
DK
h1= EK(m1, IV) d=h(m)=EK(m2, h1)
17
目标摘要
d
24
5.2.1 MD5算法
MD5算法的输入可以是任意长度的消息x,对输入消息 按512位的分组为单位进行处理,输出128位的散列值 MD(x)。整个算法分为五个步骤。 步骤1: 增加填充位 在消息x右边增加若干比特,使其长度与448模512同 余。也就是说,填充后的消息长度比512的某个倍数 少64位。 即使消息本身已经满足上述长度要求,仍然需要进 行填充。 例如,若消息长为448,则仍需要填充512位使其长 度为960位。填充位数在1到512之间。填充比特的第 一位是1,其它均为0。
Hash函数的碰撞(collision) 设x、x’是两个不同的消息,如果 h(x)=h(x’) 则称x和x’是Hash函数h的一个(对)碰撞.
6
5.1.1 Hash函数定义
Hash函数的分类 单向Hash函数(oneway) 给定一个Hash值y,如果寻找一个消息x,使得y=h (x) 是计算上不可行的,则称h是单向Hash函数. 弱抗碰撞Hash函数(weakly collisionfree) 任给一个消息x,如果寻找另一个不同的消息x’,使 得h(x) =h(x’)是计算上不可行的,则称h是弱抗碰撞 Hash函数. 强抗碰撞Hash函数 (strongly collisionfree) 如果寻找两个不同的消息x和x’,使得h(x)=h(x’)是计 算上不可行的,则称h是强抗碰撞Hash函数.
* n *
任意长度消息集合— A A
* n
i 0 A
n
i
xA
y h( x ) A
将h称为一个Hash函数(hash function),或称为哈希函
数、散列函数。对于任何消息x ,将h(x)称为x的Hash值、 散列值、消息摘要(message digest)。
5
5.1.1 Hash函数定义
这里DK是解密变换。假设加密变换EK是随机的,那么 可以使用生日攻击法来分析集合H1和H2中出现相同元 素的概率。 如果集合H1与H2有相同元素,例如h1, i= h2, j=DK(M2, j, d), 则有d=EK (M2, j, h1,i ),即M与m有相同的散列值d。 h1= EK(m1, IV) d=h(m)=EK(m2, h1)
k人中至少有2人生日相同的概率为: 1 2 k 1 P(365, k ) 1 1 1 ...1 . 365 365 365 有P(365,23)=0.5073。即在23个人中,至少有两个人生日相 同的概率大于0.5,这个数字比人们直观猜测的结果小得多, 因而称为生日悖论。3ຫໍສະໝຸດ 5.1.1 Hash函数定义
数据安全 机密性 完整性 认证性 密码技术主要保证数据的机密性 Hash函数能保证数据的完整性和认证性
4
5.1.1 Hash函数定义
Hash函数定义:Hash函数是一个将任意长度的消息 (message)映射成固定长度消息的函数。