CPU卡技術學習筆記

  • COS(Chip Operating System片內操作系統)
  1. COS 出現背景

隨着IC卡從簡單的同步卡發展到異步卡,從簡單的EPROM卡發展到內帶微處理器的智能卡(又稱CPU卡),對IC卡的各種要求越來越高。而卡本身所需要的各種管理工作也越來越複雜,因此就迫切地需要有一種工具來解決這一矛盾,而內部帶有微處理器的智能卡的出現,使得這種工具的實現變成了現實。COS的出現不僅大大地改善了智能卡的交互界面,使智能卡的管理變得容易。

  1. COS概述

COS的全稱是Chip Operating System(片內操作系統),它一般是緊緊圍繞着它所服務的智能卡的特點而開發的。由於不可避免地受到了智能卡內微處理器芯片的性能及內存容量的影響,因此,COS在很大程度上不同於我們通常所能見到的微機上的操作系統(例如DOS、UNIX等)。

首先,COS是一個專用系統而不是通用系統。即:一種COS一般都只能應用於特定的某種(或者是某些)智能卡,不同卡內的COS一般是不相同的。因爲COS一般都是根據某種智能卡的特點及其應用範圍而特定設計開發的,儘管它們在所實際完成的功能上可能大部分都遵循着同一個國際標準。

COS的主要功能是控制智能卡同外界的信息交換,管理智能卡內的存儲器並在卡內部完成各種命令的處理。其中,與外界進行信息交換是COS最基本的要求。在交換過程中,COS所遵循的信息交換協議目前包括兩類:異步字符傳輸的T=0協議以及異步分組傳輸的T=l協議。

  1. COS 體系

所有的COS都必須能夠解決至少三個問題,即:文件操作、鑑別與覈實、安全機制。事實上,鑑別與覈實和安全機制都屬於智能卡的安全體系的範疇之中。但再具體地分析一下,則我們實際上可以把從讀寫設備(即接口設備IFD)發出命令到卡給出響應的一個完整過程劃分爲四個階段,也可以說是四個功能模塊:傳送管理器(TM)安全管理器(SM)、應用管理器(AM)、文件管理器(FM)

在這裏需要提起注意的是,智能卡中的“文件”概念與我們通常所說的“文件”是有區別的。儘管智能卡中的文件內存儲的也是數據單元或記錄,但它們都是與智能卡的具體應用直接相關的。一般而言,一個具體的應用必然要對應於智能卡中的一個文件,因此,智能卡中的文件不存在通常所謂的文件共享的情況。而且,這種文件不僅在邏輯上必須是完整的,在物理組織上也都是連續的。此外,智能卡中的文件儘管也可以擁有文件名,但對文件的標識依靠的是與卡中文件—一對應的文件標識符,而不是文件名。因爲智能卡中的文件名是允許重複的,它在本質上只是文件的一種助記符,並不能完全代表整個文件。

(1)傳送管理(Transmission Manager)

傳送管理主要是依據智能卡所使用的信息傳輸協議,對由讀寫設備發出的命令進行接收。同時,把對命令的響應按照傳輸協漢的格式發送出去。由此可見,這一部分主要和智能卡具體使用的通信協議有關,而且,所採用的通信協議越複雜,這一部分實現起來也就越困難、越複雜。

我們在前面提到過目前智能技術卡採用的傳輸協議一般是T=0協議和T=1協議,如果說這兩類協議的COS在實現功能上有什麼不同的話,主要就是在傳送管理器的實現上有不同。不過,無論是採用T=0協議還T=1協議,智能卡在信息交換時使用的都是異步通信模式;而且由於智能卡的數據端口只有一個,此信息交換也只能採用半雙工的方式,即在任一時刻,數據端口上最多只能有一方(智能卡或者讀寫設備)在發送數據。T=0、T=1協議的不同之處在於它們數據傳輸的單位和格式不一樣,T=0協議以單字節的字符爲基本單位,T=1協議則以有一定長度的數據塊爲傳輸的基本單位

如果傳送管理器認爲對命令的接收是正確的,那麼,它一般是隻將接收到的命令的信息部分傳到下一功能模塊,即安全管理器,而濾掉諸如起始位、停止位之類的附加信息。相應地,當傳送管理器在向讀寫設備發送應答的時候,則應該對每個傳送單位加上信息交換協議中所規定的各種必要的附屬信息。

(2)安全體系(Security Structure)

智能卡的安全體系是智能卡COS中一個極爲重要的部分,它涉及到卡的鑑別覈實方式的選擇,包括COS在對卡中文件進行訪問時的權限控制機制,還關係到卡中信息的保密機制。可以認爲,智能卡之所以能夠迅速地發展並且流行起來.其中一個重要的原因就在於它能夠通過COS的安全體系給用戶提供一個較高的安全和安全機制 。安全機制可以認爲是安全狀態實現轉移所採用的轉移方法和手段,通常包括:通行字鑑別,密碼鑑別,數據鑑別及數據加密。

鑑別與覈實:鑑別與覈實其實是兩個不同的概念,但是由於它們二者在所實現的功能上十分地相似,所以我們同時對它們進行討論,這樣也有利於在比較中掌握這兩個概念。

通常所謂的鑑別(Authentication)指的是對智能卡(或者是讀寫設備)的合法性的驗證,即是如何判定一張智能卡(或讀寫設備)不是僞造的卡(或讀寫設備)的問題;而覈實(verlfy)是指對智能卡的持有者的合法性的驗證,也就是如何判定一個持卡人是經過了合法的授權的問題。

鑑別則是通過智能卡和讀寫設備雙方同時對任意一個相同的隨機數進行某種相同的加密運算(目前常用DES算法),然後判斷雙方運算結果的一致性來達到驗證的目的。根據所鑑別的對象的不同,COS又把鑑別分爲內部鑑別(Internal Authentlcation)外部鑑別(EXternal Authentication)兩類。這裏所說的"內部"、"外部"均以智能卡作爲參照點,因此,內部鑑別就是讀寫設備對智能卡的合法性進行的驗證;外部籤別就是智能卡對讀寫設備的合法性進行的驗證。

密碼管理:目前智能卡中常用的數據加密算法是DES算法。採用DES算法的原因是因爲該算法已被證明是一個十分成功的加密算法,而且算法的運算複雜度相對而言也較小,比較適用於智能卡這樣運算能力不是很強的情況。 DES算法的密碼(或稱密鑰)長度是64位的。COS把數據加密時要用到的密碼組織在一起,以文件的形式儲存起來,稱爲密碼文件。最簡單的密碼文件就是長度爲8個字節的記錄的集合,其中的每個記錄對應着一個DES密碼;較爲複雜的密碼文件的記錄中則可能還包含着該記錄所對應的密碼的各種屬性和爲了保證每個記錄的完整性而附加的校驗和信息。其中的記錄頭部分存儲的就是密碼的屬性信息,不論是什麼樣的密碼文件,作爲一個文件本身,COS都是通過對文件訪問的安全控制機制來保證密碼文件的安全性的。

當需要進行數據加密運算時,COS就從密碼文件中選取密碼加入運算。從密碼文件中讀出密碼時,與讀取應用數據一樣,只要直接給出密碼所在的地址就可以了。當然,最簡單的產生密碼的方法是直接從密碼文件中隨機讀出一個密碼作爲加密用密碼。但是這樣的機制可能會多次選中同一密碼,從而給竊聽者提供破譯的機會,安全性不太高。因此,比較好的辦法是在隨機抽取出一個密碼後再對密碼本身作一些處理,儘量減少其重複出現的機會。

(3)應用管理器(AppIication Manager)

應用管理器的主要任務在於對智能卡接收的命令的可執行性進行判斷。關於如何判斷一條命令的可執行性,我們已經在安全體系一節中作了說明,所以我們可以認爲,應用管理器的實現主要是智能卡應用軟件的安全機制的實現問題。而因爲智能卡的各個應用都以文件的形式存在,所以應用管理器的本質就是我們將要在下一節加以討論的文件訪問的安全控制問題。正是基於這一點,我們也可以把應用管理器看作是文件管理器的一個部分。

(4)文件管理器(File Manager)

與安全一樣,文件也是COS中的一個極爲重要的概念。所謂文件,是指關於數據單元或卡中記錄的有組織的集合。COS通過給每種應用建立一個對應文件的方法來實現它對各個應用的存儲及管理。因此,COS的應用文件中存儲的都是與應用程序有關的各種數據或記錄。此外,對某些智能卡的COS,可能還包含有對應用文件進行控制的應用控制文件。在COS中,所有的文件都有一個唯一的文件標識符(Filel Identifier),因此通過文件標識符就可以直接查找所需的文件。此外,每個文件還可以有一個文件名作爲助記符,它與文件標識符的不同之處在於它是可以重複的。COS中的各文件在智能卡的個人化過程中由發行商(Issuer)根據卡的應用而創建,對卡的用戶而言通常是不能對文件進行創建或刪除的。但是用戶可以根據情況對文件內容進行修改,可以對文件中的記錄或數據單元進行增加、刪除等操作。

(1) 文件系統:COS的文件按照其所處的邏輯層次可以分爲三類; 主文件(Master File)專用文件(Dedicated File) 以及基本文件(Elementary File)。其中,主文件對任何COS都是必不可少的,它是包含有文件控制信息及可分配存儲區的唯一文件,其作用相當於是COS文件系統的根文件,處於COS文件系統的最高層;基本文件也是必不可少的一個部分,它是實際用來存儲應用的數據單元或記錄的文件,處於文件系統的最底層,而專用文件是可選的,它存儲的主要是文件的控制信息、文件的位置、大小等數據信息。我們可以用下圖的樹狀結構來形象地描述一個COS的文件系統的基本結構。

當然,對於具體的某個COS產品,很可能由於應用的不同,對文件的實際分類表示會有所不同。它的文件分爲三類: COS文件(COS File)、密碼文件(Key File)和錢包文件(Purses File)。其中所謂的COS文件保存有基本的應用數據;密碼文件存儲的是進行數據加密時要用到的密碼;錢包文件的作用有些類似 於我們日常生活中的錢包。由此可見,它的這三類文件本質上又都介於基本文件(EF)類。

  • CPU卡
  1. CPU卡概述

CPU卡:CPU卡內具有中央處理器(CPU)、隨機存儲器(RAM)、程序存儲器(ROM)、數據存儲器(EEPROM)以及片內操作系統(COS),CPU卡不僅僅是單一的非接觸卡,而是一個帶有卡片操作系統(COS)的應用平臺,裝有COS的CPU卡相當於一臺微型計算機,不僅具有數據存儲功能,同時具有命令處理、計算和數據加密等功能。

CPU卡一卡通具備最高安全級別,CPU卡採用動態密碼,並且是一用一密即同一張卡,每刷一次卡的認證密碼都不相同,有效防止重複卡、仿製卡、卡上數據/金額非法修改等安全漏洞,提高整個系統的安全性。

  1. CPU卡文件結構

MF

master file 主控文件

DF

directory file 目錄文件

EF

elementary file 基本文件

                                                               

 

MF

每個CPU卡只有一個,用於存儲卡的控制信息與管理信息。復位後作爲當前文件,只有文件頭。

DF

只有文件頭,存放目錄的管控信息。

EF

有文件頭和文件體。用來存放用戶數據或密鑰。EF文件分爲透明二進制文件與記錄文件。

二進制文件

以數據塊或文件偏移訪問

記錄文件

分爲三種,定長記錄文件,變長記錄文件,循環記錄文件(按一條條記錄訪問)

定長記錄文件

每條記錄長度相同,追加記錄時,記錄號順序遞增。比如第一次記錄,記錄號爲1,第二次記錄,記錄號爲2.

循環記錄文件

固定長度記錄的環形文件。比如第一次記錄,記錄號爲1,第二次記錄,記錄號爲1,上次記錄的記錄號爲2,依次類推,寫滿後,若再次記錄,則覆蓋第一次最原始的記錄號,且當前記錄號仍爲1.

變長記錄文件

寫記錄時可變,數據以記錄爲單位存儲。更新記錄時,新記錄長度必須與卡中原有記錄長度相同。其格式爲TLV。

還有一個比較重要的KEY文件

這是一個基本文件,用來存放口令密鑰,外部認證密鑰,DES運算密鑰,每個密鑰都是TLV格式。

KEY文件每個目錄下有且只有一個,且最先被創建。

 

DF/EF必須在MF下創建,每個DF包含多個DF/EF,包含下級目錄的文件爲DDF,不包含的爲ADF(應用數據文件)

文件頭:包含文件類型,標識符,主體大小,權限,校驗等信息。

文件標識:FID (FFFF不能用作標識) 
 短文件標識:SFI

  1. CPU卡命了報文結構

CPU卡命令報文個字段含義

代碼

中文含義

備註

CLA

命令類別Class

1字節

INS

命令指令Instruction

1字節

P1

參數1

1字節

P2

參數2

1字節

Lc

命令數據域Data長度

1字節

Data

命令數據域

 

Le

應答數據域長度

1字節

命令域中除了Data,都是1字節十六進制數。數據域則是十六進制數串,可以是二進制數、BCD碼或文字的ASCII碼等等。這有點像彙編語言。調用命令函數時,把命令串代入對應參數即可。

· 

 6200

警告 信息未提供”

·  6281

警告 回送數據可能”

·  6282

警告 文件長度小於Le”

·  6283

警告 選中的文件無效”

·  6284

警告 FCI格式與P2指定的不符”

·  6300

警告 鑑別失敗”

·  63Cx

警告 校驗失敗(x-允許重試次數)”

·  6400

狀態標誌位沒有變”

·  6581

內存失敗”

·  6700

長度錯誤”

·  6882

不支持安全報文”

·  6981

命令與文件結構不相容,當前文件非所需文件”

·  6982

操作條件(AC)不滿足,沒有校驗PIN”

·  6983

您的卡已被鎖定”

·  6984

隨機數無效,引用的數據無效”

·  6985

使用條件不滿足”

·  6986

不滿足命令執行條件(不允許的命令,INS有錯)”

·  6987

MAC丟失”

·  6988

MAC不正確”

·  698D

保留”

·  6A80

數據域參數不正確”

·  6A81

功能不支持;創建不允許;目錄無效;應用鎖定”

·  6A82

該文件未找到”

·  6A83

該記錄未找到”

·  6A84

文件預留空間不足”

·  6A86

P1或P2不正確”

·  6A88

引用數據未找到”

·  6B00

參數錯誤”

·  6Cxx

Le長度錯誤,實際長度是xx”

·  6E00

不支持的類:CLA有錯”

·  6F00

數據無效”

·  6F01

連接中斷”

·  6D00

不支持的指令代碼”

·  9301

您的卡餘額不足”

·  9302

MAC2錯誤”

·  9303

應用被永久鎖定”

·  9401

您的卡餘額不足”

·  9402

交易計數器達到最大值”

·  9403

密鑰索引不支持”

·  9406

所需MAC不可用”

·  6900

不能處理”

·  6901

命令不接受(無效狀態)”

·  61xx

正常 需發GET RESPONSE命令” 讀取指令00C00000xx

·  6600

接收通訊超時”

·  6601

接收字符奇偶錯”

·  6602

校驗和不對”

·  6603

警告 當前DF文件無FCI”

·  6604

警告 當前DF下無SF或KF”

·  6E81

卡片已離開”

 

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