天天看點

智能卡傳輸協定分析

[摘要]智能卡又叫smartcard或IC卡,是一種應用非常廣泛的裝置,本文閑話少說,單從技術面對接觸式智能卡接口協定ISO7816做一個詳細的分析。

[關鍵詞] 智能卡、ISO7816、嵌入式

智能卡接口

智能卡接口如下圖所示:

智能卡傳輸協定分析

pin腳定義如下表:

Pin 名稱 用途
C1 Vcc Power connection through which operating power is supplied to the microprocessor chip in the card
C2 RST Reset line through which the IFD can signal to the smart card's microprocessor chip to initiate its reset sequence of instructions
C3 CLK Clock signal line t hrough which a clock signal can be provided to the microprocessor chip. This line controls the operation speed and provides a common framework for data communication between the IFD and the ICC
C4 RFU Reserved for future use
C5 GND Ground line providing common electrical ground between the IFD and the ICC
C6 Vpp Programming power connection used to program EEPROM of first generation ICCs.
C7 I/O Input/output line that provides a half-duplex communication channel between the reader and the smart card
C8 RFU Reserved for future use

智能卡有三種操作電壓,5V for class A,3.3V for class B,1.8V for class C. 一個智能卡至少要支援其中一種,也可支援多種,但必須是連續的。

智能卡上電及掉電過程:

1、拉低RST腳

2、提供電壓VCC

3、IO設為接收模式(須上拉)

4、提供時鐘CLK

a)、cold reset時序如下圖所示:

智能卡傳輸協定分析

(b)、warm reset如下圖所示:

智能卡傳輸協定分析

(c)、deactive 掉電過程:

1、 拉低RST腳

2、拉低CLK

3、拉低IO

4、 停止供電

時序如下圖所示:

智能卡傳輸協定分析

(d)、Clock Stop:

    有些卡支援clock stop,若IO線在1860個CLK内沒有動作,則可按如下時序停止提供CLK

智能卡傳輸協定分析

電壓選擇及傳輸協定選擇:

(a)、電壓選擇/class selection:

    1、若複位應答含有目前class的訓示,則繼續目前class,若沒有,則應執行掉電過程,10ms後再提供複位應答裡提供的class。

    2、若複位應答裡沒有class訓示,則繼續目前class。若複位應答後不能正常操作,則應該執行掉電過程,10ms後可提供另一個class.

    3、若沒有複位應答,則應當執行掉電過程,放棄或是提供另一個class.

    Class 選擇流程如下圖所示:

智能卡傳輸協定分析

(b)、選擇傳輸參數及協定

1、如果TA2存在,則智能卡隻能工作在指定模式,應立刻切換到些模式進行操作。

2、如果TA2不存在,若智能卡隻支援一種工作模式,則應立刻切換到該模式,若支援多種則可有兩種操作:a)切換到智能卡提供的第一種工作模式。b)在目前工作模式下進行PPS exchange,在智能卡所支援的模式中切換工作模式。

智能卡傳輸協定分析

PPS exchange:

1、隻能由操作裝置發起

2、如果智能卡收到錯誤的PPS exchange,則不做任何響應

3、如果智能卡收到正确的PPS exchange,則應發送PPS response.

4、若逾時不響應或是發送了錯誤的PPS,操作裝置應該執行掉電過程。

PPS exchange 過程如下圖所示:

智能卡傳輸協定分析

PPSS--0xFF

PPS0--bit8 set to 0, bit5,6,7 indicate present of PPS1,PPS2,PPS3,bit4-bit1 indicate transmit protocol.

PPS1--buartrate if present encoded in the same as TA1,from Fd to Fi,Dd to Di.if net present continue with Fd and Dd.

PPS2--SPU encoded in the same way asthe first TB for T=15,If an interface device does not transmit PPS2, or if it transmits PPS2 = '00', it proposes not to use SPU

PPS3--is reserved for future use.

PCK--Exclusive-oring all the bytes PPSS to PCK inclusive shall give '00'. Any other value is invalid.

如果PPS exchange成功,PPS response則應傳回,正确的PPS response如下:

PPSS_R--0xFF

PPS0_R--低4位應該和PPS0的低4位一樣,如果第5位為1,則PPS1_R應該和PPS1一樣,否則說明沒有PPS1_R并使用Fd和Dd.若第6位為1,則PPS2_R應該和PPS2一樣,否則說明沒有PPS2_R且不使用SPU,若第7位為1,PPS3_R應該和PPS3一樣,否則沒有PPS3_R。

複位應答

複位應答包含了智能卡的一些操作資訊,如操作電壓,工作協定及參數等,應該高度重視。複位應答格式如下:

智能卡傳輸協定分析

--初始位元組TS:LL HH HLHH 或HH LL LLLL 即0x3B或高位在先反向規則0x3F.若紅色部分為HHH,則說明低位在先,若為LLL則說明所有傳輸都為高位在先且反向傳輸(即L為H),一般的智能卡都為0x3B

--T0格式位元組:bit5-bit8表示TA1,TB1,TC1,TD1是否出現表示為Y1,bit1-bit4表示曆史位元組個數表示為K。

--TA1接口位元組:支援的傳輸參數buartrate.

--TB1無義意

--TC1保護時間

--TDi格式協定位元組:bit1-bit4支援的協定,必須從低到高出現。bit5-bit8同T0。若不出現則隻支援T0

--TA2特殊模式位元組:如果bit8為1,則智能卡必須工作在特殊模式,否則可進入協調模式,若bit5被設定為0,則應切換到TA1所提供的Fi和Di。then implicit values (not defined by the interface bytes) shall apply

--TB2無義意

--TC2 T=0時的等待時間WI  WT=WI*960*Fi/f,若Fi為1則為WI*960個時鐘周期。WI不能為0,若沒有TC2 WI為10

--TCK校驗位元組:若隻有T=0,則不出現,否則從T0到TCK的異或為0

指令格式

智能卡指令格式如下圖所示:

智能卡傳輸協定分析

CLA:表示Class,不能為0xFF

INS:指令碼,不能為0x6X或0x9X,這兩種用來做為狀态位元組傳回。

P1:

P2:

P3:

應答格式如下圖所示:

智能卡傳輸協定分析

T=0傳輸協定,即位元組傳輸協定

時序如下圖:

智能卡傳輸協定分析

錯誤校驗采用奇偶較驗,錯誤較驗時序如下圖:

智能卡傳輸協定分析

若接收方接收到錯誤的檢驗位,剛應該拉低IO線,最少一個ETU,最多兩個ETU

T=1傳輸協定,即塊傳輸協定

繼續閱讀