物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

智能卡的文件系統(tǒng)

作者:王 波,伍洲凱
來源:RFID世界網(wǎng)
日期:2009-08-05 11:51:30
摘要:本文根據(jù)ISO7816 國際標(biāo)準(zhǔn),詳細闡述了智能卡文件系統(tǒng)的組織結(jié)構(gòu)、文件訪問機制、EF 文件的內(nèi)部結(jié)構(gòu)以及EF 文件中數(shù)據(jù)的訪問機制等。
  1  智能卡簡介 

  智能卡的名稱來源于英文名詞“Smartcard”,又稱集成電路卡,即IC 卡( Integrated Circuit card) 。它將一個集成電路芯片鑲嵌于塑料基片中,封裝成卡的形式,其外形與覆蓋磁條的磁卡相似。智能卡的概念是70 年代初提出來的,法國布爾(BULL) 公司于1976 年首先創(chuàng)造出智能卡產(chǎn)品,并將這項技術(shù)應(yīng)用到金融、交通、醫(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) 。嚴(yán)格地講,只有CPU 卡才是真正的智能卡。按卡與外界數(shù)據(jù)傳送的形式來分,有接觸型智能卡和非接觸型智能卡兩種。 

  目前,最廣為人知的智能卡標(biāo)準(zhǔn)就是ISO7816。此標(biāo)準(zhǔn)主要定義了塑料基片的物理和尺寸特性, 觸點的尺寸和位置,信息交換的底層協(xié)議描述,以及跨行業(yè)的命令集等等。 

  2  智能卡的文件系統(tǒng) 

  2. 1  文件系統(tǒng)的組織結(jié)構(gòu) 

  智能卡的文件系統(tǒng)類似DOS 的樹形文件系統(tǒng)。ISO7816 支持兩類文件:DF(Dedicated File ) 和EF(Elementary File) 。DF 文件有點類似DOS 的目錄,而EF 文件則有點類似DOS 的數(shù)據(jù)文件。DF 文件之下的DF 文件,類似DOS 的子目錄。當(dāng)然,DF 之下還可以有DF 文件。同DOS 文件系統(tǒng)一樣,智能卡的文件系統(tǒng)也必須有一個根文件,這個根文件是一個DF 文件,我們把它稱為MF (Master File) 文件,MF 文件類似DOS 的根目錄。 

  在智能卡的文件系統(tǒng)結(jié)構(gòu)中,MF 文件有且只能有一個;DF 文件是可選的,這兩種文件主要起管理和形成樹形的文件系統(tǒng)結(jié)構(gòu)的作用,真正存放數(shù)據(jù)的是EF 文件。 

  MF 文件是智能卡文件系統(tǒng)的根。在MF 文件下可以建立各種DF 和EF 文件。雖然系統(tǒng)允許在根下直接生成各種EF 應(yīng)用文件,但最佳的文件組織方法是每一種應(yīng)用均分配一個DF 文件,在相應(yīng)的DF 文件下再具體組織各種EF 應(yīng)用數(shù)據(jù)。 

  DF 文件含有文件控制信息和可分配的存儲空間的信息,其下可以建立各種DF 和EF 文件。一般而言,一個DF 文件將被用來存儲某一應(yīng)用的所有數(shù)據(jù)。DF 文件在用戶存儲器中占據(jù)一塊靜態(tài)存儲器,一旦DF 文件建立,其存儲器的大小就不能變動。但在該DF 文件下的EF 文件則可以重新分配所使用存儲器大小,也可以被刪除。該DF 文件被刪除之后,其下的DF 和EF 文件也同時被刪除,釋放的存儲器塊可由其它DF 文件使用。 

  EF 文件是智能卡樹形文件系統(tǒng)的葉,其下不能再建立其他任何文件。 

  2. 2  文件系統(tǒng)的文件訪問機制 

  當(dāng)訪問一個文件時,我們可以使用下面幾種方法中的至少一種來進行: 

  (1) 通過文件標(biāo)志符(File Identifier) 來訪問 

  在智能卡文件系統(tǒng)中每一個文件都有一個文件標(biāo)志符,它占用2 個字節(jié)。值“3FFF”和“FFFF”系統(tǒng)保留,不能用于具體的文件。對于MF 文件來說,它的文件標(biāo)志符必須為“3F00”。因此,當(dāng)我們訪問智能卡的文件系統(tǒng)時,起點就是從文件標(biāo)志符為“3F00”的MF 文件開始。 

  (2) 通過文件路徑來訪問 

  所謂文件路徑,就是無分隔符的文件標(biāo)志符的串聯(lián)形式。智能卡文件系統(tǒng)的文件路徑起始于MF 文件或者當(dāng)前的DF 文件的文件標(biāo)志符,而以要訪問的文件的文件標(biāo)志符結(jié)束;在這兩者之間則是相關(guān)的DF 文件的文件標(biāo)志符。如果當(dāng)前的DF 文件的文件標(biāo)志符未知,則“3FFF”可以作為文件路徑的開始。如果文件路徑以MF 文件的文件標(biāo)志符開始,則稱該文件路徑為絕對路徑;如果以當(dāng)前DF 文件的文件標(biāo)志符開始,則稱為相對路徑。 

  (3) 通過EF 短標(biāo)志符來訪問 

  對于任意一個EF 文件,可以通過一個5bit 編碼的短標(biāo)志符來訪問,其范圍為1~30 。0 具有特殊含義,表示當(dāng)前正在訪問的EF 文件。短標(biāo)志符不能用于文件路徑,也不能用作文件標(biāo)志符。 

  (4) 通過DF 文件名來訪問 

  每個DF 文件可以有一個1~16 字節(jié)長的文件名。為了能夠明確無誤的通過DF 文件名來訪問DF 文件,智能卡中的每個DF 文件的文件名必須不同。 

  2. 3  EF 文件的內(nèi)部結(jié)構(gòu) 

  EF 文件的結(jié)構(gòu)可分為透明結(jié)構(gòu)和記錄結(jié)構(gòu)兩種。 

  (1) 透明結(jié)構(gòu):透明結(jié)構(gòu)EF 文件在通過接口被訪問時只被視為數(shù)據(jù)單元(Data Unit) 序列,而好像沒有結(jié)構(gòu)一樣,所以我們稱之為透明結(jié)構(gòu)。所謂數(shù)據(jù)單元,就是可被訪問的最小的位集(Smallest set of bits) ,如1 個字節(jié),2 個字節(jié)等等。透明結(jié)構(gòu)本質(zhì)上也就是二進制數(shù)據(jù)結(jié)構(gòu)。 

  (2) 記錄結(jié)構(gòu):記錄結(jié)構(gòu)EF 文件在通過接口被訪問時被視為具有結(jié)構(gòu)的記錄(Record) 序列。所謂記錄,就是可被作為一個整體加以處理的具有結(jié)構(gòu)的字節(jié)串,類似于PASCAL 語言的記錄的概念。 

  2. 4  EF 文件中的數(shù)據(jù)訪問機制 

  EF 文件中的數(shù)據(jù)可以通過記錄、數(shù)據(jù)單元或者數(shù)據(jù)對象來訪問。對記錄結(jié)構(gòu)的EF 文件而言,數(shù)據(jù)被存儲在連續(xù)的記錄序列中;對透明結(jié)構(gòu)的EF 文件而言,數(shù)據(jù)被存儲在連續(xù)的數(shù)據(jù)單元序列中。如果試圖訪問不在EF 文件中的記錄、數(shù)據(jù)單元或者數(shù)據(jù)對象,將導(dǎo)致錯誤。數(shù)據(jù)訪問方法、記錄編號方法以及數(shù)據(jù)單元的大小等作為文件系統(tǒng)的特征,在智能卡的復(fù)位應(yīng)答過程ATR (Answer to reset) 中由智能卡給出,還可以由智能卡中的ATR 文件給出,以及由其他文件控制信息給出。如果智能卡在上面提及的三種方式中不止一處給出了數(shù)據(jù)訪問方法、記錄編號方法以及數(shù)據(jù)單元的大小等信息,那么對于任意一個EF文件而言,由于不同出處給出的信息可能不一樣,因此很明顯只能有一個信息是有效的。而有效的信息就是從MF 文件到該EF 文件的文件路徑上最靠近該EF 文件的位置給出的信息。 

  (1) 記錄結(jié)構(gòu)EF 文件中記錄的訪問方法 

  對記錄結(jié)構(gòu)的EF 文件,其中的記錄可以通過記錄編號來訪問。記錄編號是無符號8 位整數(shù),其取值范圍為01~FE。值00 保留作特殊用途;值FF 保留來將來使用。在每個記錄結(jié)構(gòu)的EF 文件中,每個記錄的記錄編號都是唯一并且是有序的。 

  對于線性記錄結(jié)構(gòu)的EF 文件:當(dāng)創(chuàng)建添加記錄時,記錄編號按照以一定順序予以指定。也就是說記錄的記錄編號按照記錄的創(chuàng)建順序指定。因此,第一個記錄(記錄編號為1) 就是第一個創(chuàng)建的記錄;第二個記錄(記錄編號為2) 就是第二個創(chuàng)建的記錄以次類推。 

  對于循環(huán)記錄結(jié)構(gòu)的EF 文件:第一個記錄(記錄編號為1) 總是最后創(chuàng)建的記錄;第二個記錄(記錄編號為2) 就是倒數(shù)第二個創(chuàng)建的記錄以次類推。很顯然,對于循環(huán)記錄結(jié)構(gòu)的EF 文件的記錄編號順序剛好和線性記錄結(jié)構(gòu)的EF 文件相反。 

  記錄編號值00 總是表示當(dāng)前記錄,就是記錄指針(record pointer) 當(dāng)前指向的記錄。 

  (2) 透明結(jié)構(gòu)EF 文件中數(shù)據(jù)單元的訪問方法 

  對每一個透明結(jié)構(gòu)的EF 文件而言,其內(nèi)部的數(shù)據(jù)單元通過偏移(Offset) 來訪問。偏移是一個無符號整數(shù),長度為8 位或者15 位(由不同的訪問命令來決定) 。當(dāng)偏移為0 時,則訪問該透明結(jié)構(gòu)EF 文件的第一個數(shù)據(jù)單元;偏移為1 時,訪問第二個數(shù)據(jù)單元;偏移為2 時,訪問第三個數(shù)據(jù)單元以次類推。在缺省情況下,也就是智能卡沒有給出數(shù)據(jù)單元大小的信息時,默認(rèn)采用每個數(shù)據(jù)單元大小為1 字節(jié)。 

  (3) 數(shù)據(jù)對象的訪問方法 

  所謂數(shù)據(jù)對象,就是采用抽象語法表示ASN. 1 (Abstract syntax notation) 的編碼規(guī)則,如BER(Basic encoding rule) 等對數(shù)據(jù)按照一定的格式編碼形成的一個數(shù)據(jù)結(jié)構(gòu)。該數(shù)據(jù)結(jié)構(gòu)通常包含三部分信息:標(biāo)簽(tag) 、長度(length) 和數(shù)據(jù)(data) 。標(biāo)簽給出了數(shù)據(jù)的數(shù)據(jù)類型,如整數(shù)、ASCII 字符串、UNICODE 字符串、structure 結(jié)構(gòu)類型等等;長度則給出了數(shù)據(jù)的長度。很明顯,這種數(shù)據(jù)對象本質(zhì)上是自描述的。因此,當(dāng)訪問數(shù)據(jù)對象時,可以通過標(biāo)簽等對數(shù)據(jù)對象進行訪問。

  (文/重慶大學(xué)計算機學(xué)院建筑智能化研究室,王波,伍洲凱)