IC卡复位应答ATR

一、ATR是什么

ATR也叫复位应答,是一个字节序列,这些字节是由卡作为对复位命令的响应发送给读卡器的。在I/O电路上,每个成功的复位操作都会导致I/O上的一个由初始字符TS开始,后跟最多32个字符的复位应答。ATR的作用是告诉读卡器,我是一张什么样的卡片,以便读卡器知道接下来该以什么样的方式和卡片通信。

二、ATR的基本数据结构

三、起始字符——TS 

初始字符定义了所有后继字符的解码协议。它只有两种可能:3B-正向约定,3F-反向约定。正向约定就是高电平为1,低电平为0,且从一个字节的低位开始发送。反向约定就是低电平为1,高电平为0,且从一个字节的高位开始发送。

四、格式字符——T0

(一)TA1(重要)

  • 高半字节 FI 用于确定 F 的值, F 为时钟速率转换因子。用于修改复位应答之后终端所提供的时钟频率。
  • 低半字节 DI 用于确定 D 的值, D 为位速率调节因子。用于调整复位应答之后所使用的位持续时间。etu =F/D * (1/f)

(二)TC1

TC1为0时,表示不需要额外的保护时间。

五、ATR分析示例

ATR : 3B 70 13 00 00 
Protocol : SCARD_PROTOCOL_T0
  + TS  = 3B --> Direct Convention
  + T0  = 70, Y1=0111, K=0 (historical bytes)
  + TA1 = 13 --> Fi=372, Di=4
  + TB1 = 00 --> Vpp not connected
  + TC1 = 00 --> EGT=0

其中TA1的高4位为1,低4位为3,分别在下面两个表中查询,所以得出:Fi=372, Di=4。

Fi的编码

FI

0000

0001

0010

0011

0100

0101

0110

0111

F

372

372

558

744

1116

1488

1860

RFU

FI

1000

1001

1010

1011

1100

1101

1110

1111

F

RFU

512

768

1024

1536

2048

RFU

RFU

Di的编码

DI

0000

0001

0010

0011

0100

0101

0110

0111

D

RFU

1

2

4

8

16

32

RFU

DI

1000

1001

1010

1011

1100

1101

1110

1111

D

12

20

RFU

RFU

RFU

RFU

RFU

RFU


续...TA2

最近在同方某款ARM芯片上实现ISO7816的通信协议,其中有个PPS的概念涉及到了ATR中的TA2,所以这里介绍一下TA2的作用。卡片复位后的第一件事是发送ATR,读写器接收并解析ATR。ATR中的TA2字段存在与否表明了卡片的两种模式:

  • TA2(有) - 卡片为协议模式,此时采用ATR中指定的协议和参数进行通信。
  • TA2(无) - 卡片为协商模式,此时读写器根据具体情况决定进行PPS数据交换,还是发送工作命令。只有当卡片处于协商模式下时,读写器才有必要根据具体情况进行PPS交换还是直接发送工作命令。

以上是TA2字段的作用。通过以上作用我们大概也能知道TA2中都存储了些什么。具体如下:

  • bit8 - 是否支持在协议模式和指定模式之间切换。0-支持,1-不支持。
  • bit6~7 - 预留。
  • bit5 - 指定传输使用的参数和F/D。0-使用TA1中指定的Fi和Di参数。1-使用隐含参数,即默认参数(非ATR中接口字符中定义的值)
  • bit1~4 - 指定传输使用的协议T。

简而言之,TA2指定了传输使用的协议T和参数F/D,同时TA2也表明是否支持模式切换。

续...TC2

7816-3 10.2 中提到“If present in the Answer-to-Reset, the interface byte TC2 encodes the waiting time integer WI over the eight bits, except the value '00' reserved for future use. If TC2 is absent, then the default value is WI = 10.”。而这个“WI”是计算T=0协议中WTX的一个重要参数。也就是说如果是T=0的卡,那么每次卡片上电都要从ATR中获取TC2的值当做WI,然后据此计算WTX。当然,计算WTX不只从ATR中获取了WI,还有Di。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章