CPU卡中T=0通讯协议的分析与实现
表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含有数据时,将C-APDU的CLA、INS、P1、P2、Le映射为C-TPDU的CLA、INS、P1、P2、P3,其中P3可以置为“00”,也可以置为需要返回的数据字节数,卡片接收到C-TPDU后,如果命令处理失败,卡片直接将状态代码通过TTL返回给TAL;当命令能够正常处理时,如果P3指定的字节数能够正确返回,待卡片内部应用数据处理完成后,这时卡片首先返回给TTL该命令的过程字节,通知TTL准备接收卡片数据缓冲区中的数据,然后卡片直接将P3字节的数据和状态字节通过TTL返回给TAL,否则,卡片只将过程字节“6Cxx”或“61xx”返回给TTL这一层。当过程字节为“6Cxx”时,TTL根据xx重发命令取回数据,当过程字节为“61xx”时,TTL发GET RESPONSE命令取回数据。
(3)当C-APDU含有数据而R-APDU不含数据时,将C-APDU的CLA、INS、P1、PS、Lc映射为C-TPDU的CLA、INS、P1、P2、P3,待卡片对C-TPDU检查通过后,卡片直接将过程字节返回给TTL,TTL根据返回的过程字节继续向卡片发送P3字节的后续数据。待数据接收完后,卡片对应用数据进行处理,然后将处理结果以状态字节的方式通过TTL返回给TAL。
(4)当C-APDU和R-APDU均含有数据时,将C-APDU的CLA、P1、P2、
- Amazon Kindle 2全球无线版——拆解&深度分析(04-09)
- 基于SPCE061A的射频读写器信号分析系统设计(08-26)
- 安捷伦与美国海军签手持式频谱分析仪大合同(12-01)
- 基于频谱分析来的RF功率和寄生噪声辐射限制(07-25)
- 矢量网络分析仪在移动网络建设和维护中的应用(12-05)
- 安捷伦保持业界50GHz最高噪声测量精度(12-10)