IC卡的传输协议(1)-字符传输协议T=0【转】

转自:http://bbs.ednchina.com/BLOG_ARTICLE_172022.HTM

在异步半双工传输协议中,主要定义了终端为实现传输控制和特殊需要发出的命令及这些命令的处理过程。

    在传输协议中定义了两种协议:字符传输协议(T=0)和块传输协议(T=1)。IC卡可以选择支持T=0协议或者T=1协议,终端一般都支持这两种协议。在ATR中的TD1规定了后续传输中所采用的传输协议(T=0或T=1),如果TD1在ATR中不存在的话则假定采用T=0。如果在ATR之后卡片与终端之间没有参数协商的PTS过程的话(详细细节可参考ISO7816相关部分),由IC卡指定的协议将在复位应答之后立即被采用。

    传输协议按照如下的模型进行定义。

  * 物理层
    定义了位交换,是两种协议的公共部分。

  * 数据链路层
    包括如下定义:
    字符帧,定义了字符交换,是两种协议的公共部分;
    T=0时的字符交换
    对T=0的检错纠错
    T=1时的块交换
    对T=1的检错纠错

  * 传输层
    定义了针对每个协议的面向应用的报文传输。

  * 应用层
    根据相同的应用协议,定义了报文交换的内容。

1、物理层

    在T=0和T=1协议中,均使用了物理层和字符帧。

2、数据链路层

2.1 字符帧 

    详见http://www.iccos.cn/scoscn/html/dev/2007-10-25dev44.html,适用于IC卡和终端之间所有的报文交换。

2.2 字符协议T=0

  (1)特定选项--用于T=0的时段分配

    在复位应答中,ATR中的TC1值决定了终端发送到IC卡的两个连续字符起始位上升沿之间的最小时间间隔在12~266个etu之间。

    IC卡发送到终端的两个连续字符起始位上升沿之间的最小时间间隔为12etu。

    在IC卡发送的任意字符的起始位上升沿与IC卡或终端发送的前一个字符的起始位上升沿之间的最大时间间隔(工作等待时间)将不超过960×D×WI=9600个etu(设位速率转换因子D为默认值,WI为默认值10)。

    相反方向发送的两个连续字符的起始位上升沿之间的最小时间间隔不小于16etu。

    要特别注意的是,由终端向IC卡发送的两个连续字符起始位上升沿之间的最小时间间隔由TC1值控制,可以小于相对发送的两个连续字符之间所允许的最小时间间隔(16个etu)。

  (2)命令头

    命令由终端应用层(Terminal Application Layer,简称TAL)发出,它包括一个由5Byte组成的命令头。每个命令头由5个连续字节CLA、INS、P1、P2和P3组成。

   * CLA(Class Byte of the Command Message)表示命令类别。
   * INS(Instruction Byte of the Command Message)表示指令代码。
   * P1(Parameter 1)和P2(Parameter 2)表示命令的两个附加参数。
   * 根据不同的INS,P3(Parameter 3)指明了发送给IC卡的命令的字节长度或者期待IC卡回送响应的最大数据长度。

    对于T=0,这些字节和通过命令发送的数据一起构成命令传输协议数据单元(Command Transport Protocol Data Unit,简称C-TPDU),命令应用协议数据单元(Command Application Protocol Data Unit,简称C-APDU)到C-TPDU的映射将在后续文章中学习。

    终端传输层(Terminal Transport Layer,简称TTL)传送发送5Byte的命令头给IC卡并等待一个过程字节。

  (3)过程字节

    IC卡接收到命令头以后,向TTL回送一个过程字节。过程字节向TTL指明了下一步该做什么,其编码与TTL行为的对应关系如下所示:

    终端对过程字节的响应:

        过程字节值                  步骤
     1  与INS字节值相同            所有余下的数据将要由TTL传送或者准备接收所有来自IC卡的数据。
     2  与INS字节值的补码相同      下一个数据字节将由TTL传送或者准备接收来自IC卡的下一下数据字节。
     3  0x60                       TTL提供根据额外的工作等待时间。
     4  0x6X或者0x9X(除0x60以外) TTL将等待下一个过程字节或者状态码SW2。

    在情况1、2、3中,操作完成后TTL将等待另一个过程字节。

    在情况4中,第二个过程字节或状态码SW2已被收到后,TTL将要做如下事情。

   * 如果过程字节为0x61,TTL将向IC卡发送一个最大长度为0xXX的Get Response命令头,XX为SW2值。
   * 如果过程字节为0x6C,TTL将立即向IC卡重发一个命令的命令头,其长度为XX,XX是SW2的值。
   * 如果过程字节为0x6X(除0x60、0x61、0x6C以外)或者0x9X(即状态),TTL将在响应APDU中向TAL回送状态码,并等待下一个C-APDU。

    TTL与IC卡之间交换命令和数据时,TTL和IC卡必须清楚地知道数据流向和I/O的驱动者,即是终端向IC卡发送数据还是IC卡向终端发送数据。

  (4)C-APDU的传输

    采用T=0协议时,只包含送向IC卡的命令数据或只包含IC卡响应数据的C-APDU,可直接映射到C-TPDU。不包含不回送数据的C-APDU,以及要求IC卡接收数据和发送给IC卡数据的C-APDU将通过相关的传输规则进行传输。

2.3 T="0时的错误检测与纠错"

    若字符没有正确地接收到或者接收正确但校验不正确,接收方应在字符起始位的上升沿脉冲之后的(10.5±0.2)个etu内,向I/O端口发送持续时间为1~2个etu的低电平信号,表示前面的传输中有错误发生。

    相应的,发送方应该在字符起始位上升沿脉冲发出后的(11±0.2)个etu内,检测I/O端口的电平状态,此时若I/O端口为高电平状态,则表明字符已经被正确接收。

    若发送方检测到错误,就应在检测出错误以后至少延迟2个etu,并重复发送一次有错误嫌疑的字符,最多只发送3次。

时间: 2024-10-03 08:25:45

IC卡的传输协议(1)-字符传输协议T=0【转】的相关文章

IC卡的传输协议(2)-块传输协议T=1【转】

转自:http://bbs.ednchina.com/BLOG_ARTICLE_172024.HTM 2.4 块传输协议T=1     T=1协议中,在TAL和IC卡之间传送的命令.R-APDU和传输控制信息(例如确认信息)由块组成.     以下定义了数据链路层的块帧结构.协议的特殊选项和协议操作(包括错误处理).   (1)块帧结构     字符帧的定义同前文的描述.T=1协议下,无须进行逐个字符的检验.块的结构如下所示,包括头域.数据域和尾域3个部分,都为可选项.   ● 头域包括3个必选

金融IC卡安全引发行业关注,国产具备商用条件

2月27日消息,近日,美国前防务承包商雇员斯诺登再曝窃密丑闻时提到金雅拓SIM卡,一时间,金融IC卡的安全性引发业内关注. 业内专家昨日(2月26日)告诉记者,SIM卡和金融IC卡两者对安全的需求不一样,比如从生产过程来说,在个人化数据的传输中,金融IC卡要求敏感密钥信息分段传输,双人或多人控制,同时通过专用线路,全程加密和监控,确保传输过程的安全.从金融IC卡本身而言,目前其技术采用IC卡中的最高安全等级保护,远高于通讯行业使用的IC卡标准.   值得注意的是,近日,国内一款可实现"国密算法&

IC卡的传输协议(2)-块传输协议T=1续【转】

转自:http://bbs.ednchina.com/BLOG_ARTICLE_172025.HTM (3)容错操作     先来看一下容错的规则定义.    * 复位应答后,第一个数据块是由终端发往IC卡的,而且只能是一个I块或S块.      * 若终端不希望使用长度为32Byte的IFSD初始值,则应向IC卡发送一个S块(IFS请求),S块(IFS请求)的PCB应具有值CI以表明是一个改变IFSD的请求.INF域包含一个字节,其值表示在所要求的IFSD的字节数,取值为0x20-0xFE.I

IC卡的传输协议(3)【转】

转自:http://bbs.ednchina.com/BLOG_ARTICLE_172027.HTM 3.终端传输层         本节描述了在终端和 IC 卡之间传输的命令和响应 APDU 的机制.APDU 是命令或响应报文.由于命令和响应报文都可以包含数据,TTL应能处理应用层定义的4种命令格式.C-APDU和R-APDU的组成在应用层描述.     TAL传送C-APDU到TTL.在发送到IC卡之前,应将其变换成传输协议认可的形式.IC卡处理完命令后,以R-APDU的格式将数据(如果存在

udp-需要一个java基于UDP协议的文件传输程序

问题描述 需要一个java基于UDP协议的文件传输程序 文件是一个实验数据的文件,是txt个格式的,需要将它传输到指定的IP上 解决方案 server package com.way.server;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundEx

网络协议X档案文件传输协议篇

网络协议--FTP协议 说明:全称File Transfer Protocol(文件传输协议),这是大家非常熟悉的网络协议之一,也是Internet中使用最多的文件传输协议.主要用于在两台计算机之间实现文件的上传与下载,其中一台计算机作为FTP的客户端,另一台作为FTP的服务器端.通过FTP协议可以上传.下载几乎所 有的文件类型,比如TXT.EXE.DOC.MP3.ZIP.RAR等等.应用:在实际应用中,FTP不仅可以作为网络文件下载的主要格式,还可以作为单独的命令来使用.比如我们在下MP3的时

非接触式IC卡仓库管理解决方案

随着非接触式IC卡技术的迅速发展,因其不易污染.磨损.划伤,及卡本身是无源件,体积小,耐用可靠,操作迅速方便等优点,正被广泛地应用于公路收费.考勤.门禁.餐厅记帐及身份识别等系统中,给人民生活带来了前所未有的方便. 目前,仓库管理主要是基于相应规范的手工作业及电脑半http://www.aliyun.com/zixun/aggregation/13703.html">自动化管理实现的.其弊病显而易见,即需要投入大量人力进行规范物品的放置.定期整理盘点以及出入库登记等工作,这使得仓库管理问题

|zyciis| 如机付宝一样的,我现在要对客户端的IC卡发卡机对卡卡进行总值,如何对这条命令进行加密呢 急 谢谢

问题描述 原贴:http://topic.csdn.net/u/20071217/18/420dd1f2-6f17-4854-a08b-1480928c4ea8.html网页传值加密我是A要向B明文发送一些数据,比如我要传2个数据用户号User=1IC卡加金额Money=2000fcuandy告诉我的方法是传1和2000再把1和2000再和一个密钥进行MD5加密比果为ICcard:|1|2000|KJLS54DFSDF46546DFSDf但这样的话可以,但是有一个问题就是当用户1再加2000的时

银行卡盗刷门后续:更安全的IC卡“卡”在哪儿了?

先天存在安全缺陷的金融磁条卡,其实早已有了安全的替代品--金融IC卡:但商家和消费者的习惯.新旧模式并存的混乱,延缓了IC卡的普及脚步. 更令人忧虑的是,为了兼容旧模式,现行的金融IC卡,其实是一种留有"后门"的过渡性产物--双模卡. 2011年,信用卡欺诈损失1.48亿元,较上年增长25.78%.在此背景下,更安全的IC卡"卡"在了过渡期,难以及时发挥应有的作用,不能不说是一种遗憾. 复制设备仅售8000元 <第一财经日报>上周连续报道了武汉王爱芬银行