1. 程式人生 > >智慧卡作業系統—COS概述

智慧卡作業系統—COS概述

隨著IC卡從簡單的同步卡發展到非同步卡,從簡單的EPROM卡發展到內帶微處理器的智慧卡(又稱CPU卡),對IC卡的各種要求越來越高。而卡本身所需要的各種管理工作也越來越複雜,因此就迫切地需要有一種工具來解決這一矛盾,而內部帶有微處理器的智慧卡的出現,使得這種工具的實現變成了現實。人們利用它內部的微處理器晶片,開發了應用於智慧卡內部的各種各樣的作業系統。COS的出現不僅大大地改善了智慧卡的互動介面,使智慧卡的管理變得容易;而且,更為重要的是使智慧卡本身向著個人計算機化的方向邁出了一大步,為智慧卡的發展開拓了極為廣闊的前景。

COS概述


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

  首先,COS是一個專用系統而不是通用系統。即:一種COS一般都只能應用於特定的某種(或者是某些)智慧卡,不同卡內的COS一般是不相同的。因為COS一般都是根據某種智慧卡的特點及其應用範圍而特定設計開發的,儘管它們在所實際完成的功能上可能大部分都遵循著同一個國際標準。其次,與那些常見的微機上的作業系統相比較而言,COS在本質上更加接近於臨控程式、而不是一個通常所謂的真正意義上的作業系統,這一點至少在目前看來仍是如此。因為在當前階段,COS所需要解決的主要還是對外部的命令如何進行處理、響應的問題,這其中一般並不涉及到共享、併發的管理及處理,而且就智慧卡在目前的應用情況而盲,併發和共享的工作也確實是不需要曲。COS在設計時一般都是緊密結合智慧卡記憶體儲器分割槽的情況,按照國際標準(ISO/IEC7816系列標準)中所規定的一些功能進行設計、開發。但是由於目前智慧卡的發展速度很快,而國際標準的制定週期相對比較長一些,因而造成了當前的智慧卡國際標準還不太完善的情況,據此,許多廠家又各自都對自己開發的COS作了一引起擴充。

  就目前而言,還沒有任何一家公司的COS產品能形成一種工業標準。因此本文將主要結合現有的(指l994年以前)國際標準,重點講述COS的基本原理以及基本功能,在其中適當地列舉它們在某些產品中的實現方式作為例子。

  COS的主要功能是控制智慧卡同外界的資訊交換,管理智慧卡內的儲存器並在卡內部完成各種命令的處理。其中,與外界進行資訊交換是COS最基本的要求。在交換過程中,COS所遵循的資訊交換協議目前包括兩類:非同步字元傳輸的T=0協議以及非同步分組傳輸的T=l協議。這兩種資訊交換協議的具體內容和實現機制在IS0/IEC78l6-3和IS0/IEC7816-3A3標準中作了規定;而COS所應完成的管理和控制的基中功能則是在 ISO/IEC78l6-4標準中作出規定的。在該國際標準中,還對智慧卡的資料結構以及COS的基本命令集作出了較為詳細的說明。至於IS0/IEC78l6-l和2,則是對智慧卡的物理引數、外形尺寸作了規定,它們與COS的關係不是很密切。

COS的體系

  依賴於上一節中所描述的智慧卡的硬體環境,可以設計出各種各樣的COS。但是,所有的COS都必須能夠解決至少三個問題,即:檔案操作、鑑別與核實、安全機制。事實上,鑑別與核實和安全機制都屬於智慧卡的安全體系的範疇之中,所以,智慧卡的COS中最重要的兩方面就是檔案與安全。但再具體地分析一下,則我們實際上可以把從讀寫裝置(即介面裝置IFD)發出命令到卡給出響應的一個完整過程劃分為四個階段,也可以說是四個功能模組:傳送管理器(TM)、安全管理器(SM)、應用管理器(AM)和檔案管理器(FM)。其中,傳送管理器用於檢查資訊是否被正確地傳送。這一部分主要和智慧卡所採用的通訊協議有關;安全管理器主要是對所傳送的資訊進行安全性的檢查或處理,防止非法的竊聽或侵入;應用管理器則用於判斷所接收的命令執行的可能性;檔案管理器通過核實命令的操作許可權,最終完成對命令的處理。對於一個具體的COS命令而言,這四個階段並不一定都是必須具備的,有些階段可以省略,或者是並人另一階段中;但一般來說,具備這四個階段的COS是比較常見的。以下我們將按照這四個階段對COS進行較為詳細的論述。

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

傳送管理(Transmission Manager)

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

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

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

安全體系(Security Structure)

  智慧卡的安全體系是智慧卡COS中一個極為重要的部分,它涉及到卡的鑑別與核實方式的選擇,包括COS在對卡中檔案進行訪問時的許可權控制機制,還關係到卡中資訊的保密機制。可以認為,智慧卡之所以能夠迅速地發展並且流行起來.其中一個重要的原因就在於它能夠通過COS的安全體系給使用者提供一個較高的安全ttributes)和安全機制(SecurityMachinams) 。其中,安全狀態是指智慧卡在當前所處的一種狀態,這種狀態是在智慧卡進行完復位應答或者是在它處理完某命令之後得到的。事實上,我們完全可以認為智慧卡在整個工作過程中始終都是處在這樣或是那樣的一種狀態之中,安全狀態通常可以利用智慧卡在當前已經滿足條件的集合來表示。安全屬性實際上是定義了執行某個命令所需要的…些條件,只有智慧卡滿足了這些條件,該命令才是可以執行的。因此,如果將智慧卡當前所處的安全狀態與某個操作的安全屬性相比較,那麼根據比較的結果就可以很容易地判斷出一個命令在當前狀態下是否是允許執行的,從而達到了安全控制的目的和安全狀態與安全屬性相聯絡的是安全機制。安全機制可以認為是安全狀態實現轉移所採用的轉移方法和手段,通常包括:通行字鑑別,密碼鑑別,資料鑑別及資料加密。一種安全狀態經過上述的這些手段就可以轉移到另一種狀態,把這種狀態與某個安全屬性相比較,如果一致的話,就表明能夠執行該屬性對應的命令,這就是COS安全體系的基本工作原理。

  從上面對cos安全體系的工作原理的敘述中,我們可以看到,相對於安全屬性和安全狀態而言,安全機制的實現是安全體系中極為重要的一個方面。沒有安全機制,cos就無法進行任何操作。而從上面對安全機制的介紹中,我們可以看到,coS的安全機制所實現的就是如下三個功能:鑑別與核實,資料加密與解密,檔案訪問的安全控制。因此,我們將在下面對它們分別進行介紹。其中,關於檔案訪問的安全控制,由於它與檔案管理器的聯絡十分緊密,因此我們把它放到檔案系統中加以討論。

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

  通常所謂的鑑別(Authentication)指的是對智慧卡(或者是讀寫裝置)的合法性的驗證,即是如何判定一張智慧卡(或讀寫裝置)不是偽造的卡(或讀寫裝置)的問題;而核實(verlfy)是指對智慧卡的持有者的合法性的驗證,也就是如何判定一個持卡人是經過了合法的授權的問題。由此可見,二者實質都是對合法性的一種驗證,就其所完成的功能而言是十分類似的。但是,在具體的實現方式上,由於二者所要驗證的物件的不同,所採用的手段也就不盡相同了。具體而言,在實現原理上,核實是通過由使用者向智慧卡出示僅有他本人才知道的通行字,並由智慧卡對該通行字的正確性進行判斷來達到驗證的目的的。在通行字的傳送過程中,有時為了保證不被人竊聽還可以對要傳送的資訊進行加密/解密運算,這一過程通常也稱為通行字鑑別。

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

  智慧卡通過鑑別與核實的方法可以有效地防止偽卡的使用,防止非法使用者的入侵,但還無法防止在資訊交換過程中可能發生的竊聽。因此,在卡與讀寫裝置的通訊過程中對重要的資料進行加密就作為反竊聽的有效手段提了出來。我們下面僅對加密中的一個重要部件密碼在COS中的管理及儲存原理加以說明。

  密碼管理:目前智慧卡中常用的資料加密演算法是DES演算法。採用DES演算法的原因是因為該演算法已被證明是一個十分成功的加密演算法,而且演算法的運算複雜度相對而言也較小,比較適用於智慧卡這樣運算能力不是很強的情況。 DES演算法的密碼(或稱金鑰)長度是64位的。COS把資料加密時要用到的密碼組織在一起,以檔案的形式儲存起來,稱為密碼檔案。最簡單的密碼檔案就是長度為8個位元組的記錄的集合,其中的每個記錄對應著一個DES密碼;較為複雜的密碼檔案的記錄中則可能還包含著該記錄所對應的密碼的各種屬性和為了保證每個記錄的完整性而附加的校驗和資訊。其中的記錄頭部分儲存的就是密碼的屬性資訊,例如是可以應用於所有應用檔案的密碼還是隻對應某-應用檔案可用的密碼;是可以修改的還是隻能讀取的密碼等等。但是,不論是什麼樣的密碼檔案,作為一個檔案本身,COS都是通過對檔案訪問的安全控制機制來保證密碼檔案的安全性的。

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

  例如PCOS產品中,採用的辦法就是對從密碼檔案中選出的密碼首先進行一次DES加密運算,然後將運算結果作為資料加密的密碼使用。其計算公式如下:Key=DES(CTC,K(a))式中,K是從密碼檔案中隨機選取的一個密碼;CTC是一個記錄智慧卡的交易次數的計數器,該計數器每完成一次交易就增一;key就是最後要提供給資料加密運算使用的密碼。使用這種方法可以提高智慧卡的安全性,但卻降低了執行的效率。因此,具體採用什麼樣的方法來產生密碼應當根據智慧卡的應用範圍及安全性要求的高低而具體決定。

應用管理器(AppIication Manager)

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

檔案管理器(File Manager)

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

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

  當然,對於具體的某個COS產品,很可能由於應用的不同,對檔案的實際分類表示會有所不同。但只要仔細地進行分析,都可以歸結為上面的三個邏輯層次。例如前面提到過的PCOS產品。它對檔案的分類不是按照邏輯層次劃分的,而是根據檔案的用途進行的。它的檔案分為三類: COS檔案(COS File)、密碼檔案(Key File)和錢包檔案(Purses File)。其中所謂的COS檔案儲存有基本的應用資料;密碼檔案儲存的是進行資料加密時要用到的密碼;錢包檔案的作用有些類似 於我們日常生活中的錢包。由此可見,它的這三類檔案本質上又都介於基本檔案(EF)類。在PCOS中,專用檔案的概念不是很明顯,但是事實上,如果大家留心的話,那麼從以前的論述中,應該不難發現該產品儲存器分割槽中FAT區內的檔案的作用就類似於專用檔案;而整張PCOS卡本身的性質實際就是一個主檔案。COS檔案有四種邏輯結構:透明結構,線性定長結構,線性變長結構,定長迴圈結構。它們的定義及特點可以參閱ISO/IEC78l 6-4協議中的有關部分,這裡不再詳述。不過無論採取的是什麼樣的邏輯結構,COS中的檔案在 智慧卡的儲存器中都是物理上連續存放的。卡中資料的存取方式、記錄的編號方法、資料單元的大小等作為檔案系統的特徵,在智慧卡的復位應答過程中由卡給出。

  一般而言,在智慧卡中最為重要的資料存取方式還是隨機存取方式,也就是卡的使用者在得到授權後,可以直接地任意訪問檔案中的某個資料單元或記錄。至於COS具體對檔案可以進行什麼樣的操作.我們將在cos的命令系統中進行討論。

  (2) 檔案訪問安全:對檔案訪問的安全性控制是cos系統中的一個十分重要的部分,由於目前的國際標準(1S0/IEC78l 6-4)在這方面基本沒有作出什麼實質性的規定,因此,現有的檔案訪問的安全控制機制的具體實現方式多種多樣。我們在這裡準備介紹其中比較有代表性的兩種實現方式:鑑別暫存器方式以及狀態機方式。其中,採用鑑別暫存器方式的有PCOS、ME2000等產品:採用狀態機方式的產品有STARCOS。採用鑑別暫存器方式時,通常是在記憶體RAM中設定一個8位(或者是16位)長的區域作為鑑別用暫存器。這裡的鑑別是指對安全控制密碼的鑑別。鑑別用暫存器所反映的是智慧卡在當前所處的安全狀態。採用這種方式時,智慧卡的每個檔案的檔案頭(或者是檔案描述器)中通常都儲存有該檔案能夠被訪問的條件,一般是包括讀、寫兩個條件,分別用cr、cu表示這就構成了該檔案的安全屬性。而使用者通過向智慧卡輸入安全密碼.就可以改變卡的安全狀態,這一過程我們通常稱為出示,這就是鑑別暫存器為主的安全機制。把上面的兩方面結合起來,就能夠對卡中檔案的讀寫許可權加以控制了。具體的操作機制我們以PCOS為例加以描述。

  首先,PCOS中的鑑別暫存器是8位字長的,這8位字長的各位分別與PCOS儲存器中保密字區內的7個安全密碼的序號一一對應。暫存器中每一位的初始值都被置為"o"。如果使用者向智慧卡出示了某一個安全密碼,並且被判斷為正確的話,系統就在鑑別暫存器的相應位上寫入"l"。例如,如果處於保密字區中的第2個安全密碼被使用者正確出示的話,PCoS就在暫存器的第2位上寫"l"。同時,檔案描述器中的讀、寫條件Cr、Cu儲存的都是在o和7之間的一個數,它的值對應於該檔案進行讀(或寫)操作時所需要出示的密碼在保密字區小的序號。在對某個檔案進行讀(或寫)操作之前,系統首先判斷在鑑別暫存器內對應的第Cr(或Cu)位是否己被置為"l" (如果Cr等於O,就表示該檔案可以被使用者隨意讀取;對於Cu也是一樣),只有當該位為"l"時,才表示讀(或寫)許可權已經得到滿足.才能對該檔案進行讀(或寫)操作。這也就是說,如果使用者想要對一個件進行操作的話,就必須要首先出示對應於該檔案的安全屬性為正確的安全密碼。系統據此就達到了對檔案的訪問進行安全控制的目的。與鑑別暫存器方式完全不一樣,狀態機方式更加明顯地表示出安全狀態、安全屬性以及安全機制的概念以及它們之間的關係(關於狀態機的知識不屬於本文章的範疇,有興趣的讀者請自行查閱有關資料)。以STARCoS為例,它採用的是一種確定狀態機的機制,該機制通過系統內的應用控制檔案(Application Control File,ACF)而得以實現。ACF是一個線性變長結構的檔案,其rh記錄0l包括了該ACP所控制的應用可以允許的所有命令的指令碼 (INS);其餘的記錄分別與記錄ol中的指令碼一一對應,其中儲存的都是對應命令的變體(Varient)記錄。所謂變體記錄指的是這樣的一些記錄:記錄中儲存的是控制資訊、初始狀態、可能的下一狀態以及某些附加的指令資訊的組合,利用ACF中的這些變體記錄就可以形成狀態轉移圖。在變體記錄中,控制資訊部分是必不可少的。不同的變體記錄主要在兩個方面有區別:一是命令所允許的狀態不同,二是以CLA位元組開始的指令資訊部分不相同。這主要是由命令要操作的應用的物件不同而決定的。

  利用ACF,COS系統就可以實現對檔案訪問的安全控制了。當系統接收到一個應用進行操作的一條命令後,首先檢驗其指令碼是否在相應的ACF檔案的記錄01中。如果不在其中,系統就認為該命令是錯誤的。在找到了對應的指令碼後,系統把命令的其餘部分與該命令對應的備變體記錄中的指令資訊按照該變體記錄的控制資訊的要求進行比較,如果比較結果一致,那麼再查驗變體記錄中的初始狀態資訊。若所有這些檢測都順利通過,那麼系統就進入對應變體記錄中指明的下一狀態;否則,繼續查詢下一個變體記錄直到發現相應變體或是查完該命令對應的所有變體記錄為止。如果沒有找到相應的變體記錄,說明該命令是非法的;否則就進入下一步對命令的處理,即由COS呼叫實際的處理過程執行對命令的處理。並且僅當處理過程正常結束的時候,系統才進入一個新的狀態,並開始等待對下一條命令的接收。