■ 文/公安部第一研究所 沈孝东
北京市微技术研究所 葛利军
关键字:PACE 国密算法
随着科学技术的进步和人们对安全需求的不断增加,特别是“9·11”事件之后,全球出于国家安全和反恐需求,进一步提高旅行证件的安全性,国际民用航空组织(ICAO)提出电子机读旅行证件(eMRTD)。我国顺应ICAO的要求,从2004年开始了旅行证件的电子化工作。eMRTD的安全主要包括物理层安全、通信层安全和协议层安全三个层面。物理层安全主要指芯片本身的安全性,即不能通过芯片的物理特性获取相关信息。通信层安全是指保护芯片与机具交换信息的安全,防止信息的破解和干扰。协议层安全是指通过相应的安全协议保证芯片内信息的完整性、真实性和机密性。
为了在eMRTD和查验系统(PCD)之间建立一个安全的通信信道,目前主要采用基本访问控制(BAC)来认证eMRTD和PCD的合法性,并且建立会话密钥,用于两者之间通信的加密,从而保证交互信息的机密性。由于BAC协议会话密钥由随机性非常有限的打印数据生成,为了解决BAC协议会话密钥熵偏低的问题,2015年ICAO发布了第七版Doc 9303号文件,提出了PACE协议,与BAC协议相似,但采取非对称密码来建立会话密钥,其强度与所使用的口令的熵无关,所以可以为eMRTD和PCD之间的通信建立了安全环境。
PACE协议主要包括派生密钥、执行密钥协商和相互认证。派生密钥主要功能是根据口令派生出加解密所需要的密钥,即PACE使用的KDFπ口令派生出来的,对于有全球互操作性的eMRTD,可以下列两种口令:机读区(MRZ)和卡访问号(CAN)。MRZ由证件号码、出生日期和截止日期串联构成,并包括各自的校验位。CAN是印在数据页正面的数字,必须随机或者伪随机选择。口令的16个字节SHA-1散列值用作密钥种子,通过密钥派生函数生成证件加解密所需密钥。
PACE协议密钥协商是整个协议重要的一部分,通常包括通用映射、合成映射和芯片认证映射,每种映射又包含基于ECDH密钥交换协议和基于DH密钥交换协议两种。对于ECDH密钥交换协议,选择<G>中的H,使得logGH未知。H点应由匿名Diffie-Hellman密钥协商进行计算,对于DH协议,函数被定义为选择<g>中的h,使得未知。群元素h应按照由匿名Diffie-Hellman密钥协商进行计算。
设PCD为发起方,eMRTD的芯片(IC)为响应方。PACE协议过程如下:
(1)PCD获取eMRTD的MRZ,由密钥派生函数KDFπ派生出加解密密钥Kπ;
在生成会话密钥时,因为KDF仅使用第一个坐标派生会话密钥,所以仅需要共享秘密K的x坐标,认证算法MAC使用AES的CMAC模式。
图1 PACE协议流程图
从整个协议角度来看, PACE协议相对于BAC协议更为安全,但是PACE协议加解密密钥由随机性非常有限的打印字符的派生出来。由于PACE协议中随机数s主要用于放大会话密钥熵和防止重放攻击,一旦攻击者获得密钥,便获得了随机数s,就显然地降低了会话密钥熵,使整个协议安全性受到威胁。2017年,Marc Stevens等人在文献 [2]中创造出第一个碰撞实例,这是长期以来在理论研究上证明SHA-1算法存在风险之后,在具有实际意义的攻击实例SHA-1碰撞试验也取得了成功,在碰撞攻击的影响下攻击者能够构造出PACE协议的派生密钥,SHA-1的碰撞试验对基于这个算法的密钥产生机制变得不再安全。
为此,本文提出了基于国产密码算法的改进的PACE协议,国产密码是指国家密码局认定的国产商用密码算法,简称国密,目前主要使用公开的SM2、SM3和SM4三类算法,分别对应非对称密码算法、哈希算法和对称密码算法。SM2算法全称为椭圆曲线算法,该算法用三次方程来表示的,并且与计算椭圆周长的方程相似,所以称为椭圆曲线算法。SM3密码摘要算法是中国商用密码杂凑算法标准,算法采用Merkle-Damgard结构,消息分组长度为512位,摘要值长度为256位,适用于商用密码应用中的数字签名和验证。SM4为分组密码算法,分组长度为128比特,密钥长度为128比特,密文为128比特。在改进的协议中PCD和IC之间交换的随机数不参与密钥协商过程,有效保护了会话密钥的熵,提高了攻击难度增强了协议的安全性。
设PCD和IC协商获得密钥数据的长度为klen比特,PCD为发起方,IC为响应方。
PCD和IC为了获得相同的密钥,应实现如下运算步骤:
PCD:
IC:
图2 改进的PACE协议流程图
BAC协议所用的会话密钥由随机性非常有限的打印数据生成,即生成密钥的数据包括证件号、出生日期和截止日期,因此所得的密钥熵偏低,安全强度较低。PACE协议采用椭圆曲线算法,其安全性依赖于椭圆曲线上离散对数问题困难性,PACE协议通过引入随机数s协商一个临时参数来提高会话密钥熵和防止重放攻击,认证令牌用来防中间人攻击。PACE协议解决了BAC协议中会话密钥熵低的问题,但由于PACE协议的加解密密钥是由有限打印字符的口令的SHA-1值派生出来的,加密密钥也面临密钥熵偏低的问题,随着对SHA-1算法研究发展,由SHA-1值派生出来的加密密钥的安全机制受到威胁,进而用于协商密钥的随机数s也容易被攻击,PACE协议的安全性受到威胁。
在改进的PACE协议中,加密密钥是由SM3算法派生出来的,目前没有对SM3算法有效的攻击,并且密钥协商过程中PCD和IC产生的随机数不参与密钥协商过程,第三方无法获得用于密钥协商的随机数,这既保护了会话密钥熵,又无法进行重放攻击,所以改进的PACE协议是安全的。
本文介绍了PACE协议,并深入研究了PACE协议存在的一些安全问题,针对这些问题提出了改进的PACE协议方案。随着技术的进步,目前的安全机制也逐渐暴露不足。本文提出改进的PACE协议方案,在兼容最新国际通用技术标准的基础上支持了国密算法,在算法层面保证了协议的安全,丰富了安全算法体系内容,为提升eMRTD安全自主可控水平打下了基础,对提高eMRTD的安全性有重要意义,对于其他证件安全机制的研究也有很好的借鉴意义。