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。

 

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