[摘要]智能卡又叫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傳輸協定,即塊傳輸協定