智能卡数据交互安全性的研究
1 引言
目前身份认证技术中,智能卡应用非常广泛。智能卡身份认证经历了单纯的智能卡认证,基于密码的智能卡认证,以及目前研究非常热门的基于生物识别技术的智能卡认证三个阶段。为了提高认证的可靠性,智能卡中存储的数据也日渐增多。例如, 智能卡惟一的身份认证密钥对,持卡人的个人信息,持卡人的P1N码,持卡人的掌纹,指纹等生物信息。然而数据在智能卡与读卡器交互过程中存在的安全问题,严重侵犯了个人隐私和影响了身份认证的可靠性。
智能卡数据存在的安全问题主要来自于以下五个方面:篡改智能卡中数据或者伪造智能卡,使得数据存储在不安全的卡上;改造读卡器;窃听读卡器与智能卡的通信信道,截获、更改或者重放报文信息;非法分子利用合法读卡器在持卡人未知的情况下,试图读取智能卡中的基本数据;读卡器越权访问智能卡中的敏感信息,例如指纹等生物信息。
目前国内厂商和国际规范中关于数据保护主要集中于前三个问题的研究 ’ ,技术相对比较成熟,而关于读卡器不同程度的非法访问智能卡数据的两个问题没有提出比较好的解决方式,同时对于传输过程中信息的加密也比较薄弱,因此迫切需要解决数据交互中存在的安全问题。本文就是从智能卡与读卡器之问数据交互的安全性出发,在现有的安全技术基础上,提出比较完善的安全设计方案,解决目前数据交互过程中存在的安全问题。第二部分介绍提出的安全方案的总体框架,第三到第五部分是针对I前安全体系遗留问题,提出具体的解决方案,第六部分是对整个方案进行安全性分析。
2 智能卡与读卡器数据交互安全方案
在我们的安全方案中,根据智能卡中数据安全性要求的高低,将智能卡中的数据分为高敏感性数据和低敏感性数据。例如,掌纹、指纹等隐私性较强的信息称为高敏感数据;智能卡表面印制的条形码(MRZ),内部存储的一些卡片基本信息等相对个人隐私性较弱的信息称为低敏感数据。对于不同敏感程度的信息,建立不同的安全保护机制,具体安全方案如图l所示。其中,智能卡数据完整性认证,智能卡真伪认证,读卡器真伪认证可以采用目前比较成熟的安全技术 ’,因此,本文重点对读卡器物理访问权限认证、安全报文传输以及读卡器访问高敏感数据权限的认证进行讨论。
图1智能卡与读卡器之间数据交互安全方案
3 读卡器物理访问权限的认证
为了防止非法分子利用读卡器访问智能卡中基本数据,侵犯持卡人的个人隐私,保证读卡器的访问是在持卡人有意愿的情况下进行,需要在读卡器与智能卡建立通信的开始阶段验证读卡器的物理访问权限。智能卡表面的条形码只有在持卡人出示时才可以被读取,因此,我们通过验证读卡器是否读到正确的条形码来判断读卡器的物理访问权限。它的实现过程分为三步:
第一步:在智能卡初始化阶段,利用条形码的定长信息,采用密钥产生机制生成16字节的加密密钥Kenc, 16字节MAC生成密钥Kmac,然后存储在智能卡中。密钥产生机制的过程包括:
(1)以定长数据为根,通过SHA1产生20字节的摘要值;
(2)摘要值中的前16字节为加密密钥,生成MAC的密钥。
与读卡器之间基于对称密钥的认证方式,对密钥进行认证。具体步骤如下:
(1)读卡器发送取随机数的命令,获取智能卡产生的8字节的随机数A;
(2)读卡器产生8字节的随机数B, 并产生16字节的随机数random—read,用加密密钥Kencl对A,B和random—read进行加密得密文C;对密文C用Kmac生成校验码macl,将密文C和校验码macl发送给智能卡;
(3)智能卡收到信息后,获取其中的密文C和校验码macl,利用卡内存储的密钥Kmac生成mac2,将mac2与macl进行比对,比对成功则解密,得到明文,认证随机数A 的正确性,完成对读卡器的认证;
(4)智能卡从明文中获取随机数B, 产生16字节的随机数random—card,并利用加密密钥Kenc对A,B和random—card,进行加密,获取密文C1,用Kmac对密文生成校验码mac’;将密文和校验码发送给读卡器;
(5)读卡器收到信息后,利用密钥Kmacl先生成mac’2;与获取的MAC值进行比对,一致则解密信息,对获取的随机数B进行对比,也可实现对智能卡的认证。
4 安全报文传输
为了保证传输的信息在信道中不被第三方窃听或者篡改,防止信息的重放,需要进行安全报文传输。通常的信息传输方式有明文方式,校验码方式,密文方式,密文+校验码方式,本方案采用密文+校验码方式,保证信息传输的完整性与保密性。其中会话密钥的产生过程如下:
(1)利用读卡器物理访问权限认证中,读卡器产生的随机数(rand_reader)和智能卡产生的随机数(rand_card)异或值为根。
(2)通过密钥生成机制产生密钥,加密密钥为前l6位,生成校验码的密钥为后16位字节。
校验码生成机制采用16字节密钥DES算法生成8字节校验码。传输数据的格式按照ISO/IEC 7816-4中定义的BER TLV编码规则。
5 读卡器访问高敏感数据权限的认证
为了防止对智能卡内敏感数据进行越权访问,保证数据的安全,必须设定读卡器对敏感数据的访问权限。它的设计包括三个部分:
(1)第一部分:证书的扩展
根据X.509中对证书的定义,可以在扩展区域添加它对敏感数据的访问权限,如图2所示。
根据PKI和PMI的原理,建议将设定访问权限的证书与设定公钥的证书进行分离,避免权限证书中权限的频繁更改,增加证书机构的负担。
(2)第二部分:证书的发放
证书由CA机构发放。该地区内用户共同信任的可信点CCA (C0untry CA) 为下面的子机构DCA(department CA)颁发身份认证证书,使得其他机构可以信任该组织颁发的证书,并在证书中设定访问权限项(access right,简写为ar),表明上级机构授予子机构的访问权限。子机构再为它管理的读卡器(T)发放证书,并设定访问权限(sub access right,简写为sar)。在证书发放和权限设置时,必须遵循一个原则:读卡器的访问权限不能超过为它颁发证书的机构的访问权限(sar<=ar,其中安全级别1>0),如图3所示。
图3证书中访问权限的设置
(3)第三部分:证书的认证
证书的认证按如下步骤进行:
1)读卡器将属性证书发给智能卡,智能卡先查看证书(TCER)中的证书发行机构(SCA),然后读取该发行机构的证书(SCER),利用为SCA颁发证书的CA公钥验证该证书的合法性,读取它的访问权限(SAR)。
2)然后验证读卡器的TCER的合法性, 从证书(TCER)中读取访问权限(TAR),当TAR<=SAR时,则证明该权限设置是合法的。
3)最后根据权限,决定是否为读卡器提供敏感数据的访问。
6 安全性分析
本文提出一种解决读卡器非法访问智能卡数据问题的安全方案,通过建立有效的安全机制保证智能卡数据的安全性。下面对文中设计的三个模块的安全性进行分析:
(1)认证读卡器物理访问权限:根据实际应用可以得到,读卡器表面的条形码MRZ只有在持卡人主动出示卡片才能被读卡器获取,如果非法分子利用读卡器在持卡人未知的情况下访问智能卡,则不能获取MRZ。根据对称密钥算法的原理,当加解密前后数据一致时,可以达到对读卡器物理权限的认证。
(2)安全报文传输机制:采用加密校验的模式可以防止对信息进行篡改和窃听。利用相互认证中产生的随机数生成会话密钥,不仅能够实现一次一密,更能保证密钥的安全,防止信息重放等危险。
(3)读卡器证书认证及访问权限的认证:根据公钥证书原理,对证书进行扩展,设置访问权限,并通过CA机构对证书进行管理、分发,可以保证证书和访问权限的合法性。通过认证证书,可以认证访问权限,保护读卡器对智能卡内高敏感数据的访问。
因此,通过该安全方案,我们可以在目前安全技术的基础上,解决智能卡与读卡器之间数据交互时存在的安全问题,保证数据交互的安全性。
(文/北京交通大学计算机与信息技术学院,岳佩,孙冬梅,张大伟 )