APP下载

非接触式CPU卡的空中传输协议的软硬件设计※

2015-09-25张玉川王彬

单片机与嵌入式系统应用 2015年3期
关键词:IC卡寄存器字节

张玉川,王彬

(杭州电子科技大学电子信息学院,杭州310018)

引 言

普通的逻辑加密卡,如Mifare1卡(即M1卡),由非易失性存储器和硬件加密逻辑组成,通过校验密码的方式来保护卡内的数据,具有一定的安全性,但这只是低层次的安全保护,无法防范恶意性攻击,因此无法满足更高的安全性和更复杂的多应用需求。而CPU卡内部具有微处理器芯片,且固化有COS操作系统,可执行严谨的加密运算,安全性极高,灵活性强,且存储容量大。来看一组金融领域的数据,截至2014年6月底,全国金融IC卡累计发行超过8.7亿张,其中上半年新增2.84亿张,占新增银行卡总量的82%,商户POS和ATM实现全面受理,行业应用不断涌现。随着应用环境的日渐成熟,各商业银行将在2015年发行纯芯片卡。可以看到,原来的磁条卡时代正在缓缓落幕,银行卡“芯”时代已成大势所趋,与此同时,相应的终端机具需求量必将剧增,这给企业带来了巨大的商业契机。

本文在研究了ISO/IEC14443标准以及相关的金融标准基础上,基于RC632射频收发芯片,对非接触式CPU卡和终端机具之间通信所采用的空中传输协议进行了设计,并给出测试结果。

1 ISO14443协议简介

ISO14443协议是13.56MHz下非接触式IC卡的国际标准协议,由4部分组成:①物理特性,规定了接近式IC卡(PICC)的物理特性;②射频功率和信号接口,规定了在接近式耦合设备(PCD)和接近式IC卡(PICC)之间提供功率和双向通信的场的性质与特征;③初始化和防冲突,描述了PICC进入PCD工作场的轮询,规定了在PCD和PICC之间通信的初始阶段所使用的字节格式、帧格式和帧时序,以及在冲突发生的情况下如何从多张卡片中选出一张(防冲突)的方法[1];④传输协议,规定了非接触式应用中具有特色的半双工传输协议。随着应用场景的不断多元化,尤其是在快速消费领域,由于卡片和终端机具的需求量与日俱增,ISO14443协议应用也越来越广泛。

2 系统硬件部分

2.1 MCU控制电路

本系统中MCU芯片选取STM32F103RBT6,它是基于ARM Cortex-M3内核的高性能32位微处理器,具有128KB Flash、20KB SRAM,主频可达72MHz,且具有功耗低、价格低、接口资源丰富等特点。

2.2 射频收发电路

射频收发电路是本系统的核心部分,由RC632应用电路和天线组成。RC632是NXP公司推出的一款多协议非接触式读写芯片,集成了在13.56MHz下所有类型的被动非接触式通信方式和协议,支持ISO14443(包括Type A和Type B)和ISO15693(包括I·CODE1)两种国际标准。发送器电路设计成具有非常低的阻抗,只需要很少的用于匹配和滤波的无源器件就可以直接驱动天线,操作卡片的距离可达10cm,其引脚TX1和TX2上传递的信号是由包络信号调制的13.56MHz载波信号,这两个信号可通过寄存器TxControl进行控制。接收器设计有一个正交调制电路,该电路从输入到RX引脚的13.56MHzASK调制信号中解析出副载波信号,经过放大滤波后输入到相关性电路,对相关性结果数字化后输入到数字电路。RC632的并行接口可直接连接到任何8位微处理器,这给读写器及终端的设计带来了极大的灵活性,另外,RC632支持通过SPI方式连接到微处理器[3]。

图2 实物图

本系统采用SPI方式将RC632连接到MCU,其原理图如图1所示。图中的MOSI_rf、MISO_rf、SCK_rf、NSS_rf四个引脚需连接到MCU的SPI外设,C16f、C17f两端的GND_rf网络需要绘制天线线圈(天线的设计不在本文范围内)。硬件焊接调试完成后,其实物图如图2所示。

3 系统软件部分

与M1卡一样,非接触式CPU卡(称PICC)符合ISO14443-1/2/3标准,不同的是它可以通过RATS命令进入到CPU模式,文后都按照ISO14443-4的块传输协议与读写设备(称PCD)进行信息交互。PCD访问PICC的工作流程如图3所示。激活CPU卡的过程总共包括寻卡、防冲突、选卡、RATS四步,其中RATS是在判断选卡命令的响应支持ISO14443-4标准的情况下发送的,以便进入CPU模式。

图1 射频收发电路

根据OSI参考模型分层原理设计的思想,对PCD和PICC之间的半双工块传输协议进行概况,可抽象出3层,如图4所示。物理层处在该层次结构的最底层,它利用空中射频信道为上层协议提供了一个传输数据的物理媒介,在这一层数据的单位是位;数据链路层起着承上启下的作用,负责在物理层提供的传输媒介上将应用层的数据加工后发送出去;应用层则是提供符合某行业标准的APDU命令。由于应用层和数据链路层联系很紧密,故将二者合并为协议层予以介绍。

3.1 物理层设计

图3 PCD访问PICC的工作流程

图4 半双工传输协议软件设计的层次划分

物理层在双方通信过程中起着桥梁的作用,本系统中担此重任的是射频收发芯片RC632。在程序初始化时,配置RC632的相关寄存器,使芯片工作在ISO14443Type A模式。针对不同的传输要求,需及时调整相关寄存器的值,使PCD和PICC之间的底层“对话”按照规定的比特流进行,比如通信采用短帧还是标准帧可通过调整BitFraming寄存器实现,有无奇偶校验或者CRC校验可通过调整ChannelRedundancy寄存器实现。RC632的状态由可执行特定命令集的内部状态机决定,这些命令通过将相应的命令码写入到Command寄存器来启动。本系统中主要用到了Transceive指令,其指令码是0x1E,该指令从FIFO缓冲区中取出数据并送到发送器发送出去,接收器在间隔约定时间后自动启动,所有从RF接口接收到的数据再通过FIFO缓冲区返回;而处理一个命令所需要的变量或者数据,则要通过FIFOData寄存器写入到FIFO缓冲区,然后进行交换。

概括起来,RC632的射频收发过程如下:在Idle命令有效时,将所有要发送到卡片的数据通过FIFOData寄存器写入到FIFO,之后将Transceive指令码写入到Command寄存器来启动收发过程,然后再通过FIFOData寄存器从FIFO中取出返回的数据。

3.2 协议层设计

要运行一个应用,还需要在终端上实现一个附加的应用协议层,这个协议层包括向卡片发送命令、卡片内处理命令和返回IC卡处理响应等步骤。应用层发出的命令报文和卡片返回到应用层的响应报文统称为应用协议数据单元(APDU)。响应和命令是相对应的,通常被称为APDU命令-响应对;在一个APDU命令-响应对中,命令报文(C-APDU)或响应报文(R-APDU)都可能包含数据[4]。

C-APDU由4字节的必备头和变长的条件体构成,如图5所示。其中,CLA表示指令类型,INS表示指令码,P1表示指令参数1,P2表示指令参数2,Lc表示命令数据域中发送的数据字节数,Data表示命令发送的数据串,Le表示期望返回的数据字节数。当Le存在且值为0时,表示需要最大字节数(256字节);在命令报文需要时,Le可始终被设为00。

R-APDU由变长的条件体和两字节的必备尾组成,如图6所示。其中,Data表示响应中接收的数据串,SW1、SW2表示卡片执行命令的返回代码。当SW1的高半字节为9,且低半字节不为0时,其含义依赖于相关应用;当SW1的高半字节为6,且低半字节不为0时,其含义与应用无关[5]。

图5 C-APDU格式

图6 R-APDU格式

PCD和PICC之间的半双工协议支持块格式传输,块格式由一个开始域(强制)、一个信息域(可选)、一个结束域(强制)组成,如图7所示。其中,方括号中的数据为可选数据。本系统开始域中只含有强制的PCB(协议控制字节),信息域中的数据是基于某行业标准的APDU命令,结束域则是CRC校验,该校验值可由射频芯片RC632自动产生。

图7 块格式

协议控制字节PCB用于传送控制数据传输所需要的信息。根据PCB编码的不同,协议定义了块的3种基本类型:用于为应用层的使用传送信息的信息块(I-块);用于传送确认或不确认的接收准备块(R-块);用于在PCD和PICC间交换控制信息的管理块(S-块)[6]。PCB的编码依赖于它的类型,具体可参看协议ISO14443-4。需要详述的有这样一个关键点:I-块和R-块的PCB中最低位表示块号,它遵循如图8所示的特定编码规则。具体描述如下:

①PCD规则:对于当前被激活的PICC,PCD块编号应初始化为0;当接收到一个块编号与当前块编号相等的正确的I-块或正确的R-块(ACK)时,PCD在发送任意一个块之前,应反转当前的PICC块编号。

②PICC规则:在激活时,PICC块编号应初始化为1;当接收到一个I-块,PICC应在接收I-块之后立即反转它的块编号;当接收到一个块编号不等于目前的PICC块编号的R-块(ACK)时,PICC应在接收R-块(ACK)之后立即反转它的块编号[7]。

图8 PCB中块编号规则

关键部分代码略——编者注。

4 测 试

选取复旦微电子的非接触式CPU卡做测试。点击“寻找卡片”按钮,依次执行图3中的寻卡、防冲突、选卡3个步骤,获得卡片序列号和卡片类型;点击“RATS”,发送选择应答请求来激活CPU模式,PICC返回ATS响应“1078 80B0 0220 9000 0000 0000 26BA B4A2”,具体含义如表1所列;发送表2所列的取随机数指令,PICC返回表3所列的4字节随机数;发送表4所列的选择MF主文件命令,PICC返回表5所列的嵌套TLV格式的文件控制信息(FCI)。测试效果图略——编者注。

表1 ATS响应数据

表2 取随机数指令

表3 取随机数指令应答

表4 选择MF主文件指令

表5 选择MF主文件指令应答

结 语

本文硬件电路采用ARM内核的32位微处理器芯片STM32F103RBT6和NXP公司的RC632来完成,软件开发则从物理层和协议层两个层面对PCD和PICC之间的无线射频通信进行设计。经测试证明,该读写设备工作稳定、抗干扰能力强、读卡准确且操作距离大于5cm。另外,还可以进行扩展改进,如增加GPRS模块再结合相关的非接触式IC卡支付规范,便可实现方便、快捷的移动支付。

编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。

[1] ISO/IEC14443-3.Identification Cards-Contactless Integrated Circuit Cards-Proximity Cards-Part 3:Initialization and Anticollision[S] .

[2] 潘新娜,鲍可进,唐宏斌.基于ARM的双界面IC卡读写器的设计与实现[J] .计算机工程与科学,2014,36(5):991-996.

[3] NXP Semiconductors.CL RC632Multiple protocol contactless reader IC Product data sheet[R] .Rev.3.5-10November 2009.

[4] JR/T 0025.3—2013.中国金融集成电路(IC)卡规范第3部分:与应用无关的IC卡与终端接口规范[S] .

[5] JR/T 0025.8—2013.中国金融集成电路(IC)卡规范第8部分:与应用无关的非接触式规范[S] .

[6] ISO/IEC14443-4.Identification Cards-Contactless Integrated Circuit Cards-Proximity Cards-Part 4:Transmission Protocol[S] .

[7] JR/T 0025.11—2013.中国金融集成电路(IC)卡规范第11部分:非接触式IC卡通讯规范[S] .

猜你喜欢

IC卡寄存器字节
STM32和51单片机寄存器映射原理异同分析
工商业IC卡控制器改造为物联网控制器实践
No.8 字节跳动将推出独立出口电商APP
Lite寄存器模型的设计与实现
No.10 “字节跳动手机”要来了?
在用电梯加装外接式IC卡运行控制系统设计改进
简谈MC7字节码
长春开通公交IC卡充值平
湖北省高速公路IC卡管理系统浅谈
高速数模转换器AD9779/AD9788的应用