笑对挫折的事例:CPU卡中T=0通讯协议的分析与实现
来源:百度文库 编辑:中财网 时间:2024/05/12 06:34:19
CPU卡中T=0通讯协议的分析与实现
摘要:T=0是国际标准中规定的一种接触式CPU卡通讯协议。结合开发实践,将该协议分为四个层次,主要从CPU卡的角度出发,结合终端,从两个方面系统地阐述了该协议的特点和实现过程,并对T=0协议的优缺点进行了分析,目前已将开发成果应用于实际中。 关键词:卡片操作系统(COS) 终端应用层(TAL) 终端传输层(TTL) 应用协议数据单元(APDU) 传输协议数据单元(TPDU)IC卡的应用越来越广泛,从存储卡到逻辑加密卡,目前CPU卡已经逐渐在应用中占据主导地位。CPU卡根据通讯协议可分为两种:接触式和非接触式。接触式CPU卡主要采用两种通讯协议:T=0和T=1通讯协议。T=0是异步半双工字符传输协议,T=1是异步半双工块传输协议。目前T=0通讯协议的应用较为广泛,国内外大多数CPU卡都支持该协议,在金融交易中也采用这种通讯协议。为了便于说明问题,本文从T=0协议的功能出发,将该协议分为四个层次:物理层、数据链路层、终端传输层和应用层,见图1。由于该协议的特殊性,终端传输层与应用层联系非常紧密,实现起来比较繁琐,在CPU卡中,这些任务通过卡片操作系统(COS)来实现。终端在与卡的信息交换中,表1 终端对过程字节的处理 过程字节 TTL执行的操作 与INS字节相同 TTL向卡片发送或从卡片接收所有数据 INS字节的补码 TTL向卡片发送或从卡片接收下一个字节 ‘60‘ TTL延长等待时间 ‘61‘ TTL等待第二个过程字节‘xx‘并根据‘xx‘发
GET RESPONSE命令取回数据 ‘6C‘ TTL等待第二个过程字节‘xx‘并根据‘xx‘重发上一条命令 表2 卡返回的状态字节编码 第一个状态字节值 TTL执行的操作 ‘6‘或‘9x‘(除表1中的值外) TTL等待第二个过程字节SW2 当返回的过程字节或状态字节均不是表中规定的值时,终端在接收到的无效字符的起始位降沿开始的9600个etu时间范围内启动释放序列。3 T=0协议的终端传输层和应用层的实现数据链路层保证了TTL与卡片正常的数据交换。在此基础上,TTL定义了命令和响应APDU(Application Protocol Data Unit)通过TTL和卡片之间的数据传输机制,因此该层协议定义了APDU到TPDU(Transport Protocol Data Unit)的映射机制以及TPDU和卡片之间如何来完成数据的交换。根据命令和响应APDU包含的数据情况,共有四种不同的APDU,TTL应能够对四种情况进行处理,完成终端和卡之间的数据交换。由于T=0协议的特殊性,终端传输层和应用层并没有完全隔离开。为了便于说明问题,先简要描述一下应用层,然后将终端传输层和应用层结合起来进行说明。应用层协议定义了C-APDU和R-APDU的具体结构。应用层之间的数据交换都是由一个命令-响应对完成的,TAL通过TTL将C-APDU送给集成电路卡(ICC),ICC处理完后将处理结果组成R-APDU通过TTL送给TAL。APDU由命令报文和响应报文共同组成,根据C-APDU和R-APDU是否包含数据域,APDU有四种情况,见表3。
表3 APDU包含数据的情况 命令APDU数据域 响应APDU数据域 1 无 无 2 无 有 3 有 无 4 有 有 C-APDU由一个强制性的四字节命令头CLA、INS、P1、P2和一个可变长度的条件体组成。CLA为命令类型字节;INS为命令代码字节;P1和P2为命令参数;条件体包括命令数据域长度字节Lc,命令数据域和响应返回的最大长度字节Le。根据不同的命令,条件体的组成也不相同,C-APDU有四种情况,见表4。
表4 C-APDU的结构 情 况 C-APDU结构 1 CLA INS P1 P2 2 CLA INS P1 P2 Le 3 CLA INS P1 P2 Lc Data 4 CLA INS P1 P2 Lc Data Le R-APDU由一个最大长度为Le的数据域和一个强制性的两字节状态代码组成,状态代码给出了IC卡对当前命令的处理结果。对于C-APDU,终端先将其映射成T=0传输层的格式,然后通过TTL传送给卡片,卡片返回的数据和状态先返回给TTL,再映射成R-APDU返回给TAL。这里根据四种不同的情况,分析了C-APDU到C-TPDU以及R-APDU到R-TPDU的映射方法,并对情况2和情况4时,如何使用GET RESPONSE命令进行了说明。C-APDU到C-TPDU的映射根据命令的情况决定,卡片返回的数据和状态到R-APDU的映射要根据返回数据的长度来判断。对于卡片返回的过程字节“61xx”和“6Cxx”,将用于TTL和卡片之间进行数据交换,当卡片返回“61xx”时,表示命令没有结束,TTL不将过程字节返回给TAL,而是从TTL直接向卡片发出GET RESPONSE命令,取回上一条命令应该返回的数据。并返回给TAL。当卡片返回“6Cxx”时,TTL将根据“xx”的值调整并重发上一条命令。下面分别对四种命令情况进行分析。(1)当C-APDU和R-APDU均不含有数据时,将C-APDU的CLA、INS、P1、P2映射为C-TPDU的CLA、INS、P1、P2、C-TPDU的P3置为“00”,卡片接收到C-TPDU后,根据命令头决定该命令所含数据的情况。TTL接收到卡片返回的状态后,该命令完成,TTL将状态字节强制性地加到R-APDU的尾部。(2)当C-APDU不含有数据而R-APDU含有数据时,
(5)对于命令报文中包含数据域,同时又需要卡片返回数据的命令,T=0协议不能用一条命令来实现,必须分为两步实现:第一条命令为卡片提供数据,然后用另外一条相关的命令来取回数据。这样给卡片的编程带来很大麻烦,同时卡片内存中必须保留上一次操作需要返回的数据。这时如果不及时发送取数据命令而发送其它命令,可能会将敏感数据泄漏,并产生其它问题。这些都是T=0协议考虑不周的地方。(6)终端传输层需要根据卡片返回的子程字节和状态字节执行相应的操作,使终端对数据的处理复杂化。(7)由于目前大多数接触式终端只支持T=0通讯协议,因此该协议仍将得到广泛的应用。随着智能卡芯片功能的增强,对于数据传输量较大的应用,该协议将不再适用,面向块的异步半双工接触式传输协议T=1将体现出优势。
PR1613与计算机的通讯协议是什么
TCP协议的通讯过程
以太网的通讯协议是什么!
求AD2150矩阵的通讯协议与RS232的连接方法
c/s和b/s在“网络流量采集与分析系统的设计与实现”中怎样应用
LonWork通讯协议是免费的吗?
哪位大虾知道AccessNet2通讯协议的?
有谁知道QQ的通讯协议
10BASE-T局域网的构建与实现?
windows 与 linux 之间进行通讯需要什么协议?
软件与硬件间的通讯一般是怎样实现的?
如何通过C#实现PC机与单片机的通讯(很急啊!!1)
家庭组网上Internet的方法分析与实现
局域网中采用共享文件夹,实现文件传输采用的TCP/IP协议栈中应用层的什么协议
CDMA1X的协议怎么分析?
VB中怎样通过重定向实现和DOS程序的通讯
由于您的计算机不能与远程计算机用PPP控制协议通讯 连接尝试失败 ……
怎么实现广域网到局域网的通讯
can总线通讯协议
MPI通讯协议
局域网中拓扑设计是不是实现各种网络协议的基础?
在VB中编写点对点聊天程序怎样实现多媒体文件的传送?(tcp协议)
中游中与游戏客户端通讯失败
通信与通讯的区别