基于ARM的双界面IC卡读写器的设计与实现*
2014-09-14潘新娜鲍可进唐宏斌
潘新娜,鲍可进,唐宏斌
(1.江苏大学计算机科学与通信工程学院,江苏 镇江 212013;2.扬州源悦支付技术有限公司,江苏 扬州 225000)
基于ARM的双界面IC卡读写器的设计与实现*
潘新娜1,鲍可进1,唐宏斌2
(1.江苏大学计算机科学与通信工程学院,江苏 镇江 212013;2.扬州源悦支付技术有限公司,江苏 扬州 225000)
为满足智能卡在银行、保险、医疗等管理系统的应用需求,设计了一款基于ARM的支持双界面智能卡的读写系统。采用具有ARM Cortex-M3内核的STM32F103RBT6和近场通信收发器STRFNFCA等芯片进行相关的硬件设计。软件设计完成了对非接触式卡和接触式卡的底层驱动及应用层通信模块、LCD显示等操作;根据PBOC 2.0标准对智能卡进行金融交易包括圈存、消费、查余额等;同时,读卡器集成了Crypto 1加密算法来兼容市场上的Mifare系列卡。测试结果表明,读写系统性能稳定、功耗低、实用性强、可靠性高。
读写器;应用协议数据单元;报文鉴别码;PBOC 2.0;DES
1 引言
随着国家金卡工程的不断推进,国内各大商业银行大量推出金融IC卡。金融IC卡能与多种行业应用相结合,并在非接触式、新型支付方式上得到拓展,从而带来新型的支付方式,如IC卡的互联网支付、数字电视支付、手机移动支付等[1]。金融IC卡应用场景的变化以及支付方式的改变,对读卡终端提出了更高的安全性、稳定性、便捷性的要求,传统IC卡读卡器仅仅作为数据交互的桥梁,扩展应用不便利,不能独立地完成金融应用。
本文设计一款符合PBOC 2.0标准即《中国金融集成电路(IC)卡规范》的新型支持双界面智能卡读卡设备,不再是传统功能单一的读卡器,其在内部实现了金融交易,并按照银联规范开发网银支付功能,实现电子现金的本地圈存、消费、余额查询等金融交易;同时,在金融应用的基础上也可开发扩展应用,扩大智能卡的使用范围。
Figure 2 STRFNFCA schematic circuit diagram图2 STRFNFCA电路原理图
2 IC卡通信方式
IC卡有接触式和非接触式两种通信界面,接触式IC卡通过八个触点从读写器获取能量和交换数据,符合ISO/IEC 7816协议,包括信号和传输协议及APDU(Application Protocal Data Unit)命令等;非接触式符合ISO/IEC 14443协议,包括物理特性、射频能量和信号接口、初始化和防冲突[2]以及应用层的传输协议[3]。双界面卡是集接触式与非接触式接口为一体的智能卡,操作独立,但可以共享CPU和存储空间,具有一卡多用、高度安全、快速交易、兼容性好等特点,有广泛的应用前景。
3 系统硬件设计
3.1 系统总体设计
读写器的硬件主要包括控制模块、读写模块及外围电路、串行通信模块、显示模块等,如图1所示。控制模块主要由MCU STM32F103RBT6、存储器和晶振组成,负责整个系统的控制工作。读写模块主要由STRFNFCA读写芯片、晶振及天线组成,载波频率为13.56 MHz,模拟部分负责对IC卡的发送接收操作,数字部分则通过串口和中断与微控制器通信,天线则主要由LC低通滤波器和LC谐振电路组成。STRFNFCA部分电路原理图如图2所示。串行通信模块主要通过RS232串口通信。LCD液晶显示模块具有良好的人机交互能力,实时显示读写芯片读取的数据。
Figure 1 System block diagram图1 系统框图
3.2 系统主芯片特性
本设计方案的MCU芯片STM32F103RBT6基于ARM Cortex-M3内核32位高性能处理器,具有64个引脚、51个GPIOs、128 KB Flash、20 KB SRAM、2个ADC、4个TIMER、7通道DMA、高达9个通信接口、主频可达72 MHz,具有低功耗、高性能、接口资源丰富等特点[4]。相比传统读卡器的8位51单片机处理器,32位高性能ARM处理器不仅可以提高与IC卡的通信效率,同时可增强控制功能,扩展系统的应用功能[5]。
读写器主芯片STRFNFCA是意法半导体(ST)公司的一款可应用于13.56 MHz非接触式通信的中高集成收发器芯片,支持ISO 14443 Type A和Type B卡、ISO/IEC15693、ISO/IEC18092、NFC Forum等类型卡片;硬件特性包括内置内部帧控制器、高集成度的RF通讯模拟前端(AFE);发送和接收模式下实现自动卡检测和场检测、优化的电源管理功能;它有32个引脚,通信接口包括高达2 Mbps SPI、UATR及256 Byte指令缓存(FIFO)[6]。这些特性使得STRFNFC收发器应用于金融类读卡器、二代身份证读卡器、金融POS机、安全门禁等方面有很大的优势。
4 系统软件设计
4.1 系统初始化
为保证系统正常运行,必须在系统复位时进行初始化。其中包括系统时钟初始化、定时器配置、中断配置、SPI/UART串口初始化等操作。
部分底层软件驱动函数:
(1)hw_config.c:硬件配置函数,对MCU外设RCC、NVIC、TIMER、EXTI、GPIO等进行配置、使能操作。
(2)drv_strfnfca.c:STRFNFCA驱动函数,处理STRFNFCA通过UART或SPI接口跟主机发送、接收信息,包括初始化STRFNFCA、配置引脚、设置通信波特率、开启时钟、数据传输等。
(3)drv_uart.c和drv_spi.c:驱动函数使能UART和SPI接口收发信息,串口通过配置可选。
4.2 智能卡与读写器通信模块
4.2.1 非接触式ISO 14443协议层对Type A卡的操作
(1)下电状态,在空闲状态的PICC(Proximity Card 邻近卡)监听REQA(Request Command,type A寻A类卡)或WUPA(Wake Up command for PICC type A)命令后,进入就绪状态。
(2)就绪状态,卡片接收基于二进制搜索算法的防冲突命令(Anticollision),得到一张卡的完整UID(Unique Identification)后,进行选卡操作,选中的卡片进入激活状态。
(3)激活状态下选卡返回值选卡应答SAK(Select Acknowledge)来判断卡片是否支持ISO 14443-4,支持则发送请求应答RATS(Request for Answer To Select)命令,卡片返回值ATS(Answer To Select)。
(4) PPS(Protocol and Parameter Selection)指协议和参数选择命令,若支持可变参数则根据参数值进行相应设置,没有参数改变则直接进行数据传输。
(5)发送HLTA(HALT command)命令,卡片进入停止状态,此状态卡片只响应WUPA命令。
读写设备对A类卡的激活流程图如图3所示。
Figure 3 Activation of a PICC Type A by a PCD图3 读写设备对A类卡的激活流程图
读写系统经过硬件调试、底层软件程序设计开发,系统各模块和卡片间可进行数据传输和交换,读写器完成对IC卡进行的符合ISO/IEC 14443协议指令集如寻卡、初始化、防冲突及RATS等底层基本操作。实验结果如表1所示。
Table 1 Software flow and experimental results
4.2.2 接触式界面ISO/IEC7816协议层命令
除支持以上的T=0型字符传输通信协议,读卡器还支持T=1的块传输,定义了三种基本块类型[7]:信息块(I-block)用于传送应用层信息;接收准备块(R-block)用于发送肯定或否定的确认信息,它的信息域不出现;管理块(S-block)用于读卡设备和卡片之间交换控制信息。块帧即一个块由一串字节组成,每个字节以异步字符的形式传输。块传输主要指应用协议数据单元(APDU)命令。
C-APDU命令结构包括命令头:CLA INS P1 P2(CLA为类型,INS为指令,P1、P2为命令参数,如:消费交易命令 80h 54h 01h 00h),条件体:Lc Data Le(Lc为发送命令的长度,Data为输入数据,Le为期望返回的数据长度)。
R-APDU响应格式:Data SW1 SW2(Data数据域是可选的,指卡片返回的数据,SW1、SW2是状态字,如9000表示指令执行成功)。
4.3 MAC算法实现
智能卡信息的有效读取和写入必须基于相应的应用协议数据单元即APDU命令,终端需使用对称密钥体系中3DES加密数据域并用指令头及加密后的数据产生校验码MAC(Message Authentication Code),卡在命令执行前先要验证校验码、解密数据域并根据数据域执行指令。为保证数据的可靠性、完整性和对发送方的认证需用安全报文传送。安全报文传送格式如表2所示。
Table 2 Secure messaging format
IC卡与读卡器终端数据通信生成校验码MAC时需建立过程密钥,过程密钥是在交易过程中用可变数据产生的单倍长密钥,只能在某过程/交易中使用一次。不同交易类型中产生过程密钥的消费子密钥或圈存子密钥即K值不同,输入数据也由交易类型决定。16 Byte子密钥K=Kl||Kr(Kl为密钥左半部分,Kr为密钥右半部分),过程密钥KMA=3DES(Data,K)=DES{DES-1[DES(Data,Kl),Kr],Kl} 。
把待发送的数据按顺序串联一起,每8字节为单位分成数据块(最后一个数据块可能是1~8个字节,其后加上16进制‘80’字节,然后用‘00’填充到8个字节)。用MAC过程密钥对数据块进行加密,过程密钥KMA由DES或3DES算法生成,依照图4方式产生MAC。最终得到的是从计算结果左侧取得的4字节长度的MAC(根据第二步中产生的数据块长度的不同,有可能在计算中会多于或少于四步)。
4.4 电子存折ED的圈存和消费交易流程
本系统智能卡支持DES/3DES 加密算法[8]、支持多种应用、强大的支付功能(电子钱包ED和
Figure 4 MAC algorithm for single-length DES key图4 单长度DES密钥的MAC算法
电子存折EP)、符合ISO 7816-1/2/3/4协议、符合PBOC2.0标准。智能卡应用指令集有:验证/更改PIN(Personal Identification Number)码、圈存、消费/取现、圈提、查询余额、交易确认、取现初始化、圈存初始化、消费初始化、圈提初始化、修改透支限额初始化、修改透支限额等。
圈存交易指持卡人将其在银行相应账户上的资金划入电子存折或电子钱包中的过程。这种交易必须在金融终端上联机进行并要求提交个人识别码(PIN)[9]。
Figure 5 Credit for load transaction flow chart图5 圈存交易处理流程图
根据软件流程及PBOC 2.0标准,在keil uVision4集成开发环境用C语言开发应用程序并加载到已调试好的硬件设备中,读写器可按交易流程选中存放密钥的文件、校验PIN码、查询余额、初始化圈存,根据MAC求解算法算出圈存交易待发送指令中的MAC值,验证正确后进行圈存操作。同样,可进行消费交易。为验证系统的软硬件设计及数据传输的正确性,进行读卡测试实验,实验结果如表3所示。
Table 3 Financial transaction testing data sheet
1 PCB:协议控制字节Protocol Control Byte;2 CRC:循环冗余码校验Cyclic Redundancy Check;3 TAC:交易验证码Transaction Authorization Crypogram
测试实验采用一张信息完全的双界面测试卡,根据设备返回的信息解析数据,系统可按预定金额执行ED和EP的圈存和消费交易,读写系统完成交易的安全认证、写卡、修改卡片金额。此功能验证了前面所述的金融交易及安全机制的可行性和功能实现。
5 Crypto 1加密算法的实现
Mifare系列IC卡是NXP公司的产品,它采用了一种NXP特有的加密算法来完成认证和加解密运算。将同样的算法引擎放置在NXP的专用Mifare读写基站芯片中,认证过程由基站芯片代替用户系统与Mifare芯片之间完成。这一认证过程就是Mifare系列芯片的三重认证[10],其实质是基站芯片与Mifare芯片之间相互传递随机数以及随机数的密文,通过对随机数密文的解密比对实现对卡片的认证。这个算法和机制已经被破解,移植Mifare系列卡Crypto 1加密算法到相应读写器设备即可兼容Mifare卡。
Crypto 1算法是通过一个48位线性反馈移位寄存器(lfsr)和随机数产生寄存器(prng)不断地更新(加密)数据。对明文每个字节加密即8次循环更新48位lfsr状态值,随机地对每一步的值进行异或运算,返回密钥流。
循环迭代48位lfsr状态值函数:
static uint8_tmifare_update(struct _crypto1_state* conststate, const uint8_tinjection, const uint8_tfeedback)
{const uint64_tx=state→lfsr;
const uint8_tks=mf20(state→lfsr);
state→lfsr=(x>>1)|((((x>>0)∧(x>>5)∧(x>>9)∧(x>>10)∧(x>>12)∧(x>>14)∧(x>>15)∧(x>>17)∧(x>>19)∧(x>>24)∧(x>>25)∧(x>>27)∧(x>>29)∧(x>>35)∧(x>>39)∧(x>>41)∧(x>>42)∧(x>>43)∧injection∧(feedback?ks:0))&1)<<47);
returnks;
}
用Crypto1算法对Mifare卡进行三重认证的软件实现过程如下:
(1)读卡器发送要存取的扇区号并选中密钥KeyA或KeyB;
(2)Mifare卡片返回4字节卡片随机数给读卡器(一重);
(3)读卡器产生随机数和过程密钥(UID+KeyA/B+卡随机数+读卡器随机数产生Mifare过程密钥)并发送8字节数据(4字节改变的读卡器随机数和4字节加密卡片随机数)给卡片(二重);
(4)卡片验证加密的卡片随机数并计算加密的读卡器随机数然后返回4字节返回值给读卡器(三重);
(5)读卡器通过比对加密的读卡器随机数来验证卡片。
集成Crypto1加密算法到STRFNFCA读卡器,进行三重认证操作,每一步验证通过后,实现卡片和读卡器的相互认证,可对Mifare卡进行读、写、增值、减值、存储、传送等内存操作从而兼容Mifare系列卡。
6 结束语
本文基于ARMCortex-M3微处理器完成了接触式、非接触式IC卡读写器的硬件设计,遵循ISO/IEC14443协议、ISO/IEC7816协议和PBOC2.0标准完成了支持双界面IC卡读写器的设计和开发,读写器可实现IC卡的金融交易,具有近场通信NFC功能,可单独用于支付系统亦可嵌入到POS机终端及其它应用系统;读写器集成了Crypto1加密算法,可兼容市场上主流的Mifare系列卡。根据IC卡的不同行业应用,读卡终端可实现满足不同需求的应用,提供一种便捷的支付消费方式,在银行、保险、医疗等领域有很好的市场前景。
[1]ZhouXuan-qian.TransformationtimetablefrombankcardtoICcard[N].ShanghaiFinancialNews,2010-11-9(4).(inChinese)
[2]ISO/IECFDIS14443-3:2000(E).Identificationcards-Contactlessintegratedcircuit(s)cards-Proximitycards-Part3:Initializationandanticollision[S].ISO/IECFOS,2000.
[3]ISO/IECFDIS14443-4:2000(E).Identificationcards-Contactlessintegratedcircuit(s)cards-Proximitycards-Part4:Transmissionprotocol[S].ISO/IEC,2000.
[4]STM32referencemanual(RM0008)[R].DocID13902Rev13,STMicroelectronics, 2011.
[5]BaiCui-cui.DesignandimplementationofcontactlessCPUcardreader[J].RadioCommunicationsTechnology, 2012,38(5):70.(inChinese)
[6]STRFNFCANearfieldcommunicationtransceiverdatasheet[R].DocID023077Rev9,ST,2012.
[7]ISO/IEC7816-3:2006(E).Identificationcards-Integratedcircuitcards-part3:Cardswithcontacts-Electricalinterfaceandtransmissionprotocols[S].ISO/IEC,2006.
[8]GemGoldR2.1referencemanualversion1.1 [Z].GEMPLUS, 2000.
[9]Chinafinancialintegratedcircuitcardspecifications-part2:Electronicpurse/electronicdepositapplicationspecification[S].ThefinancialindustrystandardofthePeople’sRepublicofChinaJR/T0025.2-2010,2010.(inChinese)
[10] MF1S50YYX:Mifare classic 1k-mainstream contactless smart card IC product data sheet[S].Rev.3.0-2,2011.
附中文参考文献:
[1] 周轩千.银行卡IC化设定时间表[N].上海金融报,2010-11-9(4).
[5] 白翠翠.非接触式CPU卡读写器的设计与实现[J].无线电通信技术,2012,38(5):70.
[9] JR/T 0025.2-2010,中国金融集成电路(IC)卡规范第2部分:电子钱包/电子存折应用规范[S].北京:中华人民共和国金融行业标准.
PANXin-na,born in 1982,MS candidate,her research interest includes embedded system.
鲍可进(1958-),男,江苏靖江人,教授,研究方向为嵌入式系统。E-mail:bkj@ujs.edu.cn
BAOKe-jin,born in 1958,professor,his research interest includes embedded system.
唐宏斌(1968-),男,江苏扬州人,工程师,研究方向为嵌入式系统。E-mail:tanghongbin@sina.com
TANGHong-bin,born in 1968,engineer,his research interest includes embedded system.
DesignandimplementationofdualinterfaceICcardreaderbasedonARM
PAN Xin-na1,BAO Ke-jin1,TANG Hong-bin2
(1.School of Computer Science and Telecommunication Engineering,Jiangsu University,Zhenjiang 212013;2.Yangzhou Yuanyue Payment Technology Co. LTD, Yangzhou 225000,China)
To meet the smart cards’application requirements in the banking, insurance, medical management systems, a smart card reader system is designed based on ARM. The chip STM32F103RBT6 with ARM Cortex-M3 and the near field communication transceiver STRFNFCA are used in the hardware design. In the process of software design,it gives initialization operations and application layer data transactions,LCD display between contactless/contact IC card and reader,implements smart card’s financial transactions including credit for load, debit for purchase and getting balance transactions, and integrates Crypto 1 encryption algorithm into reader so as to be compatible with Mifare cards.Experimental results indicate that the system has stable performance, low power consumption,strong practicability and high reliability.
reader;APDU;MAC;PBOC 2.0;DES
1007-130X(2014)05-0991-06
2012-11-23;
:2013-02-25
TP333.91
:A
10.3969/j.issn.1007-130X.2014.05.034
潘新娜(1982-),女,河南通许人,硕士生,研究方向为嵌入式系统。E-mail:panxinna@126.com
通信地址:212013 江苏省镇江市江苏大学计算机科学与通信工程学院
Address:School of Computer Science and Telecommunication Engineering,Jiangsu University,Zhenjiang 212013,Jiangsu,P.R.China