專利名稱:數(shù)據(jù)的安全寫入的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在可寫入存儲器中安全寫入數(shù)據(jù)。
它一般可以用于微電子,具體可以用于電子存儲卡領(lǐng)域,尤其是接觸卡和/或非接觸卡以及有線邏輯卡和/或微處理器卡。
背景技術(shù):
在實踐中,在卡中使用的電子存儲器是EPROM閃速存儲器或EEPROM存儲器(“電子可擦除可編程序只讀存儲器”),它是非易失性和電子可擦除的,因此是可寫入的存儲器。
一般,建立與存儲卡——特別是非接觸卡——之間的事務(wù)需要非???。而且,這樣的事務(wù)必須被保護以防止可能的數(shù)據(jù)丟失,它也被稱為數(shù)據(jù)破壞(data corruption),它易于發(fā)生在例如當(dāng)寫入操作被執(zhí)行的時候的意外掉電的情況。
在數(shù)據(jù)破壞的情況下,用于在可改寫存儲器中寫入數(shù)據(jù)的已知方法提供了一定程度的安全性。但是,這些方法一般需要幾個存儲器寫入操作,它將寫入時間提高了兩三倍,并相應(yīng)地提高了存儲器惡化的風(fēng)險。
發(fā)明內(nèi)容
本發(fā)明的一個目的是使得數(shù)據(jù)被寫入得較快。
為此,本發(fā)明提供了如權(quán)利要求1所限定的一種數(shù)據(jù)處理器。
本發(fā)明允許通過單個操作來寫入新的數(shù)據(jù),同時可以保證可以被讀取的數(shù)據(jù)的完整性。
從下面的優(yōu)選實施例的詳細說明和附圖中,本發(fā)明的其他特點和優(yōu)點將會更清楚。
圖1是現(xiàn)有技術(shù)的循環(huán)文件的原理圖;
圖2是按照本發(fā)明的循環(huán)文件的結(jié)構(gòu)圖;圖3是按照本發(fā)明的一個記錄的結(jié)構(gòu)圖;圖4是示出按照本發(fā)明的用于在可改寫存儲器中安全寫入數(shù)據(jù)的方法的步驟的流程圖。
具體實施例方式
參見圖1,示出了一個EEPROM或閃速EPROM電子可擦除非易失性存儲器M,它被一個控制器(未示出)控制,所述控制器可以是一個編程的微處理器。
在實踐中,存儲器M和形成存儲器控制器的微處理器被實現(xiàn)在同一電子部件上,它也被稱為半導(dǎo)體芯片。
通常,存儲器M用于存儲被構(gòu)造成由所述存儲器控制器控制的邏輯實體的信息。在實踐中,存儲器M被劃分成例如用于讀取信息的一個字節(jié)元素,并被劃分為頁面,用于刪除所述信息,其中所述寫入操作也可以在逐頁的基礎(chǔ)上被執(zhí)行。
通過適當(dāng)?shù)某绦?,存儲器控制器被適用于將一種或多種數(shù)據(jù)類型的所述邏輯實體組織為頁面,即同步為頁面。這樣的同步在例如申請EP 0 767 742中被說明。
通過示例,示出現(xiàn)有技術(shù)的圖1的存儲器M被針對循環(huán)文件的首標(biāo)H1同步,所述循環(huán)文件包括使用從1到n的n個整數(shù)而組織成一個循環(huán)的n個記錄。
循環(huán)文件被形成具有首標(biāo)H1,包括由存儲器控制器唯一使用的數(shù)據(jù)和一組被邏輯組織成一個循環(huán)的記錄。所述記錄是具有固定長度的。
對于被保護的寫入,即當(dāng)保證數(shù)據(jù)寫入操作的完整性的時候,每次通過至少三個寫入操作來執(zhí)行寫入操作,第一個用于在備份存儲區(qū)域?qū)懭?,一個用于向數(shù)據(jù)區(qū)域?qū)懭耄粋€用于向備份存儲區(qū)域?qū)懭胍员銊h除同一個。
使用這種現(xiàn)有技術(shù)的被保護寫入方法,以便避免數(shù)據(jù)丟失,特別是當(dāng)卡被有意或無意地撤出的時候。但是,這種方法增加了寫入時間,并相應(yīng)地增加了存儲器惡化的風(fēng)險。
本發(fā)明克服了這個缺點。一個實施例是基于用于通過單個的寫入操作寫入諸如參照圖1所述的循環(huán)文件的技術(shù),用于通過單個的寫入操作,以安全的方式修改記錄并同時對撤出(取出卡)保護。具體上,現(xiàn)有技術(shù)通過使用數(shù)據(jù)和記錄而被改進,其中所述數(shù)據(jù)和記錄隱藏在循環(huán)文件中,下面將詳細說明。
參見圖2,圖解了一個循環(huán)文件。它包括n+1個記錄,它們被組織成一個循環(huán),其中n是一個整數(shù)。每個記錄包括一個等級指示、完整性查看數(shù)據(jù)和至少一個數(shù)據(jù)值。完整性查看數(shù)據(jù)的形式可以是例如一個校驗和冗余碼(CRC)。根據(jù)包括在記錄中的數(shù)據(jù)值來計算所述CRC。
假設(shè)記錄n是最后一個被正確寫入存儲器M的記錄。在這種情況下,記錄1到n是用戶可以訪問的。記錄n+1是對用戶隱藏的。每個記錄的等級指示和完整性查看數(shù)據(jù)頁面也對用戶隱藏,因此僅僅存儲器控制器可以訪問它們。存儲器控制器是由微處理器構(gòu)成的,所述微處理器具有一個存儲器,在這個存儲器中存儲了一個合適的操作系統(tǒng)(OS)。對用戶隱藏意味著與用戶相關(guān)的軟件(在OS下運行的應(yīng)用程序)不可訪問。
換句話說,對于圖1所述的現(xiàn)有技術(shù)的存儲器增加了一個對用戶隱藏的記錄和下面將詳細描述的已經(jīng)建立的安全寫入方法。對用戶隱藏的所述記錄是在已經(jīng)正確被寫入的最后一個記錄后面的記錄。
圖4示出了安全寫入方法。在下面的說明中,假定記錄n是已經(jīng)被正確寫入的最后一個記錄。因此,記錄n+1是所謂的隱藏記錄。
用于向可改寫存儲器寫入數(shù)據(jù)的所述安全方法包括下列步驟在未示出的初始步驟中,提供了一個存儲器M,它形成一個循環(huán)文件,其中具有被組織成一個循環(huán)的n+1個記錄。
在步驟2,當(dāng)存在要寫入如此定義的存儲器中的數(shù)據(jù)時,存儲器控制器選擇所述循環(huán)文件。
在步驟4,存儲器控制器搜索當(dāng)前的最高等級記錄。這是通過掃描存儲器而進行。如上所述,每個記錄包括一個等級指示。一個記錄的所述等級指示等于最后寫入的記錄的等級指示加1。被寫入的第一個記錄具有例如等級指示1。被寫入的第二個記錄將具有等級指示2。被寫入的第K個記錄將具有等于K模n+1的等級指示。
存儲器控制器詢問在文件中包括的每個記錄的等級指示。因此,它將找到具有最高等級指示的記錄。這個記錄是最后寫入存儲器的記錄。
在步驟6,存儲器控制器在記錄中包括的數(shù)據(jù)值的基礎(chǔ)上進行計算。這個計算與用于建立完整性查看數(shù)據(jù)的計算相同,完整性查看數(shù)據(jù)的形式是CRC。
在步驟8存儲器控制器將在步驟6進行的計算的結(jié)果與CRC比較。因此,獲得一個完整性標(biāo)志。這個完整性標(biāo)志指示是否數(shù)據(jù)值被破壞。
如果數(shù)據(jù)值被破壞(步驟10),則存儲器控制器寫入要寫入隱藏的記錄——記錄n+1——的數(shù)據(jù)。
存儲器控制器查看這個寫入操作的完整性(步驟12)。即,進行與步驟6所述的類似的操作。
在成功寫入的情況下(步驟12),存儲器控制器將隱藏記錄的等級遞增一個單位。隱藏記錄成為(n+1+1)模(n+1)。記錄2到n+1是可訪問的。
在未成功寫入的情況下(步驟16),隱藏的記錄的等級保持不變n+1,以便這個記錄n+1保持隱藏。
如果在步驟8數(shù)據(jù)未被破壞(完整性標(biāo)志良好),則進行步驟18。在步驟18,存儲器控制器在圖4所示的寫入操作的開始向隱藏記錄后面的記錄寫入數(shù)據(jù)。隱藏的記錄是n+1,因此存儲器控制器在記錄(n+1+1)mod(n+1)=1中寫入。即,存儲器控制器在寫入操作的開始將記錄1替換為要寫入的數(shù)據(jù)。
寫入操作的完整性被查看(步驟20)。
在成功寫入的情況下(步驟22),隱藏的記錄是2,因為記錄1是已經(jīng)被成功寫入的最后一個記錄。記錄3到n+2是用戶可以訪問的。
在失敗,不成功寫入的情況下(步驟24),隱藏的記錄是記錄1,因為記錄n+1是已經(jīng)成功寫入的最后的記錄。記錄1在記錄n+1的后面,因為記錄以循環(huán)的形式被組織。
應(yīng)當(dāng)指出,用于有n個記錄的需要仍然被滿足。用戶將不會通告在編號上的任何變化,因為按照公知的手段,操作系統(tǒng)按照是否一個給定的記錄應(yīng)當(dāng)保持對用戶隱藏而以一對一的關(guān)系來使用戶看見的編號與實際的記錄編號匹配。
在實踐中,特別是在電子錢包應(yīng)用程序的情況下,按照步驟8查看完整性標(biāo)志的狀態(tài)在于立即查看在前的記錄(n)等,直到達到下一個有效記錄。在與外部提供的數(shù)據(jù)一起使用的有效記錄中的數(shù)據(jù)(例如在電子錢包應(yīng)用程序的情況下的所述錢包的余額)隨后被還原,用于計算要更新到記錄n+1的新的余額。
在實踐中,寫入數(shù)據(jù)(步驟12和20)在于在具有按照本發(fā)明方法選擇的等級的記錄中寫入被接收的和先前存儲在工作存儲器區(qū)域中的數(shù)據(jù),并且遞增所述記錄等級。
總之,當(dāng)卡定制者(card customizer)建立例如n個記錄的文件的時候,按照本發(fā)明的操作系統(tǒng)結(jié)果產(chǎn)生n+1個記錄。
文件首標(biāo)H1被有利地補充了一個冗余區(qū)域ZP,如圖2所示,它位于首標(biāo)H1的后面,以便第一個記錄在存儲頁面M的邊界開始。因此,當(dāng)更新一個記錄的時候需要一個寫入操作。
參見圖3,一個記錄的結(jié)構(gòu)可以包括分配到數(shù)據(jù)的x個字節(jié)——x是一個整數(shù)、分配到完整性查看數(shù)據(jù)的兩個字節(jié)——例如一個CRC、分配到記錄等級指示的一個字節(jié)。
有利的是,分配到完整性標(biāo)志和記錄等級的三個附加字節(jié)對用戶隱藏,即僅僅存儲器控制器可以訪問。
優(yōu)選的是,寫入方法被使得僅僅接受x+3字節(jié)大小的記錄,x+3字節(jié)大小小于或等于一個存儲頁面的大小的模數(shù)。這使得可以在可改寫存儲器的單個頁面中執(zhí)行所有的刪除和寫入操作。
換句話說,當(dāng)定制者希望產(chǎn)生x字節(jié)的記錄長度,則操作系統(tǒng)建立一個x+3的記錄。三個增加的字節(jié)用于CRC和記錄等級指示。
在上述的示例中,用戶也是定制者。按照一個改進,當(dāng)用戶不是卡定制者的時候,用戶僅僅可以改進記錄的內(nèi)容而不能建立任何內(nèi)容。
有可能建立一個循環(huán)文件建立命令“create file”供卡定制者用于在保證頁面邊界條件被滿足的同時建立一個文件。因此,在這樣的條件下,每個記錄的大小等于頁面大小的模數(shù)。
應(yīng)當(dāng)注意,可以由操作系統(tǒng)來建立命令“create file”以便僅僅接受長度為13、29或61明顯字節(jié)長度——對應(yīng)于用于循環(huán)文件的16、32或64實際字節(jié)——的記錄(在這個示例中,假定存儲頁面大小是64個字節(jié))。如果存儲頁面的大小是32個字節(jié),那么值61是無效的。
在實際中,當(dāng)用戶建立具有小于13字節(jié)長度的記錄的時候,這個記錄被定制為16字節(jié)的長度。類似地,對于其長度小于29字節(jié)的一個記錄,記錄長度被設(shè)置為32。相同的方法被應(yīng)用到小于61的長度——它被設(shè)置為64字節(jié)。在實踐中,這個設(shè)置或“填充”操作對用戶是隱藏的。這些定制保證了在一個EEPROM存儲器中的所有的寫入操作在一個單個頁面中被執(zhí)行。
按照本發(fā)明,當(dāng)執(zhí)行快速事務(wù)的時候,諸如通過非接觸卡,文件訪問時間被優(yōu)化,同時保持寫入安全性。而且,因為存儲器備份區(qū)域是循環(huán)的,因此本發(fā)明的另一個優(yōu)點在于EPROM存儲器的更小的耗損。
以上本說明書說明了本發(fā)明的下列特點。一種數(shù)據(jù)處理器包括一個控制器,用于管理一個文件,其中可以依序存儲多個記錄。控制器查看是否一個記錄已經(jīng)被正確地寫入到所述文件中??刂破鞣乐古c用戶相關(guān)的軟件讀取在已經(jīng)被正確地寫入的最后一個記錄后面的記錄。
不能被與用戶相關(guān)的軟件訪問的記錄是“隱藏的記錄”。隱藏的記錄在文件中移動。它的移動是成功或不成功寫入的函數(shù)。當(dāng)數(shù)據(jù)需要被寫入的時候,它被寫入到隱藏記錄中。如果寫入成功,則隱藏記錄移動一個單位。如果寫入不成功,則隱藏記錄不移動。
權(quán)利要求
1.一種數(shù)據(jù)處理器,包括一個控制器,用于管理一個文件,其中可以依序存儲多個記錄,所述控制器查看是否一個記錄已經(jīng)被正確地寫入到所述文件中,其特征在于,所述控制器防止與用戶相關(guān)的軟件讀取在已經(jīng)被正確地寫入的最后一個記錄后面的記錄。
2.按照權(quán)利要求1所述的數(shù)據(jù)處理器,其特征在于,當(dāng)一個新記錄需要被寫入到所述文件中的時候,所述控制器用所述新記錄來替換在已經(jīng)被正確地寫入的最后一個記錄后面的記錄。
3.一種管理文件的方法,其中多個記錄被依序存儲,所述方法包括-驗證步驟,其中查看是否一個記錄已經(jīng)被正確地寫入到所述文件中;以及-訪問控制步驟,其中防止讀取在已經(jīng)被正確地寫入的最后一個記錄后面的記錄。
4.一種計算機程序產(chǎn)品,用于管理文件,其中多個記錄被依序存儲,所述計算機程序產(chǎn)品包括一組指令,當(dāng)將它們裝入一個數(shù)據(jù)處理器中的時候,使得所述數(shù)據(jù)處理器執(zhí)行-驗證步驟,其中數(shù)據(jù)處理器查看是否一個記錄已經(jīng)被正確地寫入到所述文件中;以及-訪問控制步驟,其中數(shù)據(jù)處理器防止讀取在已經(jīng)被正確地寫入的最后一個記錄后面的記錄。
5.一種用于在可改寫存儲器安全寫入的方法,其特征在于它包括步驟a)定義一個包括一個循環(huán)文件的存儲器,其中所述循環(huán)文件具有被組織成一個循環(huán)的m個記錄,其中m是一個從1到n+1的整數(shù),每個記錄包括至少一個等級、一個用于指示不良或良好狀態(tài)的完整性標(biāo)志和一個數(shù)據(jù)值,等級1到n的記錄可以被用戶訪問,而等級n+1的記錄、完整性標(biāo)志和每個記錄的等級對用戶隱藏。b)在存在要寫入到如此定義的存儲器中的數(shù)據(jù)的時候,選擇所述循環(huán)文件;c)獲取最高等級m=n+1的當(dāng)前記錄,并查看它的完整性標(biāo)志的狀態(tài);d)在完整性標(biāo)志不良的時候,寫入要寫入到等級m=n+1的當(dāng)前記錄的數(shù)據(jù),在成功的情況下,將當(dāng)前記錄的等級遞增一個單位m=n+1+1=1,它隨后變?yōu)殡[藏,以便等級2到n+1的記錄可以被訪問;而在不成功的情況下,不改變當(dāng)前記錄m=n+1的等級,它保持隱藏,而等級為1到n的其他記錄保持用戶可以訪問;e)在完整性標(biāo)志良好的時候,寫入要寫入到下一個等級m=n+1+1=1的記錄的數(shù)據(jù),在成功的情況下,將記錄的等級遞增一個單位m=1+1=2,它隨后變?yōu)殡[藏,以便等級3到n+2的記錄可以被訪問;而在不成功的情況下,不改變當(dāng)前記錄m=n+2的等級,它保持隱藏,而等級為2到n+1的其他記錄保持用戶可以訪問。
6.一種數(shù)據(jù)處理器,其中文件首標(biāo)被補充一個冗余區(qū)域,以便第一記錄在存儲頁面的邊界開始。
全文摘要
一種數(shù)據(jù)處理器,例如一個智能卡,包括一個控制器,用于管理一個文件,其中可以依序存儲多個記錄。所述控制器查看是否一個記錄已經(jīng)被正確地寫入到所述文件中。所述控制器防止與用戶相關(guān)的軟件讀取在已經(jīng)被正確地寫入的最后記錄后面的記錄。
文檔編號G06K19/073GK1443354SQ01812965
公開日2003年9月17日 申請日期2001年7月19日 優(yōu)先權(quán)日2000年7月19日
發(fā)明者喬斯·門尼卡特, 埃里克·德勞內(nèi)伊 申請人:施藍姆伯格系統(tǒng)公司