《现代密码学》学习笔记——第六章 消息认证和杂凑算法

一、Hash函数定义及安全目标

1.Hash函数的定义

  Hash函数 H:{0,1}*→{0,1}n(就是将任意长度的0,1序列映射到一个固定长度),又称改动检测码MDC、杂凑函数、哈希函数等等。原像空间{0,1}*称为消息空间,可用M表示,消息是任意有限长度的。像空间{0,1}n称为hash值空间,hash值(散列值、消息摘要)长度固定为n。Hash函数可以用来保护消息的完整性

2.单向函数的定义

  函数若满足下列两个条件,则称之为强单向函数:
(1) 计算f(x)是容易的,即f(x)是多项式时间可计算的;
(2)计算f函数的逆f-1(x)是困难的,即对每一多项式时间概率算法M,每一多项式p(n)和充分大的n(n>n0)有
    Pr{M(f(un))∈f-1(f(un))}<1/p(n)

3.Hash函数的性质

(1)单向性(抗原像):对干任意给定的消息,计算其哈希值容易.,但是,对于给定的哈希值h,要找到M使得H(M)=h
在计算上是不可行的。
(2)弱抗碰撞(抗二次原像):对于给定的消息M1,要发现另一个消息M2,满足H( M1)=H(M2)在计算上是不可行的。
(3)强抗碰撞:找任意一对不同的消息M1,M2 ,使H(M1)=H(M2 ) 在计算上是不可行的。

4.生日攻击(求碰撞的下限O(2n/2))

令H:{0,1}* → {0,1}n是一个hash函数。
(1)从{0,1}*中任选2n/2个元素: m1, …, m2n/2
(2)对 i = 1,…,2n/2分别计算t1 = H(mi)∈{0,1}n
(3)寻找碰撞ti = tj,若碰撞不存在,则返回第1步重新执行.
  根据生日悖论,期望的迭代次数≈2
  时间复杂度: O(2n/2) 空间复杂度:O(2n/2)

二、Hash函数的构造

1.MD5

(1)固定初始值
(2)长消息分块迭代处理
(3)消息长度填充(MD-加固)
  注:如果压缩函数是抗碰撞的,则MD结构构造的hash函数是抗碰撞的。压缩函数既可以由hashing方法构造,也可以
由分组密码构造。

2.海绵结构

三、消息鉴别码的定义及安全目标

1.定义

  消息认证码是定义在(K,M,T)上的算法:发送方A和接收方B共享密钥k∈K,若A向B发送消息m∈ M,则A利用t=S(k, m)计算MAC值t ∈T;接收方B对收到的(m*, t*),验证V(k, m*,t*)= Accept或者 Reject。S是消息认证函数,它利用密钥和任意长度的消息来生成一个固定长度的短数据块。若验证过程V(k, m*,t*)输出Accept ,接收方可以相信消息未被修改;同时可以确信消息来自真正的发送方。

2.攻击目的

(1)密钥恢复攻击:攻击者找到合法用户的的密钥k。
(2)伪造攻击:攻击者在未知密钥k的情况下,伪造一个未经过认证的(m,t)对。
(3)选择性伪造:如果攻击者能够对由他选择的消息m进行伪造(m,t*) ,那么这种伪造攻击称为选择性伪造攻击。
(4)存在性伪造:如果攻击者只能够对一个不由他控制的消息进行伪造,那么这种伪造攻击称为存在性伪造攻击。

3.攻击种类

(1)被动攻击:已知消息攻击:攻击者通过窃听等手段,获取一些消息和用同一个密钥认证这些消息所得的认证码。
(2)主动攻击:攻击者通过选取一些消息,发送给oracle(MAC设备)得到相应的认证码。
(3)非自适应选择消息攻击: 敌手在使用Mac设备之前,必须已经选定要测试的消息。
(4)自适应选择消息攻击:敌手可以根据Mac设备的输出,自行选择下一次要测试的消息。

四、消息鉴别码的构造

1.CBC-MAC

  标准中规定了两种具体的选择处理方法:
(1)选择一个密钥K*,计算MAC=Ek*(Oq)。
(2)选择一个密钥k*,计算MAC=Ek(Dk*(Oq))。
  选择处理过程可以增加密码分析者穷搜索密钥K的难度;在选择处理后,取n比特组的最左边的m比特构成MAC。

2.HMAC

MAC=H((K⊕opad)‖H(K⊕ipad‖text))
(1)在K的后面加上足够的0以得到B字节的串
(2)将上一步得到的B字节串与ipad异或
(3)将数据流“文本”接在第2步得到的B字节串后面
(4)将H应用于上一步的比特串
(5)将第1步所得到的B字节串与opad异或
(6)将第4步的消息摘要接在第5步的B字节串后
(7)应用H于上一步的比特串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值