智能卡数据传输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。两种差错检测码只能用于差错检测,它们不能校正一个字组差错。