專利名稱:用于安全更新和啟動代碼鏡像的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于系統(tǒng)啟動的技術(shù),更具體地說,涉及一種用于安全更新和啟動代碼鏡像的方法和設(shè)備。
背景技術(shù):
通常,在諸如電器、通信設(shè)備和機(jī)頂盒的嵌入式系統(tǒng)中,非易失性存儲裝置已被廣泛用作用于存儲并處理數(shù)據(jù)的存儲介質(zhì)。此外,嵌入式系統(tǒng)將操作系統(tǒng)存儲在非易失性存儲裝置中,并且由存儲的操作系統(tǒng)啟動以執(zhí)行操作。所述操作系統(tǒng)主要以鏡像的形式被存儲在非易失性存儲裝置中。
為了提供主機(jī)的安全性,當(dāng)操作系統(tǒng)被啟動時,確保由賣方在發(fā)布產(chǎn)品時記錄在非易失性存儲裝置中的操作系統(tǒng)(OS)鏡像被沒有改變地啟動。例如,如果OS鏡像和應(yīng)用程序被存儲在手機(jī)中,當(dāng)開啟手機(jī)并且載入OS鏡像時,OS鏡像的一部分被盜用者(cracker)改變,執(zhí)行邏輯被改變,這可引起OS鏡像中的安全模塊的安全崩潰。在這種情況下,在OS鏡像被復(fù)制到隨機(jī)存取存儲器(RAM)之后和傳遞控制之前,有必要檢查是否保護(hù)了OS鏡像的完整性。隨后,僅當(dāng)所述完整性沒有崩潰時傳遞控制,從而盜用者沒有改變所述OS鏡像。
現(xiàn)在,嵌入式系統(tǒng)的很多賣方需要并提供保護(hù)OS鏡像的完整性的方法,但是,這些方法是基于這樣的事實,即用于檢查所述完整性的算法保密,并且,為了保護(hù)CPU中的密鑰,所述密鑰需要被存儲在保密模塊(TRM)區(qū)。因此,這些方法不完整或者需要提供單獨的電路。此外,其支持方法可根據(jù)存儲裝置的特性而不同。
圖1是示出根據(jù)相關(guān)技術(shù)的使嵌入式系統(tǒng)安全啟動的安全啟動設(shè)備的示圖。
所述安全啟動設(shè)備包括操作系統(tǒng)存儲單元10,存儲操作系統(tǒng)和具有與所述操作系統(tǒng)相應(yīng)的唯一的檢查值的算法的檢查值;存儲單元20,當(dāng)啟動時,存儲在操作系統(tǒng)存儲單元10中的操作系統(tǒng)被載入;和控制單元30,通過存儲所述檢查值時使用的算法根據(jù)載入的操作系統(tǒng)計算檢查值,并且通過將存儲的檢查值和計算的檢查值進(jìn)行比較來判斷載入的操作系統(tǒng)的完整性。
此時,操作系統(tǒng)存儲單元10具有非易失性存儲區(qū),從而即使電源被關(guān)閉,存儲的操作系統(tǒng)和檢查值也被保留。
當(dāng)由操作系統(tǒng)啟動時,安全啟動設(shè)備還包括啟動代碼存儲單元40,存儲包括關(guān)于啟動過程的信息的啟動代碼;和密鑰存儲單元50,將存儲在操作系統(tǒng)存儲單元10中的操作系統(tǒng)和檢查值編碼,并存儲用于將編碼的操作系統(tǒng)和檢查值解碼的密鑰。此時,由于啟動代碼存儲單元40處于只讀模式,所以所述啟動代碼不能被來自外部的任何操作改變。在這種情況下,作為用于計算檢查值的算法可使用任何算法,只要該算法即使在OS被改變1比特的情況下也會具有不同的檢查值而非相同的檢查值。
密鑰存儲單元50具有諸如TRM(保密模塊)的區(qū)作為偽造保護(hù)技術(shù)等,并且保護(hù)存儲在密鑰存儲單元50中的密鑰不被外部訪問。這是因為,當(dāng)存儲在密鑰存儲單元50中的密鑰暴露于外界時,存儲在操作系統(tǒng)存儲單元10中的編碼的操作系統(tǒng)和檢查值可被改變。此外,密鑰存儲單元50可被包括在控制全部啟動過程的控制單元30內(nèi),或者可被單獨設(shè)置。
另外,在很多情況下,在發(fā)布嵌入式系統(tǒng)后,操作系統(tǒng)需要不斷地升級。特別是,諸如手機(jī)、MP3播放器和PMP的產(chǎn)品需要根據(jù)它們的特性迅速適應(yīng)環(huán)境。因此,安裝的操作系統(tǒng)需要隨后被適當(dāng)?shù)馗淖兓蛘呱墶T谶@種情況下,當(dāng)以圖1中所示的方式存儲密鑰時,由未授權(quán)的外部訪問對操作系統(tǒng)進(jìn)行的改變可被阻止,但是,由授權(quán)的賣方對操作系統(tǒng)進(jìn)行的改變也被阻止。然而,當(dāng)由授權(quán)的人做出的改變被允許時,也可做出對操作系統(tǒng)的未授權(quán)的改變。因此,需要一種針對上述問題的對策。
發(fā)明內(nèi)容
本發(fā)明的目的在于解決上述問題,本發(fā)明的一方面在于提供了一種用于在確保由授權(quán)的用戶對操作系統(tǒng)做出的改變的同時阻止未授權(quán)的用戶對操作系統(tǒng)做出改變的方法和設(shè)備。
本發(fā)明的另一方面在于提供一種確保由授權(quán)的用戶對操作系統(tǒng)做出的改變的存儲裝置。
本發(fā)明的各方面不由上述描述所限制,并且通過以下的描述本發(fā)明的其他方面將更加清楚地被本領(lǐng)域技術(shù)人員所理解。
本發(fā)明的一方面在于提供一種用于更新存儲操作系統(tǒng)的存儲介質(zhì)中的代碼鏡像的方法,所述存儲操作系統(tǒng)的存儲介質(zhì)具有第一區(qū),啟動代碼被載入到其上;第二區(qū),第一代碼鏡像被存儲在其中;和第三區(qū),啟動代碼和用于檢驗第一代碼鏡像的第一檢查數(shù)據(jù)被存儲在其中,所述方法包括在第二區(qū)中存儲第二代碼鏡像;從第一檢查數(shù)據(jù)中提取關(guān)于安全單向函數(shù)的信息;和使用提取的安全單向函數(shù)的信息生成用于檢驗第二代碼鏡像的第二檢查數(shù)據(jù),并將生成的第二檢查數(shù)據(jù)存儲在第三區(qū)中,其中,當(dāng)?shù)诙z查數(shù)據(jù)被設(shè)置為安全單向函數(shù)的參數(shù)時,生成第一檢查數(shù)據(jù)。
本發(fā)明的另一方面在于提供一種用于啟動存儲操作系統(tǒng)的存儲介質(zhì)中的代碼鏡像的方法,所述存儲操作系統(tǒng)的存儲介質(zhì)具有第一區(qū),啟動代碼被載入到其上,第二區(qū),代碼鏡像被存儲在其中,和第三區(qū),啟動代碼和用于檢驗所述代碼鏡像的檢查數(shù)據(jù)被存儲在其中,所述方法包括讀取存儲在第三區(qū)中的啟動代碼,并將讀取的啟動代碼存儲在第一區(qū)中;當(dāng)存儲在第二區(qū)中的代碼鏡像是更新的代碼鏡像而非初始的代碼鏡像時,提取用于確認(rèn)在存儲關(guān)于初始代碼鏡像的信息的第三區(qū)中的代碼鏡像的授權(quán)改變的第一函數(shù)、通過將第一參數(shù)應(yīng)用于第一函數(shù)獲得的第一結(jié)果、和通過將第二參數(shù)應(yīng)用于在存儲關(guān)于更新的代碼鏡像的信息的第三區(qū)中的第一函數(shù)獲得的第二結(jié)果;將第一結(jié)果與通過將第二結(jié)果作為參數(shù)應(yīng)用于第一函數(shù)獲得的結(jié)果進(jìn)行比較;和當(dāng)兩個結(jié)果相同時,運行所述代碼鏡像。
本發(fā)明的另一方面在于提供一種存儲裝置,所述存儲裝置包括存儲單元,所述存儲單元包括第一區(qū),在所述第一區(qū)中啟動代碼被載入并運行;第二區(qū),具有可讀寫存儲裝置并且所述用于操作系統(tǒng)的代碼鏡像被存儲在其中;和第三區(qū),啟動代碼和用于檢驗所述代碼鏡像的簽名信息被存儲在其中。此外,所述存儲裝置包括控制單元,當(dāng)所述代碼鏡像是更新的代碼鏡像而非初始的代碼鏡像時,讀取存儲單元的啟動代碼,并將讀取的啟動代碼載入第一區(qū);提取用于確認(rèn)第三區(qū)中的代碼鏡像的授權(quán)改變的第一函數(shù)和通過將第一參數(shù)應(yīng)用于第一函數(shù)獲得的第一結(jié)果,所述第三區(qū)存儲關(guān)于初始代碼鏡像的信息;提取通過將第二參數(shù)應(yīng)用于存儲在第三區(qū)中的第一函數(shù)獲得的第二結(jié)果,所述第三區(qū)存儲關(guān)于更新的代碼鏡像;將第一結(jié)果與通過將第二結(jié)果作為參數(shù)應(yīng)用于第一函數(shù)獲得的結(jié)果進(jìn)行比較,并且當(dāng)兩個結(jié)果相同時,運行所述代碼鏡像。
通過以下結(jié)合附圖對本發(fā)明實施例的詳細(xì)描述,本發(fā)明的以上和其他方面將變得更加清楚,其中圖1是示出根據(jù)相關(guān)技術(shù)的允許安全地啟動嵌入式系統(tǒng)的安全啟動設(shè)備的示圖;圖2是示出應(yīng)用本發(fā)明一方面的驅(qū)動存儲裝置內(nèi)的操作系統(tǒng)的方法的示圖;圖3是示出存儲第一代碼鏡像的非易失性存儲裝置、易失性存儲裝置和CPU之間的關(guān)系的示圖;圖4是示出根據(jù)本發(fā)明示例性實施例的授權(quán)的用戶在非易失性存儲裝置中存儲改變的代碼鏡像的情況的示圖;圖5是示出根據(jù)本發(fā)明示例性實施例的校驗改變的代碼鏡像的過程的示圖;圖6A和圖6B是示出將根據(jù)本發(fā)明示例性實施例的授權(quán)的用戶修改所述代碼鏡像的情況和未授權(quán)的用戶修改代碼鏡像的情況進(jìn)行比較的示圖;和圖7是示出根據(jù)本發(fā)明示例性實施例的對更新的代碼鏡像是否被授權(quán)的用戶更新的確認(rèn)的示圖。
具體實施例方式
通過參照附圖和對本發(fā)明示例性實施例的詳細(xì)描述,本發(fā)明及其實現(xiàn)的各方面可被更加容易地理解。本發(fā)明的各方面可以以很多不同形式被實施,而不限于這里所述的示例性實施例。而且,這些示例性實施例被提供,從而使本公開徹底并完整,并且本發(fā)明的思想被全部傳達(dá)給本領(lǐng)域技術(shù)人員,并且本發(fā)明將僅由權(quán)利要求所限定。在說明書中相同的標(biāo)號指示相同的元件。
以下,將參照根據(jù)本發(fā)明示例性實施例的用于安全更新和啟動代碼鏡像的方法和設(shè)備的框圖或者流程圖,對本發(fā)明的各方面進(jìn)行描述。流程圖中的每個塊或者塊的組合將被理解為可由計算機(jī)程序指令來實現(xiàn)。這些計算機(jī)程序指令可被提供給通用計算機(jī)、專用計算機(jī)或者其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生機(jī)器,從而通過計算機(jī)或者其他可編程數(shù)據(jù)處理設(shè)備的處理器被執(zhí)行的所述指令建立用于實現(xiàn)流程圖中的一個塊或者多個塊中特定的功能的手段。
框圖中的每個塊可代表包括一個或者更多用于實現(xiàn)特定邏輯功能的可執(zhí)行指令的模塊、代碼段或者代碼的一部分。應(yīng)當(dāng)注意到在一些可替換的實現(xiàn)中,在多個塊中實現(xiàn)的功能可以以不同的順序發(fā)生。例如,根據(jù)涉及的功能性,兩個連續(xù)顯示的塊實際上可以基本上同時被執(zhí)行,或者所述塊有時可以按相反的次序被執(zhí)行。
圖2是示出應(yīng)用本發(fā)明一方面的驅(qū)動存儲裝置內(nèi)的操作系統(tǒng)的方法的示圖。
圖2中所示的存儲裝置被安裝在手機(jī)、數(shù)碼相機(jī)、筆記本電腦、PDA、PMP或者M(jìn)P3播放器上,并且用于操作該設(shè)備的操作系統(tǒng)鏡像被嵌入到所述存儲裝置。
以下裝置被使用非易失性存儲裝置100,用于以非易失方式存儲代碼鏡像;易失性存儲裝置200,用于執(zhí)行存儲在非易失性存儲裝置100中的代碼鏡像;和CPU 400,用作中央處理單元,用于執(zhí)行代碼鏡像。以下,在本說明書中,閃存將被描述為用于以非易失方式存儲代碼鏡像的存儲裝置的示例。此外,為了安全更新,安全單向函數(shù)被使用。
用作非易失性存儲裝置100的閃存具有RAM區(qū)110,當(dāng)向系統(tǒng)供電時被自動映射到存儲地址空間的特定區(qū)域;R/W(讀/寫)區(qū)120,可以在其中以非易失方式進(jìn)行數(shù)據(jù)的重復(fù)編程和擦除;OTP(一次性編程)區(qū)130,其中,可進(jìn)行數(shù)據(jù)的一次性編程,并且在編程后僅可讀取。
所述區(qū)110、120和130可以由單一存儲裝置來實現(xiàn)或者可由具有上述特性的三個存儲裝置的組合來實現(xiàn)。例如,區(qū)120和130可由閃存裝置來實現(xiàn),并且區(qū)110可由RAM裝置來實現(xiàn)。隨后,這些裝置可被組合。
如果供電,則存儲在區(qū)130的特定位置的啟動代碼131被自動復(fù)制到RAM區(qū)110,并且區(qū)110被改為只可讀取和運行的區(qū)域。隨后,CPU 400運行在區(qū)110中的機(jī)器語言命令。
啟動代碼(或者啟動裝入程序)131被寫入一次性編程區(qū)130,并且包括操作系統(tǒng)鏡像的代碼鏡像被寫入可讀寫區(qū)120。用于檢查代碼鏡像的改變的簽名132的值被計算并寫入一次性編程區(qū)130。
如果向系統(tǒng)供電,則OTP區(qū)130中的啟動代碼131被自動復(fù)制到RAM區(qū)110。
為了允許區(qū)110被用作啟動設(shè)備,系統(tǒng)的存儲器視圖300被映射,隨后,啟動代碼被運行。當(dāng)啟動代碼容量較大并且不能被全部復(fù)制到區(qū)110時,沒有被復(fù)制到區(qū)110的啟動代碼的剩余部分復(fù)制到易失性存儲裝置200。
啟動代碼將R/W區(qū)120中的代碼鏡像復(fù)制到易失性存儲裝置200。當(dāng)代碼鏡像在區(qū)120中被直接運行時,可不使用易失性存儲裝置200。
由于代碼鏡像被存儲在R/W區(qū)120中,所以可以被改變。因此,與代碼鏡像相關(guān)的簽名的值被計算,并且將計算的與代碼鏡像相關(guān)的簽名的值與存儲在OTP區(qū)130中的簽名132的值進(jìn)行比較。此時,只有當(dāng)兩個值相同時,啟動被繼續(xù)執(zhí)行。否則,啟動被中斷。由此,當(dāng)代碼鏡像由未授權(quán)的用戶改變時,系統(tǒng)不被操作。
簽名的值表示安全單向函數(shù)。安全單向函數(shù)是這樣一種函數(shù),即,可容易的計算結(jié)果值,不可從所述結(jié)果值得知輸入值,并且不可或者很少能找到值具有相同的結(jié)果值的不同的兩個輸入值。具體地說,安全單向函數(shù)表示一種很難確定輸入值和結(jié)果值的函數(shù)。
根據(jù)圖2的結(jié)構(gòu),可防止代碼鏡像被未授權(quán)的用戶改變,從而增加了代碼鏡像的安全性。圖3和圖4示出了當(dāng)授權(quán)的用戶想要改變代碼鏡像時用于改進(jìn)安全性的非易失性存儲裝置的結(jié)構(gòu)。
在解釋之前,安全單向函數(shù)將被簡要描述。在y=h(x)的函數(shù)的情況下,當(dāng)值x已知時,很容易計算值y。但是當(dāng)值y已知時,很難找到與值y相應(yīng)的值x。此外,在y=h(x)=h(x’)的情況下,很難找出不同的x和x’的值。
圖3是示出存儲第一代碼鏡像的非易失性存儲裝置、易失性存儲裝置和CPU之間的關(guān)系的示圖。在圖3中,第一代碼鏡像被存儲在非易失性存儲裝置100中。關(guān)于第一代碼鏡像的簽名信息和關(guān)于安全性的信息被包括在第一簽名區(qū)134中。
當(dāng)最初將代碼鏡像和啟動代碼寫入非易失性存儲裝置100中時,以下內(nèi)容被寫入。能夠安裝并改變代碼鏡像的授權(quán)的人,諸如用戶或者制造商,以及賣方持有保密的值S。值S是授權(quán)的人所持有的值,并且可成為用于維護(hù)安全性的密鑰值。
滿足安全單向函數(shù)的條件的函數(shù)h()可如下被定義。當(dāng)h_0=h(S)并且h_n+1(S)=h(h_n(S))時,用戶通過代入相對大的值N(例如,100或者更大)來計算h_N。例如,h_N可由以下等式1來計算。
等式1h_3(S)=h(h_2(S))=h(h(h_1(S)))=h(h(h(h_0)(S)))=h(h(h(h(S))))用戶計算用于第一代碼鏡像的簽名的值,并且所述值稱為Sig_1。為了計算值Sig_1,可使用所述函數(shù)h(),或者可使用其他安全單向函數(shù)。
啟動代碼133被寫在非易失性存儲裝置100的OTP區(qū)130的頭,并且值Sig_1作為用于第一代碼鏡像的簽名的值被寫入第一簽名區(qū)134。除了值Sig_1,函數(shù)h()的運行鏡像、值h_N和N、以及關(guān)于R/W區(qū)120中的代碼鏡像的位置和大小的信息被寫入第一簽名區(qū)134。
值h_N表示h_N(S)的運行值。h_N(S)可通過等式1被計算為h(h_N-1(S))。
當(dāng)?shù)谝淮a鏡像被安裝并且用于第一代碼鏡像的簽名和用于允許授權(quán)的用戶以后對代碼鏡像的改變的信息被寫入第一簽名區(qū)134之后,如果所述代碼被升級或者新的函數(shù)被添加,則需要檢驗所述代碼鏡像的過程?;蛘?,所述代碼鏡像可被更新為新的代碼鏡像。
圖4是示出根據(jù)本發(fā)明的示例性實施例授權(quán)的用戶將改變的代碼鏡像存儲在非易失性存儲裝置中的情況。
當(dāng)改變代碼鏡像時,首先,存儲在第一簽名區(qū)134中的值N被讀取。隨后,針對值S(由授權(quán)用戶持有的保密的密鑰值),h_N-1(S)被計算。接下來,改變的代碼鏡像(第二代碼鏡像)被存儲到R/W區(qū)120中,并且用于檢驗第二代碼鏡像的有效性的值Sig_2被計算。接下來,上述信息被存儲在第二簽名區(qū)135中。由于h_N(S)的結(jié)果和關(guān)于函數(shù)h()和值N的信息被存儲到第一簽名區(qū)134中并且授權(quán)的用戶能夠知道所述值S,所以可計算h_N-1(S)。因此,授權(quán)的用戶在R/W區(qū)120中存儲將被改變或者將被添加的第二代碼鏡像,并且將用于檢驗第二代碼鏡像的有效性的值Sig_2、h_N-1(S)的結(jié)果、函數(shù)h()和N-1的值存儲在第二簽名區(qū)135中。在以后啟動時,通過h_N-1(S)的結(jié)果可確認(rèn)所述代碼鏡像是否由授權(quán)用戶添加。其檢驗的過程將參照圖5進(jìn)行描述。
圖5是示出根據(jù)本發(fā)明的示例性實施例用于檢驗改變的代碼鏡像的過程的示圖。在圖5中,N被設(shè)置為100。在啟動系統(tǒng)時,從第一簽名區(qū)134獲得關(guān)于函數(shù)h()的信息、h_100(S)的值和值為100的N。隨后,從第二簽名區(qū)135中讀取h_99(S)的值、值為99的N、關(guān)于第二代碼鏡像的信息和值Sig_2。通過關(guān)于第二代碼鏡像的信息讀取第二代碼鏡像的存儲位置和大小。接著,通過值Sig_2執(zhí)行對第二代碼鏡像的檢驗過程。當(dāng)將值Sig_2與應(yīng)用了預(yù)定檢驗算法的第二代碼鏡像進(jìn)行比較時,通過將h_99(S)的值作為函數(shù)h()的輸入值來計算h_100(S)的值,以確認(rèn)第二代碼鏡像是否是由授權(quán)用戶更新的。在這種情況下,由于h_99(S)的值是K,而值K被存儲在第二簽名區(qū)135中,所以h(K)可被計算。此外,h(K)是h(h_99(S))并且還成為h_100(S),因此,h(K)可被與存儲在第一簽名區(qū)134中的值進(jìn)行比較。此時,由于授權(quán)用戶持有值S,所以h_99(S)的值可由授權(quán)的用戶計算。因此,可以確認(rèn)第二代碼鏡像被所述授權(quán)的用戶更新。如果授權(quán)的用戶之外的其他人將帶有與值S不同的值D的h_99(D)寫入第二簽名區(qū)135,則在啟動期間可檢查出h_100(S)的值與h_100(D)的值彼此不同,因此啟動被中斷。
圖6A和圖6B是示出根據(jù)本發(fā)明示例性實施例的授權(quán)的用戶修改所述代碼鏡像的情況和未授權(quán)的用戶修改代碼鏡像的情況之間的比較的示圖。初始安裝在產(chǎn)品內(nèi)的代碼鏡像是由授權(quán)的用戶存儲的。圖6A示出了在初始安裝代碼鏡像之后由授權(quán)的用戶更新代碼鏡像的情況,圖6B示出了在初始安裝代碼鏡像之后由授權(quán)的用戶之外的其他人更新代碼鏡像的情況。
參照圖6A,當(dāng)授權(quán)的用戶想要存儲新的代碼鏡像時,他可基于用于檢驗所述代碼鏡像的第一簽名區(qū)136中的值Sig_1、值S和數(shù)值100計算h_99(S)。
同時,參照圖6B,即使未授權(quán)的用戶計算出值Sig_2,他也不能得知值S,因此,他通過帶入任意值D來計算h_99(D)。此時,當(dāng)通過再次將值h_99(D)應(yīng)用于函數(shù)h()來運行h(h_99(D))時,h_100(D)可被計算。但是,由于h_100(D)與h_100(S)不同,所以啟動被中斷。因此,當(dāng)未授權(quán)的用戶改變所述代碼時,所述改變通過值Sig_2被檢驗。此外,即使未授權(quán)的用戶生成所述值Sig_2,他也不能計算h_99(S)的值。由此,可防止計算機(jī)病毒、電腦黑客等對代碼鏡像進(jìn)行未授權(quán)的改變。
在上述過程中,安全單向函數(shù)的應(yīng)用結(jié)果以N、N-1、N-2…的逆序被獲得,但這只是示例。本發(fā)明不限于此結(jié)構(gòu)。例如,安全單向函數(shù)可以以N、N-2、N-4…的順序被應(yīng)用。此外,在此公開的安全單向函數(shù)可以以多種方法被應(yīng)用。
在本說明書中,為了檢驗對代碼鏡像的改變是否是由授權(quán)用戶做出的,對是否可從改變的代碼的檢查值中提取出在改變之前的代碼的檢查值進(jìn)行檢查。隨后,當(dāng)可從改變的代碼的檢查值中提取出在改變之前的代碼的檢查值時,判斷所述代碼鏡像由授權(quán)的用戶改變,并運行更新的代碼鏡像。
圖7是示出根據(jù)本發(fā)明示例性實施例的對更新的代碼鏡像是否被授權(quán)的用戶更新的確認(rèn)的示圖。
載入存儲在OTP區(qū)130的啟動代碼(步驟S510)。在根據(jù)啟動代碼中的命令運行代碼鏡像之前,檢查所述代碼鏡像是否有效(步驟S520)。所述有效性檢查是指檢查所述代碼鏡像是否被改變。這里,當(dāng)存儲代碼鏡像時,用于代碼鏡像的hash函數(shù)和安全單向函數(shù)的應(yīng)用結(jié)果值被存儲在OTP區(qū)130中,隨后,可通過函數(shù)的應(yīng)用檢查所述代碼鏡像是否被改變??筛鶕?jù)Sig_1和Sig_2的值檢查所述代碼鏡像的有效性。如果代碼鏡像無效(步驟S530),則不運行所述代碼,且結(jié)束過程。
如果代碼鏡像有效(步驟S530),則檢查所述代碼鏡像是否被更新。如果代碼鏡像沒有被更新,則所述代碼鏡像按原樣被運行。
如果代碼鏡像被更新,則確認(rèn)所述更新是否是由授權(quán)的用戶做出的。通過步驟S552到S556執(zhí)行所述確認(rèn)。首先,初始代碼鏡像的信息,例如,第一簽名中的安全單向函數(shù)的第一運行結(jié)果和參數(shù)信息被提取(步驟S552)。參照圖6A,h()是所述安全單向函數(shù),所述函數(shù)的第一運行結(jié)果是h_100(S),所述參數(shù)信息是100。不需提供值S的信息。這是因為存儲了帶有作為參數(shù)的值S的運行結(jié)果。隨后,從關(guān)于更新的代碼鏡像的信息中提取函數(shù)的第二運行結(jié)果和參數(shù)信息(步驟S554)。第二簽名可成為關(guān)于更新的代碼鏡像的信息。這里,參照圖6A,所述函數(shù)的第二運行結(jié)果是h_99(S)的運行結(jié)果,所述參數(shù)信息是99。用于更新的代碼鏡像的第二簽名中的參數(shù)是99,用于原始代碼鏡像的第一簽名中的參數(shù)是100。因此,如果h_99(S)再次作為參數(shù)被應(yīng)用于函數(shù)h(),則可獲得第一簽名中的h_100(S)的結(jié)果,并且可通過所述結(jié)果間的比較得知所述代碼鏡像是否被正式更新。也就是說,如步驟S556,第一結(jié)果h_100(S)和帶有作為參數(shù)的第二結(jié)果h_99(S)的安全單向函數(shù)的運行結(jié)果被比較。隨后,如果兩個結(jié)果相同(步驟S560),則由于更新的代碼鏡像由授權(quán)的用戶更新,所以運行所述代碼鏡像(步驟S570)。否則,不運行更新的代碼鏡像,并中斷過程。上述描述中,步驟S552、S554和S556可先于步驟S520被執(zhí)行。
盡管已參照本發(fā)明示例性實施例對本發(fā)明進(jìn)行了描述,但是對本領(lǐng)域技術(shù)人員來說清楚的是,在不脫離本發(fā)明的范圍和精神的情況下,可對其做出各種修改和改變。因此,應(yīng)當(dāng)理解在所有方面上述示例性實施例不是限定性而是示例性的。本發(fā)明的范圍是由權(quán)利要求所限定的,而不是說明書,和所有落入權(quán)利要求的集合和范圍或者由權(quán)利要求規(guī)定包含的所述集合和范圍的等同物的改變。
根據(jù)本發(fā)明的各個方面,在操作系統(tǒng)的代碼鏡像被寫入非易失性存儲區(qū),和與所述代碼鏡像相關(guān)的檢查信息被寫入OTP區(qū)之后,授權(quán)的用戶(例如,開發(fā)人員)可重復(fù)并安全地更新OS鏡像。
根據(jù)本發(fā)明的各個方面,當(dāng)發(fā)布的產(chǎn)品的代碼鏡像需要被稍后更新時,所述更新可被安全地執(zhí)行。
權(quán)利要求
1.一種用于更新存儲操作系統(tǒng)的存儲介質(zhì)中的代碼鏡像的方法,所述存儲操作系統(tǒng)的存儲介質(zhì)具有第一區(qū),啟動代碼被載入到其上;第二區(qū),第一代碼鏡像被存儲在其中;和第三區(qū),啟動代碼和用于檢驗第一代碼鏡像的第一檢查數(shù)據(jù)被存儲在其中,所述方法包括在第二區(qū)中存儲第二代碼鏡像;從第一檢查數(shù)據(jù)中提取關(guān)于安全單向函數(shù)的信息;和使用提取的安全單向函數(shù)的信息生成用于檢驗第二代碼鏡像的第二檢查數(shù)據(jù),并將生成的第二檢查數(shù)據(jù)存儲在第三區(qū)中,其中,當(dāng)?shù)诙z查數(shù)據(jù)被設(shè)置為安全單向函數(shù)的參數(shù)時,生成第一檢查數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其中,第三區(qū)具有一次性編程存儲裝置。
3.如權(quán)利要求1所述的方法,其中,所述存儲裝置是OneNAND裝置。
4.一種用于啟動存儲操作系統(tǒng)的存儲介質(zhì)中的代碼鏡像的方法,所述存儲操作系統(tǒng)的存儲介質(zhì)具有第一區(qū),啟動代碼被載入到其上,第二區(qū),代碼鏡像被存儲在其中,和第三區(qū),啟動代碼和用于檢驗所述代碼鏡像的檢查數(shù)據(jù)被存儲在其中,所述方法包括讀取存儲在第三區(qū)中的啟動代碼,并將讀取的啟動代碼存儲在第一區(qū)中;當(dāng)存儲在第二區(qū)中的代碼鏡像是更新的代碼鏡像而非初始的代碼鏡像時,提取用于確認(rèn)在存儲關(guān)于初始代碼鏡像的信息的第三區(qū)中的代碼鏡像的授權(quán)改變的第一函數(shù)、通過將第一參數(shù)應(yīng)用于第一函數(shù)獲得的第一結(jié)果、和通過將第二參數(shù)應(yīng)用于在存儲關(guān)于更新的代碼鏡像的信息的第三區(qū)中的第一函數(shù)獲得的第二結(jié)果;將第一結(jié)果與通過將第二結(jié)果作為參數(shù)應(yīng)用于第一函數(shù)獲得的結(jié)果進(jìn)行比較;和當(dāng)兩個結(jié)果相同時,運行所述代碼鏡像。
5.如權(quán)利要求4所述的方法,其中,第三區(qū)具有一次性編程存儲裝置。
6.如權(quán)利要求4所述的方法,其中,所述第一函數(shù)是安全單向函數(shù),所述安全單向函數(shù)具有這樣的特征當(dāng)輸入值彼此不同時生成不同的輸出值,并且很難從輸出值獲得輸入值。
7.如權(quán)利要求4所述的方法,其中,所述存儲裝置是OneNAND裝置。
8.一種存儲裝置,包括存儲單元,包括第一區(qū),在所述第一區(qū)中啟動代碼被載入并運行;第二區(qū),具有可讀寫存儲裝置并且所述用于操作系統(tǒng)的代碼鏡像被存儲在其中;和第三區(qū),啟動代碼和用于檢驗所述代碼鏡像的簽名信息被存儲在其中;和控制單元,當(dāng)所述代碼鏡像是更新的代碼鏡像而非初始的代碼鏡像時,讀取存儲單元的啟動代碼,并將讀取的啟動代碼載入第一區(qū);提取用于確認(rèn)第三區(qū)中的代碼鏡像的授權(quán)改變的第一函數(shù)和通過將第一參數(shù)應(yīng)用于第一函數(shù)獲得的第一結(jié)果,所述第三區(qū)存儲關(guān)于初始代碼鏡像的信息;提取通過將第二參數(shù)應(yīng)用于存儲在第三區(qū)中的第一函數(shù)獲得的第二結(jié)果,所述第三區(qū)存儲關(guān)于更新的代碼鏡像;將第一結(jié)果與通過將第二結(jié)果作為參數(shù)應(yīng)用于第一函數(shù)獲得的結(jié)果進(jìn)行比較,并且當(dāng)兩個結(jié)果相同時,運行所述代碼鏡像。
9.如權(quán)利要求8所述的存儲裝置,其中,第三區(qū)具有一次性編程存儲裝置。
10.如權(quán)利要求8所述的存儲裝置,其中,所述第一函數(shù)是安全單向函數(shù),所述安全單向函數(shù)具有這樣的特征當(dāng)輸入值彼此不同時生成不同的輸出值,并且很難從輸出值獲得輸入值。
11.如權(quán)利要求8所述的存儲裝置,其中,所述存儲裝置是OneNAND裝置。
全文摘要
提供一種用于安全更新和啟動代碼鏡像的方法和設(shè)備,其中,在存儲操作系統(tǒng)的存儲介質(zhì)中更新代碼鏡像,所述存儲操作系統(tǒng)的存儲介質(zhì)具有第一區(qū),啟動代碼被載入到其上;第二區(qū),第一代碼鏡像被存儲在其中;和第三區(qū),啟動代碼和用于檢驗第一代碼鏡像的第一檢查數(shù)據(jù)被存儲在其中。更新代碼鏡像包括以下步驟在第二區(qū)中存儲第二代碼鏡像;從第一檢查數(shù)據(jù)中提取關(guān)于安全單向函數(shù)的信息;和使用提取的安全單向函數(shù)的信息生成用于檢驗第二代碼鏡像的第二檢查數(shù)據(jù),并將生成的第二檢查數(shù)據(jù)存儲在第三區(qū)中。當(dāng)?shù)诙z查數(shù)據(jù)被設(shè)置為安全單向函數(shù)的參數(shù)時,生成第一檢查數(shù)據(jù)。
文檔編號G06F11/14GK1963758SQ200610143719
公開日2007年5月16日 申請日期2006年11月3日 優(yōu)先權(quán)日2005年11月7日
發(fā)明者權(quán)們相 申請人:三星電子株式會社