智能卡数据传输T1传输协议及详解

智能卡数据传输T=1传输协议

类别:消费电子阅读:883

T=1传输协议是智能卡的异步半双工通信协议。它立足于国际标准ISO/IEC 7816-3。EMV 规范也和此协议有关。T=1协议是面向字组的协议,这就是说一个字组是卡和终端之间可以传输的最小数据单元。

这项协议以严格的层次划分为特点,可作为数据链路层归入OSI参考模型中。在这种意义上,层次划分也就意味着数据指向较高的层次,诸如应用层,并可完全由数据链路层透明地处理。除了这一层直接和所传输的数据的内容的解释与修改有关之外,不再需要别的层次。

特别是报文的安全性需要严格地遵守层次划分,只有这样才能使用户加密的数据通过接口而不必求助于复杂的方法或技巧。目前,T=1是惟一的国际智能卡协议可以使安全数据得以在其所有变型的情况下传输而没有任何问题或危及其安全性。

传输的过程开始于卡送出ATR之后,或在成功执行了PTS之后。第1个字组由终端发送,下一个则由卡发送。于是,通信按此方式继续,发送权在终端与卡之间轮换。

顺便提及,T=1协议的应用不限于智能卡/终端的通信,它被用于多种终端和它们与之相连的计算机间交换有用的数据和控制数据。

数据传输率对任何协议自然都是一个最令人感兴趣的方面,表1列出了T=1协议传输某些典型命令的时间。

表1 T=1传输协议对某些典型命令的数据传输时间

(时钟频率为3.5712MHz,分频值为372,X0R差错检测码,每条命令有2位停止位和8位数据字节,C=命令,R=应答)1,字组结构所传送的字组实质上用于两种不同的目的,其中之一是透明传输的应用专用数据,另一个则是传输协议控制数据或对传输差错的处理。

传输的字组由开始的组头字段,信息字段和最后的组尾字段组成,组头和组尾字段是强制性的,必须总是发送的。相反,信息字段是可选的,它含有应用层的数据,它可能是发送给

智能卡的命令APDU或是来自卡的应答APDU。传输字组的结构如图1所示。

图1 T=1传输字组的结构在T=1中有三种基本的不同类型的字组:信息字组、接收确认字组和系统字组。信息字组(I字组)用于透明地交换应用层的数据。接收确认字组(R字组),它不含有任何数据字段,被用于对接收的认可或否认。系统字组(S字组)用于和协议本身有联系的控制信息,取决于特定的控制信息,它们可能有一个信息字段。

2.组头字段组头字段含有三个子段:结点地址(NAD),协议控制字节(PCB)和长度(LEN),它为三字节长并含有对实际传输字组的控制和指针数据。这三个子段的编码见表2~表5。

1)结点地址NAD(Node ADdress)组头字段的第1个字节被称为结点地址(NAD)字节,它含有字组的目标和源地址,它们的每一个用三位编码,如果未用地址,则有关位置为0。此外,为了和老的微控制器相容,对EEPROM或EPROM的编程电压提供了控制。然而,这一点没有实际应用,因为现在的所有智能卡微控制器在芯片内都有一个电荷泵。

表2 结点地址(NAD字段)

2)协议控制字节PCB(Protocol Control Byte)接着结点地址的子段是协议控制字节(PCB)。如同名字所暗示,它用来控制和管理传输协议,这就增加了所需的编码数量,PCB 字段主要用来编码字组类型,以及有关的补充信息。

表3 I字组的PCB字段

表4 R字组的PCB字段

表5 S字组的PCB字段

3)长度LEN(LEngth Field)字节的长度字段(LEN)以十六进制的形式指明信息字段的长度,其值可为…00?至…FE?。编码…FF?目前未用而留各未来扩充之用。

3,信息字段在I字组中,信息字段起着应用层数据(OSI第7层)的集装箱的作用。此字段的内容被完整而透明地传送,这就是说此内容由传输协议直接送出,而不经任何分析或评估。

在S字组中,这个字段传送关于传输协议的数据,这是此字段的内容用于传输层的惟一情形。

按照ISO标准,信息字段的大小范围为…00?至…FE?(254)字节,…FF?(255)被ISO为未来应用而保留。终端和卡可以有不同大小的I字段。终端I字段的缺省大小为32字节的接口设备信息字段大小(Inf.。rmation Field Size for the interface Device),它可以通过特殊的s字段来改变,这个32字节的缺省值也适用于卡的卡信息字段大小IFSC(Information Field Size for the Card),但它可由ATR①中的一个参数来修改。在实践中,对于终端和卡二者,I字段的大小在50~140字节之间。

4,组尾字段这个字段在字组的末尾传送,含有一差错检测码,是由字组中前面所有的字节算得的。计算使用的要么是纵向冗余检测LRC(Longitudinal Redundancy Check)要么是循环冗余检测CRC(Cyclic Redundancy Check )。所用方法必须在ATR的接口字符中予以规定。如果没有规定,则隐含地约定使用LRC法。否则,根据ISO 3309就进行CRC计算。所用除法多项式和V.41的推荐是一样的,G(X)=X16+X12+X5+1。两种差错检测码只能用于差错检测,它们不能校正一个字组差错。

单字节的纵向冗余校验和是串行级联所有字组中前面的字节经X0R算出的。这项计算可以执行得非常之快,而它的实现也用不了多少代码。通常,它的执行是在数据传输或接收时进行的,它实际上是所有实现的T=1的标准部分。

使用CRC方法产生的差错检测码比起相对简单的的X0R校验和来要产生远为高得多的差错检测概率。然而,在实际上这个方法目前几乎从来都未被使用过,因为它实现起来是高代码强度的而且很慢。此外,组尾字段要扩充为2字节,它进一步降低了传输率。

5.发送和接收序列计数器在T=1协议中的每个信息字组有一个在PCB字节中的仅有1位的发送序列号。它按模2增量,这就是说它在0和1 之间交替。发送序列计数器也被称作N(S)。协议开初的开始值为0,终端和智能卡的计数器是相互独立地增量的。

发送序列计数器的主要目的是支持对于重发接收到的有差错字组的请求,因为各个数据字组能由N(S)毫不含糊地寻址。

6,等待时间在数据传输时,定义了不同的等待时间以提供发送方和接收方可以在精确规定的最小和最大时间区间内的不同处理。它们也提供了规定的方法去结束通信,以便防止在出差错情况下的死锁。标准中对所有这些等待时间都规定了缺省值,但可以修改它们以提高传输率,修改值是在ATR的特定接口字符中指明的。

1)字符等待时间(CWT)字符等待时间的定义是字组内相连两字符开始边之间的最大区间,如图2所示。接收方在每一开始边处启动一减数定时器,以字符等待时间作为初始值,如果定时器已满而又没有检测到新一位的开始边,则接收方可认为传送的字组已被完整接收。于是,“CWT接收准则”可一般用作字组结束的检测。然而,它却显著地减小了数据传输率,因为每1字组的时间都被字符等待时间CWT(Character Waiting Time)的持续时间增大了,字组的结束最好是用计数接收的字节数来检测。

图2 字符等待时间(CWT)的定义CWT用ATR中所含CWI来计算,根据下列公式:CWT=(2CWI+11)工作etu CWI的缺省值为13,由此可得CWT的如下之值:CWT=(213+11)工作etu=8.203工作etu 对于时钟频率为3.5712MHz,而分频值为372时,结果的区间为0.85秒。这个区间在标准中被规定为缺省设定,对快速数据传送而言是太高了。实践中,CWI的常用范围在3和5之间,这就是说对正常的传输序列,其中字符一个接着一个而无需任何时间延迟,接收方在检测出字组的尾部或一个通信错误之前要等待一至二个字符的时间。

通常,接收程序从LEN字段的长度信息来检测出字组的结束。然而,如果这个字段的内容是错误的,则字符等待时间可用作一种另外的手段来结束接收。这个问题本身仅仅出现在长度信息过长时,在这种情况下接收方将等待永远没有到达的另外字符。这样将阻塞了传输协议,这种状态只能由卡复位来清除,而字符等待机制则绕过了这一问题。

2)字组等待时间(BWT)字组等待时间BWT(Block Wailing Time)被定义来当智能卡没有响应时去建立一种结束通信的方法。它是发送给卡的字组中最后一字节的开始边和

卡回送的第1个字节的开始边之间的最大允许区间,参看图3。

图3 字组等待时间(BWT)的定义以常规的T=1字组而言,这是命令字组组尾字段的X0R字节的前沿和卡的应答的NAD字节的前沿之间的最大允许区间。如果这段等待期间已满之时而仍未从卡接收到应答,则终端可以认为卡出了故障并启动相应的措施。例如,这可能是一个卡复位,接着是建立通信的新尝试。

ATR中的接口字符以缩短形式的BWI的编码来规定BWT。

如果在ATR中没有规定BWI之值,则使用之缺省值为4,对于3.5712MHz和372的分频值,则给出的字组等待时间为1.6s

可以看出,这个数值是过分慷慨了。实践中,BWI的常用值为3,它产生的字组等待时间为0.8s。①在卡中的典型命令执行时间通常为0.2s②。这样的Ⅲ阿的持续时间则表现了在正常的命令执行时间和快速检测出智能卡不再对命令做出响应之间的折中。

3)字组保护时间(BOT)最后一字节的开始沿和相对方的第1个字节的开始沿之间的最小区间称之为字组保护时间BOT(Block Guard Time),参见图4。它和"叮是相反的,后者被定义为两个规定的开始沿之间的最大时间。另一个区别是字组保护时间对双方是强制性的,而且都必须遵守,而字组等待时间仅对智能卡有意义。字组保护时间的目的是提供给字组

发送方一个最短的时间区间,在其间可从发送转换为接收。

图4 字组保护时间(BOT)的定义字组保护时间有一个固定值,它已标准化为22etu。在一个运行于3.5712MHz,分频值为372的智能卡中,它产生的区间大约为2.3ms。

7.传输协议机制I)等待时间的扩充如果卡需要比由字组等待时间(BWT)最多允许的还要多些的时间来产生其应答,它可向终端请求等待时间扩充。智能卡发送一个请求扩充的专门的s字组来做到这一点,而它接收一个从终端来的相应的S字组以确认,不允许终端拒绝这一请求。等待时间的扩充过程如图5所示。

图5 扩充等待时间的过程信息字段的一个字节通知终端扩充时间的长度。这个字节乘以终端等待时间给出了新的字组等待时间。然而,它仅对最近发送的I字组有效。

2)字组链接T=1协议的一项根本特性是字组链接功能,它使得任一方可传送大于发送或接收缓存器大小的数据字组。考虑到智能卡的有限存储器容量,这一点是特别有用的。只允许信息字组可以链接,因为只有这些字组才包含有大量的数据。在链接过程中,应用数据被划分成各个数组,然后一个接一个地发送给接收方。

应用层的数据必须划分成各个段,其结果应没有大于接收方能接收的最大字组。按照

T=1协议,第1段被安放在一信息字段中,补充上组头和组尾字段后即可发送给接收方。M位(尚有数据位)被设定在字组的PCB字段中,以便向接收方表明已经使用了字组链接功能,被

链的数据在随后的字组中,链接字组的传送如图6所示。

图6 从终端向智能卡传输数据的字组链接举例随着接收方成功收到这个具有用户数

据第1段的信息字组,它回送一个序列号N(R)是下一个I字组的发送序列计数N(S)的R 字组,以表明已准各好接收下一个链接的I字组了。于是,下一个字组被发送给接收方。

这样来来往往传送I和R字组,一直继续到发送方发布一个PCB字段的M位表明它是链中的最后一个字组(M位=0)的I字组时为止。接收到这一字组后,接收方就有了应用层的全部数据,并可对全部数据字组进行处理。

对应用于字组链接的程序有一点限制,在一单个的命令—应答对中,链接只能在一个方向上进行。例如,如果终端发送了链接字组,卡就不能在响应中发送链接字组。

这里还有更进一步的限制,不过不是协议本身的,而是由于卡非常有限的存储引起的。实现字组链接机制包括了一定数量的额外软件,而它的用途极其有限,因为命令和应答并不都是那么长,因此通常都不需要链接。如果卡在BAM中的缓存器不是足够大以存储所有用字组链接传送的数据,它就必须把缓存器放在EEPROM中。然而,这将引起传输率的明显下降,因为EEPROM(和BAM不同)使处理器不能以全速写入。

结果许多T=1的实现没有链接功能,因为价格/收益比经常不有利于它。这是一个典型的例子,在实际实践中对标准的解释常常是太随意了。在这种情况下的解释等于把字组链接当做是T=1中的补充选项,它不是绝对需要的。

8,差错处理T=1协议显示出相当完善的差错检测与处理机制,如果接收到了不正确的字组,则协议试图用准确规定的方法恢复无差错通信。从终端的角度来看,存在着三个同步阶段,在第1阶段,差错字组的发送方接收到一个表明EDC/奇偶位差错或一般差错的R字组,接收到此R字组后必须重发最后发送的字组。

如果已证明利用此机制无法恢复无差错的连接,则求助于第2阶段。这就是说,智能卡收到一个从终端发出的以s字组形式的再同步请求,而终端期待着一个再同步应答的答复。于是,终端和卡双方把它们的发送和接收计数器复位为零,它相应于紧接着ATR的协议状态。基于此,终端试图建立起新的连接。

第1和第2阶段仅影响协议层次,它们对应用本身毫无影响。然而,第3阶段将影响智能卡的所有层次。如果用前两个阶段终端仍无法建立起一个无差错的通信连接,它经复位引线启动一个智能卡复位。遗憾地是,这意味着当前会话的所有数据和状态都被丢失了。接着这个复位,通信要完全从头开始重新建立。

如果,甚至于这个产生工作连接的方法也失败了,终端将在此三重尝试之后使卡去激活。用户通常会接收到一个出错消息以表示卡出现了问题。差错处理的三阶段如表6所示。

表6 T=1差错处理的三阶段

9.T=1协议数据传输举例图7所示为T=1协议中SELECT FLIE命令数据传输之例。

图7 T=1传输协议成功地传输了TPDU,X0R选项的选择是差错检测码(EDC)一条SELECT FILE命令的ΠD为…3F00?,在APDU中传送,

它选择了MF(它清楚地说明了发送序列的计数在PCB字节中是如何按每一交易增量的,以及在EDC中的相应改变)10.按照ISO/IEC和按照EMV的T=1之间的差别按照ISO/IEC 7816-3标准原来的对T=1的规定允许有多种选项和机制,其中的一些需要相当数量的程序代码去实现而并不经常使用。典型的例子是其详尽的差错校正机制,它在理论上可能是有趣的,但在处理实际传输中的干扰时却常常不是那么有效。在实践中,通常最好是简单地把卡重新插人到终端中并重新开始会话,而不是用无穷无尽的重新同步请求来试图重建数据传输。因此,EMV规定比起原版的ISO/IEC标准来强加了一些限制,详情可见表7。

表7 ISO/IEC 7816-3标准和EMV规范在实现T二Ⅰ传输协议间的差别摘要

欢迎转载,信息来源ic37网(https://www.360docs.net/doc/c29682547.html,)

相关文档
最新文档