• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一種基于FLASH的智能卡文件系統(tǒng)的實(shí)現(xiàn)方法*

      2019-04-30 01:48:52馬資道魏貴鵬
      通信技術(shù) 2019年4期
      關(guān)鍵詞:智能卡鏈表數(shù)據(jù)結(jié)構(gòu)

      馬資道,魏貴鵬,謝 演

      (成都三零嘉微電子有限公司,四川 成都 610041)

      0 引 言

      智能卡將計(jì)算機(jī)技術(shù)、微電子技術(shù)、高頻技術(shù)、半導(dǎo)體技術(shù)、信息安全技術(shù)特別是數(shù)據(jù)保護(hù)和密碼學(xué)技術(shù)結(jié)合在一起,提高了人們生活和工作的安全性,是用戶信息的載體,在進(jìn)行用戶身份認(rèn)證和金融交易過程中起到了重要的作用。智能卡由硬件資源(智能卡芯片)和智能卡操作系統(tǒng)COS(Chip Operating System)組成,COS是智能卡的核心。智能卡操作系統(tǒng)用于控制卡片和終端設(shè)備的通信,管理卡內(nèi)存儲(chǔ)的數(shù)據(jù)資源,并對(duì)終端設(shè)備發(fā)送的指令進(jìn)行分析和處理。智能卡操作系統(tǒng)中最重要的是對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和讀寫的文件系統(tǒng),ISO7816-4[1]規(guī)定了智能卡操作系統(tǒng)的文件系統(tǒng)的規(guī)范,規(guī)范要求智能卡采用統(tǒng)一的文件類型和組織格式,包括文件系統(tǒng)的文件類型和基本的文件操作。

      本系統(tǒng)中,在基于ARMSC000核自主研發(fā)的芯片上,采用ISO7816-4接口協(xié)議,實(shí)現(xiàn)了一種基于芯片內(nèi)部FLASH存儲(chǔ)器的智能卡文件系統(tǒng)。本文對(duì)整個(gè)文件系統(tǒng)的框架結(jié)構(gòu)進(jìn)行了概述,并介紹了芯片內(nèi)FLASH上文件系統(tǒng)存儲(chǔ)結(jié)構(gòu)的設(shè)計(jì),同時(shí)重點(diǎn)講述了文件系統(tǒng)中文件的創(chuàng)建、查找、讀寫和密鑰安裝及索引功能的實(shí)現(xiàn)。最后對(duì)本系統(tǒng)進(jìn)行了總結(jié)和分析。

      1 智能卡文件系統(tǒng)概述

      在智能卡內(nèi),數(shù)據(jù)的管理和維護(hù)一般通過文件系統(tǒng)來進(jìn)行。文件系統(tǒng)是COS的重要模塊之一,它負(fù)責(zé)組織、管理和維護(hù)智能卡內(nèi)存儲(chǔ)器的所有數(shù)據(jù)。智能卡文件系統(tǒng)的主要功能包括空間的管理和維護(hù)、數(shù)據(jù)的有效存儲(chǔ)、數(shù)據(jù)的查找與定位和數(shù)據(jù)的修改及維護(hù)。智能卡文件系統(tǒng)是一個(gè)承上啟下的模塊,對(duì)底層實(shí)現(xiàn)了存儲(chǔ)空間的管理維護(hù),對(duì)上層完全透明地實(shí)現(xiàn)了數(shù)據(jù)的管理功能,隱藏其實(shí)現(xiàn)的細(xì)節(jié)。智能卡文件系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)是COS系統(tǒng)中最靈活、最具個(gè)性的部分,也是對(duì)系統(tǒng)整體結(jié)構(gòu)影響最大的模塊之一。文件系統(tǒng)設(shè)計(jì)是否合理直接關(guān)系到文件的數(shù)據(jù)結(jié)構(gòu)、存取速度和智能卡的整體性能。

      根據(jù)ISO7816-4標(biāo)準(zhǔn)中規(guī)定的文件系統(tǒng)結(jié)構(gòu)說明,智能卡內(nèi)的文件分為3種類型:主文件MF(Main File)、專用文件DF(Dedicated File)和基本文件EF(Elementary File)。這些文件依照規(guī)定的格式組成了智能卡文件系統(tǒng)的樹狀結(jié)構(gòu),如圖1所示。

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

      MF是文件系統(tǒng)的根目錄,這個(gè)文件是整個(gè)智能卡的入口,一個(gè)智能卡文件系統(tǒng)中只能包含一個(gè)主文件MF,MF文件下可以包含其它兩類文件。專用文件DF可以是其它DF文件的父目錄,也可以是EF文件的父目錄?;疚募﨓F是一個(gè)文件元,它是保存數(shù)據(jù)的實(shí)體,根據(jù)數(shù)據(jù)結(jié)構(gòu)的不同,可將EF文件分為透明二進(jìn)制文件、定長記錄文件、變長記錄文件、循環(huán)記錄文件。MF和DF相當(dāng)于文件夾,MF是頂層根文件夾,DF是各個(gè)具體的應(yīng)用的文件夾,EF是具體的數(shù)據(jù)文件,EF文件不能是DF或者其它EF文件的父文件[2]。

      2 智能卡文件系統(tǒng)的實(shí)現(xiàn)

      文件系統(tǒng)及其存儲(chǔ)管理空間管理是智能卡系統(tǒng)的重要組成部分,其設(shè)計(jì)是否合理直接影響到智能卡的性能[3]。智能卡文件系統(tǒng)的設(shè)計(jì)主要涉及文件存儲(chǔ)管理、目錄及文件數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、文件創(chuàng)建、文件查找、文件讀寫和系統(tǒng)安全數(shù)據(jù)如密鑰和PIN(Personal Identification Number)碼的安裝和索引等機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)。

      2.1 文件系統(tǒng)存儲(chǔ)管理

      智能卡文件系統(tǒng)的存儲(chǔ)管理有多種設(shè)計(jì)方法。針對(duì)存儲(chǔ)容量大的系統(tǒng),可以采用動(dòng)態(tài)的方式,數(shù)據(jù)可以亂序存儲(chǔ),依據(jù)目錄項(xiàng)和文件編號(hào)建立鏈表,動(dòng)態(tài)分配空間和回收,但需要復(fù)雜的文件搜索方法,比較消耗資源。本系統(tǒng)采用靜態(tài)的方式,依序存儲(chǔ),系統(tǒng)創(chuàng)建后不需要對(duì)文件的大小和位置等進(jìn)行頻繁的改動(dòng),適合存儲(chǔ)空間較小的嵌入式系統(tǒng)[4]。

      本系統(tǒng)中,選取智能卡芯片F(xiàn)LASH中的一塊連續(xù)地址空間作為整個(gè)文件系統(tǒng)的存儲(chǔ)區(qū)域。該區(qū)域劃分為系統(tǒng)配置區(qū)和文件數(shù)據(jù)區(qū)。如圖2所示。

      圖2 FLASH數(shù)據(jù)空間劃分結(jié)構(gòu)

      FLASH內(nèi)部以BLOCK(數(shù)據(jù)塊)作為最小的存儲(chǔ)單元,每個(gè)BLOCK的大小固定,文件數(shù)據(jù)區(qū)的空間劃分為多個(gè)連續(xù)的BLOCK并從1開始進(jìn)行編號(hào)。如上圖所示,本系統(tǒng)中系統(tǒng)配置區(qū)起始位置使用幾個(gè)固定字節(jié)用來記錄當(dāng)前文件數(shù)據(jù)區(qū)剩余可用的起始BLOCK號(hào),以文件數(shù)據(jù)區(qū)的第1個(gè)BLOCK為起始?jí)K并不斷更新,用于后續(xù)文件創(chuàng)建分配空間時(shí)進(jìn)行地址計(jì)算。文件系統(tǒng)區(qū)的第1個(gè)BLOCK區(qū)用來存儲(chǔ)MF主文件數(shù)據(jù)結(jié)構(gòu),后續(xù)BLOCK用來存儲(chǔ)DF文件或是EF文件。DF文件占用一個(gè)BLOCK空間大小,EF文件可以占用一個(gè)或多個(gè)BLOCK。MF和DF文件包含文件索引區(qū)和目錄結(jié)構(gòu)區(qū),而EF文件包含文件索引區(qū)、文件結(jié)構(gòu)區(qū)和文本內(nèi)容區(qū)。其中文件索引區(qū)用來統(tǒng)計(jì)存儲(chǔ)當(dāng)前文件所占用的BLOCK個(gè)數(shù)和文件數(shù)據(jù)區(qū)剩余的可用BLOCK個(gè)數(shù),同樣用于文件的存儲(chǔ)地址計(jì)算。目錄結(jié)構(gòu)區(qū)存儲(chǔ)目錄的數(shù)據(jù)頭信息,文件結(jié)構(gòu)區(qū)存儲(chǔ)文件的數(shù)據(jù)頭信息。

      本系統(tǒng)中,文件在創(chuàng)建時(shí)其大小,存儲(chǔ)地址,索引偏移就已確定并被保存起來,形成一個(gè)單向鏈表,方便訪問。

      2.2 文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

      本文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)主要包含圖2中所示的文件索引結(jié)構(gòu),目錄數(shù)據(jù)結(jié)構(gòu)和文件數(shù)據(jù)結(jié)構(gòu)。

      文件索引結(jié)構(gòu)包括下一個(gè)BLOCK號(hào)、剩余BLOCK個(gè)數(shù)和起始BLOCK號(hào)等字段。設(shè)計(jì)如下:

      目錄數(shù)據(jù)結(jié)構(gòu)包括指向下一個(gè)同級(jí)文件的指針、指向子文件鏈表的首地址的指針、按ISO7816-4規(guī)定定義的文件標(biāo)識(shí)符、子文件鏈表記錄標(biāo)記、在該DF下創(chuàng)建文件時(shí)的訪問條件、在該DF下創(chuàng)建文件時(shí)的數(shù)據(jù)傳輸條件、該DF的名字長度和文件名等字段。設(shè)計(jì)如下:

      文件數(shù)據(jù)結(jié)構(gòu)包括指向下一個(gè)同級(jí)文件的指針、按ISO7816規(guī)定定義的文件標(biāo)識(shí)符、文件類型、短文件標(biāo)識(shí)符、該文件的數(shù)據(jù)長度、讀寫文件時(shí)的訪問條件和讀寫文件時(shí)的傳輸條件等字段。設(shè)計(jì)如下:

      typedef struct _EFHeader

      2.3 文件創(chuàng)建

      智能卡文件系統(tǒng)一個(gè)重要的功能是進(jìn)行各種文件的創(chuàng)建,支持的文件類型有目錄文件(包括MF、DF)、KEY和PIN文件、二進(jìn)制文件和記錄文件。本系統(tǒng)中,創(chuàng)建文件的流程如圖3所示。

      圖3 文件創(chuàng)建流程

      智能卡中第一次創(chuàng)建文件時(shí),必須先創(chuàng)建MF文件作為根目錄。創(chuàng)建MF時(shí),終端需傳送MF的文件頭信息,包括創(chuàng)建MF標(biāo)志、MF的文件標(biāo)識(shí)、MF的文件類型、錯(cuò)誤重試次數(shù)、創(chuàng)建文件時(shí)的訪問條件和傳輸條件、文件名長度和文件名等參數(shù),創(chuàng)建成功后,自動(dòng)選中MF文件。創(chuàng)建DF文件與創(chuàng)建MF文件類似,不同之處是文件標(biāo)識(shí)和文件名不同,創(chuàng)建成功后,自動(dòng)選中DF文件。創(chuàng)建EF文件時(shí),終端需傳送EF的文件頭信息,包括創(chuàng)建EF標(biāo)志、EF的文件標(biāo)識(shí)、EF的文件類型、EF的短文件標(biāo)識(shí)符、文件長度、讀寫權(quán)限,傳輸權(quán)限等參數(shù)。創(chuàng)建文件時(shí)應(yīng)當(dāng)根據(jù)傳輸條件和訪問條件檢測數(shù)據(jù)是否滿足安全狀態(tài),是否需要依據(jù)主控密鑰(Main Key)對(duì)數(shù)據(jù)進(jìn)行MAC檢驗(yàn)和解密,然后輸出解密出來的原始數(shù)據(jù)進(jìn)行文件的創(chuàng)建。

      創(chuàng)建文件時(shí),根據(jù)系統(tǒng)配置區(qū)中的剩余起始BLOCK號(hào)、文件索引中的剩余可用BLOCK個(gè)數(shù)和文件大小在文件數(shù)據(jù)區(qū)的進(jìn)行所需空間的分配和地址的計(jì)算,并更新文件索引區(qū)和目錄頭或文件頭結(jié)構(gòu),為EF文本內(nèi)容區(qū)預(yù)留空間,后續(xù)文件讀寫操作就可以向此地址處讀寫數(shù)據(jù)。同時(shí)更新系統(tǒng)配置區(qū)和下一BLOCK預(yù)分配的文件索引區(qū),形成一個(gè)單向的鏈表,完成文件的創(chuàng)建。

      2.4 文件查找

      本文件系統(tǒng)中,提供了文件查找功能,可以依據(jù)文件名、文件短文件標(biāo)識(shí)符(Short File Identifier,SFI)、文件類型和文件標(biāo)識(shí)(File Identifier,F(xiàn)ID)來進(jìn)行文件的查找。在當(dāng)前目錄下,所有創(chuàng)建的文件頭信息中,存在一個(gè)單向樹狀鏈表結(jié)構(gòu),此鏈表是在文件創(chuàng)建是建立的,如圖4所示。

      圖4 文件樹狀鏈表

      根據(jù)此鏈表,從該目錄的指向子文件的指針指向最后一個(gè)文件的BLOCK起始?jí)K號(hào)開始,然后最后一個(gè)文件的指向下一個(gè)文件的指針指向上一個(gè)文件的起始?jí)K號(hào),依次鏈接,直到本目錄的指向下一個(gè)文件的指針指向系統(tǒng)配置區(qū)中的剩余起始BLOCK號(hào)。依據(jù)此路徑查找,反向遍歷讀取FLASH中所有文件的頭信息,并與傳入的查找字段進(jìn)行對(duì)比,如果二者相同,則表示找到對(duì)應(yīng)的文件,返回該文件的頭結(jié)構(gòu)信息,否則繼續(xù)查找直到當(dāng)前目錄下的所有文件均遍歷完成而沒有找到,則表示查找失敗。

      ISO7816規(guī)范通用指令中的文件選擇功能就是先調(diào)用文件查找接口,查找到對(duì)應(yīng)的文件后,再更新當(dāng)前的文件頭信息。

      2.5 文件讀寫操作

      本系統(tǒng)中文件的讀寫操作主要包括二進(jìn)制文件的讀(Read Binary)和寫(Update Binary)操作,記錄文件的讀(Read Record)、寫(Update Record)和追加(Append Record)操作[5]。

      文件讀寫操作需先按層級(jí)定位到對(duì)應(yīng)的文件,依照FID選擇目錄,再選擇該目錄下的文件,使得該文件的數(shù)據(jù)頭結(jié)構(gòu)更新為當(dāng)前文件的信息。

      二進(jìn)制文件的讀寫操作流程設(shè)計(jì)如圖5所示。

      圖5 二進(jìn)制文件讀寫流程

      如圖5所示,二進(jìn)制文件的讀寫操作需判斷是否滿足訪問條件,是否需對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行MAC檢驗(yàn)和解密,再調(diào)用文件訪問接口。底層文件讀寫訪問接口中,先根據(jù)文件的頭信息、傳入的偏移地址計(jì)算該文件對(duì)應(yīng)的文本區(qū)域讀寫地址,再根據(jù)文件長度讀取或?qū)懭霐?shù)據(jù)到文本內(nèi)容區(qū)。

      記錄文件的讀寫操作與二進(jìn)制大致相同,但需傳入該記錄的索引號(hào)和記錄長度,用來計(jì)算記錄文件讀寫地址。

      記錄文件的讀寫操作流程設(shè)計(jì)如圖6所示。

      單個(gè)文件中可以存在多條記錄,依序存儲(chǔ),以記錄號(hào)作為索引。通過記錄索引號(hào),可以根據(jù)需求完成指定的記錄、當(dāng)前文件讀寫指針?biāo)付ǖ纳弦粭l記錄、下一次記錄,最后一條記錄和第一條記錄的讀寫操作。

      追加記錄文件則是始終追加一條新的記錄到該文件的最后索引處。值得注意的是,讀寫、追加記錄文件時(shí),如果操作指針已經(jīng)到了文件的末尾,如果是循環(huán)記錄文件,則從該文件的第一條開始操作,如此循環(huán)。如果是非循環(huán)記錄文件,則會(huì)報(bào)錯(cuò)。

      圖6 記錄文件讀寫流程

      2.6 密鑰安裝與索引

      本系統(tǒng)中密鑰和PIN碼都存放在一個(gè)特殊的密鑰文件中,不得出卡,只能在智能卡創(chuàng)建文件系統(tǒng)時(shí)通過上終端對(duì)密鑰和PIN碼進(jìn)行安裝,并提供查找和讀接口供外部調(diào)用。要安裝的密鑰必須被安裝在當(dāng)前DF目錄下的密鑰文件中,如果密鑰文件不存在,則必須先創(chuàng)建密鑰文件。終端發(fā)送過來的密鑰和PIN必須經(jīng)過MAC檢驗(yàn)和加密處理,安裝時(shí)再進(jìn)行解密。第一次安裝密鑰時(shí),需先安裝主控密鑰(MKey),每個(gè)DF目錄下都有唯一的一個(gè)MKey,MKey是安裝其它密鑰的加密密鑰。

      安裝密鑰時(shí)需終端傳入密鑰標(biāo)志、密鑰類型、密鑰版本號(hào)、密鑰算法、密鑰索引號(hào)、密鑰的使用權(quán)限、最大錯(cuò)誤重試次數(shù)、密鑰數(shù)據(jù)長度和密鑰的數(shù)據(jù)內(nèi)容。安裝PIN時(shí)需終端傳入PIN標(biāo)志、PIN索引號(hào)、PIN重裝密鑰ID、PIN解鎖密鑰ID、最大錯(cuò)誤重試次數(shù)、驗(yàn)證成功后的安全狀態(tài)、PIN數(shù)據(jù)長度和PIN的數(shù)據(jù)內(nèi)容。

      安裝密鑰或PIN時(shí)在其頭結(jié)構(gòu)信息中保存了密鑰或PIN的索引號(hào),并在密鑰文件的頭信息中保存了一份密鑰和PIN的個(gè)數(shù)統(tǒng)計(jì)信息,芯片內(nèi)部使用密鑰時(shí),可以先根據(jù)密鑰文件中的統(tǒng)計(jì)信息,遍歷查找和讀取每個(gè)密鑰的頭信息,并與傳入的索引號(hào)和KEY類型進(jìn)行對(duì)比,相同則表示查找成功,返回KEY的內(nèi)容。

      3 結(jié) 語

      本系統(tǒng)實(shí)現(xiàn)了一種基于FLASH的智能卡文件系統(tǒng),滿足ISO7816-4規(guī)范的接口要求,對(duì)智能卡相關(guān)產(chǎn)品具有重要的借鑒作用。具有較高的安全性能,在同類產(chǎn)品應(yīng)用中具有較大的優(yōu)勢,是一種實(shí)用新型的智能卡文件系統(tǒng)解決方案。

      猜你喜歡
      智能卡鏈表數(shù)據(jù)結(jié)構(gòu)
      東方磁卡李曉東:進(jìn)擊的智能卡研發(fā)巨子
      基于二進(jìn)制鏈表的粗糙集屬性約簡
      跟麥咭學(xué)編程
      基于鏈表多分支路徑樹的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
      基于STC89 單片機(jī)的非接觸智能卡讀寫機(jī)設(shè)計(jì)
      電子制作(2017年17期)2017-12-18 06:40:36
      “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
      高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
      中國市場(2016年45期)2016-05-17 05:15:48
      臨沂機(jī)頂盒智能卡升級(jí)方案介紹
      鏈表方式集中器抄表的設(shè)計(jì)
      電測與儀表(2014年1期)2014-04-04 12:00:22
      智能卡領(lǐng)域首個(gè)國家工程建設(shè)標(biāo)準(zhǔn)發(fā)布
      宁陕县| 嘉峪关市| 海盐县| 祁东县| 安泽县| 宝丰县| 屏东市| 遂川县| 天柱县| 乌苏市| 安新县| 陈巴尔虎旗| 怀远县| 汉沽区| 五峰| 墨竹工卡县| 清远市| 门源| 钟山县| 西平县| 上蔡县| 武定县| 寿宁县| 镇赉县| 东台市| 成安县| 浦江县| 邹城市| 萨迦县| 沽源县| 澎湖县| 濮阳县| 清苑县| 耒阳市| 冷水江市| 江川县| 富阳市| 兴山县| 和硕县| 读书| 延寿县|