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