專利名稱:非易失性存儲器設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在具有控制器和非易失性存儲器的存儲器設(shè)備中用于通過非易失性存儲器上的修改程序來取代控制器的部分工作程序的技術(shù),以及適應(yīng)用于例如存儲器卡的技術(shù)。
背景技術(shù):
專利文獻1描述了一種方法,其用于在包括存儲器卡控制器和快擦寫存儲器的存儲器卡中容易地修改存儲器卡控制器內(nèi)ROM中的程序。按照該方法,修改程序被置于快擦寫存儲器上,當(dāng)電源開啟時,修改程序被傳送到存儲器卡控制器內(nèi)的RAM,RAM上的修改程序成為取代了ROM上待修改的程序的可執(zhí)行執(zhí)行。
為了防止篡改和泄露快擦寫存儲器上存儲的信息,有的技術(shù)可用以加密這樣的信息和將加密的信息存儲于快擦寫存儲器上。專利文獻2描述了一種快擦寫存儲器卡,其中在快擦寫存儲器中存儲和在存儲加密處理部分中加密的個人信息管理應(yīng)用程序(需要高度保密性)被存儲密鑰解密以被讀出。該方法造成了難以分析被非法轉(zhuǎn)儲的存儲數(shù)據(jù)。專利文獻3描述了一種快擦寫存儲器卡,其中用于執(zhí)行IC卡芯片的各部分應(yīng)用程序(銀行處理和信用結(jié)算)在快擦寫存儲器芯片內(nèi)的命令處理模塊中被加密和存儲。專利文獻4描述了用于在防篡改模塊(一種裝置結(jié)構(gòu),其中剝離表面保護膜會損壞下方接線層,造成了無法拆解電路用于分析)的非易失性存儲器中記錄高度機密的小容量數(shù)據(jù)(重要的個人信息)和在快擦寫存儲器中記錄非機密數(shù)據(jù)(由CPU執(zhí)行的應(yīng)用程序)的技術(shù)。
日本公開未審專利申請2002-229861(美國專利10/062451)發(fā)明內(nèi)容對于在包括存儲器卡控制器和快擦寫存儲器的存儲器卡中通過快擦寫存儲器上的修改程序來實現(xiàn)取代存儲器卡控制器中的部分工作程序的技術(shù),發(fā)明人研究了防止篡改和泄露存儲控制器內(nèi)的程序和數(shù)據(jù)以及快擦寫存儲器上的修改程序。由于快擦寫存儲器具有它的直接暴露于芯片的存取端子,當(dāng)存儲器卡被拆解時,快擦寫存儲器比存儲器卡控制器的片上掩模ROM更為容易遭受存儲信息的篡改和泄露。在此情況下,如專利文獻2至4中所述,高度機密的數(shù)據(jù)和程序應(yīng)當(dāng)加密地存儲于快擦寫存儲器中。然而,這對于自由修改存儲器卡的RAM內(nèi)的程序來說并不足夠。因此,如文獻1中所述,需要為ROM內(nèi)的所有程序設(shè)置跳轉(zhuǎn)表。然而在此情況下,發(fā)現(xiàn)存儲器卡控制器的片上掩模ROM上的程序等易于通過對存儲于快擦寫存儲器中的跳轉(zhuǎn)表進行非法篡改和分析而遭到篡改和泄露。例如,諸如允許對保持于存儲器卡控制器內(nèi)的高度機密數(shù)據(jù)進行外部引用的非法存取,可通過篡改跳轉(zhuǎn)表來進行,從而造成存儲器卡控制器執(zhí)行非法程序。并且,在開機復(fù)位時從快擦寫存儲器控制器傳送到存儲器卡控制器的加密程序必須在執(zhí)行之前解密。在此情況下,當(dāng)程序容量較大時,與到RAM的傳送一起來執(zhí)行的解密將需要過長的復(fù)位處理時間。
本發(fā)明的目的是,在用于允許通過非易失性存儲器上的修改程序來取代控制器的部分工作程序的技術(shù)中,提供一種存儲器設(shè)備,其能夠有助于防止篡改和泄露控制器內(nèi)的程序和數(shù)據(jù),以及非易失性存儲器上的修改程序。
本發(fā)明的另一目的是,在用于允許通過非易失性存儲器上的修改程序來取代控制器的部分工作程序的技術(shù)中,即使修改程序的容量較大時,仍可在復(fù)位處理之后防止取代處理造成操作啟動的較長延遲。
從該說明書和附圖的描述中,本發(fā)明的上述和其他目的及新穎特征將變得明顯。
本發(fā)明的典型公開將簡要概述如下。
一種存儲器設(shè)備包括進行數(shù)據(jù)處理的控制器(3);以及第一非易失性存儲器(4),其存儲在控制器的控制下可改寫的信息。該控制器包括數(shù)據(jù)處理器(10);由該數(shù)據(jù)處理器存取的不可改寫的第二非易失性存儲器(11);以及由該數(shù)據(jù)處理器存取的可改寫易失性存儲器(12)。該第二非易失性存儲器具有該數(shù)據(jù)處理器的處理程序(PGM),該第一非易失性存儲器具有用于取代部分處理程序的加密替代程序(SMDLk)的存儲區(qū)域(20)。在開機復(fù)位時,該數(shù)據(jù)處理器將加密替代程序傳送到易失性存儲器,并在該傳送之后,在執(zhí)行該加密的替代程序時解密該替代程序,將該解密的替代程序存儲于該易失性存儲器中以便隨后能再使用。
按照上述,在開機復(fù)位時,該加密的替代程序被傳送到易失性存儲器,并在實際執(zhí)行時被解密。因此,直至在從復(fù)位處理退出之后允許數(shù)據(jù)處理器的數(shù)據(jù)處理,無需長時間等待。由于一旦解密的替代程序被保持于易失性存儲器以便能再使用,所以沒有了每次執(zhí)行時解密替代程序的繁瑣。由于替代程序被加密,即使第一非易失性存儲器與控制器物理或電分離以非法轉(zhuǎn)儲替代程序,仍難以分析數(shù)據(jù)。
期望在傳送到易失性存儲器之后其第一次執(zhí)行時解密替代程序。這是因為可能甚至在替代程序一次也未執(zhí)行時關(guān)閉工作電源。當(dāng)要求有高速處理速度的程序?qū)⒈蝗〈鷷r,可改變開機復(fù)位處理,使得在開機復(fù)位期間預(yù)先解密替代程序。
下面描述如何利用跳轉(zhuǎn)表來執(zhí)行上述處理程序。例如,第二非易失性存儲器包括在處理程序被執(zhí)行時所用的第一跳轉(zhuǎn)表(TBL),第一非易失性存儲器包括在部分被替代程序所取代的處理程序被執(zhí)行時所用的第二跳轉(zhuǎn)表(STBL)的存儲區(qū)域(21),該存儲區(qū)域用來存儲加密的第二跳轉(zhuǎn)表。當(dāng)將在開機復(fù)位被清除之后的加密的替代程序傳送到易失性存儲器時,數(shù)據(jù)處理器解密第二跳轉(zhuǎn)表,并將解密的第二跳轉(zhuǎn)表存儲于易失性存儲器中,以便以后能取代第一跳轉(zhuǎn)表而被使用。通過該方案,由于替代程序所修改的處理程序的執(zhí)行所用的第二跳轉(zhuǎn)表被加密地存儲于第一非易失性存儲器中,即使第一非易失性存儲器能夠與存儲器卡控制器物理或電分離以非法轉(zhuǎn)儲跳轉(zhuǎn)表,仍難以分析其內(nèi)容或篡改這些內(nèi)容以用于非法目的。如果跳轉(zhuǎn)表可被篡改以使控制器執(zhí)行非法程序,則能執(zhí)行諸如允許對控制器內(nèi)的高度機密數(shù)據(jù)進行外部引用的非法存取。
作為本發(fā)明的具體實施例,第二非易失性存儲器具有寫控制程序(MDL(PM ER)),其將分別加密的替代程序和第二跳轉(zhuǎn)表寫到第一非易失性存儲器。即使當(dāng)存儲器設(shè)備被安裝于應(yīng)用系統(tǒng)時,仍可容易地更新程序和跳轉(zhuǎn)表。
作為本發(fā)明的具體實施例,解密處理程序通過利用解密操作模塊(硬件)來進行解密。解密處理程序可進行全部處理。
作為本發(fā)明的具體實施例,改寫跳轉(zhuǎn)表,以控制在解密處理程序的啟動與替代程序的啟動之間的切換。具體來說,第二跳轉(zhuǎn)表包括在處理程序中引用的第一表區(qū)域(31)和在解密處理程序中引用的第二表區(qū)域(32),解密處理程序的位置地址信息被存儲于第一引用區(qū)域(33)中,該第一引用區(qū)域被分配用來引用第一表區(qū)域中替代程序的位置地址信息,分配給第一引用區(qū)域的替代程序的位置地址信息被存儲于第二表區(qū)域中與第一引用區(qū)域相對應(yīng)的第二引用區(qū)域(34)中。通過引用第一引用區(qū)域中保持的地址信息和執(zhí)行位于該地址處的解密處理程序,數(shù)據(jù)處理器從對應(yīng)的第二引用區(qū)域中地址信息的地址處獲取替代程序,解密所獲取的替代程序,并將第一引用區(qū)域中保持的地址信息改變?yōu)閷?yīng)的第二區(qū)域中保持的地址信息。通過該處理,替代程序能夠在第一次執(zhí)行時被解密,隨后能夠直接執(zhí)行解密的替代程序。
數(shù)據(jù)處理器能夠按照地址信號隨機存取第二非易失性存儲器和易失性存儲器??梢赃壿嬌葏^(qū)為單位對第一非易失性存儲器進行文件存取??刂破骶哂蟹现付ù鎯ζ骺?biāo)準(zhǔn)的主機接口。
下面對編碼的跳轉(zhuǎn)表的解密進行描述。該存儲器設(shè)備包括進行數(shù)據(jù)處理的控制器;以及第一非易失性存儲器,其存儲在該控制器的控制下可改寫的信息。該控制器包括數(shù)據(jù)處理器;由該數(shù)據(jù)處理器存取的不可改寫的第二非易失性存儲器;以及由該數(shù)據(jù)處理器存取的可改寫的易失性存儲器。該第二非易失性存儲器保持該數(shù)據(jù)處理器的處理程序和在該處理程序被執(zhí)行時所用的第一跳轉(zhuǎn)表。該第一非易失性存儲器包括替代程序的存儲區(qū)域,該替代程序用以取代部分處理程序;以及第二跳轉(zhuǎn)表的存儲區(qū)域,其中在替代程序被執(zhí)行時使用該第二跳轉(zhuǎn)表。該存儲區(qū)域用來存儲第二加密跳轉(zhuǎn)表。在開機復(fù)位時,數(shù)據(jù)處理器將加密的替代程序傳送到易失性存儲器,解密第二跳轉(zhuǎn)表,并將解密的第二跳轉(zhuǎn)表存儲于易失性存儲器中,以便能隨后在取代第一跳轉(zhuǎn)表時使用。
由于替代程序被加密,即使第一非易失性存儲器與控制器物理或電分離以非法轉(zhuǎn)儲替代程序,仍難以分析數(shù)據(jù)。而且,由于替代程序所修改的處理程序的執(zhí)行所用的第二跳轉(zhuǎn)表被加密地存儲于第一非易失性存儲器中,即使第一非易失性存儲器能與控制器物理或電分離以非法轉(zhuǎn)儲跳轉(zhuǎn)表,仍難以分析其內(nèi)容或者篡改這些內(nèi)容以用于非法目的。因此,難以通過篡改跳轉(zhuǎn)表來使控制器執(zhí)行非法程序,從而有利于防止諸如允許對控制器內(nèi)保持的高度機密數(shù)據(jù)進行外部引用的非法存取。
當(dāng)執(zhí)行被切換到易失性存儲器的加密替代程序時,數(shù)據(jù)處理器可解密替代程序,將解密的替代程序存儲于易失性存儲器中以便隨后能再使用。無需長時間等待,直至在從復(fù)位處理退出后允許數(shù)據(jù)處理器的數(shù)據(jù)處理。由于一旦解密的替代程序被保持于易失性存儲器中以便能再使用,所以不存在每次執(zhí)行時解密替代程序的繁瑣。
本發(fā)明的典型公開所獲得的效果將簡述如下。
在用于允許通過非易失性存儲器上的修改程序來取代控制器的部分工作程序的技術(shù)中,本發(fā)明能夠有助于防止篡改和泄露控制器內(nèi)的程序和數(shù)據(jù)以及非易失性存儲器上的修改程序。
在用于允許通過非易失性存儲器上的修改程序來取代控制器的部分工作程序的技術(shù)中,即使在修改的程序的容量較大時,本發(fā)明仍然能夠防止取代處理造成復(fù)位處理后的長時間操作啟動延遲。
圖1是圖示按照本發(fā)明實施例的存儲器卡的方框圖。
圖2是圖示當(dāng)修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL都未存儲于快擦寫存儲器的指定區(qū)域中時處理程序如何進行執(zhí)行的圖例。
圖3是圖示數(shù)據(jù)如何從主機裝置寫到存儲器卡的圖例;圖4示出了當(dāng)修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL存儲于快擦寫存儲器的指定區(qū)域中時在開機復(fù)位時如何進行操作。
圖5示出了修改程序模塊在圖4的處理后的執(zhí)行形式。
圖6示出了處理過程,其中加密的修改程序模塊在第一次執(zhí)行時被解密和保持于RAM中,以便隨后能再使用。
圖7示出了處理程序在修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL存儲于快擦寫存儲器的指定區(qū)域中時的執(zhí)行形式。
圖8是示出開機復(fù)位時的操作過程的流程圖。
圖9是圖示添加有散列值的修改跳轉(zhuǎn)表和修改程序模塊的圖例。
圖10是圖示利用修改程序模塊的數(shù)據(jù)處理過程的流程圖。
圖11是圖示利用修改程序模塊的數(shù)據(jù)處理過程的另一實例的流程圖。
具體實施例方式
圖1示出了按照本發(fā)明實施例的存儲器卡。存儲器卡(MCRD)1包括存儲器卡控制器(MCNT)3,其作為執(zhí)行數(shù)據(jù)處理的控制器;和快擦寫存儲器(FLASH)4,其作為第一非易失性存儲器,以存儲在存儲器卡控制器3的控制下可改寫的信息,存儲器卡控制器3和快擦寫存儲器4安裝在卡板上??觳翆懘鎯ζ?由一個或多個快擦寫存儲器芯片構(gòu)成。存儲器卡控制器3例如由單個芯片構(gòu)成。存儲器卡控制器3例如包括數(shù)據(jù)處理器(MPU)10;掩模ROM(MskROM)11,其作為由數(shù)據(jù)處理器10存取的不可改寫的第二非易失性存儲器;RAM(隨機存取存儲器)12,其作為由數(shù)據(jù)處理器10存取的可改寫的易失性存儲器;接口電路(HMIF)13;以及數(shù)據(jù)緩沖器(DBUF)14。
接口電路13與主機裝置(HOST)15和快擦寫存儲器4相接口。存儲器卡控制器3和主機裝置15間的接口取決于存儲器卡1的卡規(guī)格。響應(yīng)于符合卡規(guī)格的存儲器卡命令來進行處理。例如,存儲器卡1符合多媒體卡(MultiMediaCard)的規(guī)格。MultiMediaCard是InfineonTechnologiesAG的注冊商標(biāo)。主機裝置15以文件存取的形式與快擦寫存儲器4相接口。換而言之,存儲器卡控制器3對作為文件存儲器的快擦寫存儲器4進行存取控制。當(dāng)存取邏輯地址(邏輯扇區(qū)地址)被主機裝置15饋入的存取命令指定時,存儲器卡控制器3產(chǎn)生與其對應(yīng)的物理地址,將符合快擦寫存儲器4規(guī)格的存儲器存取命令發(fā)到快擦寫存儲器4,以對快擦寫存儲器4進行存取控制。
掩模ROM 11包括數(shù)據(jù)處理器10的處理程序PGM和在處理程序PGM被執(zhí)行時用到的第一跳轉(zhuǎn)表(初始跳轉(zhuǎn)表)TBL。數(shù)據(jù)處理器10通過執(zhí)行處理程序PGM,來控制主機接口操作和快擦寫存儲器接口操作。處理程序PGM被構(gòu)成為以函數(shù)方式調(diào)節(jié)的一組程序模塊MDLi(i=1至n),指定程序模塊MDL1的執(zhí)行在復(fù)位被清除后立即啟動。處理程序在跳轉(zhuǎn)到程序模塊MDLi內(nèi)的其他程序模塊MDLx的同時繼續(xù)處理。用以引用跳轉(zhuǎn)表的表地址在跳轉(zhuǎn)源程序模塊中描述。跳轉(zhuǎn)目的程序模塊的開始地址信息被保持于表地址中所引用的區(qū)域中。數(shù)據(jù)處理器10解碼跳轉(zhuǎn)指令,從該指令的地址域中描述的表地址的跳轉(zhuǎn)表區(qū)域中獲得地址信息,將程序指令地址切換為由地址信息表示的地址。結(jié)果,該執(zhí)行地址改變到程序地址中指定的另一程序模塊。
存儲器卡控制器3包括FOF(farm on flash)功能,用于對處理程序PGM進行部分修改。下面將說明FOF功能。
快擦寫存儲器4包括修改程序模塊SMDLk(k=1至任意數(shù)n)的存儲區(qū)域20,該程序作為加密的取代程序以取代部分處理程序;加密的第二跳轉(zhuǎn)表(修改跳轉(zhuǎn)表)STBL的存儲區(qū)域21,當(dāng)修改程序模塊SMDLk所部分取代的處理程序被執(zhí)行時用到該跳轉(zhuǎn)表;以及標(biāo)志信息FLG的存儲區(qū)域22,該標(biāo)志信息用于表示修改模塊SMDLk和修改跳轉(zhuǎn)表STBL是否存儲于區(qū)域20和21中。
圖2示出了當(dāng)修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL未存儲于區(qū)域20和21中時處理程序如何進行執(zhí)行。在開機復(fù)位時,當(dāng)工作電源電壓和時鐘振蕩頻率變穩(wěn)定后,數(shù)據(jù)處理器10引用區(qū)域22中的標(biāo)志信息FLG,并在修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL未存儲于區(qū)域20和21中時將ROM 11上的初始跳轉(zhuǎn)表TBL傳送到RAM12的指定存儲區(qū)域(TRS)。隨后,例如用以從程序模塊MDL1跳轉(zhuǎn)到另一程序模塊MDLi的處理程序引用RAM 12上的初始跳轉(zhuǎn)表TBL,獲得程序模塊MDLi的程序地址以改變指令執(zhí)行順序(BRC)。
圖3示出了數(shù)據(jù)如何從主機裝置15寫到存儲器卡1。為了將數(shù)據(jù)從主機裝置15安全傳送到存儲器卡1,傳送數(shù)據(jù)被加密。在從主機裝置15傳送前,利用存儲器卡1的制造商密鑰和公開密鑰,對用作安全模塊的修改程序SMDLk和修改跳轉(zhuǎn)表STBL加密。作為其他非安全模塊的數(shù)據(jù)等在從主機裝置15傳送前被存儲器卡1的公開密鑰加密。從主機裝置15傳送的數(shù)據(jù)被暫存于數(shù)據(jù)緩沖器14中,隨后由數(shù)據(jù)處理器10利用存儲器卡1的秘密密鑰來解密。由此,能夠獲得由制造商密鑰加密的安全模塊和明文的非安全模塊。用作安全模塊的修改程序SMDLk和修改跳轉(zhuǎn)表STBL被加密地存儲于快擦寫存儲器4中。通過該方案,即使快擦寫存儲器4與存儲器卡1分離以非法轉(zhuǎn)儲其存儲信息,也難以分析其內(nèi)容。由于修改跳轉(zhuǎn)表TBL也被加密,所以難以分析和篡改修改跳轉(zhuǎn)表STBL的內(nèi)容以用于非法目的。因此,能夠抑制篡改修改跳轉(zhuǎn)表STBL以使數(shù)據(jù)處理器10執(zhí)行非法程序的企圖,還能夠防止諸如允許通過篡改修改跳轉(zhuǎn)表STBL來對存儲器卡控制器3內(nèi)保持的高度機密數(shù)據(jù)進行外部引用的非法存取。作為一個程序模塊MDLm,在處理程序PGM中包含程序MDK(PM ER),其控制修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL向快擦寫存儲器4的寫入。
圖4示出了當(dāng)修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL存儲于區(qū)域20和21中時在開機復(fù)位時如何進行操作。在開機復(fù)位時,在工作電源電壓和時鐘振動頻率變得穩(wěn)定后,數(shù)據(jù)處理器10引用存儲區(qū)域22的標(biāo)志信息,并在修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL存儲于區(qū)域20和21中時,將快擦寫存儲器4上的修改跳轉(zhuǎn)表STBL和修改程序模塊SMDLk傳送到RAM 12的指定存儲區(qū)域。這時,數(shù)據(jù)處理器10解密該修改跳轉(zhuǎn)表STBL,并將仍然加密的修改程序模塊SMDLk傳送到RAM 12。這樣做是為了避免開機復(fù)位的處理時間因為一次解密整個加密的修改程序模塊將需要很長的處理時間而劇增。
圖5示出了修改程序模塊在圖4的處理后的執(zhí)行形式。傳送到RAM 12的修改程序模塊SMDLk由數(shù)據(jù)處理器10在第一次執(zhí)行時解密。解密的修改程序模塊SMDLk被保持于RAM 12中,以便隨后能再使用。傳送到RAM的修改程序模塊SMDLk在它被實際執(zhí)行時被解密。因此,無需長時間等待,直至在從復(fù)位處理退出后允許數(shù)據(jù)處理器10的數(shù)據(jù)處理。由于一旦被解密的取代程序被保持于快擦寫存儲器4中以便能再使用,所以不存在每次執(zhí)行時解密該修改程序模塊SMDLk的繁瑣。
修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL的解密處理由執(zhí)行解密程序MDL(DEC)的數(shù)據(jù)處理器10來進行。作為一個程序模塊MDLh,在處理程序PGM中包含解密程序模塊MDL(DEC)。
圖6示出了處理過程,其中加密的修改程序模塊在笫一次執(zhí)行時被解密,并被保持于RAM中以便隨后能再使用。這里,修改跳轉(zhuǎn)表STBL被改寫,以控制在解密處理程序的啟動與修改程序模塊的啟動間的切換。具體而言,修改跳轉(zhuǎn)表STBL包括在處理程序中引用的第一表區(qū)域31和在解密處理程序MDL(DEC)中引用的第二表區(qū)域32。第一表區(qū)域31是分配的區(qū)域,用于按照程序模塊的順序保持程序模塊MDL0至MDLn的位置地址信息(程序模塊的開始地址)。MDLi_SADR表示程序模塊MDLi的開始地址。在解密已在開機時進行并且已對RAM 14進行傳送的狀態(tài)下,在第一表區(qū)域31中,為引用修改程序模塊的位置地址信息而分配的第一引用區(qū)域33與解密處理程序MDL(DEC)的開始地址MDL(DEC)_SADR一起被存儲為其位置地址信息。第二表區(qū)域32包括與第一引用區(qū)域33相對應(yīng)的第二引用區(qū)域34。第二引用區(qū)域34與向?qū)?yīng)的第一引用區(qū)域33所分配的修改程序模塊的開始地址一起被存儲為其位置地址信息。具體而言,在圖6的修改程序模塊解密前的修改跳轉(zhuǎn)表STBL中,對應(yīng)于修改位置1和2的第一引用區(qū)域33與解密處理程序MDL(DEC)的開始地址MDL(DEC)_SADR一起被存儲。此時,與修改位置1的第一引用區(qū)域33相對應(yīng)的第二引用區(qū)域34與修改程序模塊SMDL3的開始地址SMDL3_SADR一起被存儲。與修改位置m的第一引用區(qū)域33相對應(yīng)的第二引用區(qū)域34與修改程序模塊SMDLk的開始地址SMDLk_SADR一起被存儲。盡管未示出,但是第一引用區(qū)域33具有標(biāo)識碼,其表示當(dāng)它被分配用來存儲修改程序模塊的開始地址時從表格的起點開始計數(shù)的修改程序模塊編號。該標(biāo)識碼由解密處理模塊MDL(DEC)識別。
當(dāng)數(shù)據(jù)處理器10在引用第一表區(qū)域31中保持的地址信息的同時繼續(xù)程序處理時,如果解密處理程序設(shè)置于該地址信息所示的地址處,則解密處理程序利用與當(dāng)時引用的第一引用區(qū)域33中保持的地址信息一起到來的標(biāo)識碼,來獲取第二表區(qū)域32中對應(yīng)的第二引用區(qū)域34中保持的修改程序模塊的位置地址。例如,當(dāng)數(shù)據(jù)處理器10當(dāng)前執(zhí)行的程序模塊中程序跳轉(zhuǎn)指令的跳轉(zhuǎn)目的地在修改跳轉(zhuǎn)表STBL的修改位置1的地址中被指定時,數(shù)據(jù)處理器10從該地址處獲取解密處理程序模塊的開始地址MDL(DEC)_SADR,并切換到解密處理程序模塊的執(zhí)行。此時,數(shù)據(jù)處理器10讀取與緊接在前的跳轉(zhuǎn)指令所引用的第一引用區(qū)域33中保持的地址信息一起到來的標(biāo)識碼。在圖6的實例中,指定的修改程序模塊是第一個模塊。按照該標(biāo)識碼,數(shù)據(jù)處理器10獲取與第二表區(qū)域32的第一位置相對應(yīng)的第二引用區(qū)域34中保持的修改程序模塊的位置地址SMDL3_SADR。數(shù)據(jù)處理器10解密該地址SMDL3_SADR中指定的加密修改程序模塊。解密的修改程序模塊在相同地址SMDL3_SADR中指定的區(qū)域中進行寫覆蓋。隨后,數(shù)據(jù)處理器10將曾已被用來引用該解密處理程序模塊的第一引用區(qū)域33中的位置地址信息MDL(DEC)_SADR改寫為對應(yīng)的第二引用區(qū)域34中的位置地址信息SMDL3_SADR。改寫完成時的修改跳轉(zhuǎn)表STBL的狀態(tài)如圖6中的修改程序模塊解密狀態(tài)所示。在第一引用區(qū)域33的改寫完成后,數(shù)據(jù)處理器返回至跳轉(zhuǎn)到解密處理模塊前的處理,以轉(zhuǎn)到修改位置1中指定的修改程序模塊的開始地址SMDL3_SADR。對于每個修改程序模塊,上述解密處理僅在該模塊被第一次執(zhí)行時進行。由此,加密的修改程序模塊可在第一次執(zhí)行時被解密,隨后解密的修改程序模塊可被直接執(zhí)行。
圖7示出了當(dāng)修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL存儲于區(qū)域20和21中時處理程序的執(zhí)行。在開機復(fù)位時,在工作電源電壓和時鐘振蕩頻率變得穩(wěn)定后,數(shù)據(jù)處理器10引用區(qū)域22的標(biāo)志信息FLG,當(dāng)修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL存儲于區(qū)域20和21中時,快擦寫存儲器4上的修改程序模塊SMDLk和修改跳轉(zhuǎn)表STBL被傳送到RAM 12的指定存儲區(qū)域并被解密,如前所述。例如當(dāng)程序模塊MDL1在處理程序的后續(xù)執(zhí)行中引用修改跳轉(zhuǎn)表STBL時,如果跳轉(zhuǎn)目的地是RAM 12上的地址,則該地址中指定的RAM 12上的修改程序,例如修改程序模塊SMDLk被執(zhí)行。
圖8是示出了開機復(fù)位時操作過程的流程圖。當(dāng)電源開啟(S1)時,啟動初始化處理(復(fù)位處理)(S2)。當(dāng)數(shù)據(jù)處理器的指令執(zhí)行被使能時,跳轉(zhuǎn)表TBL被傳送到RAM 12(S3)。確定修改固件是否存在于快擦寫存儲器4中(S4)。該修改固件表示修改跳轉(zhuǎn)表STBL和修改程序模塊SMDLk。標(biāo)志FLG可被用于確定。當(dāng)修改固件存在時,修改跳轉(zhuǎn)表STBL和修改程序模塊SMDLk被讀取到RAM 12中(S5)。對于讀取的修改跳轉(zhuǎn)表STBL和修改程序模塊SMDLk進行數(shù)據(jù)驗證(S6)。例如,通過CRC(循環(huán)冗余校驗)碼和散列值的計算來檢驗是否已進行篡改。在驗證后,加密的修改跳轉(zhuǎn)表STBL被解密(S7)。在解密后或者當(dāng)不存在修改固件時,數(shù)據(jù)處理器繼續(xù)到下一處理。盡管未示出,但是作為數(shù)據(jù)驗證的結(jié)果,當(dāng)懷疑篡改時,可進行錯誤處理,比如禁止卡的使用。
圖9示出了添加有散列值的修改跳轉(zhuǎn)表和修改程序模塊。可添加加密的散列值。有關(guān)數(shù)據(jù)的散列值是在散列值的獲取時利用一個函數(shù)來計算的,并與添加到該數(shù)據(jù)的散列值做比較。如果它們不同,則可確定該數(shù)據(jù)被篡改。
圖10示出了利用修改程序模塊時的數(shù)據(jù)處理過程。當(dāng)跳轉(zhuǎn)到不同程序模塊時,引用修改跳轉(zhuǎn)表(S11),獲得跳轉(zhuǎn)目的地址(S12)。如果跳轉(zhuǎn)目的地址的程序是解密處理程序模塊MDL(DEC),如前所述,從區(qū)域34中獲得待解密的修改程序模塊SMDLk的位置地址(S13),對由此獲得的修改程序模塊SMDLk解密,解密前的修改程序模塊被解密后的修改程序模塊取代(S14)。此后,存儲于修改跳轉(zhuǎn)表中的解密處理程序模塊的位置地址MDL(DEC)_SADR被改變成修改程序模塊的位置地址SMDLk_SADR(S15),并執(zhí)行修改程序模塊SMDLk(S16)。如果跳轉(zhuǎn)目的地址的程序是S12中的修改程序模塊SMDLk,則可執(zhí)行修改程序模塊SMDLk(S16)。
圖11示出了利用修改程序模塊時的數(shù)據(jù)處理過程的另一實例。在該實例中,在修改跳轉(zhuǎn)表中指定跳轉(zhuǎn)目的地址的區(qū)域中,跳轉(zhuǎn)目的地址被指定,無論是完成還是未完成解密。基于解密鑒別表中保持的信息,確定是否解密該跳轉(zhuǎn)目的地址中所指定的修改程序模塊。解密鑒別表保持有與修改程序模塊的位置地址信息相對應(yīng)的、表示是否進行解密的信息。
當(dāng)跳轉(zhuǎn)到另一程序模塊時,引用修改跳轉(zhuǎn)表(S21),獲得跳轉(zhuǎn)目的地址(S22),并利用解密鑒別表來確定跳轉(zhuǎn)目的地的程序是否已被解密(S23)。如果跳轉(zhuǎn)目的地的修改程序模塊尚未被解密,則加密的修改程序模塊SMDLk從RAM 12中被讀取(S24)并被解密,解密前的修改程序模塊被解密后的修改程序模塊取代(S25),關(guān)于該進行取代的修改程序模塊的解密鑒別表的對應(yīng)標(biāo)記被改變?yōu)楸硎窘饷芡瓿傻拇a(S26),該進行取代的修改程序模塊SMDLk被執(zhí)行(S27)。如果跳轉(zhuǎn)目的地的修改程序模塊已被解密,則跳過解密處理,執(zhí)行該修改程序模塊SMDLk(S27)。
按照上述存儲器卡,能夠獲得下述效果。
由于修改程序模塊SMDLk被加密,即使快擦寫存儲器4與存儲器卡控制器3物理或電分離以非法轉(zhuǎn)儲修改程序模塊SMDLk,仍難以分析數(shù)據(jù)。
在開機復(fù)位時,加密的修改程序模塊SMDLk從快擦寫存儲器4被傳送到RAM 12,并在實際執(zhí)行時被解密。因此,無需長時間等待,直至在從復(fù)位處理退出后允許數(shù)據(jù)處理器10的數(shù)據(jù)處理。由于一旦解密的修改程序模塊SMDLk被保持于RAM 12中以便能再使用,所以不存在每次執(zhí)行時解密修改程序模塊SMDLk的繁瑣。
修改程序模塊SMDLk是在傳送到RAM 12的修改程序模塊SMDLk被第一次執(zhí)行時解密的。當(dāng)關(guān)閉工作電源時,可避免無謂的信號處理,即使修改程序模塊SMDLk一次也沒有執(zhí)行。
由于用于修改程序模塊SMDLk所修改的處理程序PGM的執(zhí)行的修改跳轉(zhuǎn)表被加密地存儲于快擦寫存儲器4中,即使快擦寫存儲器4能夠與存儲器卡控制器3物理或電分離以非法轉(zhuǎn)儲修改跳轉(zhuǎn)表STBLk,仍難以分析其內(nèi)容或篡改這些內(nèi)容以用于非法目的。如果能夠篡改修改跳轉(zhuǎn)表以使控制器3執(zhí)行非法程序,則可能進行諸如允許對控制器3內(nèi)的高度機密數(shù)據(jù)進行外部引用的非法存取。
通過引用第一引用區(qū)域33中保持的地址信息和執(zhí)行位于該地址的解密處理程序MDL(DEC),數(shù)據(jù)處理器從對應(yīng)的第二引用區(qū)域34中地址信息的地址處獲取修改程序模塊SMDLk,對獲取的修改程序模塊SMDLk解密,并將第一引用區(qū)域33中保持的地址信息改變?yōu)閷?yīng)的第二區(qū)域34中保持的地址信息。通過該處理,修改程序模塊SMDLk能夠在其第一次執(zhí)行時被解密,隨后能夠直接執(zhí)行已解密的修改程序模塊SMDLk。
上文盡管基于優(yōu)選實施例已具體地描述了本發(fā)明的發(fā)明人所完成的發(fā)明,但是毋庸贅言,本發(fā)明不限于優(yōu)選實施例,而是可在不改變本發(fā)明的主要目的的情況下以各種方式加以改型。
例如,RAM上的解密修改程序模塊不限于存儲在與加密修改程序模塊相同的地址范圍內(nèi)。它們可以位于彼此不同的地址。
與第一區(qū)域相對應(yīng)的第二區(qū)域的地址映射不限于這樣的方法,該方法通過相對修改跳轉(zhuǎn)表起始處的偏移來確定修改程序模塊在修改跳轉(zhuǎn)表上的順序。
第一非易失性存儲器不限于快擦寫存儲器。它可以是具有其他存儲格式的存儲器,比如EEPROM。
存儲器卡接口不限于MMC。它可以符合其他存儲器卡規(guī)格。
修改跳轉(zhuǎn)表的解密處理模塊和修改程序模塊的解密處理模塊可以完全不同,或者可以是部分公共的、具有標(biāo)準(zhǔn)化的解密算法過程控制部分的單獨程序模塊。
權(quán)利要求
1.一種存儲器設(shè)備,包括進行數(shù)據(jù)處理的控制器;第一非易失性存儲器,其存儲在該控制器的控制下可改寫的信息;以及第二非易失性存儲器,其中,該控制器包括數(shù)據(jù)處理器;由該數(shù)據(jù)處理器存取的不可改寫的第二非易失性存儲器;以及由該數(shù)據(jù)處理器存取的可改寫的易失性存儲器,其中,該第二非易失性存儲器保持該數(shù)據(jù)處理器的處理程序,其中,該第一非易失性存儲器包括取代部分處理程序的加密替代程序的存儲區(qū)域,以及其中,當(dāng)進行開機復(fù)位操作時,該數(shù)據(jù)處理器將加密替代程序,如果有的話,傳送到可改寫的易失性存儲器,并在該傳送之后,在執(zhí)行該加密的替代程序時解密該加密的替代程序,將該解密的替代程序存儲于該易失性存儲器中以便隨后能再使用。
2.如權(quán)利要求1所述的存儲器設(shè)備,其中,該加密的替代程序在傳送到該易失性存儲器后在其第一次執(zhí)行時被解密。
3.如權(quán)利要求1所述的存儲器設(shè)備,其中,該第二非易失性存儲器包括在該處理程序被執(zhí)行時所用的第一跳轉(zhuǎn)表,該第一非易失性存儲器包括在該解密的替代程序所部分取代的處理程序被執(zhí)行時所用的第二跳轉(zhuǎn)表的存儲區(qū)域,該存儲區(qū)域被用來存儲加密的第二跳轉(zhuǎn)表,以及其中,當(dāng)該加密的替代程序在開機復(fù)位被釋放后被傳送到該易失性存儲器時,該數(shù)據(jù)處理器解密該第二跳轉(zhuǎn)表,并將解密的第二跳轉(zhuǎn)表存儲于該易失性存儲器中,以便之后取代該第一跳轉(zhuǎn)表而使用。
4.如權(quán)利要求3所述的存儲器設(shè)備,其中,該第二非易失性存儲器具有用于將加密的替代程序和加密的第二跳轉(zhuǎn)表寫到該第一非易失性存儲器中的寫控制程序。
5.如權(quán)利要求3所述的存儲器設(shè)備,其中,該第二非易失性存儲器具有用于解密該加密的替代程序和該加密的第二跳轉(zhuǎn)表的解密處理程序。
6.如權(quán)利要求5所述的存儲器設(shè)備,其中,該第二跳轉(zhuǎn)表包括在該處理程序中引用的第一表區(qū)域和在該解密處理程序中引用的第二表區(qū)域,其中,該第一表區(qū)域包括其中存儲有該解密處理程序的第一分配地址的第一引用區(qū)域,用于存儲該加密的替代程序或該解密的替代程序的第二分配地址,其中,該第二表區(qū)域包括第二引用區(qū)域,用于存儲該第一引用區(qū)域中用于存儲該加密的替代程序或該解密的替代程序的第二分配地址的區(qū)域的第三分配地址,以及其中,通過引用該第一引用區(qū)域中保持的第一分配地址,并執(zhí)行從該第一分配地址取得的解密處理程序,該數(shù)據(jù)處理器能夠從該第二引用區(qū)域中的第三分配地址獲得該加密的替代程序,將該第一引用區(qū)域中保持的第二分配地址改變?yōu)樵摰诙^(qū)域中保持的第三分配地址。
7.如權(quán)利要求6所述的存儲器設(shè)備,其中,該數(shù)據(jù)處理器能夠按照地址信號以字節(jié)為單位存取該第二非易失性存儲器和該易失性存儲器,能夠按照地址信號以邏輯扇區(qū)為單位存取該第一非易失性存儲器。
8.如權(quán)利要求7所述的存儲器設(shè)備,其中,該控制器具有符合指定存儲器卡標(biāo)準(zhǔn)的主機接口。
9.一種存儲器設(shè)備,包括進行數(shù)據(jù)處理的控制器;以及第一非易失性存儲器,其存儲在該控制器的控制下可改寫的信息,其中,該控制器包括數(shù)據(jù)處理器;由該數(shù)據(jù)處理器存取的不可改寫的第二非易失性存儲器;以及由該數(shù)據(jù)處理器存取的可改寫的易失性存儲器,其中,該第二非易失性存儲器保持該數(shù)據(jù)處理器的處理程序和在該處理程序被執(zhí)行時所用的第一跳轉(zhuǎn)表,其中,該第一非易失性存儲器包括第一存儲區(qū)域,用于存儲取代部分處理程序的加密的替代程序;以及第二存儲區(qū)域,用于存儲加密的第二跳轉(zhuǎn)表,該第二跳轉(zhuǎn)表用于存儲該加密的替代程序的第一分配地址,以及其中,當(dāng)進行開機復(fù)位操作時,該數(shù)據(jù)處理器將加密的替代程序和加密的第二跳轉(zhuǎn)表,如果有的話,傳送到該可改寫的易失性存儲器,解密該加密的第二跳轉(zhuǎn)表,并將解密的第二跳轉(zhuǎn)表解密該加密的第二跳轉(zhuǎn)表存儲于該可改寫的易失性存儲器中,以便隨后取代該第一跳轉(zhuǎn)表而使用。
10.如權(quán)利要求9所述的存儲器設(shè)備,其中,該數(shù)據(jù)處理器在將該加密的替代程序傳送到該易失性存儲器后解密該加密的替代程序,將解密的替代程序存儲于該易失性存儲器中以便隨后能再使用,然后執(zhí)行從該易失性存儲器取得的解密的替代程序。
全文摘要
在用于通過非易失性存儲器上的修改程序來實現(xiàn)取代部分控制器工作程序的技術(shù)中,本發(fā)明防止篡改和泄露非易失性存儲器和控制器內(nèi)的存儲信息。在開機復(fù)位時,如果存在加密的替代程序,則從非易失性存儲器轉(zhuǎn)移到易失性存儲器,并在實際執(zhí)行時被解密。無需長時間等待,直至在從復(fù)位處理退出之后允許數(shù)據(jù)處理器的數(shù)據(jù)處理。由于一旦解密的替代程序被保持于易失性存儲器中以便可再使用,所以它在每次被執(zhí)行時無需解密。由于替代程序被加密,即使非易失性存儲器與控制器物理分離以非法轉(zhuǎn)儲替代程序,仍難以分析數(shù)據(jù)。
文檔編號G06F21/24GK1707446SQ20051007279
公開日2005年12月14日 申請日期2005年5月20日 優(yōu)先權(quán)日2004年5月20日
發(fā)明者吉田悟史, 片山國弘, 淺利信介 申請人:株式會社瑞薩科技