版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CPU卡中T=0通讯协议的分析与实现
IC卡的应用越来越广泛,从存储卡到规律加密卡,目前CPU卡已经渐渐在应用中占据主导地位。CPU卡依据通讯协议可分为两种:接触式和非接触式。接触式CPU卡主要采纳两种通讯协议:T=0和T=1通讯协议。T=0是异步半双工字符传输协议,T=1是异步半双工块传输协议。目前T=0通讯协议的应用较为广泛,国内外大多数CPU卡都支持该协议,在金融交易中也采纳这种通讯协议。为了便于说明问题,本文从T=0协议的功能动身,将该协议分为四个层次:物理层、数据链路层、终端传输层和应用层,见图1。
由于该协议的特别性,终端传输层与应用层联系特别严密,实现起来比拟繁琐,在CPU卡中,这些任务通过卡片操作系统(COS)来实现。终端在与卡的信息交换中,(范文先生网.收集整理)始终处于主动地位,终端向卡发送符合T=0协议的命令字节,卡中的COS完成对数据的处理并将处理结果返回给终端。下面对T=0协议的四个层次进展详述。
1T=0协议的物理层描述
终端与智能卡之间通过转变I/O传输线上的电平来交换信息。由于T=0协议是面对字符的传输协议,这里先定义字符帧的构造,并对组成字符帧位的信息表示作了详细描述。字符帧的构造如图2所示。
字符帧由1个起始位S、8个数据位和1个偶校验位P共10位组成。在数据传输中每一位的持续时间称为根本时间单元etu(elementarytimeunit),etu的值由时钟频率打算,etu与时钟频率呈现性关系:
1etu=(F/D)×(1/f)(1)
其中F称为时钟频率转换因子,D称为波特率调整因子。时钟频率的范围为1MHz~5MHz,正常的工作频率为3.57MHz,数据传输的波特率采纳9600bps,依据国际标准的取值范围,取F=372,D=1,代入式(1),可得:
1etu=372/f=372(2)
即一个根本时间单元为372个时钟周期。将工作频率定为3.57MHz,可以保证数据传输的波特率为9600bps。假如要提高数据的传输率,可以调整参数F来确定传输率。对每一位电平采纳三次采样来确定,在位持续时间的中间和左右15%的间隔各取样一次,取样点如图3所示。当有两次以上电平为低,则推断该位为0;否则该位为1,这样确保了取样值的牢靠性。由于数据位的持续时间是用汇编语句来掌握的,可以通过延时语句调整采样的时间间隔。但实现采样的最根本汇编语句的执行时间不能再缩短,因此数据传输率有一上限。当每一位取样三次时,数据传输率最高可到达57600bps。假如再提高速率,取样时序将无法保证。字符帧的起始位为低电平,起始位的检测是通过周期性地对I/O传输线进展采样来得到。国际标准中规定采样时间间隔不得大于0.2etu,实际上起始位的采样时间间隔只有几个时钟周期,完全满意要求。
2T=0协议的数据链路层实现
数据链路层描述了字符交换的时序要求和过失掌握以及终端对面对传输的错误的处理,在规律上保证终端和卡片之间能够正确牢靠地通讯。
采纳上述的字符帧,终端与卡之间进展数据将交换,字符之间有严格的时序,时序是通过汇编程序语句的执行时间来掌握的。从终端到卡发送的连续字符的起始位下降沿之间的最小时间间隔由复位应答信息通知终端,其值在12etu~266etu之间。从卡发送到终端的连续字符的起始位下降沿之间的最小时间间隔应为12etu。
假如字符接收不正确或字符接收正确但校验位不正确,接收端需要在字符起始位下降沿后的(10.5±0.2个etu时刻将I/O线置为低电平约1~2个etu,见图4,用于向发送端指明错误;发送端在(11±0.2)个etu时刻检测I/O线。如为高电平则表示字符已经正确接收;假如发送端检测到错误,则在检测到错误那一刻起,2个etu后重发该字符,但重复发送同一字符的次数不得超过3次。假如最终一次发送失败,当终端是接收端时,则终端应当在无效字符的起始位下降沿后的960个etu时间范围内启动释放序列;当终端是发送端时,在卡片检测到字符的偶校验错误后960个etu时间范围内,终端启动释放序列。
命令的执行总是由终端应用层(TAL)启动,通过终端传输层(TTL)送给卡片。TTL与卡片进展命令字节和数据字节交换时,要保证能够有序正确地进展。因此,在数据交换过程中,在任何时刻TTL和卡片都应当隐含地知道哪一方是发送者,哪一方是接收者。当卡片接收到5个字节的命令字节后,需要向TTL返回一个过程字节或两个字节的状态字节,详细含义如表1、表2所示。
表1终端对过程字节的处理
过程字节TTL执行的操作与INS字节一样TTL向卡片发送或从卡片接收全部数据INS字节的补码TTL向卡片发送或从卡片接收下一个字节”60”TTL延长等待时间”61”TTL等待其次个过程字节”xx”并依据”xx”发
GETRESPONSE命令取回数据”6C”TTL等待其次个过程字节”xx”并依据”xx”重发上一条命令表2卡返回的状态字节编码
第一个状态字节值TTL执行的操作”6”或”9x”(除表1中的值外)TTL等待其次个过程字节SW2当返回的过程字节或状态字节均不是表中规定的值时,终端在接收到的无效字符的起始位降沿开头的9600个etu时间范围内启动释放序列。
3T=0协议的终端传输层和应用层的实现
数据链路层保证了TTL与卡片正常的数据交换。在此根底上,TTL定义了命令和响应APDU(ApplicationProtocolDataUnit)通过TTL和卡片之间的数据传输机制,因此该层协议定义了APDU到TPDU(TransportProtocolDataUnit)的映射机制以及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。
表3APDU包含数据的状况
命令APDU数据域响应APDU数据域1无无2无有3有无4有有C-APDU由一个强制性的四字节命令头CLA、INS、P1、P2和一个可变长度的条件体组成。CLA为命令类型字节;INS为命令代码字节;P1和P2为命令参数;条件体包括命令数据域长度字节Lc,命令数据域和响应返回的最大长度字节Le。依据不同的命令,条件体的组成也不一样,C-APDU有四种状况,见表4。
表4C-APDU的构造
情况C-APDU构造1CLAINSP1P22CLAINSP1P2Le3CLAINSP1P2LcData4CLAINSP1P2LcDataLeR-APDU由一个最大长度为Le的数据域和一个强制性的两字节状态代码组成,状态代码给出了IC卡对当前命令的处理结果。
对于C-APDU,终端先将其映射成T=0传输层的格式,然后通过TTL传送给卡片,卡片返回的数据和状态先返回给TTL,再映射成R-APDU返回给TAL。这里依据四种不同的状况,分析了C-APDU到C-TPDU以及R-APDU到R-TPDU的映射方法,并对状况2和状况4时,如何使用GETRESPONSE命令进展了说明。C-APDU到C-TPDU的映射依据命令的状况打算,卡片返回的数据和状态到R-APDU的映射要依据返回数据的长度来推断。对于卡片返回的过程字节“61xx”和“6Cxx”,将用于TTL和卡片之间进展数据交换,当卡片返回“61xx”时,表示命令没有完毕,TTL不将过程字节返回给TAL,而是从TTL直接向卡片发出GETRESPONSE命令,取回上一条命令应当返回的数据。并返回给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发GETRESPONSE命令取回数据。
(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、Lc映射为C-TPDU的CLA、INS,P1、P2、P3,待卡片对C-TPDU检查通过后,卡片直接将过程字节返回给TTL,TTL依据返回的过程字节连续向卡片发送P3字节的后续数据。待数据接收完后,卡片对应用数据进展处理,假如命令处理失败,卡片直接将状态代码返回给TTL。当命令正常处理时,卡片返回给TTL过程字节“6Cxx”或“61xx”,当为“6Cxx”时,TTL依据xx重发命令取回数据。当过程字节为“61xx”时,TTL发GETRESPONSE命令取回数据。
(1)由于T=0协议字符级检错重发,与面对块的传输协议T=1相比,在消失传输错误时,T=0协议可以不必整个数据报文全部重发,节约了时间。
(2)在编程过程中,对位帧进展采样时,采纳了三次采样判决的方式,避开了由于采样时的偶然误差而造成误码。
(3)T=0协议是应用于智能卡中的第一个接触式通讯协议,但该协议并没有考虑传输中断和检测到传输错误码后卡和读写器的再同步问题。唯一的检错机制就是奇偶位校验。对错误的处理就是对出错的字节重新发送一次,这样极有可能导致无限次的循环状态。
(4)T=0协议并没有与应用层完全分割开,应用层的命令解释器必需告知传输层当前命令是接收还是发送数据。由于这个缘由,这两个模块在命令处理过程中需要交互操作,在程序中能够提取出一个通用的传输层,供给用层调用来负责完成数据的传输。这种状况给编程和调试带来了不便。同时造成模块的可重用性较差。
(5)对于命令报文中包含数据域,同时又需要卡片返回数据的命令,T=0协议不能用一条命令来实现,必需分为两步实现:第一条命令为卡片供应数据,然后用另外一条相关的命令来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 期中试卷(第1~3单元)(试题)2024-2025学年六年级上册数学苏教版
- 浙江宁波市海曙区政府投资项目评审中心招聘事业编制工作人员7人管理单位遴选500模拟题附带答案详解
- 内蒙古自治区事业单位联考招聘管理单位遴选500模拟题附带答案详解
- 2024-2030年中国甲基三苯基溴化膦行业发展动态及供需趋势预测报告
- 【高考政治】备战高考易错题(新高考专用)易错点6 人民当家作主含答案及解析
- 小型公司组织团建活动方案
- 2024-2025学年江苏九年级数学上学期期中试题分类汇编:等可能条件下的概率(6大类型提分练+30道压轴题)含答案
- 2024-2025学年高中物理第2章恒定电流6导体的电阻作业含解析新人教版选修3-1
- 2024-2025学年高中历史专题一古代中国经济的基本结构与特点专题素养评价含解析人民版必修2
- 2024-2025学年高中数学专题强化训练1算法初步作业含解析新人教A版必修3
- 铝型材挤压车间操作流程及作业指导书
- 陕西中考物理备考策略课件
- 美国博物馆教育研究
- 9F燃机燃机规程
- 部编版五年级上册《我的长生果》公开课一等奖优秀课件
- 人民调解培训课件(共32张PPT)
- 小学部编版五年级语文上册教案(全)
- 绿化养护报价表
- 《工业革命与工厂制度》
- 课程领导力-资料教学课件
- 老人租房免责协议书
评论
0/150
提交评论