PBOC 3.0标准IC卡的安全体系研究与验证

2017-11-16 02:04:34张宝全徐李仙张少泉陈先富
软件 2017年10期
关键词:发卡行脱机借记

张宝全,徐李仙,周 枫,张少泉,陈先富

(1. 昆明理工大学 信息工程与自动化学院,云南 昆明 650500; 2. 电子科技大学 计算机科学与工程学院,成都 611731; 3. 云南电网有限责任公司 电力科学研究院,云南 昆明 650217)

PBOC 3.0标准IC卡的安全体系研究与验证

张宝全1,3,徐李仙2,周 枫1,张少泉3,陈先富3

(1. 昆明理工大学 信息工程与自动化学院,云南 昆明 650500; 2. 电子科技大学 计算机科学与工程学院,成都 611731; 3. 云南电网有限责任公司 电力科学研究院,云南 昆明 650217)

随着科技的进步,经济的发展,全球金融交易越来越频繁,而针对金融交易的安全事故也屡见不鲜。为了规范金融交易市场,国际上指定了一系列的标准和规范。在我国,中国人民银行基于国际EMV标准,制定了金融IC卡的标准和规范——PBOC标准。本文致力于研究基于目前我国最新的金融IC卡标准PBOC 3.0的安全体系,使用金融 IC卡做验证,并给出相应的实验结果。在研究的过程中,本文从脱机数据认证着手,同时涉及到应用密文和发卡行验证、卡片的安全、密钥管理体系和安全机制。由静态数据认证出发,到标准动态数据认证,再到快速数据认证,层层推进。从最后设计出验证PBOC 3.0金融IC卡脱机数据认证的验证平台,并验证了一些IC卡的安全性。

信息安全;金融IC卡;PBOC 3.0;静态数据认证;动态数据认证;快速数据认证

0 引言

随着经济和科技的快速发展,金融交易越来越普遍。在交易过程中,现金的使用越来越少,而金融IC卡的使用越来越多,包括储蓄卡,信用卡等金融交易工具。为了规范金融交易市场,国际上制定了IC卡规范——EMV规范[1]。我国基于EMV规范,由中国人民银行制定了一系列的PBOC规范,目前最新版本为PBOC 3.0标准规范。

关于银行卡被盗刷的事情屡见不鲜,其中一部分原因在于银行卡在制作的过程中安全体系不够完善。然而伴随着IC卡的大量使用,磁条卡基本已经退出金融交易的市场,这种盗刷的现象越来越少。IC卡相比磁条卡真的有那么安全吗?IC卡在安全体系方面的完善究竟体现在哪些方面?这些问题值得研究。

在国外,来自剑桥大学的研究人员发现 EMV协议的一个重大安全漏洞,使得攻击者能够容易的发起中间人攻击,无论在终端机上输入何种密码,都能够使用芯片卡[2]。而在我国,基于PBOC 3.0的研究也不少,包括通用存储的研究,在轨道交通行业的研究等,但是尚未分析标准本身的安全。然而,从安全的角度研究标准,分析其安全体系并做出验证尤为重要。

1 PBOC 3.0金融IC卡概述

金融IC(Integrated Circuit)卡是以芯片作为核心介质的银行卡。IC卡比磁条卡容量大,具有足够的容量存储密钥,数字证书,指纹等信息,其工作原理类似单片机,具有多种功能,给人们带来了很多便利。一般主要由相关机构按照国家相关金融标准要求采用集成电路生产,并由银行实名发给持卡人[3]。金融IC卡支持刷卡消费、存现取现、银行转账、电子钱包等功能,甚至还有的支持eID身份认证等功能[4]。金融IC卡不像磁条卡那么容易复制和窃取卡片信息,安全性能极大的提高了。目前金融IC卡在国内外使用广泛,已经逐渐替代了传统的磁条银行卡。

1.1 PBOC 3.0标准概述

国内,金融 IC卡遵循中国人民银行发布的PBOC标准在全国建立了三级秘钥管理系统。这三级管理系统如下:(1)第一级秘钥管理系统是中国人民银行总行;(2)第二级秘钥管理系统是各大商业银行总行和中国人民银行各中心支行;(3)第三级秘钥管理系统是各大商业银行地区分行[5]。于是各家商业银行在开发银行卡系统时就有了统一的标准。

PBOC 3.0结合了世界的高新技术和信息安全标准,不管是底层标准还是加密算法都大大改善,在保证卡片与终端(ATM、刷卡机等)的交互兼容性的前提下同是加入了移动支付等多方面的应用场景,金融支付的安全性也大大提高。PBOC3.0金融IC卡标准和规范共包括14个部分(原PBOC2.0的第1部分:钱包存折卡片、第2部分:钱包存折应用、第 9部分:钱包存折扩展已删除),涉及到 IC卡与终端接口、借记贷记应用卡片、借记贷记应用终端、借记贷记应用安全、借记贷记应用安全、借记贷记应用个人化指南、非接触式IC卡通讯、非接触式IC卡支付、基于借记贷记应用的小额支付、电子现金双币支付应用、IC卡互联网终端、借记贷记应用安全增强等众多组成部分[6]。

1.2 PBOC 3.0安全体系概述

关于PBOC 3.0金融IC卡的安全体系的介绍主要集中在规范和标准的第7部分和第17部分。在标准中第7部分主要介绍了有关安全体系的脱机数据认证、应用密文和发卡行认证、卡片的安全、终端的安全、密钥的管理体系、安全机制、认可的算法、报文的安全等。随着金融IC卡的不断升级和完善,有关安全体系的升级也是其中的重要内容,所以新制定了第17部分,对以前的借贷记应用的安全规范进行了扩展,用以支持 SM2、SM3和SM4等密钥算法在借记/贷记应用中的使用[7]。

PBOC 3.0脱机数据认证,这是一种刷卡设备等终端采用公钥技术来验证卡片数据的方法,脱机数据认证通常有2种组成形式:静态数据认证(static data authentication, SDA)和动态数据认证(Dynamic data authentication, DDA)[8]。静态数据认证主要是指刷卡设备等终端验证卡片芯片上静态存储数据的合法性,确保卡片上存储的数据没有遭到非法篡改[9]。动态数据认证除了可以验证卡片上的静态数据没有被篡改外,还可以验证该卡片是不是非法复制的伪造卡,从而保证终端收到的卡的数据的合法性。如果脱机数据认证成功,刷卡设备等终端才会与卡片联机进行交易,倘若脱机数据认证失败,则终端拒绝执行交易。表1列出了SDA和DDA的比较。

表1 SDA和DDA的比较Tab.1 Comparison of SDA and DDA

1.3 PBOC 3.0签名算法概述

脱机数据认证中应用的签名方案主要有两种:一种是可逆的非对称加密算法,另外一种是不可逆的哈希算法。而本文中将这两种方法结合在一起使用,签名的过程中首先使用哈希算法取原文的哈希值,然后使用非对称加密算法对哈希值进行加密。验证的过程中先使用公钥解密,然后对原文使用相同的哈希算法,比对哈希值是否一致,如果一致则验证通过。

数字签名的产生过程如下:首先计算报文 Msg的 20字节的 HASH值 H:=Hash[MSG]。然后将Msg拆分为两个部分:MsgL||MsgR。MsgL为 Msg最左端的N-22字节构成,MsgR由剩下的字节构成。接着定义两个字节:B:=‘6A’,E:=‘BC’,定义N个字节的块X=(B || MsgL || H || E)。最终的数字签名为S= Sign(SK)[X],SK为私钥。

数字签名的验证过程如下:首先检查数字签名值S是否由N个字节构成。接着由恢复算法得到N字节的 X=Recover(PK)[S],PK为公钥。接着把 X分块X=(B || MsgL || H || E),其中B和E为1个字节,H为20字节,MsgL为N-22字节。然后检查B是否为“6A”,E是否为“BC”,最后得到原文 Msg=MsgL||MsgR,并检验哈希值 Hash(Msg)是否正确。只有当所有的数据都正确时,签名数据才正确。

2 静态数据认证

静态数据认证是为了确认 IC卡上的静态数据是否合法,是PBOC脱机数据认证中最基本的数据认证,具体来说包括了验证发卡行公钥证书和静态签名数据的合法性。静态数据认证过程中的发卡行公钥证书和静态数据的结构图如图1所示。

在认证中心私钥安全的情况下,认证中心认证过的发卡行公钥不能随意伪造。发卡行写进IC卡上的重要数据都是用发卡行公钥进行签名的。因此,终端验证卡上这些被签名的数据是否被篡改,在得知IC卡的相关参数后,使用读卡器读取IC卡上的相关参数,使用认证中心的公钥验证发卡行的公钥证书。当发卡行的公钥证书正确时,使用发卡行的公钥验证 IC卡上的静态数据的正确性,完成基于PBOC 3.0金融IC卡脱机数据认证流程中的最基础步骤[10]。因为恶意攻击者没有办法拿到发卡行的私钥,所以也没有办法在修改了IC卡上的重要数据之后冒充发卡行对修改后的数据进行签名,这就保证了 IC卡上的数据没有被恶意攻击者篡改或者重新写入。静态数据认证的流程大致分为三个流程,即:获取认证中心公钥,获取发卡行公钥证书,验证签名的静态应用数据。下面对于这三个步骤做详细的介绍,它的详细流程图如图2所示。

图1 SDA证书和公钥体系结构Fig.1 SDA certificate and public key architecture

图2 静态数据认证详细流程图Fig.2 Static data authentication detailed flow chart

关于读取IC卡中的关键数据,以及数据的具体标签含义,数据的构成,可参看相关标准和规范。脱机数据认证过程中使用的数据项的具体含义和相关结构可参看PBOC3.0相关标准中借记贷记应用安全规范部分。根据公钥模和指数生成公钥对象的关键代码如代码1所示,使用公钥的对象对数据进行解密如代码2所示。

/**

* 代码1:根据公钥的模和指数生成公钥的对象

* @param exponent 用字符串表示的公钥的指数的值

* @param modulus 用字符串表示的公钥的模的值

* @return 公钥的对象

* @throws Exception

*/

public static PublicKey getPublicKey(String exponent,String modulus) throws Exception

{

BigInteger b1 = new BigInteger(modulus, 16);

BigInteger b2 = new BigInteger(exponent, 16);

KeyFactory keyFactory = KeyFactory.getInstance

("RSA");

RSAPublicKeySpec keySpec = new RSAPub

licKeySpec(b1, b2);

return keyFactory.generatePublic(keySpec);

}

/**

* 代码2:使用公钥的对象对数据进行解密

* @param encryptedString 被加密的数据的byte型表示

* @param pubKey 用于解密的公钥对象

* @return 解密后的数据

* @throws Exception

*/

public static byte[] decrypt(byte[] encryptedString,

PublicKey pubKey) throws Exception

{

Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");

cipher.init(Cipher.DECRYPT_MODE, pubKey);

byte[] deBytes = cipher.doFinal(encryptedString);

return deBytes;

}

在这次脱机数据认证过程中使用的IC卡,因为签名的静态数据认证失败,如图3所示,所以得出结论,该卡不是合法的IC卡。到这里,静态数据认证的整个过程已经完成。

图3 静态数据认证结果Fig.3 Static data authentication result

3 标准动态数据认证

标准动态数据认证简称标准DDA,它主要包括静态的数据的认证,IC卡公钥证书的认证,签名的动态数据的认证。相比静态数据认证,标准的动态数据认证增加了IC卡公钥证书的认证、签名的动态数据的认证。通过标准DDA认证,不仅能验证一张IC卡是否合法,还能验证该卡是否被复制。

DDA中,终端发送一个伪随机数给IC卡,金融IC卡用自己的私钥将收到的随机数进行签名,并将签名后的数据发给刷卡设备等终端。终端利用IC卡的公钥解密数据,得到的随机数与之前发送给IC卡的随机数进行比对校验,如果校验通过,则认为该卡片不是一张复制卡。

IC卡私钥是存储在 IC卡的安全区域,伪卡通过复制是不能得到真卡的IC卡私钥的,因此,伪卡没有了私钥,无法假冒真卡的身份对终端发过来的随机数进行签名;还有,终端发给卡的随机数是无法预知的,这就避免了伪卡利用真卡以前生成的签名数据来冒充真卡(重放攻击)。以上两点说明:利用 IC卡私钥进行签名的随机数可以充分证明一张卡不是伪卡。DDA认证的总体流程如图4所示。

在标准动态数据认证过程中,动态的签名数据由卡片生成,具体流程图如图5所示。

验证过程中使用到的具体数据表参见中国金融集成电路(IC)卡规范第7部分:借记贷记应用安全规范。根据实验的结果可知本次实验使用的IC卡是一张可信的卡,如图6所示。

图4 DDA整体流程图Fig.4 DDA overall flow chart

图5 标准动态数据认证流程图Fig.5 Standard dynamic data authentication flow chart

图6 动态签名数据验证结果示意图Fig.6 Dynamic signature data validation results

4 快速数据认证

快速数据认证即快速DDA认证,是为了适应快速借记贷记而产生的一种认证方法。qPBOC(快速借贷/借记)用于非接触式界面的电子现金交易,即所谓的“闪付”,这就要求有很高的交易速度,必然要求对标准的借记/贷记金融业务流程进行优化和改善。在“闪付”交易业务流程中,要求1秒甚至更短时间内完成交易。DDA作为一种可供选择的方法,用于脱机预防伪卡[11]。qPBOC提供脱机数据认证支持SDA和fDDA,除此之外,它的动态签名由GPO命令发起,不再使用内部认证(INTERNAL AUTHENTICATE)命令,也不使用DDOL、SDA或fDDA(快速动态数据认证),也不再放在终端验证结果(TVR)中联机发送给发卡行,或通过联机授权或清算密文进行保护[12]。fDDA对标准的DDA流程做了简化,没有验证IC卡片上的静态签名数据,因为卡片上的IC卡公钥证书由发卡行私钥签名,其核心思想和流程与标准的 DDA类似。在实验的过程中,使用了一张支持 qPBOC流程的IC卡,验证的结果如图7所示。

图7 快速动态数据认证结果示意图Fig.7 Quick dynamic data authentication results

5 结束语

本文基于PBOC 3.0金融IC卡标准,研究了其安全体系,包括静态数据认证、动态数据认证以及快速数据认证,对这些脱机数据认证的原理、目的和认证流程做了阐述,并通过实验,给出了认证的结论,根据认证的结论得出卡的真伪。同时,本文研究了金融IC卡安全体系中的签名算法、加密算法和PKI技术。

但是关于金融 IC卡的安全体系还有很多需要研究的机制,目前还没有完成涉及到PBOC 3.0金融IC卡安全机制的所有内容的研究,今后将对PBOC 3.0金融IC卡有更加深入的认识。

[1] 中国人民银行发布. 中国金融集成电路(IC)卡规范[M]. 中国金融出版社, 2013.

[2] 刘丽雅. 金融IC卡系统的设计和实现[D]. 成都: 电子科技大学, 2012, 1-3

[3] 蔡英珏. 基于PBOC 3.0金融IC卡的支付及通用存储应用系统的研究与实现[D]. 电子科技大学, 2015.

[4] 张蒙. 基于LINUX的PBOC3.0关键读卡技术的研究与应用[J]. 电子设计工程, 2015(8): 188-192.

[5] 蔡英珏. 基于PBOC 3.0金融IC卡的支付及通用存储应用系统的研究与实现[D]. 电子科技大学, 2015.

[6] 刘轩. 基于PBOC3.0的银联公交POS机的设计与实现[D].杭州电子科技大学, 2015.

[7] Wang G, Wang H, Liu H. Application and Prospect for New Technology of AFC system in Urban Rail Transit[J]. Urban Rapid Rail Transit, 2017.

[8] 徐琳, 温蜜, 李晋国. 智能配电网中具有隐私保护的数据安全认证方案[J]. 电子技术应用, 2015, 41(12): 98-101.

[9] Wang H, Jiang H, Zhu J. Railway Freight Escort Safety Monitoring System based on IC card[J]. Railway Computer Application, 2016.

[10] Guangjia H E, Xie G, Department P, et al. Application of financial IC Card in Railway Ticketing and Reservation System[J]. Railway Computer Application, 2015.

[11] 许威. 金融IC卡对称密钥离散机制应用研究[J]. 中国金融电脑, 2015(2): 81-86.

[12] 方翔, 刘海, 江远志. 一种新型IC卡读卡器:, CN204143450U[P].2015.

Research and Verification of Security System of PBOC 3.0 Standard IC Card

ZHANG Bao-quan1,3, XU Li-xian2, ZHOU Feng1, ZHANG Shao-quan3, CHEN Xian-fu3
(1. Faculty of Information Engineering and Automation, Kunming University of Science and Technology, Kunming 650500, China;2. School of Computer Science and Engineering, University of Electronic Science and Technology of China, Chengdu 611731, China;3. Electric Power Research Institute, Yunnan Power Grid Company, Kunming 650217, China)

With the development of the economic and technology, as the global financial trading is more and more popular, the incident with the financial trading become an important topic. In order to standard the financial trading market, there are a series of standard and specification come out in the world. People's Bank of China make up with the PBOC 3.0 as the Chinese financial specification base on EMV standard. This paper researched the security system of PBOC 3.0 and verify the security of the financial IC card. At last, the paper will give the security conclusion of the IC card. In the research, this paper will start with verification of off-line data, including verifying application cryptograph and card issuer, the security of the card, key manage system and security mechanism. The security will include three aspects: static data authentication (SDA), Dynamic data authentication (DDA) and quick Dynamic data authentication (QDDA). Finally, this paper will design a verification platform about IC financial off-line data.

: Information security; Financial IC card; PBOC 3.0; SDA; DDA; QDDA

TP393.08

A

10.3969/j.issn.1003-6970.2017.10.009

本文著录格式:张宝全,徐李仙,周枫,等. PBOC 3.0标准IC卡的安全体系研究与验证[J]. 软件,2017,38(10):50-55

云南省科技人才和平台计划-科技领军人才培养(项目编号:2017HA011)

张宝全(1991-),男,云南曲靖人,硕士研究生,研究方向:网络与信息安全;徐李仙(1991-),女,云南曲靖人,硕士研究生,研究方向:网络与信息安全。

周枫(1958-),男,云南昆明人,硕士,副教授,研究方向:数据挖掘、信息抽取。

猜你喜欢
发卡行脱机借记
浅快呼吸指数相关指标预测脱机结局的价值分析
银行卡跨行POS机盗刷纠纷责任认定研究
改良程序化脱机在老年患者呼吸机撤离中的应用
中心静脉血氧饱和度监测在机械通气患者脱机过程中的意义※
论信用卡诈骗案件催收效力问题的认定
——以恶意透支信用卡诈骗为例
同一银行异地转账将不收手续费
民生周刊(2016年23期)2016-12-12 13:05:18
基于双边市场的银行卡定价理论研究
两种不同脱机方法在ICU老年机械通气患者拔管中的应用
中外医疗(2015年11期)2016-01-04 03:58:44
新高等学校会计制度下会计核算体系的重构
商业会计(2015年8期)2015-09-29 07:08:40
浅述企业对金融资产的会计处理