接觸cpu卡

CPU卡也稱智能卡,卡內的集成電路中帶有微處理器CPU、存儲單元(包括隨機存儲器RAM、程序存儲器ROM以及芯片操作系統COS。裝有COS的CPU卡相當於一臺微型計算機,不僅具有數據存儲功能,同時具有命令處理和數據安全保護等功能。要了解什麼是CPU卡,就必須從IC卡說起。

  IC卡是集成電路卡的簡稱,是鑲嵌集成電路芯片的塑料卡片,其外形和尺寸都遵循國際標準(ISO)。芯片一般採用不易揮發性的存儲器(ROM、EEPROM)、保護邏輯電路、甚至帶微處理器CPU。帶有CPU的IC卡纔是真正的智能卡。按照嵌入集成電路芯片的形式和芯片類型的不同IC卡大致可分爲接觸式,非接觸式、雙界面卡。CPU卡既有接觸式也有非接觸式的。非加密存儲器卡:卡內的集成電路芯片主要是EEPROM,具有數據存儲功能,不具有數據處理功能和硬件加密功能。   邏輯加密存儲器卡:在非加密存儲器卡的基礎上增加了加密邏輯電路,加密邏輯電路通過校驗密碼方式來保護卡內的數據對於外部訪問是否開放,但只是低層次的安全保護,無法防範惡意性的攻擊。   由於沒有掌握關鍵的生產工藝,原來我國設計的CPU卡芯片一直在國外生產。這次我國自主設計、製造的CPU卡容量達到了128K。   CPU卡可適用於金融、保險、交警、政府行業等多個領域,具有用戶空間大、讀取速度快、支持一卡多用等特點,並已經通過中國人民銀行和國家商祕委的認證。

  1 CPU卡的接口特性

  1.1 觸點定義

  觸點的定義遵循ISO7816-2的規定,如圖1所示。

    符號說明如表1所列。

符  號 說  明 符  號 說  明
C1 電源電壓(Vcc) C5 地(GND)
C2 復位信號(RST) C6 不使用
C3 時鐘信號(CLK) C7 輸入輸出(I/O)
C4 不使用 C8 不使用

  表1 符號說明

  1.2 字符幀

  數據在I/O上以圖2所示的字符幀方式傳輸。

  每個位寬是1個etu,etu = 372/f。在此處,f = 3.57 MHz。

  起始位由接收端通過對I/O週期採樣獲得,採樣週期應小於0.2 etu。2個連續字符起始位上升沿之間的間隔時間等於(10±0.2)etu加上1個保護時間(最少2個etu)。在保護時間內,卡與終端都應處於接收模式(I/O爲高電平狀態)。如果卡或終端作爲接收方檢測出奇偶錯誤,則I/O被置爲低電平,以向發送方表明出現錯誤。

  1.3 卡操作

  卡操作的步驟如下:

  ① 將卡插入終端接口設備,使兩者的觸點相接並激活觸點;

  ② 將卡復位,建立卡與終端間的通信;

  ③ 執行操作;

  ④ 釋放觸點,並從接口設備取出卡片。

  以下是除第③步(執行操作)以外,各步的時序要求。

  (1)觸點激活

  時序如圖3所示。

  (2)卡復位

  卡利用低電平復位來完成異步復位應答,隨着觸點的激活,終端將進行一個冷復位並從卡獲得復位應答。冷復位時序如圖4所示。

  冷復位過程之後,如果收到的復位應答信號不滿足標準的規定,終端將啓動一個熱復位並從卡獲得復位響應。熱復位時序如圖5所示。

  在實際程序設計時,由Reset子程序實現觸點激活和卡復位。

  (3)觸點釋放時序

  觸點釋放時序過程如圖6所示。

  2 傳輸協議與卡命令處理程序

  ISO7816-4及中國金融集成電路(IC)卡規範所規定的異步半雙工傳輸協議,是關於終端爲實現傳輸控制和特殊控制而發出的命令的結構及其處理過程,包括了兩種協議:字符傳輸協議(T = 0)和塊傳輸協議(T = 1)。本文着重討論字符傳輸協議(T = 0)協議,它是IC卡推薦使用的通信協議。

  2.1 命 令

  命令包含1個連續4字節的命令頭,用CLA、INS、P1和P2以及1個可變長度的條件體來表示。

  命令頭定義如下:

  ◇ CLA:指令類別,除"FF"外的任何值;

  ◇ INS:在指令類別中的指令碼,當最低位是"0",並且高位半字節既不是"6"也不是"9"時,INS纔有效;

  ◇ P1、P2完成INS的參數字節。

  條件體定義如下:

  ◇ Lc(發送數據長度)佔1個字節,在命令中定義爲發送數據的字節數,取值範圍是1~255。

  ◇ Data爲將要發送的命令數據域,字節數由Lc定義。

  ◇ Le (接收數據長度)佔1個字節,指出命令響應中預期的數據最大字節數。Le的取值範圍是0~255。如果Le=0,預期數據字節的最大長度是256。

  可能的命令結構的4種情況定義如表2所列。

情  況

結  構

1 CLA INS P1 P2
2 CLA INS P1 P2 Le
3 CLA INS P1 P2 Lc Data
4 CLA INS P1 P2 Lc Data Le

  表2

  命令全部由終端應用層(TAL)初始化。它通過終端傳輸層(TTL)向卡發送1個由5個字節組成的命令頭,並等待一個過程字節。

  2.2 過程字節

  卡收到命令後,緊接着返回一個過程字節給TTL,指明下一步該作什麼,如表3所列。

序 號 過程字節值

步    驟

(1) 與INS字節相同 所有餘下的數據將由TTL傳送或TTL將準備接收來自卡所剩的數據
(2) “60” TTL將提供額外工作等時間
(3) “6X”或“9X”,除“60”之外(過程字節或狀態碼SW1) TTL將等待下一個過程字節或狀態碼SW2

  表3

  在(1)、(2)情況中,TTL完成動作後將等待另一個過程字節。在(3)情況中,第二個過程字節或狀態碼(SW2)被收到後,TTL將做以下事情:

  ◇ 如果過程字節爲"61",TTL將發送一個最大長度(P3)爲"XX"的得到響應命令(GET RESPONSE)給卡,"XX"爲SW2的值。GET RESPONSE命令僅適用於T = 0協議。命令報文的結構如表4所列。

CLA “0x”,x指明通道號
INS “C0”
P1 “00”
P2 “00”預期
Le 預期數據的最大長度

  表4

  ◇ 如果過程字節爲"6C",TTL將立即重發前一個命令的命令頭給卡,它的P3值用"XX"代替。"XX"是SW2的值。

  ◇ 如果過程字節是"6X"(除"60"、"61"及"6C"之外)或"9X",與前兩者TTL自己處理不同,TTL將通過命令響應返回狀態碼給上一層--終端應用層(TAL),由TAL處理,並等待下一個命令。

  2.3 卡命令處理程序流程圖

  圖 7 是卡命令處理程序,即終端與卡的信息交互過程的流程圖。

  以下是引腳說明。

  ECPU:決定卡的CLK觸點上是否有CLK信號的引腳;

  ICVCC:終端與卡的Vcc觸點相接觸的引腳;

  ICIO: 終端與卡的I/O觸點相接觸的引腳;

  ICCLK:終端與卡的CLK觸點相接觸的引腳;

  ICRST:終端與卡的RST觸點相接觸的引腳。

  以下是程序中函數介紹。

  ◇ void isr_timer1(void) interrupt 3:定時器1中斷子程序,用於按位發送和接收數據字節;

  ◇ void Snd(void): 發送數據子程序,由定時器1實現;

  ◇ void Rcv(BYTE bytenr,BYTE *Buffer):接收數據子程序(參數含義分別是:接收數據字節數、接收數據的存放處),由定時器1實現;

  ◇ 函數1 void Reset(BYTE *len, BYTE *resp):復位子程序(參數含義分別是:返回復位響應數據的長度、復位響應數據);

  ◇ 函數2 void Power_off(void):觸點釋放子程序;

  ◇ 函數3 WORD CPUC_Cmd(BYTE len,BYTE* comm, BYTE *lenr, BYTE* resp):CPU卡命令子程序(參數含義分別是:發送命令長度、發送命令、返回字節數、返回數據),函數返回狀態字節SW1SW2。

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