博客專欄

        EEPW首頁 > 博客 > cos中的文件結構(DF/EF/MF/FID/AID)

        cos中的文件結構(DF/EF/MF/FID/AID)

        發布人:電子禪石 時間:2019-06-11 來源:工程師 發布文章

        剛開始接觸CPU卡的時候,對于各種文件、應用的定義容易模糊不清,通常不能準確地界定什么是文件?什么是應用?DF和EF的區別真的就像計算機里的目錄和文檔那樣嗎?FID、AID、SFI這些概念都在什么時候派上用場?一個EF必須依存于某個DF嗎?MF是必須存在的嗎?腦海里會有無數個問號奔騰而來。

        其實文件的本質就是一組一組的數據而已,對這些數據的操作(選擇、讀取、寫入/更新)是通過特定的文件操作APDU命令來完成的。所以數據才是本真,文件只是表象。某一組數據該作為什么樣的文件讓外界來訪問,是由卡片的COS決定的。

        按照規范的約定DF指的是專用文件Dedicated File的縮寫,DF的作用可以等同于計算機中的目錄文件,EF則是基本信息文件Elementary File,也就是說通常情況下和應用相關的數據都會存放于EF中。

        為了對文件進行訪問,需要給文件分配一個特定的標識。無論是DF還是EF都會有對應的兩個字節長ID標識,也就是所謂的FID。而DF還會有5-16個字節長的名字,也叫做AID。EF還會有一個5位長(范圍從1到30)的短文件標識,就是SFI。按照7816規范的定義,以及根據7816派生出來的一些行業應用規范的定義基本上都是這樣的。無論是FID還是AID以及SFI,在可以選擇的路徑范圍內(這句話可能稍微有點繞,體會后也就自然明白了),不同的文件(包括DF和EF)的取值都不能相同。

        在一張卡片里(這里說的是卡片而不是某個應用)有且僅有一個特殊的DF,稱為主文件MF,這個MF的FID默認為3F00,相當于計算機中的根目錄,而且在任何時候MF都可以被選擇。如果某個DF下沒有子DF,只有若干EF,那么這個DF也被稱作ADF,反之如果某個DF下除了有EF之外,還有子DF,那么這個父級的DF也被稱作DDF。

        在卡片的使用過程中,對于DF的操作只有“選擇”一種而已,但是對于EF的操作則有:選擇、讀、寫三種形式。

        在文件選擇操作過程中,對于DF的選擇可以通過FID或者AID來實現,而對于EF的選擇只有FID的方式。能夠被選擇的文件(無論是DF還是EF)必須在可見的路徑范圍內(這句話也有點繞)。

        至于對EF文件的讀、寫可以通過SFI的方式直接進行,也可以先通過FID選擇某個EF,然后再進行讀寫。

        要特別強調的一點:以上說的這些都是和某些應用規范細細相關的,也和COS的實現細細相關。換句話說,如果你自己寫一個滿足某個特定應用的COS,你完全可以按照自己的意愿來。比如把MF的FID定義為8F00,比如EF也可以增加AID,比如卡片在任何時候都可以選擇各級DF及其下屬的EF,等等。。。。。。

        總之,既要熟悉規范,但是又不能把某個行業應用的規范奉為號令天下的圣旨。

        規范并不是試圖對復雜的公鑰基礎設施結構的全部實施作出規定,而旨在為各國提供一種實施辦法,使其能夠在若干領域(如主動認證、防非法瀏覽和訪問控制等)做出選擇,從而可逐漸實施更多的功能,而又不會與整個架構不相容。

        誰擁有技術,誰就擁有話語權;而話語權就是規范的制定。在別人的基礎上開發,不僅僅是遵守,更多的是方便,在全球化大背景之下,規范是必不可少的;當然按部就班肯定是不好的,在學會實用的情況下,勇于探索才是我們應該不懈追求的!


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。

        DIY機械鍵盤相關社區:機械鍵盤DIY




        關鍵詞:

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宝兴县| 辽宁省| 习水县| 朔州市| 东平县| 成都市| 靖安县| 绍兴县| 广元市| 东兴市| 南宁市| 封开县| 芦山县| 松潘县| 红河县| 府谷县| 泽库县| 湖州市| 余干县| 南靖县| 定襄县| 葵青区| 澄江县| 弋阳县| 若羌县| 水富县| 金溪县| 精河县| 津市市| 台北县| 固始县| 甘泉县| 莆田市| 百色市| 离岛区| 洮南市| 海阳市| 星子县| 凤台县| 荔浦县| 台江县|