现代密码学-第5章Hash函数与消息认证

合集下载

网络安全-11:消息认证和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函数的要求
*
西安电子科技大学计算机学院
*
生日攻击

网络与信息安全第5章+数字签名和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比特。

Hash函数(消息认证)

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,在传输过程中未被篡改。

《现代密码学》散列函数与消息鉴别ppt课件

《现代密码学》散列函数与消息鉴别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 息序列

第五章 信息安全原理与技术ch05-Hash函数和数字签名

第五章 信息安全原理与技术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函数(消息认证)

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消息认证和Hash函数

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函数。

HASH函数是一种对数据进行加密的方法,它通过将输入转换为固定长度的输出,在加密技术中有着重要的作用。

在消息认证中,HASH函数用于验证消息的完整性和真实性,因为它能够将一段消息转换成固定长度的HASH值,任何轻微的改动都会导致HASH值发生巨大变化,从而确保消息内容的完整性和不可篡改性。

二、消息认证的过程接下来,让我们来探讨HASH函数进行消息认证的过程。

在实际应用中,消息认证通常分为以下几个步骤:1. 发送方使用HASH函数对待发送的消息进行HASH运算,得到HASH值。

2. 发送方将消息和HASH值一起发送给接收方。

3. 接收方收到消息后,使用相同的HASH函数对收到的消息进行HASH运算,得到一个新的HASH值。

4. 接收方将计算得到的HASH值与接收到的HASH值进行比较,如果两者一致,则消息没有被篡改;否则,消息被篡改。

这一过程可以确保消息的完整性和真实性,因为只有发送方知道如何对消息进行HASH运算,并且HASH值是通过特定的算法计算得到的,接收方也能通过相同的算法验证消息的完整性和真实性。

三、个人观点和理解在我看来,HASH函数进行消息认证的过程非常重要,特别是在网络通信安全领域。

通过HASH函数,我们可以确保消息在传输过程中不会被篡改,保护通信的安全性。

HASH函数也广泛应用于数字签名、密码学等领域,具有非常重要的意义。

了解HASH函数进行消息认证的过程对于我们拓展知识面、提高信息安全意识具有重要意义。

总结回顾通过本文的介绍,我们了解了HASH函数进行消息认证的过程及其重要性。

消息认证通过HASH函数可以确保消息的完整性和真实性,在信息安全领域有着重要的应用。

我们也对HASH函数的概念和消息认证的过程有了更深入的理解,这对我们在实际应用中能更好地运用HASH函数进行消息认证具有重要帮助。

在实际撰写过程中,我们应该遵循从简到繁、由浅入深的方式来探讨主题,同时也要兼顾总结和回顾性的内容,以便读者能全面、深刻和灵活地理解主题。

Hash函数与消息认证

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函数与消息认证概论

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

4消息认证与哈希函数

4消息认证与哈希函数

4消息认证与哈希函数密码学基础4 消息认证和哈希函数4.1 消息认证 Message Authentication加密抗击被动攻击(获取消息的内容、业务流分析)保密性 Confidentiality消息认证抗击主动攻击(假冒、重放、消息篡改、业务拒绝)真实性 Authenticity对称加密不能保证真实性流密码:主动攻击者通过置乱相应密⽂ bit,可以改变任意明⽂ bit。

ECB 模式分组密码:攻击者记录⼀些过去的密⽂分组,替代新的密⽂分组。

如果分组消息之间不相关,接收者不可能检测到攻击。

公钥加密可以提供保密性,但不能提供认证发⽅ Alice 采⽤收⽅ Bob 的公钥K B P对消息 m 进⾏加密。

只有 Bob 知道⾃⼰的私钥K B S,故只有 Bob 才能对收到的消息准确解密。

任何⼈可以假冒 Alice,⽤ Bob 的公钥K B P对消息 m 加密,因此不能确保发送者⾝份的真实性。

认证⽅式的分类对称认证 Symmetric Authentication通信双⽅相互信任的认证(如企业内部⼈员之间)。

主要防⽌来⾃第三⽅的攻击(如检查⽂件是否被⼈修改过)。

⾮对称认证 Asymmetric Authentication通信双⽅相互不信任的认证(如商业伙伴之间)。

主要防⽌来⾃对⽅的攻击(如查验收到的⽂件是否真实)。

4.2 Hash 函数将任意长的数字串 m 映射为⼀个较短的定长的数字串 h。

⽬标:确定消息是否被修改。

攻击:修改消息后,Hash 值不变。

h=H(m) 满⾜:m 任意长度,h 固定长度快速性:∀m,计算 h 容易单向性:∀h,计算 m 困难弱抗碰撞性:已知m1,寻找m2≠m1满⾜H(m2)=H(m1) 困难强抗碰撞性:∀m1,寻找m2≠m1满⾜H(m2)=H(m1) 困难雪崩效应:m 发⽣很⼩的变动,引起 h 较⼤变动。

完全单向:已知 h ⽆法推算出 m,已知两个输出的差别⽆法推算出输⼊的差别。

第五章 信息安全原理与技术ch05-Hash函数和数字签名

第五章 信息安全原理与技术ch05-Hash函数和数字签名

2020/7/20
Ch5-消息认证与数字签名
12
MAC的性质
• 一个安全的MAC函数应具有下列性质:
– 若攻击者知道M和Ck(M),则他构造满足 Ck(M’)= Ck(M)的消息M’在计算上是不可行的。
– Ck(M)应是均匀分布的,即对任何随机选择的 消息M和M’, Ck(M)=Ck(M’)的概率是2-n,其中n 是MAC的位数。
m2m1且H(m2)=H(m1)的m2在计算上是不可行的; • 找到任何满足H(m1)=H(m2)且m1 m2的消息对(m1, m2)
在计算上是不可行的。
2020/7/20
Ch5-消息认证与数字签名
16
安全的Hash函数的要求
• H可以应用于任意长度的数据块,产生固定长度的散列 值;
信息安全原理与技术
郭亚军 宋建华 李莉 清华大学出版社
第5章 消息认证与数字签名
• 主要知识点:
-- 认证 -- 认证码 -- 散列函数 -- MD5 -- SHA-512 -- 数字签名
2020/7/20
Ch5-消息认证与数字签名
2
认证
• 认证则是防止主动攻击的重要技术,可以 防止如下一些攻击 :
2020/7/20
Ch5-消息认证与数字签名
3
认证的目的
• 第一,验证消息的发送者是合法的,不是 冒充的,这称为实体认证,包括对信源、 信宿等的认证和识别;
• 第二,验证信息本身的完整性,这称为消 息认证,验证数据在传送或存储过程中没 有被篡改、重放或延迟等。
2020/7/20
Ch5-消息认证与数字签名
2020/7/20
Ch5-消息认证与数字签名
10
对MAC的攻击

现代密码学-第5章Hash函数与消息认证习题与解答-20091202

现代密码学-第5章Hash函数与消息认证习题与解答-20091202

第5章 Hash 函数与消息认证习题及参考答案1. 指出强抗碰撞H ash 函数与弱抗碰撞H ash 函数之间的区别。

答:弱抗碰撞H ash 函数是任给一个消息x,寻找另一个不同的消息x ,使得他们的H ash 函数值相等是不可行;强抗碰撞Hash 函数是同时寻找两个不同的消息使得他们的Hash 函数值相等是计算上不看行的,可以看出强抗碰撞Hash 函数一定是弱抗碰撞的。

2. 考虑Gibson Hash 函数h 。

设p 、q 是两个素数,N =p ⨯q ,g 是(Z N )*的生成元。

N 作为公钥,p 与q 作为签名者的私钥。

对任意消息m ,其摘要定义为:h (m )= g m mod N 。

(1) 令N =4897,g =2231。

分别计算消息m =132748,m '=75676的摘要。

(2) 证明:如果得到了两个碰撞的消息,那么就可以求出N 的分解。

(3) 证明:如果得到了N 的分解,那么就可以找到碰撞的消息。

解:(1)由h (m )= g m mod N 。

所以h (132748)=2231132748mod4897=2611 h(75676)=2611(2)证明:若h (m)= h (m ')则有g m mod N= g m ' mod N假设 N 的分解为 N=p*q 所以代入 然后根据中国剩余定理可以解得 p ,q 。

3. 设p 是一个素数,g 1、g 2是(Z p )*的两个生成元,使得离散对数p g g mod log21的计算是困难的。

对任意消息m =(m 1, m 2),定义H ash 函数h 的摘要为:p g g m m h m m mod ),(212121⨯=。

(1) 设p =65867,g 1=11638,g 2=22770。

分别计算消息m =(33123, 11789),m '=(55781, 9871)的摘要。

(2) 证明:求解H ash 函数h 的碰撞等价于计算离散对数p g g mod log21。

消息认证和散列(Hash)函数

消息认证和散列(Hash)函数

消息认证和散列(Hash)函数1 散列函数1.1散列函数的概念1.2 简单散列函数的构造1.3 作为消息认证的散列函数应具有的特性2 基于散列函数的消息认证方式2.1 对称密钥加密方式2.2 公开密钥与对称密钥结合的加密方式2.3公共秘密值方式在网络通信环境中,可能存在下述攻击:1.泄密:将消息透露给没有合法密钥的任何人或程序。

2.传输分析:分析通信双方的通信模式。

在面向连接的应用中,确定连接的频率和持续时间;在面向业务或无连接的环境中,确定双方的消息数量和长度。

3.伪装:欺诈源向网络中插入一条消息,如攻击者产生一条消息并声称这条消息是来自某合法实体,或者非消息接受方发送的关于收到或未收到消息的欺诈应答。

4.内容修改:对消息内容的修改,包括插入、删除、转换和修改。

5.顺序修改:对通信双方消息顺序的修改,包括插入、删除和重新排序。

6.计时修改:对消息的延时和重放。

7.发送方否认:发送方否认发送过某消息。

8.接收方否认:接收方否认接收到某消息。

其中,对付前两种攻击的方法属于消息保密性范畴;对付第3种至第6种攻击的方法一般称为消息认证;对如第7种攻击的方法属于数字签名;对付第8种攻击需要使用数字签名和为抗此种攻击而涉及的协议。

这样归纳起来,消息认证就是验证所收到的消息确实来自真正的发送方且未被修改的消息,它也可验证消息的顺序和及时性。

任何消息认证在功能上基本可看做有两层。

下层中一定有某种产生认证符的函数,认证符是一个用来认证消息的值;上层协议中将该函数作为原语使接收方可以验证消息的真实性。

产生认证符的函数类型通常可以分为以下三类:1.消息加密:整个消息的密文作为认证符。

2.Hash函数:它是将任意长的消息映射为定长的hash值得公开函数,以该hash 值作为认证符。

3.消息认证码(MAC):它是消息和密钥的公开函数,它产生定长的值,以该值作为认证符。

实际上消息认证码也属于Hash函数的范畴,它是带密钥的Hash函数。

Lecture07_Hash函数与消息认证

Lecture07_Hash函数与消息认证

如何计算Wt?
Wt = S1(Wt-16 Wt-14 Wt-8 Wt-3 )
SHA-1算法举例

见教材
例7-1
§7-3 消息认证

网络系统安全:
– 加密保护传送的信息使其不被破译 – 防止对手对系统进行主动攻击
一个纯认证系统的模型
截取和破译 密文、伪造 消息 窜扰者 认证编码器 信道 信息源认证、 信息完整性 认证 认证译码器 信宿 收方认证
| Clock - T | < t1 + t2 其中: t1 是KDC时钟与本地时钟(A或B)之间差异的估计值; t2 是预期的网络延迟时间。
新的问题……
必须依靠各时钟均可通过网络同步 如果发送者的时钟比接收者的时钟要快,攻击者就可以 从发送者窃听消息,并在以后当时间戳对接收者来说成为 当前时重放给接收者(抑制重放攻击)

MD5、SHA-1大厦轰然倒塌

2004年8月,在美国加州召开的国际密码 大会上,王小云在国际会议上首次宣布了她 及她的研究小组近年来的研究成果——对 MD5、HAVAL-128、MD4和RIPEMD等四 个著名密码算法的破译结果。王小云的研究 成果作为密码学领域的重大发现宣告了固若 金汤的世界通行密码标准MD5大厦轰然倒塌, 引发了密码学界的轩然大波。
Denning Protocol [1982] 改进: 1、A KDC:IDA||IDB 2、KDC A:EKa[Ks||IDB||T||EKb[Ks||IDA||T]] 3、A B: EKb[Ks||IDA||T] 4、B A: EKs[N1] 5、A B: EKs[f(N1)]
[TokenID]||[CertB]||TokenBA2 图7-19 双向认证

哈希函数与消息认证码MDSHA等的原理与应用

哈希函数与消息认证码MDSHA等的原理与应用

哈希函数与消息认证码MDSHA等的原理与应用在当今数字化的时代,信息的安全传输和存储变得至关重要。

哈希函数和消息认证码作为保障信息完整性和真实性的重要技术手段,发挥着不可或缺的作用。

接下来,让我们深入了解一下哈希函数与消息认证码 MDSHA 等的原理与应用。

哈希函数,简单来说,就是一种将任意长度的消息压缩成固定长度摘要的函数。

它具有一些独特的特性,比如单向性,即从哈希值很难反推出原始消息;抗碰撞性,意味着很难找到两个不同的消息产生相同的哈希值。

常见的哈希函数有 MD5、SHA-1、SHA-256 等。

以 SHA-256 为例,它会对输入的消息进行一系列复杂的位运算和逻辑操作,最终生成一个 256 位的哈希值。

无论输入的消息有多长,输出的哈希值长度始终固定。

这种特性使得哈希函数在很多领域都有广泛的应用。

在数据完整性验证方面,哈希函数大显身手。

比如,当我们从网上下载一个软件时,发布者通常会同时提供软件的哈希值。

我们在下载完成后,可以对软件计算哈希值,并与发布者提供的哈希值进行对比。

如果两者一致,那么就可以确认软件在传输过程中没有被篡改,保证了数据的完整性。

在密码存储中,哈希函数也起着关键作用。

我们不会直接将用户的密码明文存储在数据库中,而是存储密码的哈希值。

这样,即使数据库被攻击者获取,由于哈希函数的单向性,攻击者也很难从哈希值反推出原始密码,从而保护了用户的密码安全。

消息认证码(MAC)则是一种用于验证消息来源和完整性的机制。

它与哈希函数有相似之处,但又有所不同。

MDSHA 就是其中一种常见的消息认证码算法。

消息认证码的生成通常需要一个共享密钥。

发送方使用这个密钥和要发送的消息计算出一个认证码,并将消息和认证码一起发送给接收方。

接收方使用相同的密钥和接收到的消息重新计算认证码,如果计算出的认证码与接收到的认证码一致,就可以确认消息的来源和完整性。

在网络通信中,消息认证码可以防止恶意攻击者篡改或伪造消息。

Hash函数和消息认证码

Hash函数和消息认证码

Copyright by © 王鲲鹏
kpwang@
安全Hash的一般结构
如果压缩函数具有抗碰撞性,那么迭代Hash函 数也具有抗碰撞性。显然反之不然。
Copyright by © 王鲲鹏 kpwang@
基于分组码链接的Hash函数
M1 H0 M2 E M3 E M
kpwang@
RIPEMD-160 Constants Table
• 常量表
Copyright by © 王鲲鹏
kpwang@
Truth Table of Logical Functions for RIPEMD-160 BCD 000 001 010 011 100 101 110 111 f1f2 f3f4 f5 0 0 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 1 1 0 1 1 1 0 1 1 0 1 0
Copyright by © 王鲲鹏 kpwang@
RIPEMD-160
• 填充、初始化
– 同SHA1 – 但little endian
Copyright by © 王鲲鹏
kpwang@
RIPEMD-160 Round

Copyright by © 王鲲鹏
Whirlpool Overview

Copyright by © 王鲲鹏
kpwang@
通用循环散列结构[Merkle]
• Whirlpool
– K Hi-1 – FF P⊕Hi-1
Copyright by © 王鲲鹏
kpwang@
Whirlpool 轮次
– efficiency on 64-bit platforms – the hash value is 192 bits
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)映射成固定长度消息的函数。
相关文档
最新文档