一种多应用智能卡数据的保护方法
2015-10-20杨小宝肖跃雷
杨小宝,谢 璇,肖跃雷
(西安邮电大学 物联网与两化融合研究院,陕西 西安 710061)
随着微型电子技术和软件技术的发展,智能卡的发展和应用在各个领域成倍增长,如2004年,波兰市民卡[1]被成功的应用生活之中;2011年7月,中国国家原卫生部发布了《居民健康卡技术规范》,推行多应用智能卡片的应用;2013年2月中国人民银行正式颁发《中国金融集成电路(IC)卡规范》(JR/T 0025—2010)第三版行业标准,(业内简称PBOC3.0),推动磁条卡向IC卡的应用等。不论是行业市场的发展,还是政府的政策制定,智能卡开始从单应用向一卡通或“一卡多用”方向发展。但是,在当今木马、病毒盛行和黑客的频繁攻击下,智能卡本身以及多应用智能卡的数据访问都存在一定的安全问题,如常见物理攻击[2]、旁路攻击[3]和逻辑攻击等。本文只讨论逻辑攻击,它是指通过分析智能卡通信过程中潜在的逻辑缺陷,如分析密码算法实现过程中存在的隐藏命令、坏的参数、缓冲区溢出,以及卡片明文数据交互等,实现对卡的非法访问;多应用智能卡本身亦存在伪读卡终端和行业合法读卡终端的共享模式下的非法访问。面对这些攻击和潜在的安全漏洞,如何实现卡内数据的安全访问成为问题的关键。针对这个问题,国内外的安全专家给出了一些解决方案,如Sandeep K.Sood等提出的智能卡安全和密钥管理方案[4],基于PKI的RSA的密钥管理改进的认证方法[5],Global Platform规范提供的多应用管理安全框架[6]等,但是这些方案要么是针对单一应用智能卡,要么是算法效率低不能满足当前多应用智能卡的特性。本文在分析多应用智能卡文件系统的基础上,基于椭圆曲线算法,提出了一种适合多应用智能卡的数据访问保护方法。
1 多用应用智能卡数据存储文件模块
智能卡的操作系统(Card Operating System,COS)管理着卡上的信息资源,包括通信管理模块、安全管理模块、应用处理模块,文件管理模块。要解决逻辑攻击和非法读卡端访问模式下数据存储存的安全问题,首先要了解多应用智能卡的数据存储文件系统。智能卡的COS文件系统结构[7]包括主文件(Master File,MF);专用文件(Dedicated File,DF)和基本文件(Elementary File,EF)。其中,MF对任何COS都是必需的,它包含文件控制信息及可分配存储区,是COS文件的根目录。EF也是COS必需的,它用来存储的数据单元或记录,在文件系统的最底层。DF是一种通用目录,非必需,它主要存储文件的控制信息、文件的位置、大小等,如私钥、公钥、透明文件、控制文件等。但是在多应用智能卡的COS系统中,DF主要作为行业应用的目录,是必须的,文件系统结构如图1所示。
图1 多应用智能卡文件系统结构
2 多应用智能卡的安全系统及状态
2.1 多应用智能卡的安全系统
多应用智能卡通过内置的安全系统实现对上述内部资源的安全保护,每个文件都有相互关联的的安全条件,包括请求相互的身份验证、密码验证等,总体包含3个部分:安全状态,安全属性和安全机制。
1)安全状态
智能卡有全球、应用特定、文件特有和命令特定4个安全状态,具体定义请参考规范ISO/IEC 7816-4。
2)安全属性
文件系统的安全属性至关重要,安全属性定义哪些行为在什么条件下是被允许的,除一些特殊文件,一般文件的安全属性依赖于它的类别(DF或EF),被标注在可选的文件控制信息(File Control Information,FCI)文件中或父文件中。
3)安全机制
多应用智能卡中的安全机制包括:卡和应用PIN码验证、内部认证、外部认证。当访问命令的安全条件得到满足,COS提高到相应的安全状态,然后检查安全状态是否符合待访问文件的安全属性。例如,当持卡人进行某个应用操作时,就必须进行PIN码验证及内、外部认证的组合使用。
2.2 多应用智能卡的安全状态
虽然目前智能卡的安全机制可以保障信息安全,但对于无密钥证书保护的多应用智能卡,终端的安全得不到有效的保护,攻击者可能绕过多应用智能卡的安全机制,直接访问或者攻击卡内信息。例如,智能卡访问是由读卡终端管理,攻击者可以利用合法终端在独占模式下的逻辑缺陷,通过某种类型的变化进行攻击,如通过连续返回值变化测定访问命令,隐藏命令进程注入、内核注入等方式的非法信息的读写;智能卡在共享模式打开时,合法的程序中完成安全检查,同时,一个非法终端也对智能卡进行访问,就能绕过安全检查,敏感的信息可能会被读取、覆盖、或更换;合法行业终端在共享模式下,没有密钥的许可和消息来源验证,对其他业的数据进行跨界非法读取、删除或篡改等。为有效阻止上述安全隐患,本文基于椭圆曲线公私密钥算法,提出适合多应用智能卡的密钥证书读卡端认证和数据安全会话的保护机制。
3 基于密钥证书的保护机制
对于多行业终端设备访问的多应用智能卡数据保护,主要分为两个部分,前期为卡片出厂后多行业的发卡,包括密钥证书生成、DF目录创建、数据的写入加载等;后期是以密钥证书为基础,通过椭圆曲线算法实现行业访问卡内本行业目录数据的安全会话机制部分,包括公私钥加解密方式的行业特定标识与卡内对应目录DF的身份认证、会话密钥协商以及数字签名,和基于3DES算法的密文会话等安全措施。本节针对卡和卡内应用,研究基于椭圆曲线算法的密钥证书的算法原理、证书生成、初始安全加载等。
3.1 密钥证书的分类概述
据前文分析和图1所示文件系统结构可知,在多应用智能卡中至少需要设计两级多个密钥证书。一级可证书是MF下的密钥证书,记作CertM,主要实现卡片发行机构控制MF下的DF、EF创建删除以及数据信息的访问等卡管理级别的命令安全;二级证书是DF下的密钥证书,记作CertD1,CertD2,…,CertDN,主要实现行业应用DF下的DF、EF等文件的创建删除、数据的访问安全等。该密钥证书至少包含两类密钥对,一类用于信息加解密,即通常所谓的加密/解密公/私密钥对,称为E_PK/E_SK,另一对用于信息的数字签名,即数字签名的公私密钥对,称为S_PK/S_SK。在多应用智能卡中,卡管理和应用级别的私钥均直接以证书密文形式保存在MF和DF下EFCertM中。
3.2 证书的生成
多应用智能卡中的密钥证书,可由卡机构、应用机构或者第三方证书授权中心(Certificate Authority,CA)生成。本文基于中国国家密码管理局2010年12月17日发布的椭圆曲线算法SM2[8],生成公私密钥对,由CA把申请者的公钥和用户其他信息(如名称、电子邮件、身份证号等)捆绑在一起,产生、管理、存储、发布以及作废证书等。下面以SM2椭圆算法生成CertM中的E_PKM/E_SKM,S_PKM/S_SKM密钥为例,叙述算法原理和密钥生成过程。
定义在素域Fp(p是大于3的素数)的椭圆曲线方程E为
式中:(x,y)为曲线的点坐标;a,b为Fp域上的元素;mod p表示做模p运算。
则椭圆曲线E(Fp)定义为Fp上的所有有理点P(x,y)与O(无穷远点)组成的集合
根据上述定义以及SM2算法的安全规定,椭圆曲线E的参数为(p,a,b,P,n),其中p是一个大于2191奇素数,a、b是有限域E(Fp)椭圆曲线上的元素,为小于p的非负整数,P(x,y)是曲线E上的一个基点,n为P点的阶(椭圆上点的数目),是一个和p大小相当的大素数,则满足式(2)的有理点P(x,y)和无穷点O就组成了椭圆曲线E。 因此,确定整数k∈[0,n-1],使得Q=[k]*P成立的求解问题称为椭圆曲线离散对数的问题(ECDLP),以此建立安全的椭圆密码系统。
在椭圆曲线参数确定后,用随机数发生器产生整数d∈[1,n-1],通过基点P,计算点Q=(xP,yP)=[d]*P,使Q为椭圆曲线E上点,则E_SKM=d为私钥,E_PKM=Q为公钥.同理,可以生成签名密钥对S_PKM/S_SKM。卡发行机构将公钥及相关信息发送CA,由CA签发CertM证书,签发过程参看相关资料[9]。
同样,行业应用机构通过CA或者自己按照上述原理可生成CertD1,CertD2,…,CertDN等卡片上的行业应用证书,以供持卡人完成验证。
3.3 密钥证书和数据的加载
按照多应用智能卡证书分类和文件系统结构,CA签发的密钥证书和卡与行业应用数据的安全加载分为两个阶段:
1)CertM密钥证书和卡发行机构数据的初始加载:如图2所示加载过程,卡发行机构获得出厂卡片和出厂授权卡后,通过卡片随机数ECC加密后密文的Hash值对比验证,获得卡片的读写权限,在MF下,创建卡发行机构的EF(CertM)密钥证书和其他DIR,FCI,EF等数据文件,使得卡片称为发行机构控制的白卡。
图2 CertM密钥证书初始加载认证流程
初始加载后的多应用智能卡文件系统结构如图3所示。
图3 CertM加载后的文件结构
2)CertD1,CertD2,…,CertDN等行业应用密钥证书和数据的初始加载:行业应用发行机构获得卡发行机构的授权密钥和白卡,通过类似图2所示的身份鉴别,获得对卡MF的访问权限,创建行业的DF目录和文件,写入行业的Cert密钥证书和相关数据信息,验证过程中所使用加密密钥为CertM证书中的公钥。各行业应用发行机构加载多个行业应用后的智能卡文件结构如图1所示。
3.4 密钥证书的更新与撤销
当卡发行机构和行业应用机构完成密钥证书数据文件的安全初始加载后,持卡人就可以在行业柜台完成个人数据的个人化,进行使用。其后,多应用智能卡各级目录下密钥证书的更新由相应机构来操作。如存在于MF下的CertM,是由卡片发行机构通过来自身验证来完成证书的更新与撤销,证书撤销标志卡片生命周期结束;DF下的密钥证书,除初始加载必须通过MF下密钥证书的密钥鉴别验证外,以后的使用、更新、撤销均由相对应的行业机构使用自身密钥来签名验证,DF下的该Cert被撤销标志该行业应用生命周期结束,所有的更新与撤销操作必须通过各自的密钥的身份鉴别后完成。
4 终端设备对数据的安全访问
持卡人在进行行业业务应用过程时,终端设备与多应用智能卡进行会话,经过图4所示流程,按照规范ISO/IEC 7816-4给卡片的加电、协商通信、选择行业应用标识符(Application Identifier,AID),启动行业应用程序,建立基行业会话通道。这时在前文密钥证书的基础上需要建立与对应的安全会话通道,包括基于SM2密钥证书的行业读卡端与卡的认证、密钥协商、DES密文会话和数字签名及验签等。
图4 行业读卡端与多应用卡的安全会话
4.1 行业读卡端与卡的认证
行业读卡终端与卡的认证是通过卡内该行业应用程序调用对应证书中的固定内容验证来完成的。IDA(行业特定标识符)是CA在给行业签发密钥证书时写入Cert中的内容。行业读卡端使用智能卡ECC公钥对IDA加密后,传送给智能卡,由于智能卡拥有针对该行业自己的私钥,所以只有智能卡卡内该行业应用程序,才能够解密出该标识符,然后通过比较解密出的消息与该行业证书中的特定标识符来完成验证。根据密钥生成原理,假设行业读卡端为A,使用智能卡内对应行业的公钥E_PKB,对IDA进行加密并传送给智能卡内应用程序B,B利用自己的私钥E_SKB解密出原始信息。其加密和解密过程如下:
1)ECC加密过程:A使用 B的E_PKB将IDA通过加密后发送给B。
(1)用随机数发生器产生随机数k∈[1,n-1];
(2)计算:C1=k*P,其中*指k个P相加运算;
(3)计算:C2=IDA+k*E_PKB;
(4)密文C是一个点对{C1,C2}。
思想政治教育接受研究是思想政治教育研究的重要内容之一,它改变了过去仅以“授”为考虑的研究思路,凸显“受”的规律探讨的重要性,具体探讨思想政治教育接受中存在的问题、隐含的规律。它的理论前提是受教育者主体性的发现,它的理论背景是市场经济条件下人的生存方式的改变,它的研究目的是在新的时代背景下如何提升思想政治教育的实效性。
2)ECC解密过程:智能卡内该行业应用程序B使用自己的私钥E_SKB,解密密文C。
(1)计算:C′=IDA+k*E_PKB–E_SKB*(C1);
(2)根据ECC密钥对产生的原理:E_PKB=E_SKB*P,代入步骤(1);
(3)则解密明文:C′=IDA+k*E_PKB-E_SKB*C1=IDA+k*(E_SKB*P)-E_SKB*(k*P)=IDA。
(4)智能卡内行业程序提取行业CertDN中的IDA,比较C′和IDA,如果匹配则是合法卡片,否则为伪造卡片。
使用相同方法,卡片可以逆向验证行业端卡是否合法。
4.2 会话密钥协商
当双方身份鉴定合法,行业读卡端A与卡内行业应用程序B通过4.1节的加密方式,用各自的私钥和对方的公钥商定一个只有他们知道的会话密钥,用以业务密文会话使用。由前文确定的椭圆曲线参数可知,密钥协商过程如下:
1)A执行
(1)随机生成kA∈{1,…,n-l},计算SA=kA*P;
(3)随机选取FP的曲线中的元素XA;
(4)计算:TA=RA⊕XA,其中⊕指等长两个比特串按位做异或运算;
(5)将(TA,SA)发送给B,A自己保存kA,XA。
2)B执行
(1)随机生成kB∈{1,…,n-l},计算.SB=kB*P;
(2)利用kB计算:RB=kB*E_PKA;
(3)随机选取FP的曲线中的元素XB;
(4)计算:TB=RB⊕XB;
(5)发送(TB,SB)给A,B自己保存kB,XB。
3)A收到(TB,SB)后
(1)利用E_SKA和SB计算:RB=TB⊕(E_SKA*SB);
(2)计算:S=RB⊕XA;
(3)取H(S,kA*SB)为会话密钥,H为哈希函数。
4)B收到(TA,SA)后
(1)利用E_SKB和SA计算:RA=TA⊕(E_SKB*SA);
(2)计算:S=RA⊕XB;
(3)取_K=H(S,kB*SA)为会话密钥。
由 E_PKA=E_SKA*P 和 E_PKB=E_SKB*P,可知 RA=XA,RB=XB,即A与B最终获得一个共同的会话密钥_K,将其作为DES对称密码算法的密文会话密钥。由于该密钥的随机信息被双方的私钥所保护,所以攻击者进行请求攻击会话时,无法获得所求会话密钥的任何信息。
4.3 行业应用的安全会话
为防止在共享模式下其他行业合法终端绕过身份验证的越界访问和数据传输的明文泄露,对行业读卡端发送卡片的命令或数据做数字签名[10]后,以DES密文形式发送,并由卡内行业应用程序解密,验证来源的合法性和可靠性后再进行数据处理,密文会话密钥采用3.2节生成的临时会话密钥_K,签名密钥对为行业Cert中保存的S_PK/S_SK,其中私钥S_SK做签名使用,公钥S_PK做验签使用,整个安全会话过程如图5所示。
图5 数字签名与密文的安全会话
设行业读卡端A待签名的发送消息为M,行业特定标识符为IDA,生成的数字签名为(R,S),则:
1)行业读卡端A产生签名
(1)计算:_M=M||IDA,其中||指两个字符串拼接;
(2)计算哈希值:E=H(_M);
(3)用随机发生器产生随机数k∈[1,n-1];
(4)计算椭圆曲线点:G(x1,y1)=[k]*P(xA,yA);
(5)计算:R=(E+x1)mod n,若R=0或者R+k=n,则返回(3);
(6)计算:S=((1+S_SKA)-1*(k-R*S_SKA))mod n,S≠0发送消息M的签名为(R,S),否则返回(3)。
2)读卡端DES算法以密钥_K产生的密文
C=EK(_M+(R,S),_K),其中EK()为DES算法的加密函数,具体加密过程参考文献[11]。
3)卡内行业应用B以_K解密的DES明文
C′=_M′+(R,S)=DK(C,_K),其中DK()为DES算法的解密函数,具体解密过程参考文献[11]。
4)卡内行业应用程序B接收的消息为M′,接收消息的签名为(R′,S′),则接收消息的验签过程为:
(1)检验 S′∈[1,n-1]与 S′∈[1,n-1]两者是否成立,若有一个不成立则验签失败。
(2)计算:_M′=IDA||M′。
(3)计算哈希值:E′=H(_M′)。
(4)计算:T=(R′+S′)mod n,若T=0,则验证不通过。
(5)计算椭圆曲线点:G′(x′1,y′1)=[S′]*G+[T]*S_PKA。
(6)计算:_R=(E′+x′1)mod n,检验_R=R′是否成立,若成立则验签成功;否则失败。
当验签成功,则可确定行业读卡端A发送而来的命令或者数据来源合法有效,卡内程序B进行数据处理或者下一步操作;否则,反馈错误应答。
4.4 PIN码认证
多应用智能卡中各行业应用可以设置不同或者相同的PIN码,通过PIN码验证,能够确认持卡人与卡的合法关系,但对终端设备访问卡内数据的安全性无关,因此本文不在赘述,其验证过程请参考资料[12]。
5 结果分析
由前文章节可知,本文所设计的保护方法,前期阶段处于MF下的CertM密钥认证,严格保护了各行业卡上应用、密钥证书、和数据的安全加载,使得各方数据处于不同DF的物理隔离状态,加载后各行业的数据访问、证书更新、作废等,由各自的密钥证书进行密钥认证,主密钥证书CertM不再起作用,保证了行业后台系统与卡中行业应用程序通信环境的独立性和安全性。在后期持卡人应用阶段,即行业终端对卡内应用数据的安全会话阶段,基于ECC密钥证书提供了的各行业读卡端设备与卡应用的身份验证机制,防止非法的伪读卡终端对卡中行业数据的非法读取;基于临时会话密钥的DES算法密文会话,有效防止会话过程中数据信息的明文泄露和命令参数重放分析的风险;而在共享模式下,对合法终端的发送访问命令和数据信息得签名认证,可以保证数据和命令的合法可靠性,防止非法终端的绕行攻击和合法终端的越界访问。这些保护措施可以使各行业的数据交互在安全的通道中进行。
另外,本方案中采用的ECC算法密码体制,与现有智能卡应用的RSA&DSA算法相比[13],在同等安全级别下,ECC算法需要的密钥很小。例如RSA&DSA要求模长为1 024 bit,而对于ECC模长160 bit就已足够,并且当密钥长度增加时,ECC比RSA/DSA的安全性增加要快得多,240 bit密钥长的ECC比2 048 bit模长的RSA/DSA安全。在与DES算法相结合做加解密运算的时间效率上,密钥长160 bit的ECC比密钥长1 024 bit的RSA耗时更短。这提高现行行业终端设备对卡的访问效率,并变相地提高对卡数据访问的安全性。
6 结束语
本文基于ECC算法的密钥证书对数据的保护方法,满足当前Java卡、类Java卡和Multos卡等多应用智能卡片的安全要求,可以效地消除所存在的逻辑攻击隐患。该方法主要保护卡发行机构、行业应用机构、持卡人与卡之间的信息进行安全交互,限制非法终端的攻击和合法终端的跨界非法访问。在软硬件实现方面,该方法中使用的ECC算法密码机制较其他算法机制具有运算速度快、易实现和成本低的优势,更适合容量和运算速度受限的多应用智能卡。因此,该方法对多应用智能卡的安全应用和发展具有重要意义。
[1] BANASZAK B,RODZIEWICZ K.Trust and security,digital citizen cards in Poland[M].[S.l.]:Springer Berlin Heidelberg,2004.
[2]MARKANTONAKIS K,TUNSTALL M,HANCKE G,et al.Attacking smart card systems:theory and practice[J].Information Security Technical Report,2009,14(2):46-56.
[3] STANDAERT F X.Introduction to side-channel attacks[M].[S.l.]:Springer Berlin Heidelberg,2010.
[4] SOOD S K.An Improved and secure smart card based dynamic identity authentication protocol[J].IJ Network Security,2012,14(1):39-46.
[5]LU C,SANTOSA L M,PIMENTEL F R.Implementation of fast RSA key generation on smart cards[C]//Proc.2002 ACM symposium on Applied computing.[S.l.]:ACM Press,2002:214-220.
[6] PLATFORM G.Global platform card specifications,version 2.2[S].2006.
[7] ISO/IEC7816-4:2005(E),Identification cards--Integrated circuit cards--Part 4:Organization security and commands for interchange[S].2005.
[8] NIU Y C.Fast implementation of public key cryptographic algorithm sm2 based on elliptic curves[D].Jinan:Shandong University,2013.
[9]MALAN D J,WELSH M,SMITH M D.A public-key infrastructure for key distribution in TinyOS based on elliptic curve cryptography[C]//Proc.2004 First Annual IEEE Communications Society Conference on Sensor and Ad Hoc Communications and Networks.[S.l.]:IEEE Press,2004:71-80.
[10]JOHNSON D,MENEZES A,VANSTONE S.The elliptic curve digital signature algorithm(ECDSA)[J].International Journal of Information Security,2001,1(1):36-63.
[11]AKKAR M L,GIRAUD C.An implementation of DES and AES,secure against some attacks[C]//Proc.Cryptographic Hardware and Embedded Systems—CHES 2001.[S.l.]:Springer Berlin Heidelberg,2001:309-318.
[12] TAKADA T,KOKUBUN Y.Extended PIN authentication scheme allowing multi-touch key input[C]//Proc.International Conference on Advances in Mobile Computing&Multimedia.[S.l.]:ACM Press,2013:307.
[13]SAVARI M,MONTAZEROLZOHOUR M,THIAM Y E.Comparison of ECC and RSA algorithm in multipurpose smart card application[C]//Proc.2012 International Conference on Cyber Security,Cyber Warfare and Digital Forensic.Kuala Lumpur:IEEE Press,2012:49-53.