杨波, 《现代密码学(第2版)》06-1
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图6.1 MAC的基本使用方式
如果仅收发双方知道K,且B计算得到的MAC 与接收到的MAC一致,则这一系统就实现了以下 功能: ① 接收方相信发送方发来的消息未被篡改,这是 因为攻击者不知道密钥,所以不能够在篡改消息后 相应地篡改MAC,而如果仅篡改消息,则接收方 计算的新MAC将与收到的MAC不同。 ② 接收方相信发送方不是冒充的,这是因为除收 发双方外再无其他人知道密钥,因此其他人不可能 对自己发送的消息计算出正确的MAC。
第1轮 已知M1、MAC1,其中MAC1=CK(M1)。对 所有2k个可能的密钥计算MACi=CKi(M1),得2k-n个 可能的密钥。 第2轮 已知M2、MAC2,其中MAC2=CK(M2)。对 上一轮得到的2k-n个可能的密钥计算MACi=CKi(M2), 得2k-2×n个可能的密钥。
如此下去,如果k=αn,则上述攻击方式平均需要α 轮。例如,密钥长为80比特,MAC长为32比特, 则第1轮将产生大约248个可能密钥,第2轮将产生 216个可能的密钥,第3轮即可找出正确的密钥。
⑤ 已知x,找出y(y≠x)使得H(y)=H(x)在计算上是不 可行的。称满足这一性质的杂凑函数为弱单向杂凑 函数。 ⑥ 找出任意两个不同的输入x、y,使得H(y)=H(x) 在计算上是不可行的。称满足这一性质的杂凑函数 为强单向杂凑函数。
第⑤和第⑥个条件给出了杂凑函数无碰撞性的概念, 如果杂凑函数对不同的输入可产生相同的输出,则 称该函数具有碰撞性。
杂凑函数的目的是为需认证的数据产生一个“指 纹”。为了能够实现对数据的认证,杂凑函数应满 足以下条件: ① 函数的输入可以是任意长。 ② 函数的输出是固定长。 ③ 已知x,求H(x)较为容易,可用硬件或软件实现。 ④ 已知h,求使得H(x)=h的x在计算上是不可行的, 即满足单向性,称H(x)为单向杂凑函数。
C K ( M ) EK ( M )
( M ) X 1 X 2 X m
其中表示异或运算,加密算法是电码本模式的 DES。因此,密钥长为56比特,MAC长为64比特, 如果敌手得到M‖CK(M),那么敌手使用穷搜索攻 击寻找K将需做256次加密。然而敌手还可用以下方 式攻击系统: 将X1到Xm-1分别用自己选取的Y1到 Ym-1替换,求出Ym=Y1Y2…Ym-1Δ(M),并 用Ym替换Xm。因此敌手可成功伪造一新消息 M′=Y1…Ym,且M′的MAC与原消息M的MAC 相同。
6.1.1 消息认证码的定义及使用方式
消息认证码是指消息被一密钥控制的公开函数 作用后产生的、用作认证符的、固定长度的数值, 也称为密码校验和。此时需要通信双方A和B共享 一密钥K。设A欲发送给B的消息是M,A首先计算 MAC=CK(M),其中CK(· )是密钥控制的公开函数, 然后向B发送M‖MAC,B收到后做与A相同的计 算,求得一新MAC,并与收到的MAC做比较,如 图6.1(a)所示。
考虑到MAC所存在的以上攻击类型,可知它应 满足以下要求,其中假定敌手知道函数C,但不知 道密钥K: ① 如果敌手得到M和CK(M),则构造一满足 CK(M′)=CK(M)的新消息M′在计算上是不可行的。 ② CK(M)在以下意义下是均匀分布的: 随机选取两 个消息M、M′,Pr[CK(M)=CK(M′)]=2-n,其中n为 MAC的长。 ③ 若M′是M的某个变换,即M′=f(M),例如f为插入 一个或多个比特,那么Pr[CK(M)=CK(M′)]= 2-n。
⑥ 这种方式是在⑤中消息与杂凑值链接以后再增 加单钥加密运算,从而又可提供保密性,见图 6.3(f)。
图6-3 杂凑函数的基本使用方式
由于加密运算的速度较慢,代价较高,而且很多加 密算法还受到专利保护,因此在不要求保密性的情 况下,方式②和③将比其他方式更具优势。
6.2.2 杂凑函数应满足的条件
图6-3 杂凑函数的基本使用方式
③ 用公钥加密算法和发送方的秘密钥仅加密杂凑 码。和②一样,这种方式提供认证性,又由于只有 发送方能产生加密的杂凑码,因此这种方式还对发 送方发送的消息提供了数字签字,事实上这种方式 就是数字签字,见图6.3(c)。 ④ 消息的杂凑值用公钥加密算法和发送方的秘密 钥加密后与消息链接,再对链接后的结果用单钥加 密算法加密,这种方式提供了保密性和数字签字, 见图6.3(d)。
图6.1 MAC的基本使用方式
6.1.2 产生MAC的函数应满足的要求
使用加密算法(单钥算法或公钥算法)加密消息时, 其安全性一般取决于密钥的长度。如果加密算法没 有弱点,则敌手只能使用穷搜索攻击以测试所有可 能的密钥。如果密钥长为k比特,则穷搜索攻击平 均将进行2k-1个测试。特别地,对惟密文攻击来说, 敌手如果知道密文C,则将对所有可能的密钥值Ki 执行解密运算Pi=DKi(C),直到得到有意义的明文。
图6.2 数据认证算法
O1 EK ( D1 ) O2 EK ( D2 O1 ) O3 EK ( D3 O2 ) ON EK ( DN ON 1 )
其中E为DES加密算法,K为密钥。 数据认证码或者取为ON或者取为ON的最左M个比 特,其中16≤M≤64。
6.2 杂凑函数
6.2.1 杂凑函数的定义及使用方式
杂凑函数H是一公开函数,用于将任意长的消息M 映射为较短的、固定长度的一个值H(M)。作为认证 符,称函数值H(M)为杂凑值、杂凑码或消息摘要。
杂凑码是消息中所有比特的函数,因此提供了一种 错误检测能力,即改变消息中任何一个比特或几个 比特都会使杂凑码发生改变。
杂凑函数用来提供消息认证的基本使用方式, 共有以下6种(图6.3): ① 消息与杂凑码链接后用单钥加密算法加密。由 于所用密钥仅为收发双方A、B共享,因此可保证 消息的确来自A并且未被篡改。同时还由于消息和 杂凑码都被加密,这种方式还提供了保密性,见图 6.3(a)。 ② 用单钥加密算法仅对杂凑码加密。这种方式用 于不要求保密性的情况下,可减少处理负担。注意 这种方式和图6.1(a)的MAC结果完全一样,即将 EK[H(M)]看作一个函数,函数的输入为消息M和 密钥K,输出为固定长度,见图6.3(b)。
但由于敌手不知道用于加密杂凑值的密钥,他就不 可能既伪造一个消息M,又伪造这个消息的杂凑值 加密后的密文EK[H(M)]。然而,如果第5个条件不 成立,敌手在截获明文消息及其加密的杂凑值后, 就可按以下方式伪造消息:首先求出截获的消息的 杂凑值,然后产生一个具有相同杂凑值的伪造消息, 最后再将伪造的消息和截获的加密的杂凑值发往通 信的接收方。 第6个条件用于抵抗生日攻击。
图6-3 杂凑函数的基本使用方式
⑤ 使用这种方式时要求通信双方共享一个秘密值S, A计算消息M和秘密值S链接在一起的杂凑值,并 将此杂凑值附加到M后发往B。因B也有S,所以可 重新计算杂凑值以对消息进行认证。由于秘密值S 本身未被发送,敌手无法对截获的消息加以篡改, 也无法产生假消息。这种方式仅提供认证,见图 6.3(e)。
第6章 消息认证和杂凑算法
• • • • • 消息认证码 杂凑函数 MD5杂凑算法 安全杂凑算法 HMAC算法
• 信息安全所面临的基本攻击包括被动攻击(获取消 息的内容、业务流分析)和主动攻击(假冒、重放、 消息的篡改、业务拒绝)。 • 通过加密可以抗击被动攻击;消息认证则是用来抗 击主动攻击。 • 消息认证验证接收消息的真实性(的确是由它所声 称的实体发来的)和完整性(未被篡改、插入、删 除),同时还用于验证消息的顺序性和时间性(未 重排、重放、延迟)。 • 还需考虑业务的不可否认性,即防止通信双方中的 某一方对所传输消息的否认。实现消息的不可否认 性可通过数字签字,数字签字也是一种认证技术, 它也可用于抗击主动攻击。
假定k>n,且敌手已得到M1和MAC1,其中 MAC1=CK1(M1),敌手对所有可能的密钥值Ki求 MACi=CKi(M1),直到找到某个Ki使得 MACi=MAC1。由于不同的密钥个数为2k,因此将 产生2k个MAC,但其中仅有2n个不同,由于2k>2n, 所以有很多密钥(平均有2k/2n=2k-n个)都可产生出 正确的MAC1,而敌手无法知道进行通信的两个用 户用的是哪一个密钥,还必须按以下方式重复上述 攻击:
如果密钥长度小于MAC的长度,则第1轮就有可能 找出正确的密钥,也有可能找出多个可能的密钥, 如果是后者,则仍需执行第2轮搜索。
所以对消息认证码的穷搜索攻击比对使用相同长度 密钥的加密算法的穷搜索攻击的代价还要大。 然而有些攻击法却不需要寻找产生MAC所使用的密 钥。例如,设M=(X1‖X2‖…‖Xm)是由64比特长 的分组Xi(i=1,…,m)链接得到的,其消息认证码由以 下方式得到:
第1个要求是针对上例中的攻击类型的,此要求是 说敌手不需要找出密钥K而伪造一个与截获的 MAC相匹配的新消息在计算上是不可行的。 第2个要求是说敌手如果截获一个MAC,则伪造一 个相匹配的消息的概率为最小。 最后一个要求是说函数C不应在消息的某个部分或 某些比特弱于其他部分或其他比特,否则敌手获得 M和MAC后就有可能修改M中弱的部分,从而伪 造出一个与原MAC相匹配的新消息。
6.2.3 生日攻击
1. 相关问题
已知一杂凑函数H有n个可能的输出,H(x)是一 个特定的输出,如果对H随机取k个输入,则至少 有一个输入y使得H(y)=H(x)的概率为0.5时,k有多 大? 以后为叙述方便,称对杂凑函数H寻找上述y的 攻击为第Ⅰ类生日攻击。
以上6个条件中,前3个是杂凑函数能用于消息认证 的基本要求。 第4个条件(即单向性)则对使用秘密值的认证技 术(图6.3(e))极为重要。假如杂凑函数不具有单向性, 则攻击者截获M和C=H(S‖M)后,求C的逆S‖M, 就可求出秘密值S。 第5个条件使得敌手无法在已知某个消息时,找到 与该消息具有相同杂凑值的另一消息。这一性质用 于杂凑值被加密情况时(图6.3(b)和图6.3(c))防止敌 手的伪造,由于在这种情况下,敌手可读取传送的 明文消息M,因此能产生该消息的杂凑值H(M)。
• 消息认证机制和数字签字机制都需有产生认证符的 基本功能,这一基本功能又作为认证协议的一个组 成部分。 • 认证符是用于认证消息的数值,它的产生方法又分 为消息认证码MAC(message authentication code) 和杂凑函数(hash function)两大类。
6.1 消息认证码
6.1.3 数据认证算法
数据认证算法是最为广泛使用的消息认证码中的一 个,已作为FIPS Publication(FIPS PUB 113)并 被ANSI作为X9.17标准。 算法基于CBC模式的DES算法,其初始向量取为零 向量。需被认证的数据(消息、记录、文件或程序) 被分为64比特长的分组D1,D2,…,DN,其中最 后一个分组不够64比特的话,可在其右边填充一些 0,然后按以下过程计算数据认证码(见图6.2):
对MAC来说,由于产生MAC的函数一般都为多到 一映射,如果产生n比特长的MAC,则函数的取值 范围即为2n个可能的MAC,函数输入的可能的消 息个数N>>2n,而且如果函数所用的密钥为k比特, 则可能的密钥个数为2k。 如果系统不考虑保密性,即敌手能获取明文消息和 相应的MAC,那么在这种情况下要考虑敌手使用 穷搜索攻击来获取产生MAC的函数所使用的密钥。
MAC函数与加密算法类似,不同之处为MAC 函数不必可逆的,因此与加密算法相比更不易被 攻破。 上述过程中,由于消息本身在发送过程中是明 文形式,所以这一过程只提供认证性而未提供保密 性。为提供保密性可在MAC函数以后(如图6.1(b)) 或以前(如图6.1(c))进行一次加密,而且加密密钥也 需被收发双方共享。在图6.1(b)中,M与MAC链接 后再被整体加密,在图6.1(c)中,M先被加密再与 MAC链接后发送。通常希望直接对明文进行认证, 因此图6.1(b)所示的使用方式更为常用。