Hash函数(消息认证)

合集下载

一种基于Hash函数和分组密码的消息认证码

一种基于Hash函数和分组密码的消息认证码
( 北 京 邮 电 大学 网络 与 交 换 技 术 国家 重 点 实 验 室
( 北 京 电子 科 技 学 院 北京
北 京 1 0 0 8 7 6 )
1 0 0 0 7 0 )
”( 中 国科 学 院信 息 工 程 研 究 所
北 京 1 0 0 0 9 3 )
摘 要
基 于 Ha s h函 数 的 HMAC是 一 种 应 用 最 为 广 泛 的 消息 认 证 码 , 但 最 近 的 研 究 指 出 HMA C 不 仅 易 受 到 相
Ab s t r a c t HM AC o n t h e b a s e o f Ha s h f u n c t i o n i S t h e mo s t p o p u l a r M AC,b u t r e c e n t s t u d i e s h a v e p o i n t e d o u t t h e v u l n e r a b i l i t i e s o f HM AC b o t h t o r e l a t e d — k e y a t t a c k a n d i n mu l t i - u s e r e n v i r o n -
பைடு நூலகம்
f unc t i o n a n d bl oc k c i p he r . Se c u r i t y pr o o f f o r HBM AC ha s be e n gi v e n o n t h e ba s i c a s s umpt i o ns t ha t bl o c k c i ph e r i s ps e u do — r a n do m p e r mu t a t i on a nd t h e c o mpr e s s i on f unc t i on u s e d by Ha s h f unc t i o n i S a ps e ud o — r a nd o m o ne, whi c h u s e s t he s h a r e d r a n do m mo de 1 . Al s o, r e a l i z a t i o n o f H BM AC a nd H M AC a l g o r i t hm i s i nt r od uc e d . Thi s p a pe r a n a l ys e s t he q u a l i t y a nd e f f i c i e nc y o f

密(研)11-密码学Hash函数

密(研)11-密码学Hash函数

第11章 密码学Hash函数Crytographic Hash Functions课程内容大纲1. 引言第一部分:对称密码2. 传统加密技术第三部分:密码学数据完整性算法11.密码学Hash函数3. 分组密码与数据加密标准(DES) 12.消息认证码(MAC) 4. 数论与有限域的基本概念 13.数字签名 5. 高级加密标准(AES) 6. 分组密码的工作模式 7. 伪随机数的产生和流密码第四部分:相互信任14.密钥管理与分发 15.用户认证第二部分:公钥密码8. 数论入门 9. 公钥密码学与RSA 10. 密钥管理和其他公钥密码体制讲课内容11.1 密码学Hash函数的应用 11.2 两个简单的Hash函数 11.3 需求和安全性、安全Hash函数结构 11.4 基于分组密码链接的Hash函数 11.5 安全Hash算法(SHA) 补充:Hash函数MD511.1 密码学Hash函数的应用Hash函数定义• (单词"hash"的翻译:哈希、杂凑、散列、… ) • Hash函数H是一公开函数,用于将任意长的消息 M映射为较短的、固定长度的一个值H(M)。

称函 值H(M)为杂凑值、杂凑码或消息摘要 M → h = H(M)• 在安全应用中使用的Hash函数称为密码学Hash 函数(cryptographic hash function)Hash函数特点• Hash值 H(M) 是消息中所有 比特的函数,因此提供了一 种错误检测能力,即改变消 息中任何一个比特或几个比 特都会使杂凑码发生改变。

Hash函数的应用(1)消息认证 (2)数字签名 (3)其它一些应用Hash函数应用之一:消息认证• 消息认证是用来验证消息完整性的一种机制或服务 完整性 • 当Hash函数用于提供消息认证功能时,Hash函数 值通常称为消息摘要(message digest)• 一般地,消息认证是通过使用消息认证码(MAC) 实现的,即带密钥的Hash函数。

第17讲 Hash 函数.

第17讲 Hash 函数.

Hash函数的安全性
生日攻击法
分别把消息m和M表示成r和R个变形的消息
Hash函数的安全性
生日攻击法
计算真消息m的变形与假消息M的变形发生碰撞的 概率 由于n比特长的散列值共有2n个,所以对于给定m 的变形mi和M的变形Mj,mi与Mj不碰撞的概率是 1-1/2n。由于M共有R个变形,所以M的全部变形 都不与mi碰撞的概率是:
1 2 k 1 1 1 ...1 . 365 365 365
k人中至少有2人生日相同的概率为: 1 2 k 1 P(365, k ) 1 1 1 ...1 . 365 365 365
有P(365,23)=0.5073。即在23个人中,至少有两 个人生日相同的概率大于0.5,这个数字比人们 直观猜测的结果小得多,因而称为生日悖论。
Hash函数的安全性
生日攻击法 生日悖论原理可以用于构造对Hash函数 的攻击
设Hash函数值有n个比特,m是真消息,M 是伪造的假消息,分别把消息m和M表示成r 和R个变形的消息。消息与其变形消息具有 不同的形式,但有相同的含义。将消息表示 成变形消息的方法很多,例如增加空格、使 用缩写、使用意义相同的单词、去掉不必要 的单词等。
第8章 Hash 函数
Hash函数定义
数据安全 机密性 完整性 认证性 密码技术主要保证数据的机密性 Hash函数能保证数据的完整性和认证性
Hash函数定义
Hash函数常用来构造数据的短“指纹”:消息的 发送者使用所有的消息产生一个附件也就是短 “指纹”,并将该短“指纹”与消息一起传输给 接收者。 即使数据存储在不安全的地方,接收者重新计算 数据的指纹,并验证指纹是否改变,就能够检测 数据的完整性。这是因为一旦数据在中途被破坏, 或改变,短指纹就不再正确。

信息安全概论第五章消息认证与数字签名

信息安全概论第五章消息认证与数字签名
6
5.1.1 信息加密认证
信息加密函数分两种,一种是常规的对称密钥加密函数, 另一种是公开密钥的双密钥加密函数。下图的通信双方 是,用户A为发信方,用户B为接收方。用户B接收到信 息后,通过解密来判决信息是否来自A, 信息是否是完 整的,有无窜扰。
1.对称密码体制加密: 对称加密:具有机密性,可认证,不提供签名
通常b>n
24
5.2.3
MD5算法
Ron Rivest于1990年提出了一个称为MD4的散列函数。 他的设计没有基于任何假设和密码体制,不久,他的 一些缺点也被提出。为了增强安全性和克服MD4的缺 陷, Rivest于1991年对MD4作了六点改进,并将改进 后的算法称为MD5. MD5算法:将明文按512比特进行分组,即MD5中的 b=512bit,经填充后信息长度为512的倍数(包括64 比特的消息长度)。 填充:首位为1,其余补0至满足要求,即填充后的比 特数为512的整数倍减去64,或使得填充后的数据长 度与448模512同余。
18
通过以下方式使用散列函数常提供消息认证
(1)使用对称加密算法对附加消息摘要的报文进行加密 A B: EK(M||H(M)) 提供保密、认证 (2)使用对称加密方法对消息摘要加密 A B: M||EK(H(M)) 提供认证 (3)使用发方的私钥对消息摘要进行加密 A B: M||EKRa(H(M)) 提供数字签名、认证 (4)在(3)的基础上,使用对称加密方法进行加密 A B: EK(M||EKa(H(M)) ) 提供数字签名、认证和保密 (5)假定双方共享一个秘密值S,与消息M串接,计算散 列值 A B: M||(H(M||S)) 提供认证 (6)假定双方共享一个秘密值S,使用散列函数,对称加 密方法 A B: EK(M||H(M||S)) 提供数字签名、认证和保密19

Hash函数

Hash函数

第3轮 以 [ABCD k s i]表示如下操作 A = B + ((A + H(B,C,D) + X[k] + T[i]) <<< s). Do the following 16 operations. [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
3、强无碰撞hash函数是单向的。 总之,Hash函数应该满足 1)由自变量求函数是容易的,反之是困难的。 2)寻找碰撞是困难的
四、Hash函数实例 MD5
MD:Merkle-Damgard结构 输入:任意长度的消息 输出:128位消息摘要 处理:以512位输入数据块为单位
L×512 bits=N ×32bits × K bits 报文
填充 (1 to 448 bits)
100…0
报文长度 (K mod 264)
512 bits
512 bits
512 bits
512 bits
Y0
512
Y1
512
Yq
512
YL-1
512
128
128 128 128
HMD5
IV CV1
HMD5
CVq
HMD5
CVL-1

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函数进行消息认证具有重要帮助。

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

消息认证(Message Authentication)

消息认证(Message Authentication)

的功能
– 电子商务上的应用,如电子付款、电子投票
消息认证的功能(目的)
-验证信息来源的真实性,即信源识别 -验证信息内容的完整性,保证消息不被篡改
如何实现消息认证
• 消息认证码(Message Authentication Code)
• 发送方用双方都知道的密钥计算出
MAC值,并连同消息送給接收方
• Hash Message Authentication Code (HMAC)
– RFC 2104 标准 – 可嵌入多种杂凑函数算法:MD4、MD5 与 SHA-1
– 加入『秘密密钥』
发送方 M 消 息 M MAC 杂凑 算法 密钥 K MAC 接收方 M
HMAC 算法
消 息
HMAC 算法 杂凑 算法
一、Hash 函数(One-way Hash Function)
• 把任意长的消息“压缩”成固定长的消息的算 法 • 数字签名时,常被使用 • 通常,HASH 函数是公开的 • 输出长度应足够大,防止生日攻击 • 64-bits 认为太小 • 通常 128~512bits
1. Hash函数的概念
=
?
密钥 K
HMAC 算法
HMAC 结构
HMACK(M) = H [(K+ ⊕ opad) || H [(K+ ⊕ ipad) || M]]
• 密钥 K 以 0 填满 b bits产生K+ • ipad:將 00110110 重复 b/8 次 • opad:將 01011100重复 b/8 次
K+
如何实现消息认证
•MAC-BCB-AES算法
方法:
1. 消息认证码(Message Authentication Code, MAC)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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’
比较
x1
13
3
应用
实现数据源认证 数据源认证也称为消息认证,它是要求证实一个实体在 过去某个时刻建立的数据源.数据源认证也包括数据完 整性.提供数据源认证的方法有:
(1) 使用消息认证码MAC; (2) 对附加上散列值的消息进行加密.
MD5-MAC算法使用96字节的常数
T0 97 ef 45ac 290f 43cd 457e1 b 551c 801134, T1 b177ce 962e 728e 7 c 5 f 5 aab 0 a 3643be 18, T2 9 d 21b 421bc 87 b 94 da 29 d 27 bdc 75 bd 7 c 3. U i Ti || Ti 1 || Ti 2 || Ti || Ti 1 || Ti 2 (0 i 2).
把K0,K1分成4个32位的子串Kj[i](j=0,1, i=0,1,2,3) 对MD5进行修改:用K0代替MD5的4个32位寄存器ABCD. 把K1[i]与MD5第i +1遍中每个常数232sin(j)进行模232加法. 将512位的分组 K 2 || K 2 T0 || K 2 T1 || K 2 T2 链接到消息x右边,再按MD5的要求进行填充. 将上一步的结果输入到修改后的MD5中,取其输出的前 一半(64位)作为消息x的消息认证码MD5-MAC (x).
发送方 A x hK x1 || x C x1 接收方B hK
比较 11
3
使用Hash函数和加密
应用
设A与B共享分组密码的密钥K,EK是加密算法,h是公开的 Hash函数. 用户A计算C=EK(x||h(x)),并将数据C发送给B.B利 用密钥K进行解密,得到x’和h(x),然后计算h(x’),并与接 收到的h(x)相比较.如果h(x’)=h(x),则B确定消息x’是真实 的.由于这里对h(x)进行了加密,所以对Hash函数h的要求可以 适当降低.
其中下标加法运算是模3相加. 如果密钥K的长度小于128位,则通过多次自行链接,最 后截取左边128位作为以下算法中使用的密钥K。
4
1 消息认证码
将密钥K扩展成3个16字节的子密钥K0,K1,K2,其中
K i MD5( K || U i || K ) (0 i 2). 其中MD5表示不进行填充的MD5.
6
2
HMAC算法
HMAC算法描述 设HMAC使用的Hash函数为h,每次处理的输入分 组长度为b比特(使用MD5与SHA-1时,b=512), 最后的输出长度为l比特(使用MD5时,l=128;使 用SHA-1时,l=160)。如果HMAC的输入消息为x, 则x=x1 x2…xL,其中每一个分组xi(1≤i≤L)的长度 为b比特。 令HMAC使用的密钥为K,密钥K可以是任意的、 长度不超过b比特的比特串(HMAC算法推荐密钥 最小长度为l比特)。当密钥K的长度超过b比特时, 使用Hash函数h对K进行压缩,把K作为h的输入, 并将输出的l比特作为密钥K。
希望不对广告内容加密,但又希望其它公司不能修改广告内容或 冒充公司A发布同样的广告,或者当广告内容被修改后能够发现. 如果使用不带密钥的Hash函数,由于其它公司可能在修改广告 内容后产生新的散列值,从而使A无法确认原广告是否被修改.
设计MAC算法的要求 在不知道密钥的情况下,难以找到两个不同的消息具有相 同的输出。
设用户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,在传输过程中未被篡改。
发送方 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’两个密钥.
哈希函数——消息认证
认证(authentication)是防止网络系统遭受主动攻击 的重要技术 认证的主要目的有两个 第一,验证消息的发送者是真的,而不是冒充的, 称为实体认证,包括信源、信宿等的认证和识别。 第二,验证信息的完整性,即验证数据在传送或存 储过程中未被篡改、重放或延迟,称为消息认证。
9
2
HMAC的安全性
HMAC算法
建立在嵌入Hash函数基础上的所有MAC,其安全性在某种 程度上都依赖于该Hash函数的强度。对于HMAC,可以给出 HMAC的强度与所嵌入Hash函数强度之间的关系。 根据伪造者在给定时间内伪造成功和用相同密钥产生给定数 量的消息-MAC对的概率,可以用于描述MAC的安全性。 Bellare等人(1996年)已经证明,如果攻击者已知若干(时 间、消息-MAC)对,则成功攻击HMAC的概率等价于对所 嵌入Hash函数的下列攻击之一: (1)即使对于攻击者而言,IV是随机的、秘密的和未知的,攻
设用户A将消息x发送给接收者B,A与B共享密钥K,则用户 A向B发送以下数据可实现数据源的认证.
(1) EK(x||h(x)): 提供保密(仅双方共享K)和认证(加密保护散 列值); (2) x||EK(h(x)): 提供认证(加密保护散列值); (3) x||h(x||S):提供认证(仅双方共享随机数S); (4)EK(x||h(x||S)):提供保密和认证(仅双方共享K、S)。
2
1 消息认证码
基于分组密码CBC工作模式构造MAC 基于分组密码CBC工作模式构造MAC算法已经成为 ISO/IEC 9797 标准,它使用密文链接和双密钥三重 加密技术。 设EK表示以K为密钥的加密算法,设K’是一个与K 不同的密钥,消息分组长度为n。 首先把消息x分成L个n位块 x=x1 x2…xL, 计算: H1 EK ( x1 ),
H i EK ( H i 1 xi ) (2 i L),
1 hK ( x) EK ( EK , ( H L )).
hK是一个n位MAC. 记为CBC-MAC.
3
1 消息认证码
基于Hash函数构造MAC 设h是一个(不带密钥)Hash函数,K是密钥,x是 消息,则定义消息认证码hK如下: hK ( x) h( K || x). 基于MD5算法直接构造消息认证码MD5-MAC
15
ቤተ መጻሕፍቲ ባይዱ
1
1 消息认证码
带密钥的Hash函数称为消息认证码(MAC:message authentication code). 消息认证码是实现消息认证的重要工具. MAC有两个不同的输入,一个是消息x,另一个是密钥K . MAC产生定长的输出. 实例: 某一个大公司A想给它的客户发布一个新产品的广告,A
7
2
HMAC算法的流 程图
HMAC算法
K
ipad
Si
x1
x2

xL
K
opad
Hash函数h
So
h(Si|| x)
Hash函数h
HMAC(x)
8
2
HMAC算法
HMAC算法具体执行步骤
(1)如果密钥K的长度小于b 比特,则在其右边填充一些 “0”,使其成为长度为b比特的比特串,仍记为K。 (2)计算Si=Kipad,其中ipad是HMAC算法中规定的一个 长度为b比特的比特模式串,它等于将00110110重复b/8次 后得到的比特串。 (3)把HMAC的输入消息x=x1 x2…xL附加在Si的右端,得到 Si||x =Si||x1x2…xL,将该比特串作为Hash函数h的输入,得 到l比特的输出h(Si||x)。 (4)计算So=Kopad,其中opad是HMAC算法中规定的另 一个长度为b比特的比特模式串,它等于将01011010重复 b/8次后得到的比特串。 (5)将第(3)步得到的h(Si||x)附加在So的右端,并以该比特串 作为Hash函数h的输入,得到l比特的输出。 (6) 将第(5) 步的输出作为HMAC算法的最终输出结果,即 消息x的消息认证码HMAC(x)。
相关文档
最新文档