您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页智能卡通讯协议T=1的介绍和卡片软件实现

智能卡通讯协议T=1的介绍和卡片软件实现

来源:意榕旅游网
哑 …I●_C H巾国集成电路 hina Integrated Circuit 一————— 掷挫.…。。  ]  1以一包发完,而T=O则是读卡器先发5个字节命令 头,卡再回送指令码(INS)字节,读卡器再发送数 据,卡处理后回送响应,交互比较多。 T=1协议的应用不限于智能卡和终端的通信, 它被用于多种终端和它们与之相连的计算机之间的 数据交换。 1.3传输过程和数据包定义 传输的过程开始于卡送出复位应答(ATR)之 后,或在成功进行协商(PPS)之后。第一个数据包 由终端发送,下一个数据包由卡发送。发送权在终 端与卡之间轮换。 数据包传输的数据分两类:一是透明传输的应 用专用数据。二是传输协议控制数据或对传输差错 的处理。 数据包由头域,信息域和尾域组成。头域和尾域 是强制性的,信息域是可选的,含有应用层的数据, 可能是发送的应用数据单元(APDU)也可能是卡 应答 ”。 头域 信息域 尾域 节点地址NAD 协议控制字节PCB 长度字节LEN APDU EDC 1byte 1byte lbyte O ̄254byte lor2bvte i.头域 头域包括三个部分。 a)节点地址NAD 头域的第一个字节被称为节点地址,含有数据 块的目标和源地址,各用三位来表示,其中Bit1—3 源地址,Bit5—7为目标地址。Bit4和bit8为VPP控 制位,但对现在的智能卡芯片来说没有实际应用。 b)协议控制字节PCB 用来管理和控制传输协议。PCB字段主要用来 编码块类型,以及有关的补充协议。块有三种类型, 分别是I块,R块,s块。I块用来传递应用数据信息 和卡片应答,有信息域。R块用来应答,没有信息域。 s块用来交换终端与卡片之间的控制信息,信息域 可能存在。 c)长度LEN 以十六进制表示信息字段的长度,范围为 0x00—0xFE,0xFF留做未来扩充使用。 2.信息域APDU APDU用来传输应用层命令和应答,在不同的 块类型中可能会不出现。信息域长度与长度字节 LEN相同,范围为0—254字节。 3.尾域 EDC包括两种类型:LRC或者CRC。用来进行 差错检测。 LRC是指从NAD开始到信息域最后一个字节 的异或值。优点是执行速度快,代码效率高。是T=I 协议的标准部分。 CRC根据IS013239的规定采用专用的多项式 进行计算。CRC方法比LRC产生远为高的多的差错 检测概率。但是在实际中使用较少,因为执行速度 慢,效率低,需要硬件做高度支持才可以保证计算速 度,同时由于是两个字节,降低了传输率。 1.4传输协议中的时间 在数据传输时,定义了不同的等待时间以提供 发送方和接收方可以在精确规定的最大和最小时间 区间内的不同处理,它们也提供了规定的方法去结 束通信,以便防止在出错隋况下的死锁。标准中对所 有这些等待时间都规定了缺省值,但可以修改它们 以提高传输率。修改值是在ATR的特定接口字符中 指明的。 1.字符等待时间(CWT) 字符等待时间是指数据块内相连两字符起始沿 之间的最大区间。CWT用ATR中所含的字符等待 因子(CWI)来计算,公式:CWT=(2^CWI+11)个工 作etu。CWI的缺省值为13,所以共为8203个etu。 如果时钟频率为3.5712MHz,分频值为372,那么 CWT是0.85秒。实际CWI的范围在3到5之间。 通常,接收方从LEN的字段的长度来检测块是 否结束,但是,如果LEN的内容是错误的,则字符等 待时间可作为另一种手段来检测是否结束接收。 2.块等待时间(BwT) 块等待时间,被定义为当智能卡没有响应时去 建立一种结束通信的方法。指发给卡的块的最后一 个字节的起始沿和卡回送的第一个字节的起始沿之 间的最大允许区间。BWI在ATR中规定。BWT=2 (BWI 960 372/f)+1 1etu。如果在ATR中没有规定 定了的方法来恢复无差错通信。从终端的角度来看, 存在着三个同步阶段,在第一阶段,差错块的发送方 接收到一个表明EDC/奇偶差错或一般差错的R 块,接收到此块后必须重发最后发送的块。如果此机 制不能恢复无差错通信,则求助于第二阶段:智能卡 收到一个从终端发送的以s块形式的再同步请求, BWI的值,就使用缺省值4,对于3.5712Mhz和372 分频值,BWT=I.6s。实际中,BWI的常用值为3,那 而终端期待着一个再同步请求的应答,于是终端和 么BWT是0.8s。 3.块保护时间(BGT) BGT是最后一个字节的起始沿和反方向的第 一个字节的起始沿之间的最小区间,双方必须强制 遵守。块保护时间的目的是提供给块发送双发一个 最短的时间区别,可从发送转换为接收。 1.5传输协议机制 1.发送和接收序列计数器 在T=I协议中的每个数据块有一个在PCB字 节中的占用l位的发送序列号,它按模2增量,在0 和1间交替变化,被称为N(S),初始值为0。终端 和卡的计数器是相互独立计算的,主要用途是支持 重发请求。 2.等待时间的扩充 如果卡片需要比块等待时间(BWT)允许的时 间更长的时间来产生其应答,卡片可向终端请求等 待时间扩充。智能卡发送一个请求扩充的专门的s 块,终端回送一个s块来响应确认,不允许终端拒绝 这一请求。这个字节乘以终端等待时间给出了新的 块等待时间,但仅对最近发送的一个I块有效。 3.块链接 T=I协议的一项根本特性是块链接功能,使得 任一方可传送大于发送或接收缓存器大小的数据 块。对使用链接功能有个限制,在以单个的命令应 答对中,链接只能在一个方向上进行,例如,如果终 端发送了链接块,卡就不能在响应中发送链接块。 4.差错处理 T:l协议表现出相当完善的差错检测与处理机 制,如果接收到了不正确的块,则协议试图用准确规 卡双方把他们的发送和接收计数器复位为0。第一 和第二阶段仅影响协议层次,他们对应用本身毫无 影响。第三阶段将影响智能卡的所有层次。就是复 位。如果这样也失败,终端将在三次尝试失败后去激 活卡。 2卡片软件实现 本文介绍的T=I通讯协议的软件实现方法是 基于华虹SHC1408S芯片,在此芯片上实现了T=I 通信协议的处理和一些基本指令的处理和应答,使 用SCR3310读卡器,可进行T=I协议通讯。 2.1芯片介绍 华虹SHC1408S采用线性地址8051内核,包括 512B IARM,7.5KB XRAM,256KB Flash,外部接口支 持USB全速接口,7816主从接口,SPI主从接口,硬 件实现算法有RSA/ECC/SM2,DES,AES,SSF33, SM1,SM3,SM7,CRC,还带有20个GPIO。 芯片支持硬件7816接口,包括以下功能:支持 T:0/l的字符传输模式,收发自动转换,支持硬件 LRC/CRC计算,硬件提供ETU计数功能。为软件的 实现提供了必要的支持。 开发环境是Keil,提供USB驱动的仿真器平 台 2.2软件实现 本软件实现的功能是采用7816T=1通讯协议, 完成卡片与读卡器终端的交互。 2.2.1主要流程 htto://www.cicmaQ.com 2.2.1.1主流程 图1软件主流程图 软件上电完成初始化后即进入命令处理循环。 命令处理循环过程循环进行命令的接收,解析和处 理。解析过程完成应用命令的处理和7816T=1协议 的处理。芯片提供7816硬件接口,实现了字符传输 的协议,因此字符的发送和接收不需软件干预,数据 块的打包和校验等处理需要软件编程实现。 2.2.1.2 7816协议处理 协议处理函数负责对7816T=1协议进行处理, 采用状态机方式查询软件当前的状态并进行处理:和 跳转,进入不同状态的处理流程。目前的设计中有如 下状态标志: APPLICATIONSTATE||Application State —GET_DATA||Wait State RECEIVE—I||I-Block received RECEIVE—S WTX_RES|| —Block WTX response received httn.,^A/IAAAI,、;,、m ,1,、^ RECEIV ES//S—.Block IFS ————IFS—.RES response received RECEIVE——R—.ACK |lR-Block Acknowledge RECEIVE—.R_NAK ||R-Block Not Acknowledge RECEIVE//call receive —.DATA function SENDR—。—.ACK ||Send R(AC SEND#Send S—.Bl—S—WTXock —REQ rTX request SEND|Send S—Block IFS —.S IFS REQ lrequest SEND—.S—.IFS——RES #Send S—.Block IFS Respose SEND—s-ABO £RES //Send S_Block chain abort response SENDBl——S——SYNCH——RES #Send Sock _resynch response SENDI|t Send I-Block —SENDRETRANSMIT //Retransmit the last —.send block 2.2.2复位应答说明 复位应答(ATR)中有关于协议描述的相关内 容,目前软件设计返回的ATR如下: 0x3b,Oxf6,0x1 3,0xO0,OxO0,Ox8 1,0x3 1,0xfe,0x45, 0xdc,0x05,0x28,0x05,0x00,OxO0,Oxla。 其中TS=0x3b表示正向传输。 T0=0xf6,表示TA1,TB1,TC1,TD1存在,有6个 历史字节。 TAl=0x13,表示F=1,D=3,这两个数值用来确 定传输效率。 TB1=0x00,表示编程电压,00表示不需要VPP。 TCl=0x00,其中bitl=0表示使用LRC。 TDI=0x81,表示TD2存在,bitl=l表示使用 T=I协议。 TD2=0x31,表示TA3,TB3存在,bitl=l表示使 用Tl协议。 TA3=Oxfe,表示IFSC的长度为254. TB3=Ox45,4表示BWI,5表示CWI。 后面是6个历史字节:0xdc,Ox05,0x28,0x05 0x00,0x00。最后一个字节是校验字节。 软件也可以根据需要设置其他的协议字节和历 史字节。 2.2.3编程要注意的细节 1.数据校验 差错处理对于T=I协议有两种,字符校验和块 内校验。字符校验指奇偶校验,由硬件来完成,软件 不需要做处理。块内校验需要软件配合,硬件提供 了计算LRC或者CRC的功能,自动计算填入发送 寄存器内的数据的LRC或者CRC,软件读取 LRC/CRC寄存器的值得到相应的校验结果。目前软 件中实现的LRC校验,由ATR中的TC1指明。 2.重发机制 7816T=1没有字符错误重发功能,有块重发功 能。此功能需要软件完成,方法是将已发送数据进 行备份,当卡片收到重发请求时进行块重新发送。 3.数据链接 T=I协议的特点就是可以一次通讯发完所有数 据,支持数据链接,传输效率高。数据链接只能是一 方的链接,比如读卡器发送的数据如果采用链接方 式,那么此时卡片的响应就不能采用链接,反之亦 然。块链接是当数据一次发不完,超过了IFSC或者 IFSD的长度,数据采用分组链接方式,来完成所有 数据的传输。进行数据链接时一方发送数据,另一 方回送R块,R块中指明下一个I块的块号,以保证 链接数据的正确性。此功能在软件中已实现。编程 时注意数据包的指针,以及R块的翻转,还有R块 的PCB字节的控制。 4.时间指标的实现 由前面的叙述,协议中时间主要有三个指标,字 符等待时间CWT,块等待时间BWT和块保护时间 BGT。CWI由ATR指明,由软硬件结合来保证。BGT 采用延时方式确保块问满足这个时间。BWT采用硬 件提供的ETU计数功能,当传输时间超过BWT时, 会产生中断,软件进入中断子程序,发送WTX请求 处理。 5.PPS的处理 PPS主要是进行F和D值的协商,卡片和读卡 器通过协商来确定新的F和D值,以提高通讯速率 (1etu=F/(D*f))。过程是如果卡片在发送完ATR 后,收到的第一个字节是FF,即表示读卡器要求协 商F和D。该处理过程与T=O协议一致。 2.2.4其他功能 软件除了完成7816T=l协议的处理外,还实现 了一些演示功能,主要是算法和安全方面的演示,算 法包括Des,3Des,Hash,RSA,SM3,SM7,SSF33, SM2/ECC等,客户可以直接使用或者在此基础上做 二次开发。 3 总结 本文介绍了智能卡通讯协议T=I的概念和要 点,并介绍了其在华虹SHC1408S芯片上的软件实 现方法。T:1协议比T=0协议具备校验机制完善,传 输效率高的优点,随着芯片硬件性能的提高.以及硬 件支持功能的增加,今后会有更多的应用在接触式 通讯时采用T=I通讯协议。圈 参考文献 [1】International standard ISO/IEC 7816-3[S】 作者介绍 施燕,硕士,目前在上海华虹集成电路有限责任公司 从事与智能卡安全相关的嵌入式软件开发和系统开 发。 h什n.,, ^^^Jl,ninman nnm 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务