智能卡数据传输协议

智能卡数据传输协议

  当智能卡送出ATR和可能发生的PTS后,它等待着从终端来的第1条命令,后继的处理永远相应于主从原则,终端为主而卡为从。具体而言,终端发送命令给卡,而后者执行它随后并回送——应答,这种命令和响应来来往往的相互作用永不改变。

  可以构造出与智能卡通信的不同方法。如果发生了一次干扰,这里也有大量的不同方法使之再同步通信。出现差错时命令的准确实现,相应的应答和采取的处理都规定在传输协议中。

  总共有15种可以使用的通信协议,它们的基本功能都做了规定。这些协议均以T(来源于传输协议一词的头一个字母)加上一个序列号来命名,已综述在表1和图1中。


1  智能卡用传输协议分类

  表1 ISO/IEC 7816-3规定的通信协议概要表

  这些协议中的两种是国际间使用的主流,头一个是T=0协议,它在1989年成为国际标准(ISO/IEC 7816-3)。另一个是T1,它是在1992年作为国际标准的一个附录予以介绍(尹阝时是ISOIEC 78163 A1nd1,而现在则是ISO/IEC 78163)。全双工传输协议T=2,它主要以T=1为基础,目前正在准各之中,几年后将可以作为国际标准来使用。

  在德国有第3个协议,以T=14命名,用于广泛使用的卡式电话。它被规定为德国Telekom的内部规范。

  按传输协议传送的数据单元被称为传输协议数据单元TPDUTransmissiON Protocol DataUnits)。打比喻来说,它们是取决于协议的用来向或自卡传送数据的集装箱。实际应用的数据被嵌人在这些集装箱之中。

  除了技术上复杂的智能卡传输协议外,还有另外一族用于存储卡的很简单的同步通信协议。它们典型地用于电话卡,健康保障卡和诸如此类。然而,它们不具有差错校正机制,而且它们都是基于芯片中的硬布线逻辑的。

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

信息来源维库开发网 发布时间:20081120

  这个传输协议在智能卡发展之初首先用于法国,它也是第1个智能卡协议的国际标准。它开创于智能卡技术 的早期,因而它的设计使用了最少量的存储器并具有简单性。这项协议被在世界范围内用于GSM卡,并在所 有的智能卡协议中享有最广泛的流行。T0协议在ISO/IEC 7816-3中被标准化,另外的相容规范被包含在 CSM 1111EMV规范中。

  T=0协议是面向字节的,这就是说协议所处理的最小单位是单个字节。传送的数据单元中含有一个头标、类 字节、命令字节和三个参数字节构成。它可能跟随着一个可选的数据部分,和被ISO/IEC 7816-4标准化的 APDU相反,长度信息仅由参数P3提供。它或是指明命令数据或是应答的长度,它也由ISO/IEC 7816-3标准中 规定,参见图1


1 T0的一条命令的结构

  由于T0协议是面向字节的,如果检测到一个传输错误,则对错误字节的重传必须立即请求。而字组协议 则相反,如果发现了差错则整个字组(一系列字节)都必须重传。

  T=0差错检测采用附在每一被传送的字节后的奇偶校验位。

  如果接收方检测出一个传输差错,它必须从出错字节的保护时间的第1位区间的中间开始,把I/0线在一个 etu持续期内置为低电平。这样向通信的另一方表示最近的一个字节必须重新传送。这种字节重复的机制是 十分简单的,而其好处在于它的选择性,只有不正确的字节才被重复。遗憾地是,这个方法也存在一个严重 的缺'点,大多数IC接口etu区间当做是最小的可检测单元,所以它们不能识别从停止位中间设定的I/0 线上的低电平。因此,标准的IC卡接口不适于T=0协议。然而,如果每1位用软件分别接收,就不会有这个问 题。图2和图3分别表明了用T0传输协议,在无差错和有差错时,I/0接口的信号时序图。


T=0传输协议(一字节无差错地经I/0接口传送)


3 T0传输协议(一个数据传输差错,在保护时间用I0接口的低电平来指示)

  T=0协议也允许EEPROMEPROM的外部可编程电压接通或断开。这可用在接收的命令字节附加个1并把它 作为确认字节回送给终端。这就是为什么只允许偶数值的命令字节,否则这个机制就无法工作。然而,接通 一外部可编程电压现在技术上已经废弃,所有现代的智能卡微控制器都在芯片上自己产生编程电压,因此我 们无需更深人讨论这一主题。

  保护时间的主要作用是在传输时把各个字节分开,使得发送者和接收者双方有充裕的时间去执行传输协议 的功能。

  为了解释T0命令-应答序列,让我们假定终端发送给卡一条带有数据部分的命令,而卡则应答以数据和 回送代码。终端首先发送给卡以5字节的命令头标、类字节、命令字节和PlP2以及P3组成。如果它们被正 确地接收了,则卡送回一个为过程字节PBProcedure Byte)形式的确认ACKACKnowledge),确认的编码 和收到的命令字节是相同的。收到过程字节后,终端送出由"字节表明准确数量的数据字节。至此,卡已收 到了完整的命令,它可以处理它并产生一应答。

  如果应答中含有2字节回送代码之外的数据,卡用一特殊的回送代码通知终端,由SW2来表明数据量。接收 到此应答后,终端向卡发出GET RESPONSE命令,它仅包括了具有要传送的数据量的头标。于是卡向终端传送 由第1条命令所产生的具有所请求的长度和相应的回送代码的数据,这样就完成了一条命令序列。

  如果一条命令发送给卡,而卡仅产生没有数据部分的回送代码。则图4中的GETRESPONSE部分就不会发生。 因为要完成这些作用(馈送和前一条命令有关的数据)才需要应用层的额外的命令。当然,这里不再有协议 各层之间的严格界限。一条应用层命令(GETRESPONSE)必须用在这里以支持数据链路层,它对正谈到的应 用层有着某些影响。乍看起来,这些似乎有点复杂,所以再用图5来表明。


在命令和应答中都有数据的典型的T=0通信过程(例如MUTUAL AUTHENTICATE命令)

  T=0协议允许卡在接收头标后接收数据部分的单个字节。为此,卡只需要把反相的命令字节作为过程字节传 送给终端,于是终端就传送一个单独的数据字节,第2个数据字节是接着由卡发出的第2个过程字节。这种字 节方式的传送可一直继续到卡接收了数据部分的所有字节,或者直到卡送出非反相的命令字节,终端则将所 有剩余的字节传送给卡,使之接收到完整的命令。单字节的传输过程如图6所示。

  至于对传输协议的考虑,用户的根本兴趣所在仅是数据传输率和差错检测与校正机制。传送一个包括了8位 的字节,需要传送12位,其中还有1开始位,1奇偶校验位和2 etu保护时间,假定时钟频率为35712MHz而 分频值为372,传送1字节要占用13etu125ms,表1夕列出了某些典型的命令的传送时间。

  表1  T=0的某些典型命令的传送时间,时钟频率为3.5712MHz,分频值为372
每条命令有2位停止位和8位数据字节(c=命令,R=应答)

  如果发生了差错数据传输率当然下降,不过,单字节重复机制在这里仍有很大的优点,因为只有所接收的不正确的字节才需要重传。

  T0协议的差错检测仅仅是每1字节末尾的奇偶校验。这使它能够可靠地识别单独一位的差错,但无法检测两位的差错。此外,如果在从终端向卡传输时丢失了一字节,这将导致在卡中的无尽循环(死锁),因为它在等待特定数量的字节而没有可能暂时停止。惟一使终端脱出这种通信死胡同的实际出路是使卡复位并重新从头开始。

  在正常的通信中,对链路层和传输层的不适当的分开不会引起任何特殊困难。CSM的平稳操作是这一点的最好证明。然而,如果采用了安全报文问题就很快出现了。具有部分加密的头标和全部加密的数据部分,用前面所叙述的方法就不可能再支持T0协议而不会引起大量的开销。这是因为在T0协议中必须使用不加密的命令字节来作为过程字节。

  由于不存在层次的划分以及在不良连接时的明显问题,To协议经常被认为是过时了的。但另一方面,在卡和终端之间几乎从未发生过传输差错。T=0协议的主要优点是其优良的平均传输率,很小的实现代价以及广泛的市场渗透。


5 T0通信过程的智能卡通信处理状态机(没有差错校正)


6 T=0时的单字节接收(例如tTPDATE BINARY

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值