第四章 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函数的要求
*
西安电子科技大学计算机学院
*
生日攻击

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,则

精品文档-密码学基础(范九伦)-第4章

精品文档-密码学基础(范九伦)-第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 息序列

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函数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-1-1 消息完整性检验的一般机制
第4章 消息认证技术
4.2 消 息 认 证 码
在4.1节中我们简单介绍了消息的完整性检验,这只能检 验消息是否是完整的,不能说明消息是否是伪造的。因为, 一个伪造的消息与其对应的数字指纹也是匹配的。消息认证 具有两层含义: 一是检验消息的来源是真实的,即对消息的 发送者的身份进行认证; 二是检验消息是完整的,即验证消 息在传送或存储过程中未被篡改、删除或插入等。
第4章 消息认证技术
一个例外的情况是,若消息出错,而摘要值仍然不变的 概率为2-n。当n充分大时,出错的概率或者说消息被篡改的
第4章 消息认证技术
4.1.2
消息完整性检验的一般机制如图4-1-1所示。无论是存储 文件还是传输文件,都需要同时存储或发送该文件的数字指 纹; 验证时,对于实际得到的文件重新产生其数字指纹,再 与原数字指纹进行对比,如果一致,则说明文件是完整的, 否则,是不完整的。
(1) 接收方确信消息M (2) 接收方确信消息来自所声称的发送者,因为没有其 他人知道这个共享密钥,所以其他人也就不可能为消息M附 加合适的MAC
第4章 消息认证技术
2. 在消息认证中,消息以明文方式传送,这一过程只提供 认证而不具备保密性。如图4-2-2所示提供了一种既加密又认 证的方式,发送方发送EK2(M)‖CK1(M)。 该种处理方式除具备息认证的功能外,还具有保密性。
评价Hash函数的一个最好的方法是看攻击者找到一对碰 撞消息所花的代价有多大。一般地,假设攻击者知道Hash函 数,攻击者的主要目标是找到一对或更多对碰撞消息。 目前已有一些攻击Hash函数的方案和计算碰撞消息的方法, 这些方法中的生日攻击方法可用于攻击任何类型的Hash函数

消息认证和Hash函数

消息认证和Hash函数
message encryption message authentication code (MAC) hash function
认证
认证:向一个实体确认另一个实体确实 是他自己。 鉴别:实体鉴别(防冒充) 数据完整性鉴别(防篡改)
Security Requirements
disclosure traffic analysis masquerade content modification sequence modification timing modification source repudiation destination repudiation
assumed to be public Hash 函数不使用密钥,它仅是输入消息 的函数。
3 单向hash函数
单向函数: 杂凑函数: 单向散列函数:
Requirements for Hash Functions
1. 2. 3.

can be applied to any sized message M produces fixed-length output h given h is infeasible to find x s.t. H(x)=h one-way property given x is infeasible to find y s.t. H(y)=H(x) is easy to compute h=H(M) for any message M weak collision resistance is infeasible to find any x,y s.t. H(y)=H(x) strong collision resistance
Hash Algorithms
see similarities in the evolution of hash functions & block ciphers

第四章消息认证

第四章消息认证

公钥密码体制加密认证
这种方式既能提供认证, 又能够提供数字签名
A用B的公钥对明文加密 B能用自己的私钥解出明文,说明没有被人更改。
消息认证
(2) 消息认证码
使用一个密钥生成一个固定大小的小数据块,附加在消息 后,称MAC (Message Authentication Code)。 MAC = FK(M) 收到消息后,只需要根据密钥和消息来计算MAC是否等 于传过来的MAC。 接收者可以确信消息M未被改变,也可以确信消息来自所 声称的发送者;
MAC函数类似于加密函数,但不需要可逆性。 因此在数学上比加密算法被攻击的弱点要少。
假设双方共享密钥
消息认证
为何要使用消息认证码? 根本上,信息加密提供的是保密性而非真实性 加密代价大(公钥算法代价更大) 某些信息只需要真实性,不需要保密性
广播的信息难以使用加密(信息量大)
网络管理信息等只需要真实性 政府/权威部门的公告
第四章
数字签名和认证技术
一 二
消息认证
数字签名 身份认证

回顾与总结
对称密码算法
– 运算速度快、密钥短、多种用途、历史悠久 – 密钥管理困难
非对称密码算法
– 只需保管私钥、可以相当长的时间保持不变、需要
的数目较小
– 运算速度慢、密钥尺寸大、历史短
信息安全的需求
保密性( Confidentiality)
A->B: E(M || D(H(M),KdA),K)
几种常用的HASH算法
MD5
SHA-1
RIPEMD-160
MD5简介
Merkle于1989年提出hash function模型 Ron Rivest于1990年提出MD4

消息认证码和哈希函数的区别

消息认证码和哈希函数的区别

消息认证码和哈希函数的区别
消息认证码(MAC)和哈希函数在数据完整性校验和身份验证方面起着关键作用,但在使用和目的上有显著区别。

以下是关于它们的更多细节。

哈希函数,有时也称为散列函数,主要用于从任何长度的数据(例如消息)中创建固定长度的哈希值。

这个哈希值可以看作是输入数据的“指纹”或“摘要”,具有不可逆的特点,也就是说,无法从输出的哈希值逆向推导出原始输入数据。

此外,哈希函数的一个重要特性是它的单向性,意味着如果有人尝试从已知的哈希值中反向生成原始数据,这在计算上是非常困难的,而且时间成本会随着哈希值的增加而急剧上升。

消息认证码(MAC),则是一种更为复杂的机制。

它不仅使用哈希函数,还结合了密钥,为通信双方提供了一种验证消息完整性和来源的方法。

具体来说,MAC算法会将密钥和消息本身结合起来生成一个值,这个值只能由拥有相应密钥的发送方产生。

因此,接收方可以通过比较自己计算的MAC值和接收到的MAC值来验证消息的完整性和来源。

如果两者匹配,则消息被认为是有效的;如果不匹配,则消息可能已被篡改或发送方可能不是预期的发送方。

在实际应用中,例如在数据传输中,哈希函数可以用来检测数据是否在传输过程中发生了变化。

如果接收到的数据的哈希值与原始数据的哈希值不匹配,那么可以认为数据已经损坏或被篡改。

而MAC则可以用来确保数据不仅完整,而且确实来自预期的发送方。

总的来说,哈希函数和MAC都用于验证数据的完整性和来源,但MAC提供了更多的安全性,因为它结合了密钥。

在处理敏感数据或需要在不安全的通信环境中验证数据完整性和来源的情况下,通常会使用MAC。

Hash函数与消息认证

Hash函数与消息认证

19
但由于敌手不知道用于加密哈希值的密钥,他就不可能 既伪造一个消息M,又伪造这个消息的哈希值加密后的密文 EK[H(M)]。 然而,如果第5个条件不成立,敌手在截获明文消息及其 加密的哈希值后,就可按以下方式伪造消息:首先求出截获 的消息的哈希值,然后产生一个具有相同哈希值的伪造消息, 最后再将伪造的消息和截获的加密的哈希值发往通信的接收 方。 第6个条件用于抵抗生日攻击。
* 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
6.1.1 Hash函数定义
18
以上6个条件中,前3个是哈希函数能用于消息认证的基本要 求。 第4个条件(即单向性)则对使用秘密值的认证技术,极为 重要。假如哈希函数不具有单向性,则攻击者截获M和 C=H(S‖M)后,求C的逆S‖M,就可求出秘密值S。 第5个条件使得敌手无法在已知某个消息时,找到与该消息 具有相同哈希值的另一消息。这一性质用于哈希值被加密情 况时(见图8.3(b)和图8.3(c))防止敌手的伪造,由于在这种情 况下,敌手可读取传送的明文消息M,因此能产生该消息的 哈希值H(M)。
12

哈希函数的基本使用方式
13
⑤ 使用这种方式时要求通信双方共享一个秘密值S,A计算 消息M和秘密值S链接在一起的哈希值,并将此哈希值附加 到M后发往B。因B也有S,所以可重新计算哈希值以对消息 进行认证。由于秘密值S本身未被发送,敌手无法对截获的 消息加以篡改,也无法产生假消息。这种方式仅提供认证, 见图 (e)。 ⑥ 这种方式是在⑤中消息与哈希值链接以后再增加单钥加密 运算,从而又可提供保密性,见图 (f)。

哈希函数与消息认证码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

第四章 hash函数与消息认证码

第四章 hash函数与消息认证码

• 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?
消息调度算法:产生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
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
长 度
一、SHA-512的算法原理
128bit
输入消息m
n*1024bit
填充
消息长度
m1
1024bit 1024bit
m2
mn
1024bit
H0
512bit

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,已知两个输出的差别⽆法推算出输⼊的差别。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 —— 消息认证码(固定长度)
相关文档
最新文档