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