cos中的文件結(jié)構(gòu)(DF/EF/MF/FID/AID/SFI..)
剛開始接觸CPU卡的時(shí)候,對于各種文件、應(yīng)用的定義容易模糊不清,通常不能準(zhǔn)確地界定什么是文件?什么是應(yīng)用?DF和EF的區(qū)別真的就像計(jì)算機(jī)里的目錄和文檔那樣嗎?FID、AID、SFI這些概念都在什么時(shí)候派上用場?一個(gè)EF必須依存于某個(gè)DF嗎?MF是必須存在的嗎?腦海里會(huì)有無數(shù)個(gè)問號(hào)奔騰而來。
其實(shí)文件的本質(zhì)就是一組一組的數(shù)據(jù)而已,對這些數(shù)據(jù)的操作(選擇、讀取、寫入/更新)是通過特定的文件操作APDU命令來完成的。所以數(shù)據(jù)才是本真,文件只是表象。某一組數(shù)據(jù)該作為什么樣的文件讓外界來訪問,是由卡片的COS決定的。
按照規(guī)范的約定DF指的是專用文件Dedicated File的縮寫,DF的作用可以等同于計(jì)算機(jī)中的目錄文件,EF則是基本信息文件Elementary File,也就是說通常情況下和應(yīng)用相關(guān)的數(shù)據(jù)都會(huì)存放于EF中。
為了對文件進(jìn)行訪問,需要給文件分配一個(gè)特定的標(biāo)識(shí)。無論是DF還是EF都會(huì)有對應(yīng)的兩個(gè)字節(jié)長ID標(biāo)識(shí),也就是所謂的FID。而DF還會(huì)有5-16個(gè)字節(jié)長的名字,也叫做AID。EF還會(huì)有一個(gè)5位長(范圍從1到30)的短文件標(biāo)識(shí),就是SFI。按照7816規(guī)范的定義,以及根據(jù)7816派生出來的一些行業(yè)應(yīng)用規(guī)范的定義基本上都是這樣的。無論是FID還是AID以及SFI,在可以選擇的路徑范圍內(nèi)(這句話可能稍微有點(diǎn)繞,體會(huì)后也就自然明白了),不同的文件(包括DF和EF)的取值都不能相同。
在一張卡片里(這里說的是卡片而不是某個(gè)應(yīng)用)有且僅有一個(gè)特殊的DF,稱為主文件MF,這個(gè)MF的FID默認(rèn)為3F00,相當(dāng)于計(jì)算機(jī)中的根目錄,而且在任何時(shí)候MF都可以被選擇。如果某個(gè)DF下沒有子DF,只有若干EF,那么這個(gè)DF也被稱作ADF,反之如果某個(gè)DF下除了有EF之外,還有子DF,那么這個(gè)父級(jí)的DF也被稱作DDF。
在卡片的使用過程中,對于DF的操作只有“選擇”一種而已,但是對于EF的操作則有:選擇、讀、寫三種形式。
在文件選擇操作過程中,對于DF的選擇可以通過FID或者AID來實(shí)現(xiàn),而對于EF的選擇只有FID的方式。能夠被選擇的文件(無論是DF還是EF)必須在可見的路徑范圍內(nèi)(這句話也有點(diǎn)繞)。
至于對EF文件的讀、寫可以通過SFI的方式直接進(jìn)行,也可以先通過FID選擇某個(gè)EF,然后再進(jìn)行讀寫。
要特別強(qiáng)調(diào)的一點(diǎn):以上說的這些都是和某些應(yīng)用規(guī)范細(xì)細(xì)相關(guān)的,也和COS的實(shí)現(xiàn)細(xì)細(xì)相關(guān)。換句話說,如果你自己寫一個(gè)滿足某個(gè)特定應(yīng)用的COS,你完全可以按照自己的意愿來。比如把MF的FID定義為8F00,比如EF也可以增加AID,比如卡片在任何時(shí)候都可以選擇各級(jí)DF及其下屬的EF,等等。。。。。。
總之,既要熟悉規(guī)范,但是又不能把某個(gè)行業(yè)應(yīng)用的規(guī)范奉為號(hào)令天下的圣旨。
規(guī)范并不是試圖對復(fù)雜的公鑰基礎(chǔ)設(shè)施結(jié)構(gòu)的全部實(shí)施作出規(guī)定,而旨在為各國提供一種實(shí)施辦法,使其能夠在若干領(lǐng)域(如主動(dòng)認(rèn)證、防非法瀏覽和訪問控制等)做出選擇,從而可逐漸實(shí)施更多的功能,而又不會(huì)與整個(gè)架構(gòu)不相容。
誰擁有技術(shù),誰就擁有話語權(quán);而話語權(quán)就是規(guī)范的制定。在別人的基礎(chǔ)上開發(fā),不僅僅是遵守,更多的是方便,在全球化大背景之下,規(guī)范是必不可少的;當(dāng)然按部就班肯定是不好的,在學(xué)會(huì)實(shí)用的情況下,勇于探索才是我們應(yīng)該不懈追求的!
非常感謝:http://blog.sina.com.cn/s/blog_4df8400a0102vkbr.html