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

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

举报
开通vip

智能卡数据传输T1传输协议及详解智能卡数据传输T=1传输协议 类别:消费电子   阅读:883   T=1传输协议是智能卡的异步半双工通信协议。它立足于国际标准ISO/IEC 7816-3。EMV规范也和此协议 有关。T=1协议是面向字组的协议,这就是说一个字组是卡和终端之间可以传输的最小数据单元。   这项协议以严格的层次划分为特点,可作为数据链路层归入OSI参考模型中。在这种意义上,层次划分也 就意味着数据指向较高的层次,诸如应用层,并可完全由数据链路层透明地处理。除了这一层直接和所传输 的数据的内容的解释与修改有关之外,不再需要别...

智能卡数据传输T1传输协议及详解
智能卡数据传输T=1传输 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 类别:消费电子   阅读:883   T=1传输协议是智能卡的异步半双工通信协议。它立足于国际标准ISO/IEC 7816-3。EMV 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 也和此协议 有关。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网(www.ic37.com)
本文档为【智能卡数据传输T1传输协议及详解】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_601259
暂无简介~
格式:doc
大小:319KB
软件:Word
页数:0
分类:互联网
上传时间:2013-11-20
浏览量:19