Chinaunix
標(biāo)題: smart card [打印本頁(yè)]
作者: myfaxmail 時(shí)間: 2011-12-23 03:35
標(biāo)題: smart card
智能卡(SmartCard),也叫IC卡,它是一個(gè)帶有微處理器和存儲(chǔ)器等微型集成電路芯片的、具有標(biāo)準(zhǔn)規(guī)格的卡片。智能卡必須遵循一套標(biāo)準(zhǔn),ISO7816是其中最重要的一個(gè)。
下面將從以下幾個(gè)方面展開,對(duì)Smart Card進(jìn)行討論:
1. 電氣特性
2. 復(fù)位應(yīng)答(ATR – Answer to Reset)
3. T=0 傳輸協(xié)議
電氣特性:
1. ISO7816非常嚴(yán)格地要求了卡片的外形、厚度、觸點(diǎn)位置和電信號(hào)。下面可以看到正常Smart Card的管腳分布:
C1 電源信號(hào)VCC 3/5 V C2 復(fù)位信號(hào)RST
C3 始終信號(hào)CLK 采用27MHz的分頻 – 3.375/4.5/6.75MHz C4 預(yù)留 某些CA廠商會(huì)加以利用,如NDS
C5 接地信號(hào)GND C6 編程電壓VPP 一些存儲(chǔ)芯片需要高電壓(12.5/21V)進(jìn)行編程
C7 數(shù)據(jù)通信I/O C8 預(yù)留
1.1 VCC: 對(duì)于供電又分兩種,一種是5V供電,兩外一種是3V供電。目前,市面上見(jiàn)得多還是5V,左右偏差在0.25V以內(nèi),也就是說(shuō)壓值范圍為4.75~5.25V,另外它的電流為200mA。
1.2 CLK: Smart Card工作的時(shí)鐘信號(hào)由外部供給,一般來(lái)說(shuō)有兩個(gè),3.579545MHz和4.9152MHz。相比之下,前者用得更多一點(diǎn)。當(dāng)然對(duì)于這兩種時(shí)鐘頻率,要得到數(shù)據(jù)通信所需的波特率9600s/s,那么他們的分頻系數(shù)自然也不一樣,分為為372分頻和512分頻。
1.3 RST: 復(fù)位信號(hào)是如何產(chǎn)生的呢?管腳必須滿足5個(gè)條件: 1)RST管腳拉低;2)CLK管腳拉低;3)VPP管腳不供電;4)I/O管腳拉低;5)VCC管腳不供電。
1.4 字符傳輸:
Smart Card的字符傳輸采用的是異步半雙工模式,這種異步的模式很像個(gè)人電腦上的RS232通信。傳輸一個(gè)字符時(shí),除了8Bits的數(shù)據(jù)外,還加了以下幾個(gè)Bits:
起始位 -- 用于字符幀的同步
校驗(yàn)位 -- 用于校驗(yàn)檢測(cè)
Guard Time -- 兩個(gè)字符間的間隔時(shí)間
Guard Time一般為兩個(gè)bit的時(shí)鐘周期,這一點(diǎn)很像PC上的UART的通信,用兩個(gè)停止位來(lái)間隔相連的字符。
2. 復(fù)位應(yīng)答(ATR):
當(dāng)RST信號(hào)被觸發(fā),即將RST管腳被拉低400~4000個(gè)時(shí)鐘周期,Smart Card檢測(cè)到這個(gè)信號(hào)后,將會(huì)回傳“復(fù)位應(yīng)答”ATR信號(hào)出來(lái),ATR最多包含33個(gè)字節(jié),有以下幾個(gè)段:
初始化字符(TS) 格式化字符(TO)
接口字符(TAi, TBi, TCi, TDi) (i=0/1) 歷史字符(T1, T2, T3 … TK)
校驗(yàn)字符(TCK)
它們包含哪些意思呢?請(qǐng)看下面的解析:
首先,TS初始化字符展示了電平的邏輯,反向約定(Inverse Convention即負(fù)邏輯)和正向約定(Direct Convention即正邏輯)。那么一般來(lái)說(shuō),回傳TS有兩個(gè)可能的HEX值0x3F和0x3B,0x3F代表反向約定,0x3B代表正向約定。
格式化字符TO段分為兩個(gè)部分,Bit Map和No of History Bytes,各占4個(gè)bits。
接口字符的TAi定義了串口傳輸中最基本的特性,其中包含兩個(gè)4-Bits的DI和FI,當(dāng)中的FI是時(shí)鐘頻率的轉(zhuǎn)換因子,DI則是定義了比特率的調(diào)節(jié)因子。通過(guò)這兩個(gè)因子,我們可以通過(guò)以下的公式驗(yàn)算出Work ETU的大。
- Work ETU = (1/D)*(F/f) sec (f為工作的時(shí)鐘頻率)
正常來(lái)說(shuō),一個(gè)ETU(Elementary Time Unit),一個(gè)bit的時(shí)間周期。因此我們計(jì)算得出,傳輸一個(gè)字符幀為12個(gè)ETU=1 START + 8 DATA + 1 PARITY + 2 GUARDTIME。
接下來(lái),便會(huì)有個(gè)問(wèn)題了,字符通信是需要D和F這個(gè)兩個(gè)調(diào)節(jié)因子,保證其工作時(shí)序,而這兩個(gè)因子又是Smart Card復(fù)位后,由通過(guò)字符傳輸回傳的ATR獲得的,那么誰(shuí)來(lái)保證ATR傳輸?shù)臅r(shí)序呢?原因是這樣的,Card復(fù)位時(shí),會(huì)有D和F的兩個(gè)初始值,分別D=1,F(xiàn)=372。而且,復(fù)位時(shí)時(shí)鐘頻率f會(huì)在1~5MHz范圍之內(nèi),比較常見(jiàn)的是3.579545MHz。
我們可以計(jì)算得出Default ETU = 1/1*372/3579545 sec;
Baud Rate = 1/Default ETU = 9600s/s;
TC提供的Guard Time也是如此,Default值為2個(gè)bit的時(shí)鐘周期。
TD則是要說(shuō)明的是傳輸協(xié)議的類型,標(biāo)準(zhǔn)里羅列了16種,但是常用也就是兩種T0和T1,即異步半雙工字節(jié)傳輸和異步半雙工塊傳輸。因此,我們知道多數(shù)Smart Card復(fù)位時(shí),是工作在3.579545MHz和9600s/s上的,一旦復(fù)位后,就根據(jù)ATR的值重新進(jìn)行配置工作時(shí)鐘頻率、波特率和Guard Time。使其能更高效的通信。
3. T=0 傳輸協(xié)議:
下面兩張圖來(lái)說(shuō)明T=0傳輸協(xié)議的細(xì)節(jié),
從上圖,我們不難看出,IFD和Smart Card之間存在主從設(shè)備關(guān)系。在通信之前,我們知道ATR中協(xié)議是多于一個(gè),因此接口設(shè)備會(huì)發(fā)一個(gè)PTS信號(hào),以便確認(rèn)通信協(xié)議的類型。
CLA - 指令集 (FF 是預(yù)留給 PTS) INS - 指令碼 (例如,讀內(nèi)存)
P1 - 指令跟的參數(shù)1 (例如,內(nèi)存地址) P2 - 指令參數(shù)2
P3 - 數(shù)據(jù)長(zhǎng)度
另外,再說(shuō)說(shuō)Smart Card的兩個(gè)狀態(tài)字SW1和SW2。它們是用來(lái)通知上位設(shè)備目前Smart Card的工作狀態(tài),如果工作正常,則返回值如下所示:
SW1,SW2 = 0x90, 0x00
如果工作異常了,也能通過(guò)這兩個(gè)狀態(tài)字獲得一些信息,如:
SW1 = 6E - Card 不支持該款指令集
= 6D - 無(wú)效的指令碼
7816標(biāo)準(zhǔn) 智能卡讀卡器 smartcard T0 T1 T14協(xié)議區(qū)別和相同點(diǎn):
guardTime就是停止位。
區(qū)別:
1) T0 異步半雙工字符傳輸協(xié)議 停止位是2, T1是1。
2) T1是異步半雙工塊傳輸協(xié)議。 有起始域,信息域, 中止域 組成一個(gè) 塊。
3) T14叫做私有協(xié)議。
5) T14沒(méi)有奇偶校驗(yàn), ATR期間時(shí)鐘因子也不同。像irdeto是620
作者: vcdtwo 時(shí)間: 2011-12-23 15:10
頂
歡迎光臨 Chinaunix (http://www.72891.cn/) |
Powered by Discuz! X3.2 |