智能卡的文件系統
文章出處:http://hz-huyue.com 作者:王 波,伍洲凱 人氣: 發表時間:2011年09月29日
1 智能卡簡介
智能卡的名稱來源于英文名詞“Smartcard”,又稱集成電路卡,即IC 卡( Integrated Circuit card) 。它將一個集成電路芯片鑲嵌于塑料基片中,封裝成卡的形式,其外形與覆蓋磁條的磁卡相似。智能卡的概念是70 年代初提出來的,法國布爾(BULL) 公司于1976 年首先創造出智能卡產品,并將這項技術應用到金融、交通、醫療、身份證明等多個行業。智能卡芯片具有寫入數據和存儲數據的能力,智能卡存儲器中的內容根據需要可以有條件地供外部讀取和供內部信息處理和判定之用。
根據智能卡中所鑲嵌的集成電路的不同可以分成以下三類:
(1) 存儲卡:卡中的集成電路為EEPROM(可用電擦除的可編程只讀存儲器) 。
(2) 加密存儲卡:卡中包含具有加密邏輯的集成電路和非易失存儲器。
(3) CPU 卡: 卡中的集成電路包括中央處理器CPU、EEPROM、隨機存儲器RAM以及固化在只讀存儲器ROM中的片內操作系統COS(Chip Operating System) 。嚴格地講,只有CPU 卡才是真正的智能卡。按卡與外界數據傳送的形式來分,有接觸型智能卡和非接觸型智能卡兩種。
目前,最廣為人知的智能卡標準就是ISO7816。此標準主要定義了塑料基片的物理和尺寸特性, 觸點的尺寸和位置,信息交換的底層協議描述,以及跨行業的命令集等等。
2 智能卡的文件系統
2. 1 文件系統的組織結構
智能卡的文件系統類似DOS 的樹形文件系統。ISO7816 支持兩類文件:DF(Dedicated File ) 和EF(Elementary File) 。DF 文件有點類似DOS 的目錄,而EF 文件則有點類似DOS 的數據文件。DF 文件之下的DF 文件,類似DOS 的子目錄。當然,DF 之下還可以有DF 文件。同DOS 文件系統一樣,智能卡的文件系統也必須有一個根文件,這個根文件是一個DF 文件,我們把它稱為MF (Master File) 文件,MF 文件類似DOS 的根目錄。
在智能卡的文件系統結構中,MF 文件有且只能有一個;DF 文件是可選的,這兩種文件主要起管理和形成樹形的文件系統結構的作用,真正存放數據的是EF 文件。
MF 文件是智能卡文件系統的根。在MF 文件下可以建立各種DF 和EF 文件。雖然系統允許在根下直接生成各種EF 應用文件,但最佳的文件組織方法是每一種應用均分配一個DF 文件,在相應的DF 文件下再具體組織各種EF 應用數據。
DF 文件含有文件控制信息和可分配的存儲空間的信息,其下可以建立各種DF 和EF 文件。一般而言,一個DF 文件將被用來存儲某一應用的所有數據。DF 文件在用戶存儲器中占據一塊靜態存儲器,一旦DF 文件建立,其存儲器的大小就不能變動。但在該DF 文件下的EF 文件則可以重新分配所使用存儲器大小,也可以被刪除。該DF 文件被刪除之后,其下的DF 和EF 文件也同時被刪除,釋放的存儲器塊可由其它DF 文件使用。
EF 文件是智能卡樹形文件系統的葉,其下不能再建立其他任何文件。
2. 2 文件系統的文件訪問機制
當訪問一個文件時,我們可以使用下面幾種方法中的至少一種來進行:
(1) 通過文件標志符(File Identifier) 來訪問
在智能卡文件系統中每一個文件都有一個文件標志符,它占用2 個字節。值“3FFF”和“FFFF”系統保留,不能用于具體的文件。對于MF 文件來說,它的文件標志符必須為“3F00”。因此,當我們訪問智能卡的文件系統時,起點就是從文件標志符為“3F00”的MF 文件開始。
(2) 通過文件路徑來訪問
所謂文件路徑,就是無分隔符的文件標志符的串聯形式。智能卡文件系統的文件路徑起始于MF 文件或者當前的DF 文件的文件標志符,而以要訪問的文件的文件標志符結束;在這兩者之間則是相關的DF 文件的文件標志符。如果當前的DF 文件的文件標志符未知,則“3FFF”可以作為文件路徑的開始。如果文件路徑以MF 文件的文件標志符開始,則稱該文件路徑為絕對路徑;如果以當前DF 文件的文件標志符開始,則稱為相對路徑。
(3) 通過EF 短標志符來訪問
對于任意一個EF 文件,可以通過一個5bit 編碼的短標志符來訪問,其范圍為1~30 。0 具有特殊含義,表示當前正在訪問的EF 文件。短標志符不能用于文件路徑,也不能用作文件標志符。
(4) 通過DF 文件名來訪問
每個DF 文件可以有一個1~16 字節長的文件名。為了能夠明確無誤的通過DF 文件名來訪問DF 文件,智能卡中的每個DF 文件的文件名必須不同。
2. 3 EF 文件的內部結構
EF 文件的結構可分為透明結構和記錄結構兩種。
(1) 透明結構:透明結構EF 文件在通過接口被訪問時只被視為數據單元(Data Unit) 序列,而好像沒有結構一樣,所以我們稱之為透明結構。所謂數據單元,就是可被訪問的最小的位集(Smallest set of bits) ,如1 個字節,2 個字節等等。透明結構本質上也就是二進制數據結構。
(2) 記錄結構:記錄結構EF 文件在通過接口被訪問時被視為具有結構的記錄(Record) 序列。所謂記錄,就是可被作為一個整體加以處理的具有結構的字節串,類似于PASCAL 語言的記錄的概念。
2. 4 EF 文件中的數據訪問機制
EF 文件中的數據可以通過記錄、數據單元或者數據對象來訪問。對記錄結構的EF 文件而言,數據被存儲在連續的記錄序列中;對透明結構的EF 文件而言,數據被存儲在連續的數據單元序列中。如果試圖訪問不在EF 文件中的記錄、數據單元或者數據對象,將導致錯誤。數據訪問方法、記錄編號方法以及數據單元的大小等作為文件系統的特征,在智能卡的復位應答過程ATR (Answer to reset) 中由智能卡給出,還可以由智能卡中的ATR 文件給出,以及由其他文件控制信息給出。如果智能卡在上面提及的三種方式中不止一處給出了數據訪問方法、記錄編號方法以及數據單元的大小等信息,那么對于任意一個EF文件而言,由于不同出處給出的信息可能不一樣,因此很明顯只能有一個信息是有效的。而有效的信息就是從MF 文件到該EF 文件的文件路徑上最靠近該EF 文件的位置給出的信息。
(1) 記錄結構EF 文件中記錄的訪問方法
對記錄結構的EF 文件,其中的記錄可以通過記錄編號來訪問。記錄編號是無符號8 位整數,其取值范圍為01~FE。值00 保留作特殊用途;值FF 保留來將來使用。在每個記錄結構的EF 文件中,每個記錄的記錄編號都是唯一并且是有序的。
對于線性記錄結構的EF 文件:當創建添加記錄時,記錄編號按照以一定順序予以指定。也就是說記錄的記錄編號按照記錄的創建順序指定。因此,第一個記錄(記錄編號為1) 就是第一個創建的記錄;第二個記錄(記錄編號為2) 就是第二個創建的記錄以次類推。
對于循環記錄結構的EF 文件:第一個記錄(記錄編號為1) 總是最后創建的記錄;第二個記錄(記錄編號為2) 就是倒數第二個創建的記錄以次類推。很顯然,對于循環記錄結構的EF 文件的記錄編號順序剛好和線性記錄結構的EF 文件相反。
記錄編號值00 總是表示當前記錄,就是記錄指針(record pointer) 當前指向的記錄。
(2) 透明結構EF 文件中數據單元的訪問方法
對每一個透明結構的EF 文件而言,其內部的數據單元通過偏移(Offset) 來訪問。偏移是一個無符號整數,長度為8 位或者15 位(由不同的訪問命令來決定) 。當偏移為0 時,則訪問該透明結構EF 文件的第一個數據單元;偏移為1 時,訪問第二個數據單元;偏移為2 時,訪問第三個數據單元以次類推。在缺省情況下,也就是智能卡沒有給出數據單元大小的信息時,默認采用每個數據單元大小為1 字節。
(3) 數據對象的訪問方法
所謂數據對象,就是采用抽象語法表示ASN. 1 (Abstract syntax notation) 的編碼規則,如BER(Basic encoding rule) 等對數據按照一定的格式編碼形成的一個數據結構。該數據結構通常包含三部分信息:標簽(tag) 、長度(length) 和數據(data) 。標簽給出了數據的數據類型,如整數、ASCII 字符串、UNICODE 字符串、structure 結構類型等等;長度則給出了數據的長度。很明顯,這種數據對象本質上是自描述的。因此,當訪問數據對象時,可以通過標簽等對數據對象進行訪問。
(文/重慶大學計算機學院建筑智能化研究室,王波,伍洲凱)