BAC协议与PACE协议的安全性分析与比较
2020-03-28陈珊李景华孙曦亢洋葛利军
陈珊 李景华 孙曦 亢洋 葛利军
1. 公安部第一研究所 2. 北京市微技术研究所
引言
随着互联网的普及和应用,人们在生产和生活中信息交换的容量和频次呈爆发式增长,信息安全问题也成为当今社会关注的热点。国际标准化组织(ISO)在网络安全标准(ISO7498-2)中定义了五个层次的安全服务:身份认证服务、访问控制服务、数据保密服务、数据完整性服务和不可否认服务。因此,访问控制是信息安全的一个重要组成部分。
带有非接触式芯片的电子证卡查验实际上就是芯片和查验终端之间的一系列交互操作。这个过程主要包括两个步骤,一个是芯片访问控制,另一个是电子数据认证。只有当芯片访问成功后,查验终端才能继续读取芯片中的电子数据,并对电子数据进行认证。在芯片访问控制阶段,查验终端需要对芯片的身份信息进行认证,确保接受对象真实有效,而芯片需要对查验终端进行身份认证和权限控制,确保来访者合法,确保敏感信息不会泄露。为了满足双方的安全需求,就需要在芯片访问阶段引入密码协议。该协议需要实现两个功能:一是认证功能,即芯片和查验终端完成身份认证;二是密钥协商功能,即芯片和查验终端需要协商出一个会话密钥,以完成后续的保密通信。
国际民用航空组织(International Civil Aviation Organization,ICAO)在其早期的芯片访问控制技术标准中推荐了BAC协议,该密码协议是根据机读码(Machine Readable Zone,MRZ)生成一个特殊的认证密钥,然后根据该密钥生成会话密钥。随着各国学者对BAC协议的深入研究,MRZ熵值低的问题逐渐暴露出来。于是,ICAO在Doc9303文件的第7版中推荐了PACE协议,并提倡用PACE协议全面取代BAC协议。本文主要对PACE协议进行详细介绍,并通过与BAC协议的比较分析,说明PACE协议取代BAC协议的必要性。
一、认证密钥协商协议
认证协议是一种通信协议,此类协议主要防止通信过程中对消息的篡改攻击以及假冒参与实体身份的攻击等。密钥协商协议是一种密码协议,该类协议用于通信参与方通过相互传递某些信息来协商出一个共享的会话密钥。认证密钥协商协议,综合了两者的功能,它首先实现通信各方的相互认证,之后协商只有参与者所知的会话密钥。
一个认证密钥协商协议需要具备以下基本安全属性:
(1)已知密钥安全:用户每次协商的会话密钥应具有唯一性,其他会话密钥的泄漏不会影响本次会话密钥的安全性。攻击者得到一个会话密钥,但无法计算之前或之后的会话密钥;(2)前向安全:密钥协商用户长期私钥的泄漏不会影响用户之前协商的会话密钥的安全性;(3)没有密钥泄露模仿:攻击者得到某个用户A的私钥后,可伪装成A与其他用户通信,但不能使攻击者通过用户A冒充为其他用户;(4)抗未知密钥共享:当用户A与用户B共同协商生成一个会话密钥,要求A不会错误地认为该会话密钥是和另外的用户共享的;(5)无密钥控制:协议参与者对生成的会话密钥做出同等的贡献,任何一方都不能将会话密钥设置成预先设定的值。
除了上述基本属性外,一个安全的认证密钥协商协议还应该具有密钥确认功能,即协议参与者A可以确认协议参与者B确实已经得到本次协商的会话密钥。
常见认证密钥协商协议主要有两类:基于口令的认证密钥协商协议和基于身份的认证密钥协商协议。在实际应用中,由于口令简单易记,工程实现也比较容易,所以基于口令的协议应用相当广泛。
然而在基于口令的认证密钥协商协议中,由于用户口令的低熵性,很容易遭到针对用户口令的字典攻击或猜测攻击。在字典攻击中,敌手利用口令集较小的特点,采用遍历的方式穷举字典集合中的所有口令,然后截获与口令相关的明密文对,逐个进行验证,直到猜测成功。因此,基于口令的认证密钥协商协议需要重点防范字典攻击。
二、基于对称算法的认证密钥协商协议
BAC协议是一种基于口令的认证密钥协商协议,交互过程采用的是对称密码算法。芯片和查验终端以机读码( Ma chine Re adable Zone,MRZ)信息作为共有的口令生成一个密钥种子Kseed, 再根据Kseed生成基本访问密钥对(KEnc,KMAC)。双方再用基本访问密钥对交换随机数和密钥元件,用随机数来确认对方身份,用密钥元件来生成一个新的Kseed。 最后芯片和查验终端根据新的Kseed计算出会话密钥(KSEnc,KSMAC),其中前者为加密密钥,后者为消息认证码密钥。
(一)BAC协议
假设查验终端IFD已经获得MRZ并生成了基本访问密钥对(KEnc,KMAC),则芯片IC和查验终端IFD之间执行BAC协议,具体步骤如下:
1. IFD向IC发出GET CHALLENGE指令,IC收到指令后生成随机数RND.IC,并将RND.IC作为响应发送给IFD;
2. IFD做如下操作:
(1)生成一个随机数RND.IFD和密钥元件K.IFD;
(2)生成连接值x xxxxxxxxxxxxxxxxxxxxxxxxxx;
(3 )计算密文EIFD=E(EEnc,S);
(4 )计算消息认证码MIFD=MAC(KMAC,EIFD);
( 5)向IC发出EXTERNAL AUTHENTICATE指令,并发送数据x xxxxxxxx。
3. IC做如下操作:
(1 )检验密文EIFD的 消息认证码MIFD;
(2 )解密密文EIFD;
(3 )从连接值S中提取RND.IC并检验是否正确;
(4)生成密钥元件K.IC;
(5)生成连接值x xxxxxxxxxxxxxxxxxxxxxxxxx;
( 6)计算密文EIC=E(Kenc,R);
( 7)计算消息认证码MIC=MAC(KMAC,EIC);
( 8)发送响应数据EIC=MIC。
4. IFD做如下操作:
( 1)检验密文EIC的 消息认证码MIC;
( 2)解密密文EIC;
(3)从连接值R中提取RND.IFD并检验是否正确。
5.I FD和IC均以K.IC XOR K.IFD作为密钥种子导出会话密钥(KSEnc,KSMAC)。
(二)BAC协议的安全性
BAC协议是根据MRZ信息生成共享的基本访问密钥对(KEnc,KMAC),然后以该密钥对作为对称密钥,采用对称密码算法传递各自的随机数和密钥元件,其中随机数作为确认对方身份的信息,而密钥元件用来协商会话密钥。当IC用基本访问密钥对解密提取RND.IC并核对正确后,就说明IFD知道基本访问密钥对,从而说明IFD获得了MRZ信息,是合法的访问者。同时,二者通过交换密钥元件也可以协商出会话密钥,所以BAC协议可以完成电子证照查验中芯片访问阶段的功能目标。然而,此协议也存在着一些问题。由于身份认证和会话密钥的所有关键信息全部由基本访问密钥对保护,而该密钥对由MRZ独自生成,所以整个协议的安全性完全依赖于MRZ信息。假设敌手只能通过暴力破解和猜测的方式来获得持照人的MRZ信息,由于随机数RND.IC在协议中以明文出现过,那么敌手就可以截获随机数RND.IC的明密文对,不断利用猜测MRZ信息生成的密钥对来尝试,验证猜测的正确性。由于协议中会话密钥对MRZ信息的高依赖性及MRZ信息的低熵性,使得BAC协议存在着很大的安全风险。
另外,BAC协议不具有密钥认证性。在双方建立会话密钥之后,协议并没有进行密钥认证,芯片和查验终端都无法保证对方与自己持有相同的会话密钥。
三、基于非对称算法的认证密钥协商协议
PACE协议是为了解决BAC协议熵值低的问题而提出的另外一种基于口令的认证密钥协商协议,采用的是非对称密码算法。PACE协议是基于口令的Diffie-Hellman密钥协商协议,它为芯片IC和查验终端IFD提供了基于口令的认证和安全会话密钥。
PACE协议的执行过程中可采用三种不同的映射:(1)通用映射(Generic Mapping,GM),基于Diffie-Hellman密钥协商的映射;(2)合成映射(Integrated Mapping,I M),基于将域元素嵌入到密码群的映射;(3)芯片认证映射(Chip Authentication Mapping,CAM),在通用映射基础上将芯片认证整合到协议中的映射。
对于上述映射的具体描述可以查看ICAO Doc9303第7版,此处不再赘述。
(一)PACE协议
在执行PACE时,查验系统首先从芯片中读取与PACE相关的参数并且选择一些有用的参数来执行PACE协议。在这个过程中会用到以下指令集:(1)READ BINARY(读取PACE 相关的参数);(2)MSE:SET AT(初始化PACE);(3)General Authenticate系列指令(相互认证并协商会话密钥)。
其中,General Authenticate系列指令包括以下步骤:(1)加密随机数S.IC均匀随机地选择随机数S,并进行加密得到Z=E(Kπ,S),将密文发送给查验系统;(2)恢复随机数S.IFD利用共享口令π 导 出密钥Kπ, 然后恢复出明文S=D(Kπ,Z);(3)认证并协商会话密钥,IC和IFD均完成以下步骤:
①交换数据。二者交换将随机数S映射至临时域参数D所需要的数据。若PACE协议采用通用映射,则二者需交换临时密钥公钥,即PKMap,Ic和PKMap,PCD;若PACE协议采用合成映射,则只需IFD选择随机数t并发送至IC;
②计算临时生成元,得到临时域参数D。二者分别计算临时域参数D=Map(DIC,S,…),其 中DIC是芯片的静态域参数,映射Map的具体形式与PACE协议采用的映射类型有关;
③ 交换临时公钥。二者随机生成临时密钥对(SKDH,IC,PKDH,IC) 和(SKDH,PCD,PKDH,PCD) , 交换临时公钥PKDH,IC和PKDH,PCD, 并分别验证PKDH,IC≠PKDH,PCD;
④计算共享秘密K。二者分别利用临时域参数D和临时公钥执行Diffie-Hellman密钥协商协议,计算出共享秘密K=KA(SKDH,IC,PKDH,PCD,D)=KA(SKDH,PCD,PKDH,IC,D);
⑤导出会话密钥KSMAC=KDFMAC(K),KSEnc=KDFEnc(K);
⑥相互认证。二者分别计算认证令牌TIC=MAC(KSMAC,PKDH,PCD)和TPCD=MAC(KSMAC,PKDH,IC),交换令牌,并对接收的令牌进行验证,令牌验证通过则双方认证成功。
(4)芯片认证。当PACE协议采用芯片认证映射时,此步骤是必需的。
①IC计算芯片认证数据CAIC= (SKIC)-1×SKM ap,ICmod p, 其中SKIC是 芯片的静态私钥,SKMap,IC是芯片的临时私钥,p是 密码群的阶。进一步,芯片将芯片认证数据CAIC加 密为AIC=E(KSEnc,CAIC)并发送至查验终端;
②查验终端解密AIC, 恢复出CAIC=D(KSEnc,AIC),并验证PKMap,IC=KA(CAIC,PKIC,DIC) , 其中PKIC是芯片的静态公钥。
上述PACE协议可以分成五个阶段。
阶段1:初始化。IFD读取芯片中用于存储PACE协议的相关文件,获取协议相关的算法及域参数等,然后与芯片确认信息,达成共识;
阶段2:秘密传递随机数。IC选择随机数S,用共享口令导出的密钥Kπ加密,然后发送给IFD。IFD收到密文后再利用密钥Kπ解密得到随机数。如果IFD没有在持证人的授权下得到共享口令,那么就得不到正确的随机数(正确性需要后续阶段进行确认),所以此阶段可以达到对访问权限进行控制的目的;
阶段3:生成临时生成元。利用随机数S导出一个临时的生成元,从而得到临时域参数D。该导出过程取决于协议所选择的映射方式,即前面提到的通用映射、合成映射和芯片认证映射;
阶段4:协商会话密钥。在临时域参数D的基础上使用Diffie-Hellman密钥协商协议协商出共享密钥K,然后利用K导出会话密钥对(KSEnc,KSMAC);
阶段5:密钥确认。IC和IFD分别利用会话密钥计算认证令牌,进行密钥确认。认证令牌中携带了随机数和会话密钥的信息,令牌认证通过,一方面说明IFD确实拥有共享口令,另一方面说明IC和IFD导出的会话密钥一致。
由于阶段3所采用的映射方式有三种,即通用映射、合成映射和芯片认证映射,而阶段4的Diffie-Hellman密钥协商算法有两种,即定义在有限域乘法群上的DH和定义在椭圆曲线群上的ECDH,所以通过二者组合后的PACE协议的具体形式很多。本文通过图1给出基于ECDH算法并采用通用映射GM的PACE协议流程。
公共域参数DIC= (p,a,b,G,r,f)中 ,p为 素数,Fp为定义椭圆曲线的素域,a,b为 椭圆曲线参数,G为素阶子群的生成元,r为生成元的阶,f为余因子。E为对称加密算法,D为对称解密算法,KDF为密钥导出函数。
(二)PACE协议的安全性
PACE协议作为一种典型的基于口令的认证密钥协商协议,由德国联邦信息安全局(BSI)提出,其设计融合了EKE协议和SPEKE协议的思想,除了具备认证密钥协商协议的基本安全属性之外,还能抵抗字典攻击。
与BAC协议类似,PACE协议也是以MRZ信息作为共享口令生成对称密钥。但是不同的是,此对称密钥仅用于阶段1传递随机数S,而且该随机数仅以密文形式出现,没有以明文传递过,所以敌手即使截获了相关信息,也得不到该随机数S的明密文对,因此无法验证自己猜测的口令是否正确。进一步的,在阶段2中,协议利用随机数S生成了一个临时生成元,将口令的熵值隐藏,且后续信息交流中只涉及到公钥的明文传递,不涉及到密文或其他敏感信息。因此,即便是口令信息泄露,在不考虑主动攻击的情况下,敌手也只能获得随机数S却无法得知Diffie-Hellman密钥协商算法中的私钥,从而无法得知阶段3中协商出的会话密钥。所以PACE协议的安全性并不完全依赖于口令的安全性,这也是PACE协议取代BAC协议的关键所在。
四、PACE协议的优势分析
从功能上来看,BAC协议和PACE协议是一样的,都是在芯片访问阶段利用电子证照文本上的MRZ信息达到了访问控制的目的,一方面对查验终端和芯片进行了双向的身份认证,确保查验终端是在获取MRZ信息后的合法浏览,另一方面也协商出了共享的会话密钥,为后续的信息交互建立了安全通道。
从安全性来看,BAC协议和PACE协议都具备认证密钥协商协议的基本安全属性,但是在抗字典攻击和密钥确认方面,后者明显优于前者,具体见表1。
(一)BAC协议采用的对称密码算法
该类算法决定了无论是双方确认身份的随机数还是协商会话的密钥元件,所有的敏感信息都需要采用密文形式传递。同时,协议中随机数又是明文传递的,这样敌手就可以截获明密文对,利用MRZ信息的低熵性进行反复的猜测验证,完成字典攻击。另外,BAC协议在协商出会话密钥之后并没有进行密钥确认,为后续通话埋下隐患。
?
(二)PACE协议采用的密码算法包括对称算法和非对称算法
其中对称算法仅用于传递随机数S而且该随机数仅以密文形式传递,后续交互中也只需要传递公钥等非敏感信息。整个协议中都不会出现明密文对,即使敌手利用MRZ信息的低熵性猜测了口令,也没有可以用来验证猜测是否正确的消息。
这种特点使得PACE协议能够抵抗字典攻击。另外,PACE协议在协商出会话密钥之后利用认证令牌进行了密钥确认。
综上,PACE协议实现了BAC协议的所有功能,同时可以利用低熵口令协商出高安全强度的会话密钥,解决了BAC协议MRZ的低熵性问题,是取代BAC协议的理想协议。
五、结语
本文对国际民航组织在芯片访问控制技术标准中推荐的BAC协议和PACE协议两种认证密钥协商协议,从原理和细节两方面分别做了详细的介绍,并对二者进行了分析与比较,结果表明PACE协议在安全性上明显优于BAC协议,是取代BAC协议的理想协议。本文为PACE协议在芯片访问控制中的工程实现和应用提供了理论依据和指导。