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的格式将数据(如果存在的话)和状态码回送给TTL。

  3.1 T="0协议下" APDU的传送 
    
    本节描述了 C-APDU 和 R-APDU 的映射方式,TTL 和 IC 卡之间的数据交换机制以及在命令情况2或4中如何使用GET RESPONSE命令取回IC卡的数据。

  (1)C-APDU和 R-APDU的映射方式和数据交换

    如何将 C-APDU 映射到 T="0" 命令头取决于命令情况。如何将 IC 卡回送的数据(如果存在)和状态码映射到R-APDU的形式取决于回送数据的长度。

    由IC卡回送的过程字节SW1 SW2=’61xx’和SW1 SW2=’6Cxx’用来控制IC卡和TTL之间的数据交换,它不会回送给 TAL。过程字节 SW1 SW2=’61xx’或 SW1 SW2=’6Cxx’表示命
令在IC卡中的处理没有完成。

    如果 IC 卡回送给 TTL 的状态码是 SW1 SW2=’9000’,表示正常完成了命令的处理。任何其它的状态码都表明 IC 卡中断了命令的处理,处理失败的原因在状态码中指出。TTL 收到来自 IC 卡的任何状态码(但不包括过程字节’61xx’和’6Cxx’)时,都结束命令的处理,不论是正常、警告还是错误情况。

    以下描述的是将IC卡回送的数据和状态字节构造成R-APDU格式的方法,仅适用于IC 卡已成功完成了命令处理或全部数据(如果存在)在过程字节’61xx’和’6Cxx’的控制下已被IC卡返回的情况。INS、INS和’60’过程字节的详细使用在此不作描述。

   a.情况1 
   
    C-APDU头映射到T=0命令头的前四个字节,T=0命令头的P3置为’00’。

   交换流程如下:

    * TTL发送T=0的命令头到IC卡; 
    * IC卡回送状态码给TTL。

    完成命令处理后,由IC卡向TTL回送的状态码原样映射到R-APDU必备的尾域。

    注:IC卡应分析T=0命令头,判断是命令情况1还是命令情况2在请求最大长度的响应数据。

   b. 情况2 

    C-APDU 头被映射到 T="0" 命令头的前四个字节,长度字节’Le’从 C-APDU 的条件体被映射到T=0命令头的P3。

    交换流程如下:

    * TTL发送T=0的命令头到IC卡。 
    * 在过程字节的控制下,IC 卡向 TTL 回送数据和状态(在非正常处理时只返回状态)。

    完成命令处理后,由 IC 卡向 TTL 回送的数据(如果存在)和状态按照下述方法映射到R-APDU:

   (i) 如果Le≥Licc,回送数据被映射到R-TPDU的条件体,返回的状态无变化地被映射到R-APDU必备的尾域。 
   (ii) 如果Le<Licc,回送数据的前Le字节被映射到R-TPDU的条件体中,返回的状态无变化地被映射到R-APDU必备的尾域。

   c. 情况3 

    C-APDU头被映射到T=0命令头的前四个字节,C-APDU条件体的长度字节’Lc’被映射到T=0命令头的P3。

    交换流程如下:

    * TTL发送T=0的命令头到IC卡。

    * 如果 IC 卡回送一个过程字节而不是状态码,则在此过程字节的控制下,TTL向IC卡发送C-APDU条件体的部分数据。如果IC卡回送状态码SW1 SW2,TTL将中断命令处理过程。

    * 如果处理过程没有在步骤2处中断,则IC卡返回命令处理结束后的状态。

    IC卡完成命令处理后回送给TTL的状态码,或由IC卡返回的引起TTL中断命令处理的状态码,都不加改变地映射到R-APDU。

   d. 情况4 

    C-APDU头被映射到T=0命令头的前四个字节,C-APDU条件体的长度字节’Lc’被映射到T=0命令头的P3。

    交换流程如下:

    * TTL发送T=0命令头到IC卡。

    * 如果IC卡回送一个过程字节而不是状态码,则在此过程字节控制下,TTL给IC 卡发送 C-APDU 条件体的部分数据。如果 IC 卡回送状态码 SW1 SW2,TTL将中断命令处理过程。

    * 如果处理过程在步骤2中没有中断,IC卡应回送过程字节’61xx’给TTL,请求TTL发出GET RESPONSE命令从IC卡取回数据。在命令处理的这个阶段中,IC卡不应回送状态码SW1 SW2=‘9000’。TTL应发送GET RESPONSE命令到IC卡取回提及的数据,小于或等于IC卡回送的过程字节’61xx’中的’xx’字节值的数据指定为GET RESPONSE命令的长度字节。这样,GET RESPONSE命令可以同情况2的命令一样处理。在过程字节控制下,IC卡向TTL回送数据和状态码(或在非正常处理情况下,只有状态码)。

    完成命令处理后,IC 卡回送给 TTL 的数据(如果存在)和状态码,或仅是引起 TTL终止命令处理过程的状态码,按照下述规则映射到R-APDU:

   (i)如果 Le≥Licc,回送的数据被映射到 R-TPDU 的条件体,返回的状态不做改变地被映射到R-APDU必备的尾域。 
   (ii)如果 Le<Licc,回送数据的前 Le 个字节被映射到 R-TPDU 的条件体,返回的状态不做改变地被映射到R-APDU必备的尾域。 

   (2) 过程字节’61xx’和’6Cxx’的使用 

    由IC卡回送到TTL的过程字节’61xx’和’6Cxx’指明了TTL取回当前正在处理的命令请求数据的方式。在T=0协议下,这些过程字节仅仅用在命令情况2和4中。

    过程字节’61xx’通知TTL发出GET RESPONSE命令到IC卡。GET RESPONSE命令头的P3置为≤’xx’。

    过程字节’6Cxx’通知TTL立即重发前条命令,同时命令头置为P3=‘xx’。

    命令情况2和4在容错处理过程中,使用过程字节的规定如下。在发生错误时,IC卡回送错误或警告状态码而不是’61xx’或’6Cxx’。

   a. 命令情况 2 

    如果IC卡收到一个命令情况2的头并且Le≠Licc,应回送过程字节’6CLicc’(或状态码指出一个警告或错误情况,而非 SW1 SW2=‘9000’)通知 TTL 立即重发 P3=Licc 的命令头。

    如果 IC 卡收到命令情况 2 的头并且 Le="Licc",IC 卡在过程字节控制下或者回送请求的数据和相关状态码,或者回送过程字节’61xx’(或表明警告或错误情况的状态码,而非SW1 SW2=‘9000’)通知TTL按最大长度’xx’发出GET RESPONSE命令。

   b. 命令情况 4 

    如果IC卡收到一个命令情况4的命令,处理完随C-APDU一同发送来的数据之后,应回送过程字节’61xx’,(或表明警告或错误情况的状态码,而非 SW1 SW2=‘9000’)通知TTL按最大长度’xx’发出GET RESPONSE命令。

   (3) GET RESPONSE命令 

    TTL发出GET RESPONSE命令,是为了从IC卡取得对应于命令情况2和4的C-APDU的Le字节的数据。GET RESPONSE仅适用于T=0协议类型。 

    命令报文的结构如下:

        字节          值  
        CLA         ‘00’ 
        INS         ‘C0’ 
         P1         ‘00’ 
         P2         ‘00’ 
         Le           预期数据的最大长度 

    正常处理结束后,IC卡回送状态码SW1 SW2=‘9000’和Licc字节的数据。

   在错误情况发生时,错误状态码(SW1 SW2)的编码如下:

        SW1         SW2       含义  
          ‘64’       ‘00’     GET RESPONSE失败 
          ‘67’       ‘00’     域长度错误 
          ‘6A’       ‘86’     P1 P2≠’00’ 

  3.2 T="1协议下" APDU的传送 

    C-APDU 从 TAL 传送到 TTL,TTL 将其不加变化地映射到 C-APDU 的一个 I 块的 INF域中,然后把这个I块发送到IC卡。IC卡在I块的INF域中向TTL回送响应数据(如果存在)和状态码,I块的INF域的内容不加变化地被映射到R-APDU,然后返回给TAL。

    如果有必要,C-APDU和响应数据/状态码可以分成多个数据块的INF域的链接。

  4、应用层 

    应用协议由TAL和TTL之间一组有序的数据交换组成,本节的后续部分定义了应用协议。

    应用层交换的每一步由命令响应对组成,其中 TAL 通过 TTL 给 IC 卡发送命令,IC卡处理该命令后通过TTL返回一个响应给TAL。每一个特定的命令都与一个特定的响应相匹配。一个APDU就是一个命令报文或一个响应报文。 命令报文和响应报文都可以包含数据,传输协议通过TTL来管理四种命令情况的情 况,如下所示:

           APDU中数据存在的情况:

       情况     命令数据     响应数据 
         1           无         无 
         2           无         有 
         3           有          无 
         4           有         有 

    需要注意的是,应用层中有一种特殊的报文叫安全报文,它在原有命令的基础上添加了安全数据MAC,所以安全报文传送总有数据要送往IC卡,因此仅适用于命令情况3和4的情况。当使用安全报文传送时,情况1的命令就变为情况3,情况2的命令就变为情况4。 

  4.1  C-APDU 

    C-APDU 包含一个必备的连续四字节的命令头,用 CLA、INS、P1 和 P2 表示,同时包括一个可变长度的条件体。

    命令头定义如下:

    * CLA:指令类型,1Byte;除’FF’外可赋任何值。 
    * INS:指令类型的指令码,1Byte。只有在低半字节为0,且高半字节既不是‘6’也不是’9’时,INS才有效。 
    * P1 P2:参数字节,分别1Byte,根据不同的INS来定义。 

    条件体定义如下:

    * Lc 占一个字节,定义了在 C-APDU 中发送数据的字节数。Lc 的取值范围从 1到255。 
    * Le 占一个字节,指出 R-APDU 中期望返回的最大字节数。Le 的取值范围从 0到255;如果Le=0,期望返回数据的字节数的最大长度是256。 

    可能的C-APDU结构的四种情况如下:

     情况               结构 
         1                CLA INS P1 P2 
         2                CLA INS P1 P2 Le 
         3                CLA INS P1 P2 Lc Data 
         4                CLA INS P1 P2 Lc Data Le 

   4.2  R-APDU

    R-APDU 是一串字节,这一串字节由一个条件体以及必备的两字节状态码 SW1 SW2组成。条件体是一串数据字节,其最大长度在C-APDU中的Le中定义。 必备的状态码标明IC卡在处理完命令后的状态。

    SW1 SW2的编码遵循下述规定:

    * SW1的高半字节是’6’或’9’; 
    * 禁止SW1的值为’60’; 
    * SW1的值为’61’或’6C’时,应作为一个错误来处理; 
    * 命令正常结束时,SW1 SW2的取值为’9000’; 
    * 当SW1的高半字节为’9’,且低半字节不为’0’时,其含义依赖于相关的应用; 
    * 当SW1的高半字节为’6’,且低半字节不为’0’时,SW1的含义与应用无关。 

时间: 2024-08-03 07:15:33

IC卡的传输协议(3)【转】的相关文章

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之后卡片与终端之间没

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卡的传输协议(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卡仓库管理解决方案

随着非接触式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卡安全引发行业关注,国产具备商用条件

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

FTP文件传输协议两种方式的工作原理

FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式). Standard模式 FTP的客户端发送 PORT 命令到FTP server.Passive模式FTP的客户端发送 PASV命令到 FTP Server. 下面介绍一个这两种方式的工作原理: Standard模式 FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个

简单邮件传输协议SMTP封装类

在Internet上,Email是最流行的传输媒体.这篇文章包括两个协议:. POP 3 协议: POP3协议(邮政传输协议)就是指从Email服务器接收信件.我已经提交了一个封装POP3协议的类.该协议官方的描述你可查阅RFC1225. SMTP协议: SMTP (简单邮件传输协议) 指发送邮件到它的目的地. 有关SMTP 协议的细节你可参考RCF 821 .我最新地贡献是封装了SMTP协议.我不能完全实现 SMTP协议但你可用它在许多应用场合发送邮件.该类有若干方法,我选方法名同SMTP命令

SMTP简单邮件传输协议

SMTP:简单邮件传输协议(Simple Mail Transfer Protocol) SMTP 是一种提供可靠且有效电子邮件传输的协议. SMTP 是建模在 FTP 文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知. SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持. SMTP 重要特性之一是其能跨越网络传输邮件,即"SMTP 邮件中继".通常,一个网络可以由公用互联网上 TCP 可相互访问的主机.防火墙分隔的 TCP/IP 网络上