歡迎您訪問鄭州興邦電子股份有限公司官方網(wǎng)站!
    阿里巴巴誠信通企業(yè)
    全國咨詢熱線:40000-63966
    興邦電子,中國水控機(jī)第一品牌

    聯(lián)系興邦電子

    全國咨詢熱線:40000-63966

    售后:0371-55132951/55132952

    工廠:河南省 鄭州市 高新區(qū)蓮花街電子電器產(chǎn)業(yè)園

    基于智能卡內(nèi)核的文件系統(tǒng)設(shè)計

    文章出處:http://www.xujuanpiju.com 作者: 人氣: 發(fā)表時間:2012年03月18日

    [文章內(nèi)容簡介]:本文從ISO7816-4協(xié)議和相關(guān)規(guī)范入手,深入分析了智能卡內(nèi)核的基本文件結(jié)構(gòu),并提出了一種合理的設(shè)計方案。文章說明了各個基本文件的指針構(gòu)成,詳細(xì)闡述了各個情況下的指針操作要點(diǎn)和細(xì)節(jié),并簡單介紹了密鑰文件和ATR文件兩種特殊的EF文件。最后總結(jié)了不同文件所適用的相關(guān)指令。

        摘要:本文從ISO7816-4 協(xié)議和相關(guān)規(guī)范入手,深入分析了智能卡內(nèi)核的基本文件結(jié)構(gòu),并提出了一種合理的設(shè)計方案。文章說明了各個基本文件的指針構(gòu)成,詳細(xì)闡述了各個情況下的指針操作要點(diǎn)和細(xì)節(jié),并簡單介紹了密鑰文件和ATR 文件兩種特殊的EF 文件。最后總結(jié)了不同文件所適用的相關(guān)指令。
        關(guān)鍵詞:COS;MF;DF;EF;ATR

        1 引言

        隨著 IC 卡從簡單的同步卡發(fā)展到異步卡,從簡單的EPROM 卡發(fā)展到內(nèi)帶微處理器的智能卡(又稱CPU 卡),對IC 卡的各種要求越來越高。而卡本身所需要的各種管理工作也越來越復(fù)雜,因此就迫切地需要有一種工具來解決這一矛盾,而內(nèi)部帶有微處理器的智能卡的出現(xiàn),使得這種工具的實(shí)現(xiàn)變成了現(xiàn)實(shí)。人們利用它內(nèi)部的微處理器芯片,開發(fā)了應(yīng)用于智能卡內(nèi)部的各種各樣的操作系統(tǒng)。COS 的出現(xiàn)不僅大大地改善了智能卡的交互界面,使智能卡的管理變得容易;而且,更為重要的是使智能卡本身向著個人計算機(jī)化的方向邁出了一大步,為智能卡的發(fā)展開拓了極為廣闊的前景。

        COS 的全稱是Chip Operating System(片內(nèi)操作系統(tǒng)),它一般是緊緊圍繞著它所服務(wù)的智能卡的特點(diǎn)而開發(fā)的。由于不可避免地受到了智能卡內(nèi)微處理器芯片的性能及內(nèi)存容量的影響,因此,COS 在很大程度上不同于我們通常所能見到的微機(jī)上的操作系統(tǒng)(例如DOS、UNIX 等)[1]。

        COS 的主要功能是控制智能卡同外界的信息交換,管理智能卡內(nèi)的存儲器并在卡內(nèi)部完成各種命令的處理。其中,與外界進(jìn)行信息交換是COS 最基本的要求。在交換過程中,COS 所遵循的信息交換協(xié)議目前包括兩類:異步字符傳輸?shù)腡=0 協(xié)議以及異步分組傳輸?shù)腡=l 協(xié)議。這兩種信息交換協(xié)議的具體內(nèi)容和實(shí)現(xiàn)機(jī)制在IS0/IEC78l6-3 和IS0/IEC7816-3A3 標(biāo)準(zhǔn)中作了規(guī)定;而COS 所應(yīng)完成的管理和控制的基中功能則是在ISO/IEC78l6-4 標(biāo)準(zhǔn)中作出規(guī)定的。在該國際標(biāo)準(zhǔn)中,還對智能卡的數(shù)據(jù)結(jié)構(gòu)以及COS 的基本命令集作出了較為詳細(xì)的說明。至于 IS0/IEC78l6-l 和2,則是對智能卡的物理參數(shù)、外形尺寸作了規(guī)定,它們與COS 的關(guān)系不是很密切。

        2 文件系統(tǒng)

        2.1 文件系統(tǒng)概述

        整張卡片包含3 種基本文件結(jié)構(gòu):

        MF(Master File)文件:是整個文件系統(tǒng)的最高級,可以包含若干的DF 和EF 文件,卡片中只能有一個MF 文件。它是在卡的個人化過程被首先建立起來,在卡的整個生命周期內(nèi)一直保持有效,可存儲卡片的公共數(shù)據(jù)信息并為各種應(yīng)用服務(wù)??ㄆ瑥?fù)位后,自動選擇MF 文件為當(dāng)前文件。
        DF(Dedicated File)文件:是MF 或DF 的下一級,包含用戶設(shè)置的系統(tǒng)信息和應(yīng)用相關(guān)數(shù)據(jù),在MF 下DF 的數(shù)量只取決與卡片容量和用戶的應(yīng)用,它也可以包含若干的DF。
        EF(Elementary File)文件:是文件結(jié)構(gòu)的末端,只包含系統(tǒng)信息、內(nèi)部數(shù)據(jù)或用戶數(shù)據(jù)。EF 文件從存儲內(nèi)容上分為三類:密鑰文件、工作基本文件和ATR 文件[2]。

        文件系統(tǒng)結(jié)構(gòu)圖如下:

     文件系統(tǒng)結(jié)構(gòu)圖

    圖1 文件系統(tǒng)結(jié)構(gòu)圖

        2.2 文件結(jié)構(gòu)

        2.2.1 MF 文件

        2.2.2 DF 文件

        2.2.3 EF 文件

        對于二進(jìn)制文件和變長記錄文件,文件空間 = 空間大小高字節(jié) || 低字節(jié)
        對于定長和循環(huán)文件,文件空間 = 記錄數(shù)字節(jié) || 記錄長度字節(jié)
        當(dāng)前記錄指針:最新寫入記錄的位置
        對于循環(huán)文件,B7(最高位)表示記錄是否已經(jīng)寫滿,B7=0 表示寫滿,B7=1 表示未寫滿,所以循環(huán)文件最大記錄數(shù)為127。此位對于定長記錄文件不起作用。
    定長、循環(huán)記錄文件每條記錄只包含記錄內(nèi)容值V;變長記錄文件每條記錄中包含記錄內(nèi)容長度L+記錄內(nèi)容值V

        2.2.4 文件指針

        文件指針共6 字節(jié):2 字節(jié)的父目錄指針+2 字節(jié)的子目錄的指針+2 字節(jié)的EF 指針,所有指針都指向文件頭的首地址,在卡片剛上電或選擇了MF 之后,2 字節(jié)的父目錄指針為空(00 00),2 字節(jié)的子目錄的指針為MF 的首地址;在任意選擇某個目錄(按部分AID 選擇下一個DF 除外)后,原來的子目錄設(shè)置為父目錄,新選擇的目錄設(shè)置為子目錄,同時EF 指針置為空(00 00);在任意位置選擇EF 文件后,都只設(shè)置EF 指針,不影響父目錄和子目錄指針。如果是按部分AID 選擇下一個DF,則父目錄不改變,只改變重新設(shè)置子目錄和EF 指針。

        2.3 EF 文件

        2.3.1 文件類型

        2.3.2 循環(huán)文件

        假設(shè)已經(jīng)建立一個記錄數(shù)=10 的循環(huán)文件,如果沒有寫入任何記錄,則當(dāng)前記錄指針=80。(bit7=1,表明當(dāng)前記錄未寫滿)如果追加了(Append Record)4 條記錄,則當(dāng)前記錄指針=84。在成功選擇這個文件后,內(nèi)存記錄指針CP=00,具體操作(讀或更新)如下:

        如果操作第一條記錄:則操作第4 條記錄,操作成功后,設(shè)置CP=4。
        如果操作最后一條記錄:則操作第1 條記錄,操作成功后,設(shè)置CP=1。
        如果操作下一條記錄:
        如果CP=00,則操作第4 條記錄,操作成功后,設(shè)置CP=4。
        如果CP!=00,則操作第CP-1 條記錄,當(dāng)CP=1,返回錯誤狀態(tài)碼,否則操作成功后,設(shè)置CP=CP-1。
        如果操作上一條記錄:
        如果CP=00,則操作第1 條記錄,操作成功后,設(shè)置CP=1。
        如果CP!=00,則操作第CP+1 條記錄,當(dāng)CP=當(dāng)前記錄指針,返回錯誤狀態(tài)碼,否則操作成功后,設(shè)置CP=CP+1。
        如果假設(shè)又追加了10 條記錄,則當(dāng)前記錄指針=04(在追加第7 條記錄時,因?yàn)榭臻g已滿必須覆蓋第1 條,寫成功后同時設(shè)置當(dāng)前記錄指針最高位=0)在成功選擇這個文件后,內(nèi)存記錄指針(CP)=00,具體操作如下:

        如果操作第一條記錄:則操作第4 條記錄,操作成功后,設(shè)置CP=4。
        如果操作最后一條記錄:則操作第5 條(當(dāng)前記錄指針+1)記錄,操作成功后,設(shè)置CP=5。
        如果操作下一條記錄:
        如果CP=00,則操作第4 條記錄,操作成功后,設(shè)置CP=4。
        如果CP!=00,則操作第CP-1 條記錄,當(dāng)CP=1,操作CP=10 的記錄,操作成功后,設(shè)置CP=10(總記錄數(shù));當(dāng)CP-1=當(dāng)前記錄指針,返回錯誤狀態(tài)碼。
        如果操作上一條記錄:
        如果CP=00,則操作第5(當(dāng)前記錄指針+1)條記錄,操作成功后,設(shè)置CP=5。
        如果CP!=00,則操作第CP+1 條記錄,當(dāng)CP=10(總記錄數(shù)),操作CP=1 的記錄,操作成功后,設(shè)置CP=1;當(dāng)CP=當(dāng)前記錄指針,返回錯誤狀態(tài)碼。(以上返回的錯誤狀態(tài)碼=6A83)
    執(zhí)行APPEND RECORD 命令時,將新記錄寫入當(dāng)前記錄指針+1 的位置(只在執(zhí)行APPEND RECORD 命令成功后才修改當(dāng)前記錄指針),例如,如果當(dāng)前文件為空(當(dāng)前記錄指針=80),那么寫完新記錄后,當(dāng)前記錄指針應(yīng)為81,每次寫完當(dāng)前記錄指針都加1。
        如果當(dāng)前記錄指針=8A(剛好寫滿文件),再寫入新記錄后,當(dāng)前記錄指針變?yōu)?1。

    第1頁第2頁

    本文關(guān)鍵詞:智能卡內(nèi)核,智能卡文件,ISO7816,密鑰文件,ATR文件,能卡內(nèi)核,智能卡文件,ISO7816,密鑰文件,ATR文件,,卡內(nèi)核,智能卡文件,ISO7816,密鑰文件,ATR文件,智,內(nèi)核,智能卡文件,ISO7816,密鑰文件,ATR文件,智能,核,智能卡文件,ISO7816,密鑰文件,ATR文件,智能卡
    回到頂部