安全设计
本文结合电子护照的多种安全机制,分析其优缺点,给出了系统安全测试验证解决方案,为电子护照产品的测试验收、逐代推出和升级改造提供参考依据。
电子护照安全机制 在ICAO制订的标准DOC9303中,定义了两类安全机制,即数据认证机制和访问控制机制。数据认证机制包括被动认证(Passive Authentication,PA)和主动认证(Active Authentication,AA);访问控制机制包括基本访问控制(Basic Access Control,BAC)和扩展访问控制(Extended Access Control,EAC),最近又基于PACE(Password Authenticated Connection Establishment)协议,作为BAC的补充制定了SAC(Supplemental Access Control)规范。在ICAO标准中,对PA/AA/BAC/SAC有明确定义并制定了详细的测试标准,在欧洲BSI标准中则制订了EAC相关标准,分别为EAC v1.11和EAC v2.0,另外制定了针对v1.11的测试标准EAC v1.12,EAC作为可选安全选项在荷兰、比利时、芬兰等国已使用,美英日尚未使用,默认接受克隆欺诈。
基于以上安全机制,可将电子护照划分为四代,第一代为明文,仅支持PA;第二代支持BAC/AA;第三代支持SAC;第四代支持EAC。其中第一代实现了电子化,但安全准确性由检查系统(IS)来保证,明文通信易被偷听和克隆;第二代加入了BAC或AA,BAC基于DES和Hash实现线路保护,AA则实现芯片真伪验证,能防偷听克隆;第三代引入SAC增强了BAC线路保护低熵特性,基于DH/ECDH算法建立了更强的线路保护;第四代为EAC,实现芯片身份真伪验证并基于非对称算法对检查系统身份真伪进行验证。目前实际发行国家多采用第二代BAC,而第四代EAC多在欧洲国家使用,第三代SAC刚出现不久,预计将会逐步取代第二代BAC。 电子护照安全机制的局限性 在安全防伪技术中,有三个要求:身份认证、数据保密性、数据完整性(见表1)。
BAC通过挑战应答协议实现,即以MRZ的哈希值为种子进行密钥分散得到基本访问密钥对(KENC,KMAC), 然后通过GetChallenge和Mutual Authentication两条指令实现挑战应答协议,建立会话密钥并结合包含随机数的消息序列计数器进行基于对称密钥算法的线路保护。BAC的缺点是通过MRZ中的证件号、出生日期和有效期来生成共享密钥,具有有限的随机性且基于对称密钥算法,改进方法包括:MRZ要OCR读二维条形码而非目视;增加私钥计算长度。
SAC基于PACE协议技术并通过引入非对称算法建立跟密码无关的更强的会话密钥。当卡片既支持PACE又支持BAC时,必须使用PACE,通关检查系统必须具有PACE功能。PACE协议中使用了DH或ECDH算法,这种算法也在EAC的CA(Chip Authentication)中使用,可以认为SAC正是ICAO将CA通过PACE协议形式引入的,这种技术仍是基于芯片运算的(需支持AES),故该功能在电子护照推广中对芯片运算功能有要求。SAC的特点是采用密钥交换算法,其有效性依赖于计算离散对数的难度,需要防重演攻击和中间人攻击,SAC采取的措施是通过随机数来协商一个临时全局参数用来防重演攻击,认证令牌用来防中间人攻击。 EAC的特点是加入了证书期限并进行了管理,包括芯片认证(CA)和终端认证(TA)两个步骤,其中CA是类似AA的技术,用于验证电子护照中芯片的真实性,支持算法有:DH算法和ECDH算法,需要读取DG14中公钥信息通过密钥交换算法产生新的加密通道用的密钥对(KENC,KMAC);
TA则用于认证外部终端并检查权限是否可访问敏感数据,在认证外部终端时通过CVCA->DV->IS的证书链形式来认证(其中CVCA=国家检查CA->发布DV证书, DV=证件检查机构->发布IS证书,IS=自动化边防检查系统->读取护照芯片资料并做通关),认证过程中可能会更新芯片中某些信息如最新日期、EF.CVCA中的信任点甚至切换使用算法类型等,支持的算法有:RSA、RSA-PSS和ECDSA等。TA需要外部证书PKI系统甚至ICAO PKD的支持,该功能用于认证通关检查系统或读卡设备的合法性,实现了完整的双向信任评价机制。 电子护照安全机制测试 目前电子护照认证测试仍依赖于国外第三方机构,且随着CPU技术发展,破解密钥所需时间越来越短而护照有效期长达5或10年,安全机制及测试仍需进一步研究和升级。此外,各国部署后支持的特征不太一样,有的仅支持第一代PA,有的则支持到第二代BAC甚至第四代EAC,这种差异性也造成了安全漏洞。 本文给出的测试系统由RFID电子护照识读系统、测试平台软件、测试套件组成,具体见图4。其中测试套件分为安全抗攻击测试、一致性测试、兼容性测试。
安全抗攻击测试包括:RFID技术导致的近场隐蔽扫描;RFID技术导致的隐蔽跟踪;14443协议层面的抗攻击测试;防克隆防略读测试;防窃听测试;持有人生物特征数据泄漏导致的安全漏洞;安全算法本身脆弱性测试。 该部分测试在一致性测试套件中并不涉及,与芯片攻击测试不同,该部分是基于安全机制和经验分享后的安全漏洞,是针对应用而言的,而芯片攻击测试是基于硬件的,采用如SPA/DPA、SEMA/DEMA、DFA、时间分析攻击/差分耗时攻击等技术。 一致性测试即协议符合度测试,不同安全机制采用不同的安全测试标准。BAC一致性测试在ICAO测试规范中有详细定义,主要包括:(1)Select和Read Binary两条最小命令集指令(2)BAC保护模式和BAC未保护模式下使用这两条指令分别读16个LDS文件测试。在建立BAC会话密钥中使用的另外两条基本指令是Get Challenge和External Authentication。SAC尚未定义测试规范,可参照EAC中CA测试部分,下面重点介绍EAC测试。 如图5所示,实现EAC由几个部分组成:PKD、国家电子护照签发机构、国家电子护照验证机构、支持EAC功能的电子护照。EAC测试分为EAC一致性测试、EAC护照和IS兼容性测试、PKD互用性测试。EAC本身不能阻止精确拷贝和芯片替换,有非对称算法运算功能的芯片提供认证运算,而之外的所有设施均只为提供证书管理和使用,最高层证书是由国家签发验证机构签发的自签名证书且在接收国为信任起点或证书链最高端。
在PKD架构下实现的EAC一致性测试架构见图5,实现了发证领证->国内海关(出关)->国外海关(入关)->国外海关(出关)->国内海关(入关)等操作的测试。国家B发行电子护照,该护照在本国的海关出关通过相应的IS检查系统包含的证书链(CVCA(国家B)->国内DV->IS)验证EAC,完成人脸指纹或虹膜的安全检查,到国家A,则基于国家A的IS检查系统的证书链(CVCA(国家B)->国外DV->IS)验证EAC,完成人脸指纹或虹膜的安全检查,返回国内则类似操作。ICAO PKD起到存储共享作用。 BSI给出的EAC一致性测试结合EAC子过程CA/TA、证书链、访问权限、日期信任点更新等测试点对安全机制进行符合度测试,依据是测试标准EAC v1.12,主要包括了如下几个部分(表2)。
测试系统从不同角度给出了安全机制的测试,兼容性测试关注的是卡机兼容问题,安全抗攻击测试关注的是安全漏洞,而一致性测试则致力于协议符合度。测试系统需要随着技术的不断更新而不断改进,一个持续改进的系统对产品的稳定性、安全性有积极意义。 本文小结 电子护照作为二代身 份证后的另一个重量级身份识别产品,必然要经历不同阶段的演化,尤其是安全机制,基于第二代BAC已是成熟技术,新引进的SAC作为第三代在实现上也已比较成熟,假以时日必能得到推广,而欧洲标准EAC作为第四代和一种更为复杂的安全机制,必将引起重视并影响电子护照的发展和升级换代。
全部0条评论
快来发表一下你的评论吧 !