用于安全地更新計算設(shè)備中的固件的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種用于安全地更新計算設(shè)備中的固件的方法及系統(tǒng),該計算設(shè)備包括主機處理器和非易失性存儲器,該方法包括從外部固件源接收經(jīng)過兩次加密的固件圖像,其中,經(jīng)過兩次加密的固件圖像是通過對固件使用第一加密密鑰進行第一次加密,然后再使用第二加密密鑰進行第二次加密所生成的。該方法還包括從外部密鑰源接收第二加密密鑰;使用第二加密密鑰對經(jīng)過兩次加密的固件圖像進行解密,以產(chǎn)生經(jīng)過加密的固件圖像;將經(jīng)過加密的固件圖像存儲在非易失性存儲器中;從計算設(shè)備的非易失性存儲器中讀出經(jīng)過加密的固件圖像;使用第一加密密鑰對經(jīng)過加密的固件圖像進行解密以產(chǎn)生固件;以及在計算設(shè)備上執(zhí)行該固件。
【專利說明】用于安全地更新計算設(shè)備中的固件的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及用于安全地更新計算設(shè)備中的固件的方法,計算設(shè)備,用于計算設(shè)備的安全元件,以及用于確認(rèn)計算設(shè)備中存在安全元件的方法。
【背景技術(shù)】
[0002]計算設(shè)備,如智能手機,平板電腦,便攜式音樂播放器,機頂盒,利用操作系統(tǒng)限制能夠在計算設(shè)備上運行的軟件應(yīng)用程序的類型?!捌平狻笔侨コ嬎阍O(shè)備的操作系統(tǒng)所施加的某些限制的過程。破解這樣的計算設(shè)備通常包括獲得對計算設(shè)備的固件的訪問權(quán),并修改計算設(shè)備的固件,其中,完美破解是指設(shè)備一重新啟動就被破解,不完美破解是指一旦設(shè)備被關(guān)機則破解就失敗。防止破解的技術(shù)包括安全啟動操作,簽名驗證,在運行時進行哈希檢查,地址亂碼,以及軟件迷惑。雖然提供對固件的安全訪問是很重要的,但是仍然需要用固件的授權(quán)版本來合法地更新設(shè)備的固件。雖然存在防止破解的技術(shù)和更新固件的技術(shù),但是這些技術(shù)總是在經(jīng)受惡意的人的測試。
【發(fā)明內(nèi)容】
[0003]本發(fā)明提供了用于更新計算設(shè)備中的固件的方法。在一個實施例中,該計算設(shè)備包括主機處理器和非易失性存儲器,用于更新計算設(shè)備中的固件的方法包括從外部固件源接收經(jīng)過兩次加密的固件圖像,其中,經(jīng)過兩次加密的固件圖像是通過對固件使用第一加密密鑰進行第一次加密,然后使用第二加密密鑰進行第二次加密所生成的。該方法還包括從外部密鑰源接收第二加密密鑰;使用第二加密密鑰對經(jīng)過兩次加密的固件圖像進行解密,以產(chǎn)生經(jīng)過加密的固件圖像;將經(jīng)過加密的固件圖像存儲在計算設(shè)備的非易失性存儲器中;從計算設(shè)備的非易失性存儲器中讀出經(jīng)過加密的固件圖像;使用第一加密密鑰對經(jīng)過加密的固件圖像進行解密以產(chǎn)生固件;以及在計算設(shè)備上執(zhí)行該固件。
[0004]本發(fā)明提供了計算設(shè)備。在一個實施例中,計算設(shè)備包括數(shù)據(jù)接口,主機處理器,非易失性存儲器,以及安全元件。數(shù)據(jù)接口被配置為從外部固件源接收經(jīng)過兩次加密的固件圖像,以及從外部密鑰源接收第二加密密鑰,其中,經(jīng)過兩次加密的固件圖像是通過對固件使用第一加密密鑰進行第一次加密,然后使用第二加密密鑰進行第二次加密所生成的。主機處理器被配置為執(zhí)行固件的程序代碼。非易失性存儲器,被配置為存儲經(jīng)過加密的固件圖像。安全元件位于主機處理器和非易失性存儲器之間的數(shù)據(jù)路徑中,并具有加密引擎。加密引擎被配置為使用第二加密密鑰對經(jīng)過兩次加密的固件圖像進行解密,以產(chǎn)生經(jīng)過加密的固件圖像,安全元件被配置為將經(jīng)過加密的固件圖像提供給計算設(shè)備的非易失性存儲器用于存儲。主機處理器被配置為:從非易失性存儲器中讀出經(jīng)過加密的固件圖像,使用第一加密密鑰對經(jīng)過加密的固件圖像進行解密以產(chǎn)生固件,以及在計算設(shè)備上執(zhí)行固件的程序代碼。
[0005]本發(fā)明提供了用于計算設(shè)備的安全元件,該計算設(shè)備包括主機處理器和非易失性存儲器。在一個實施例中,安全元件包括主機側(cè)總線接口 ;存儲器側(cè)總線接口 ;以及加密引擎。在一個實施例中,在至少一個接口處接收經(jīng)過兩次加密的固件圖像,經(jīng)過兩次加密的固件圖像是通過對固件使用第一加密密鑰進行第一次加密,然后使用第二加密密鑰進行第二次加密所生成的。加密引擎被配置為使用第二加密密鑰對經(jīng)過兩次加密的固件圖像進行解密,以產(chǎn)生經(jīng)過加密的固件圖像。存儲器側(cè)總線接口被配置為將經(jīng)過加密的固件圖像提供給非易失性存儲器,以用于主機處理器執(zhí)行。
[0006]本發(fā)明提供了用于確認(rèn)計算設(shè)備中存在安全元件的方法。在一個實施例中,該計算設(shè)備包括主機處理器和非易失性存儲器,用于確認(rèn)計算設(shè)備中存在安全元件的方法包括安全元件接收經(jīng)過加密的隨機數(shù),其中該隨機數(shù)是使用加密密鑰被加密的。該方法還包括從外部密鑰源接收加密密鑰;安全元件使用加密密鑰對經(jīng)過加密的隨機數(shù)進行解密,以產(chǎn)生經(jīng)過解密的隨機數(shù);將經(jīng)過解密的隨機數(shù)存儲在計算設(shè)備的非易失性存儲器中;從計算設(shè)備的非易失性存儲器中讀出經(jīng)過解密的隨機數(shù);將經(jīng)過解密的隨機數(shù)與隨機數(shù)的存儲版本進行比較,以及如果經(jīng)過解密的隨機數(shù)與所存儲的隨機數(shù)相匹配,則確認(rèn)存在安全元件。
【專利附圖】
【附圖說明】
[0007]圖1A示出的是包括計算設(shè)備、通信網(wǎng)絡(luò)以及服務(wù)提供商服務(wù)器的網(wǎng)絡(luò)結(jié)構(gòu)。
[0008]圖1B說明的是用存儲在服務(wù)提供商服務(wù)器中的固件來更新圖1A中的計算設(shè)備的固件的處理。
[0009]圖2A示出的是根據(jù)本發(fā)明用于更新計算設(shè)備中的固件的網(wǎng)絡(luò)結(jié)構(gòu)。
[0010]圖2B說明的是根據(jù)本發(fā)明用于更新圖2A中的計算設(shè)備的固件的處理。
[0011]圖3說明的是已經(jīng)被分成單獨的存儲塊的非易失性存儲器。
[0012]圖4A示出的是根據(jù)本發(fā)明用于更新計算設(shè)備中的固件的網(wǎng)絡(luò)結(jié)構(gòu)。
[0013]圖4B說明的是根據(jù)本發(fā)明用于更新圖4A中的計算設(shè)備的固件的處理。
[0014]圖5示出的是圖2A和圖4A中的安全元件的實施例的展開視圖。
[0015]圖6是根據(jù)本發(fā)明用于更新計算設(shè)備的固件的處理流程圖。
[0016]圖7A示出的是根據(jù)本發(fā)明用于確認(rèn)計算設(shè)備中的安全元件的存在的網(wǎng)絡(luò)結(jié)構(gòu)。
[0017]圖7B說明的是根據(jù)本發(fā)明用于確認(rèn)圖7A的計算設(shè)備中的安全元件的存在的處理。
[0018]圖8A示出的是根據(jù)本發(fā)明用于確認(rèn)計算設(shè)備中的安全元件的存在的網(wǎng)絡(luò)結(jié)構(gòu)。
[0019]圖SB說明的是根據(jù)本發(fā)明用于確認(rèn)圖8A的計算設(shè)備中的安全元件的存在的處理。
[0020]圖9是根據(jù)本發(fā)明用于確認(rèn)計算設(shè)備中的安全元件的存在的處理流程圖。
[0021]在整個說明書中,相似的參考標(biāo)號被用于標(biāo)識相似的元件。
【具體實施方式】
[0022]在本文中描述以及附圖中示出的實施例中的組成部分可以采用各種不同的配置來布置和設(shè)計,這是很容易理解的。因此,以下更詳細的描述的各種實施例并不是用來限制本發(fā)明公開的范圍,而僅僅是各種實施例的代表。雖然在附圖中呈現(xiàn)了實施例的各個方面,但是附圖并不必然是按比例繪制的,除非有具體地指示。[0023]在不脫離本發(fā)明的精神或基本特征的情況下,可以采用其它的具體形式來體現(xiàn)本發(fā)明。所描述的實施例僅僅是說明性的而并不是限制性的。因此,本發(fā)明的范圍由所附的權(quán)利要求來限定,而不是由具體實施例來限定。與權(quán)利要求書等同的含義和范圍內(nèi)的所有變化都包括在權(quán)利要求書的范圍之內(nèi)。
[0024]在整個說明書中描述的特征、優(yōu)點或類似的語言并不表示所有這些可以由本發(fā)明實現(xiàn)的特點和優(yōu)點都包括在本發(fā)明的任何一個實施例中。相反,本文中所描述的特點和優(yōu)點應(yīng)當(dāng)被理解為,與一個實施例相關(guān)聯(lián)描述的具體特征、優(yōu)點或特點被包括在本發(fā)明的至少一個實施例中。因此,在整個說明書中討論的特點和優(yōu)點以及類似的語言,可以是指相同的實施例,但并不是必須是指相同的實施例。
[0025]此外,本發(fā)明所描述的特征、優(yōu)點、以及特點可以采用任何適當(dāng)?shù)姆绞奖唤M合在一個或多個實施例中。根據(jù)本文中的描述,本領(lǐng)域技術(shù)人員將認(rèn)識到,具體實施例中缺少一個或多個特定特征或優(yōu)點,同樣可以實施本發(fā)明。在其他情況下,在某些實施例中的一些特征和優(yōu)點可能并不是在本發(fā)明的所有實施例中都存在。
[0026]在整個說明書中提到的“ 一個實施例”,“實施例”或類似的語言表示的是,與指示的實施例相關(guān)聯(lián)描述的特定特征,結(jié)構(gòu),或特性被包括在本發(fā)明的至少一個實施例中。因此,在整個說明書中出現(xiàn)的“在一個實施例中”,“在實施例中”,以及類似的語言可以是指相同的實施例,但并不是必須是指相同的實施例。
[0027]圖1A示出的是包括計算設(shè)備102、通信網(wǎng)絡(luò)104以及服務(wù)提供商服務(wù)器106的網(wǎng)絡(luò)結(jié)構(gòu)100。網(wǎng)絡(luò)結(jié)構(gòu)100用于更新計算設(shè)備102的固件。計算設(shè)備102,諸如智能手機或平板電腦,包括主機處理器110,諸如閃存的非易失性存儲器112,以及網(wǎng)絡(luò)接口 128。服務(wù)提供商服務(wù)器106包括固件源114和密鑰源116,固件源114用于存儲固件的加密圖像(經(jīng)過加密的固件EF),密鑰源116用于存儲加密密鑰,例如群組密鑰GK。通信網(wǎng)絡(luò),諸如因特網(wǎng),支持計算設(shè)備和服務(wù)提供商服務(wù)器之間的數(shù)據(jù)通信。
[0028]圖1B說明的是用存儲在服務(wù)提供商服務(wù)器106中的固件來更新圖1A中的計算設(shè)備102的固件的處理。在“閃存”操作122中,經(jīng)過加密的固件EF從服務(wù)提供商服務(wù)器106被下載到計算設(shè)備102,并被存儲在計算設(shè)備102的非易失性存儲器112中。在“啟動”操作124中,由主機處理器110從非易失性存儲器112中讀出經(jīng)過加密的固件EF,然后由主機處理器110使用解密密鑰(即群組密鑰GK)對經(jīng)過加密的固件EF進行解密。一旦經(jīng)過加密的固件EF被解密,就對固件進行檢查,并在主機處理器110的RAM中執(zhí)行該固件。在隨后每次重新啟動時,從非易失性存儲器112中讀出經(jīng)過加密的固件EF。雖然這種更新計算設(shè)備的固件的技術(shù)效果很好,但是這種技術(shù)容易受到完美破解的影響,完美破解使用主機處理器和存儲的群組密鑰生成破解圖像,然后在計算設(shè)備的非易失性存儲器中存儲破解圖像,這也被稱為“重新閃存”,在重新啟動時使用。
[0029]在根據(jù)本發(fā)明的實施例中,安全元件被放置在計算設(shè)備的主機處理器和非易失性存儲器之間的數(shù)據(jù)路徑中,能夠執(zhí)行兩次加密方案,在兩次加密方案中,像正常情況一樣用第一加密密鑰對固件進行加密,然后再用第二加密密鑰進行第二次加密,第二加密密鑰例如是由服務(wù)提供商服務(wù)器提供的,并且僅僅對于計算設(shè)備的安全元件是已知的。對固件進行兩次加密能夠防止計算設(shè)備使用存儲的破解圖像來重新啟動計算設(shè)備,從而對完美破解提供了很好的防范。正如在本文中所使用的這樣,固件是非易失性存儲器(也可以被稱為持久存儲器)和存儲在非易失性存儲器中的程序代碼和數(shù)據(jù)的組合。在本文中也可以使用術(shù)語“固件”來特別指存儲在非易失性存儲器中的程序代碼和數(shù)據(jù)。在實施例中,固件的程序代碼和數(shù)據(jù)是與計算設(shè)備的控制程序有關(guān)的程序代碼和數(shù)據(jù),諸如計算設(shè)備的啟動程序代碼。在其它實施例中,固件也可以包括設(shè)備的操作系統(tǒng)(OS),有時也稱為“內(nèi)核”,以及需要操作系統(tǒng)來運行的更高級別的應(yīng)用程序。在實施例中,一些操作系統(tǒng)應(yīng)用程序,諸如瀏覽器和/或媒體播放器,被集成在內(nèi)核中,或者作為單獨的固件對象被存儲。固件對象可以彼此獨立地被更新或者一起被更新。在實施例中,固件“圖像”是指包含軟件對象的完整內(nèi)容的單個文件。在實施例中,通過創(chuàng)建源介質(zhì)的分扇區(qū)拷貝來創(chuàng)建固件,從而完全地復(fù)制所存儲的固件的結(jié)構(gòu)和內(nèi)容。
[0030]圖2A示出的是根據(jù)本發(fā)明用于更新計算設(shè)備中的固件的網(wǎng)絡(luò)結(jié)構(gòu)200。圖2A所示的網(wǎng)絡(luò)結(jié)構(gòu)200包括計算設(shè)備202,通信網(wǎng)絡(luò)204以及服務(wù)提供商服務(wù)器206。計算設(shè)備202包括主機處理器210,非易失性存儲器212,網(wǎng)絡(luò)接口 228和安全元件230,安全元件230位于主機處理器210和非易失性存儲器212之間的數(shù)據(jù)路徑中。數(shù)據(jù)路徑可以包括總線段,例如,將主機處理器210連接到安全元件230的8位串行總線段232,以及將非易失性存儲器212連接到安全元件230的8位串行總線段234。計算設(shè)備202還包括控制總線236,控制總線236用于在主機處理器210和安全元件230之間傳送命令和控制信息。例如,控制總線是串行2位內(nèi)部集成電路(I2C)總線。
[0031]在實施例中,計算設(shè)備202是諸如智能手機、平板電腦、個人計算機或機頂盒的設(shè)備,該計算設(shè)備202也可以是包括主機處理器和非易失性存儲器的其他種類的設(shè)備。主機處理器210是諸如中央處理單元(CPU)的處理器,為計算設(shè)備202提供微指令和數(shù)據(jù)處理能力。主機處理器210可以包括多功能處理器和/或?qū)S锰幚砥?。主機處理器210的例子包括IBM公司的PowerPC?系列處理器,英特爾公司的x86系列處理器,以及蘋果公司的AX系列處理器。
[0032]非易失性存儲器212可以是,例如,閃存,諸如NAND閃存或NOR閃存,EEPR0M,一些其他的大容量存儲元件,例如硬盤,或它們的組合。在圖2A的實施例中,非易失性存儲器212是NAND閃存,例如8GB,16GB, 32GB或64GB。計算設(shè)備202的網(wǎng)絡(luò)接口 228能夠使計算設(shè)備202經(jīng)由通信網(wǎng)絡(luò)204連接到服務(wù)提供商服務(wù)器206,并且能夠使計算設(shè)備202與服務(wù)提供商服務(wù)器206通信。例如,網(wǎng)絡(luò)接口 228可以支持USB,以太網(wǎng),和/或無線通信或如本領(lǐng)域中已知的其他通信協(xié)議。
[0033]安全元件230包括加密引擎240,加密引擎240能夠?qū)崿F(xiàn)加密算法,諸如高級加密標(biāo)準(zhǔn)(AES)算法。安全元件230還被配置成接收并臨時存儲加密密鑰,該加密密鑰用于對經(jīng)過兩次加密的固件進行解密。在實施例中,安全元件的加密引擎被配置為在上電時生成隨機加密密鑰,并且將使用該隨機加密密鑰進行解密,直到接收到另一個加密密鑰,例如第二加密密鑰GK2。在實施例中,安全元件在這個意義上是“安全”的,因為安全元件是高度防篡改的設(shè)備,提供與主機處理器相隔離的安全的執(zhí)行環(huán)境。在實施例中,安全元件是防篡改的,因為安全元件能夠抵抗軟件和硬件的攻擊,無論是遠程的還是本地的攻擊,例如,安全元件是抗旁路分析的。
[0034]理解了數(shù)據(jù)是如何被存儲在計算設(shè)備202的非易失性存儲器212中的,將有助于理解安全元件230的功能。圖3示出的是圖2A的非易失性存儲器212的實施例,非易失性存儲器212已經(jīng)被分成單獨的存儲塊,這些塊被指定為“代碼塊”或“數(shù)據(jù)塊”。代碼塊242包括指定存儲例如計算設(shè)備的固件的塊,計算設(shè)備的固件例如作為固件對象被存儲。在實施例中,固件包括用于啟動和操作計算設(shè)備的程序代碼和數(shù)據(jù)。在圖3的實施例中,代碼塊242包括例如“啟動”對象,“內(nèi)核”對象以及“OS構(gòu)件”對象。在圖3的實施例中,“OS構(gòu)件”對象是例如用于存儲更高級別的軟件的根文件系統(tǒng),諸如OS庫,圖形用戶界面(GUI),和/或原生應(yīng)用,如瀏覽器,媒體播放器和消息應(yīng)用。數(shù)據(jù)塊244存儲用戶數(shù)據(jù),還可以包括為其他特定數(shù)據(jù)保留的保留塊。在圖3的實施例中,“用戶數(shù)據(jù)”對象例如是用于存儲用戶數(shù)據(jù)的數(shù)據(jù)文件系統(tǒng),用戶數(shù)據(jù)諸如是用戶應(yīng)用,音樂和/或電影。在實施例中,服務(wù)提供商在固件安裝期間或作為隨后的固件更新的一部分,指定非易失性存儲器的布局。
[0035]已知在傳統(tǒng)的計算設(shè)備中,使用在本文中被稱為群組密鑰的密鑰(加密密鑰和/或解密密鑰)對存儲在代碼塊242中的數(shù)據(jù)進行加密,使用在本文中被稱為設(shè)備唯一的密鑰的加密密鑰對存儲在數(shù)據(jù)塊244中的數(shù)據(jù)進行加密。在實施例中,群組密鑰是一類設(shè)備中的所有處理器共有的加密密鑰。例如,使用相同的主機處理器的所有計算設(shè)備都具有相同的群組密鑰,有時也被稱為群組ID密鑰(GID)。在另一個實施例中,群組密鑰是特定版本的固件或特定的固件更新所共有的。在實施例中,唯一的密鑰是對于每個主機處理器獨一無二的加密密鑰。例如,所有的計算設(shè)備具有不同的唯一的密鑰,有時也被稱為唯一的ID密鑰(WD)。在實施例中,群組密鑰和唯一的密鑰是AES256位永久密鑰,這種密鑰在制造過程中被熔入/燒入主機處理器的硅中。在實施例中,群組密鑰由設(shè)備制造商和/或服務(wù)提供商記錄,而唯一的密鑰由設(shè)備制造商和/或服務(wù)提供商編程到主機處理器中,而不是由設(shè)備制造商和/或服務(wù)提供商記錄。
[0036]再參考圖2A,服務(wù)提供商服務(wù)器206包括固件源214和密鑰源216。密鑰源216存儲兩個不同的群組密鑰,GKl和GK2,固件源214存儲經(jīng)過加密的固件圖像EF和經(jīng)過兩次加密的固件圖像EF,經(jīng)過加密的固件圖像EF是對固件使用第一加密密鑰GKl加密得到的,經(jīng)過兩次加密的固件圖像E2F是對經(jīng)過加密的固件圖像EF使用第二加密密鑰GK2第二次加密得到的。在實施例中,使用高級加密標(biāo)準(zhǔn)(AES)對固件進行加密。經(jīng)過加密的固件圖像EF和經(jīng)過兩次加密的固件圖像E2F可以被表示為:
[0037]EF = AES (GKl,固件) (I)
[0038]E2F = AES (GK2, EF) (2)
[0039]參考圖2A的主機處理器210,第一加密密鑰GKl是永久加密密鑰,在制造時被永久熔入/燒入到主機處理器中。正如下面更詳細描述的那樣,第二加密密鑰GK2不像GKl是永久密鑰,而是從服務(wù)提供者服務(wù)器206下載的并臨時存儲在安全元件230的可寫存儲器中的密鑰。
[0040]圖2B說明的是根據(jù)本發(fā)明用于更新圖2A中的計算設(shè)備202的固件的處理。第一操作250被稱為“獲取GK2”,在第一操作250中,計算設(shè)備202的安全元件230與服務(wù)提供商服務(wù)器206進行通信以配置解密操作。在實施例中,獲取GK2操作是軟件服務(wù),該軟件服務(wù)被添加到計算設(shè)備的Bootrom中的設(shè)備固件升級(DFU)模塊。例如,Bootrom是ROM,并且是主機處理器的相關(guān)的程序代碼和數(shù)據(jù),Bootrom是不能改變的。獲取GK2服務(wù)被配置為實現(xiàn)安全元件和服務(wù)提供商服務(wù)器之間的相互認(rèn)證操作,以通過安全通道將第二加密密鑰GK2傳送到安全元件,并且獲取GK2服務(wù)被配置為學(xué)習(xí)非易失性存儲器212的地址配置,例如,非易失性存儲器中的哪些地址被指定為代碼塊,非易失性存儲器中的哪些地址被指定為數(shù)據(jù)塊。獲取GK2操作的通信發(fā)生在計算設(shè)備內(nèi)部,主機處理器和安全元件之間的控制總線236 (例如,I2C總線)上。一旦安全元件被配置用于解密,例如,安全元件知道第二加密密鑰GK2以及非易失性存儲器中的代碼塊地址,則處理進行到“閃存”操作252。在閃存操作中,經(jīng)過兩次加密的固件圖像從固件源被下載到計算設(shè)備的非易失性存儲器的代碼塊中。由于安全元件230位于主機處理器210和非易失性存儲器212之間的數(shù)據(jù)路徑232/234中,因此經(jīng)過兩次加密的固件圖像必定進入安全元件。當(dāng)經(jīng)過兩次加密的固件圖像進入安全元件時,經(jīng)過兩次加密的固件圖像被標(biāo)識為將要被寫入非易失性存儲器的代碼塊中的數(shù)據(jù)。例如,經(jīng)過兩次加密的固件圖像被這樣標(biāo)識是因為數(shù)據(jù)的地址是非易失性存儲器內(nèi)的一個代碼塊或多個代碼塊。因為數(shù)據(jù)將要被寫入非易失性存儲器的代碼塊,所以加密引擎240使用第二加密密鑰GK2對數(shù)據(jù)進行解密。用第二加密密鑰GK2對經(jīng)過兩次加密的固件圖像E2F進行解密得到的結(jié)果是經(jīng)過加密的固件圖像EF。安全元件執(zhí)行的解密操作可以被表示為:
[0041]EF = AES-1 (GK2, E2F) (3)
[0042]然后,經(jīng)過加密的固件圖像EF被發(fā)送到非易失性存儲器212,并被寫入非易失性存儲器212中的代碼塊242。另一方面,將要被寫入非易失性存儲器的數(shù)據(jù)塊244中的數(shù)據(jù)未經(jīng)加密被透明地傳送到安全元件230。也就是說,地址為非易失性存儲器內(nèi)的數(shù)據(jù)塊的數(shù)據(jù)被安全元件這樣識別并被傳送到安全元件,而并不需要被解密。
[0043]使用存儲在計算設(shè)備202的非易失性存儲器212中的經(jīng)過加密的固件圖像EF,計算設(shè)備202準(zhǔn)備好被重新啟動。在“啟動”操作254中,如傳統(tǒng)的啟動操作那樣,從非易失性存儲器中讀出經(jīng)過加密的固件圖像EF。一旦讀出經(jīng)過加密的固件圖像EF,則經(jīng)過加密的固件圖像EF經(jīng)由串行總線的第一和第二段,通過安全元件230被透明地傳送到主機處理器210,并且主機處理器210如通常那樣,使用第一加密密鑰GKl對經(jīng)過加密的固件圖像EF進行解密。由主機處理器210執(zhí)行的解密操作可以被表示為:
[0044]固件=AES-1(GKl,EF) (4)
[0045]接著,由主機處理器210檢查經(jīng)過解密的固件,并在計算設(shè)備202的RAM中執(zhí)行經(jīng)過解密的固件。利用上述結(jié)構(gòu)和處理,如果在計算設(shè)備中兩個加密密鑰(GK1,GK2)都是已知的,則固件更新以及隨后的重新啟動能夠成功地完成。特別地,主機處理器210必須知道第一加密密鑰GKl,安全元件230必須知道第二加密密鑰GK2。如果安全元件沒有被正確地配置第二加密密鑰GK2,則安全元件將會產(chǎn)生隨機密鑰,該隨機密鑰被用于解密要被寫入非易失性存儲器的代碼塊242的任何數(shù)據(jù)。當(dāng)經(jīng)過解密的數(shù)據(jù)最終在計算設(shè)備重新啟動時被從非易失性存儲器中讀出時,該數(shù)據(jù)對于主機處理器將是無法理解和無法破譯的。例如,主機處理器將使用第一加密密鑰GKl對讀出的數(shù)據(jù)進行解密,但經(jīng)過解密的數(shù)據(jù)與原始的固件將是不一樣的。此外,原始的固件還經(jīng)過簽名,由于該簽名將不再有效,因此主機處理器將不再試圖執(zhí)行經(jīng)過解密的程序代碼。因此,經(jīng)過解密的數(shù)據(jù)不能夠重新啟動計算設(shè)備。
[0046]在上述過程中,安全元件230 —接收到經(jīng)過兩次加密的固件圖像E2F就對其進行解密,并將其存儲到計算設(shè)備202的非易失性存儲器212的代碼塊242中。圖4A和圖4B表示的是圖2A和圖2B的實施例的替代實施例,在圖4A和圖4B的實施例中,經(jīng)過兩次加密的固件圖像以兩次加密的形式被存儲在計算設(shè)備202的非易失性存儲器212的數(shù)據(jù)塊244中,并在隨后的操作中被安全元件230解密。圖4A示出的是根據(jù)本發(fā)明用于更新計算設(shè)備202中的固件的網(wǎng)絡(luò)結(jié)構(gòu)300。為了便于參考,圖2A和圖4A之間的主要區(qū)別在于,在圖4A中,經(jīng)過兩次加密的固件圖像E2F的拷貝被存儲在非易失性存儲器212的數(shù)據(jù)塊244中。
[0047]圖4B說明的是根據(jù)本發(fā)明用于更新圖4A中的計算設(shè)備202的固件的替代過程。第一操作260是“下載”操作,在第一操作260中,經(jīng)過兩次加密的固件圖像E2F從固件源214被下載到非易失性存儲器212的數(shù)據(jù)塊244,而不是像圖2A和圖2B的實施例那樣被下載到非易失性存儲器的代碼塊242。因為經(jīng)過兩次加密的固件圖像是用于非易失性存儲器的數(shù)據(jù)塊而不是代碼塊,因此當(dāng)經(jīng)過兩次加密的固件圖像經(jīng)過安全元件230時,安全元件230不對經(jīng)過兩次加密的固件圖像進行解密。即,安全元件識別出數(shù)據(jù)的寫入地址為數(shù)據(jù)塊地址,因此安全元件透明地傳送該數(shù)據(jù)。特別是,安全元件不使用第二加密密鑰GK2對經(jīng)過兩次加密的固件圖像進行解密,或者在安全元件不知道第二加密密鑰的情況下,安全元件也不使用隨機生成的加密密鑰對經(jīng)過兩次加密的固件圖像進行解密。一旦經(jīng)過兩次加密的固件圖像被存儲在非易失性存儲器中,“獲取GK2”操作262開始?!矮@取GK2”操作類似于上面參考圖2A描述的操作250,這里不再進一步描述。在圖4B的實施例中,下載操作260在獲取GK2操作262之前發(fā)生,然而,在另一個實施例中,獲取GK2操作可以在下載操作之前發(fā)生。一旦下載操作和獲取GK2操作完成,則處理可以進行到“閃存”操作264。在閃存操作中,經(jīng)過兩次加密的固件圖像E2F準(zhǔn)備好由主機處理器從非易失性存儲器的數(shù)據(jù)塊中讀出。當(dāng)由主機處理器讀取時,經(jīng)過兩次加密的固件圖像從主機處理器被重定向到非易失性存儲器,用于寫入非易失性存儲器的代碼塊。由于經(jīng)過兩次加密的固件圖像是用于寫入非易失性存儲器的代碼塊中(例如,寫入地址對應(yīng)的是代碼塊),所以安全元件使用第二加密密鑰GK2對數(shù)據(jù)進行解密。由安全元件執(zhí)行的解密操作可以表示為上述公式(3)。
[0048]用加密密鑰GK2對經(jīng)過兩次加密的固件圖像E2F進行解密得到的結(jié)果是經(jīng)過加密的固件圖像EF。然后,經(jīng)過加密的固件圖像EF被發(fā)送到非易失性存儲器212,并被寫入非易失性存儲器中的代碼塊242。使用存儲在計算設(shè)備202的非易失性存儲器212中的經(jīng)過加密的固件圖像EF,計算設(shè)備202準(zhǔn)備好被重新啟動,如上面參考圖2B所描述的那樣。特別地,圖4B中的“啟動”操作266本質(zhì)上與參考圖2B描述的啟動操作254相同。因此,不對圖4B中的啟動操作266作更詳細地描述。
[0049]如上面參考圖2A-4B所描述的那樣,安全元件230被配置為確定數(shù)據(jù)是要被寫入非易失性存儲器212的代碼塊242還是數(shù)據(jù)塊244,以及被配置為使用第二加密密鑰GK2對要被寫入代碼塊的數(shù)據(jù)進行解密。圖5示出的是圖2A和圖4A中的安全元件230的實施例的展開視圖。
[0050]在圖5的實施例中,安全元件230包括CPU502,存儲器504,控制接口 506,存儲器管理單元(MMU) 508,隨機數(shù)生成器(RNG) 510,加密引擎240,主機側(cè)總線接口 512,輸入緩沖器514,存儲器側(cè)總線接口 516,以及輸出緩沖器518。在圖5的實施例中,CPU502為計算設(shè)備202提供微指令和數(shù)據(jù)處理能力,存儲器504可以包括片上易失性存儲器和非易失性存儲器,易失性存儲器例如是RAM,非易失性存儲器例如是ROM,PROM, EEPR0M,閃存??刂平涌?506與控制總線236兼容,主機側(cè)總線接口 512和存儲器側(cè)總線接口 516與總線232/234兼容,總線232/234例如是8位的串行總線。加密引擎240被配置為使用加密密鑰(例如,GK2)執(zhí)行解密,例如AES,如上所述。存儲器504配置有非易失性存儲器的布局圖,例如非易失性存儲器的代碼塊地址和數(shù)據(jù)塊地址的存儲圖,存儲器管理單元508包括地址解碼器,地址解碼器被配置為識別輸入數(shù)據(jù)的寫入地址,以確定數(shù)據(jù)將要被寫入到的非易失性存儲器的適當(dāng)?shù)膲K。在實施例中,布局圖被存儲在安全元件230的持久存儲器中,以致布局圖不會在掉電或復(fù)位時丟失。
[0051 ] 如果安全元件230不知道第二加密密鑰GK2,例如第二加密密鑰GK2沒有被傳送到安全元件230中,則安全元件230將使用隨機密鑰對要被寫入到非易失性存儲器212的代碼塊242中的所有數(shù)據(jù)進行解密。在實施例中,如果存儲器管理單元508識別出數(shù)據(jù)將要被寫入到非易失性存儲器的代碼塊中,并且如果安全元件230不知道第二加密密鑰GK2,則安全元件230將使用來自隨機數(shù)生成器510的值生成它自己的隨機加密密鑰。在使用隨機加密密鑰對要被寫入到非易失性存儲器212的代碼塊242中的任何數(shù)據(jù)進行解碼后,這些數(shù)據(jù)在重新啟動時對于主機處理器是不能破譯的。因此,在試圖實現(xiàn)完美破解時,如果固件對象的未經(jīng)授權(quán)的加密圖像被存儲在非易失性存儲器中,則在重新啟動時由主機處理器讀出固件對象時,該固件對象將是無法破譯的。在實施例中,在啟動時用隨機加密密鑰對加密引擎進行初始化。此外,加密密鑰沒有被存儲在安全元件的持久存儲器中,以致加密密鑰在掉電或復(fù)位時丟失。
[0052]在實施例中,安全元件230被實現(xiàn)為獨立的集成電路(IC),該集成電路被安裝在主機處理器210和非易失性存儲器212之間的數(shù)據(jù)路徑232/234中。例如,獨立的集成電路具有用于主機側(cè)總線接口 512的引腳,用于存儲器側(cè)總線接口 516的引腳,以及用于控制接口 506的引腳。在另一個實施例中,安全元件可以與非易失性存儲器集成在同一個集成電路例如閃存IC上。在其它實施例中,安全元件可以整個或部分集成到主機處理器IC中。
[0053]圖6是根據(jù)本發(fā)明用于更新計算設(shè)備的固件的處理流程圖。在方框602中,從外部固件源接收到經(jīng)過兩次加密的固件圖像,其中,經(jīng)過兩次加密的固件圖像是使用第一加密密鑰GKl對固件進行第一次加密,然后再使用第二加密密鑰GK2對固件進行第二次加密生成的。在方框604中,從外部密鑰源接收第二加密密鑰GK2。在方框606中,使用第二加密密鑰GK2對經(jīng)過兩次加密的固件圖像進行解密,以產(chǎn)生經(jīng)過加密的固件圖像。在方框608中,將經(jīng)過加密的固件圖像存儲在計算設(shè)備的非易失性存儲器中。在方框610中,從計算設(shè)備的非易失性存儲器中讀出經(jīng)過加密的固件圖像。在方框612中,使用第一加密密鑰GKl對經(jīng)過加密的固件圖像進行解密以產(chǎn)生固件。在實施例中,計算設(shè)備使用例如公共密鑰基礎(chǔ)設(shè)施(PKI)證書來驗證固件簽名。在實施例中,在對經(jīng)過加密的固件圖像進行解密之前,安全元件使用第一加密密鑰GKl來驗證固件圖像簽名。在方框614中,在計算設(shè)備上執(zhí)行該固件。
[0054]在實施例中,加密涉及對數(shù)據(jù)應(yīng)用AES算法,而解密涉及對數(shù)據(jù)應(yīng)用AES算法的逆算法。在另一個實施例中,加密涉及對數(shù)據(jù)應(yīng)用AES算法的逆算法,而解密涉及對數(shù)據(jù)應(yīng)用AES算法。將這個邏輯應(yīng)用到圖2A-4B的技術(shù)中,安全元件執(zhí)行的操作與服務(wù)提供商服務(wù)器執(zhí)行的操作相反,反之亦然。在實施例中,安全元件被配置為實現(xiàn)最快的加密或解密操作。在實施例中,安全元件被配置為實現(xiàn)相對輕量級的加密算法,例如MIN-AES,MIN-AES具有比AES慢10倍數(shù)量級的延遲。
[0055]用于安全地更新計算設(shè)備中的固件的上述技術(shù)要求安全元件230位于主機處理器210和非易失性存儲器212之間的數(shù)據(jù)路徑232/234中。為了成功破解這樣的計算設(shè)備,惡意的人可能會試圖繞過安全元件或從計算設(shè)備中移除安全元件。下面將參考圖7A-8B描述用于確認(rèn)安全元件的存在的技術(shù)。
[0056]圖7 A示出的是根據(jù)本發(fā)明用于確認(rèn)計算設(shè)備202中的安全元件230的存在的網(wǎng)絡(luò)結(jié)構(gòu)700。該網(wǎng)絡(luò)結(jié)構(gòu)類似于上面參考圖2A,4A和5描述的網(wǎng)絡(luò)結(jié)構(gòu)200和300。
[0057]圖7B說明的是根據(jù)本發(fā)明用于確認(rèn)圖7A的計算設(shè)備202中的安全元件230的存在的處理。第一操作750被稱為“獲取GK1”,在第一操作750中,計算設(shè)備202的安全元件230與服務(wù)提供商服務(wù)器206進行通信以配置解密操作。在實施例中,獲取GKl操作是軟件服務(wù),該軟件服務(wù)被添加到計算設(shè)備的Bootoom中的設(shè)備固件升級(DFU)模塊。獲取GKl操作被配置為實現(xiàn)安全元件和服務(wù)提供商服務(wù)器之間的相互認(rèn)證操作,以通過安全通道將第一加密密鑰GKl傳送到安全元件,并且獲取GKl操作被配置為學(xué)習(xí)非易失性存儲器的地址配置,例如,非易失性存儲器中的哪些地址被指定為代碼塊,非易失性存儲器中的哪些地址被指定為數(shù)據(jù)塊。獲取GKl操作的通信發(fā)生在計算設(shè)備內(nèi)部,主機處理器和安全元件之間的控制總線(例如,I2C總線)上。一旦安全元件被配置用于解密,例如,安全元件知道第一加密密鑰GKl以及非易失性存儲器中的代碼塊地址,則處理進行到“檢查安全元件”操作752。在檢查安全元件操作752中,主機處理器產(chǎn)生隨機數(shù)RN,并且主機處理器使用AES和第一加密密鑰GKl對所產(chǎn)生的隨機數(shù)RN進行加密。經(jīng)過加密的隨機數(shù)ERN可以被表示為:
[0058]ERN = AES (GKl,RN) (5)
[0059]經(jīng)過加密的隨機數(shù)ERN隨后被寫入非易失性存儲器212的代碼塊242。由于安全元件230位于主機處理器210和非易失性存儲器212之間的數(shù)據(jù)路徑232/234中,因此經(jīng)過加密的隨機數(shù)ERN必定進入安全元件230。當(dāng)經(jīng)過加密的隨機數(shù)ERN進入安全元件230時,經(jīng)過加密的隨機數(shù)被標(biāo)識為將要被寫入非易失性存儲器的代碼塊中的數(shù)據(jù)。例如,經(jīng)過加密的隨機數(shù)ERN被這樣標(biāo)識是因為數(shù)據(jù)的寫入地址是非易失性存儲器內(nèi)的一個代碼塊或多個代碼塊。因為數(shù)據(jù)將要被寫入非易失性存儲器的代碼塊,所以加密引擎使用第一加密密鑰GKl對數(shù)據(jù)進行解密。用第一加密密鑰GKl對經(jīng)過加密的隨機數(shù)ERN進行解密得到的結(jié)果是經(jīng)過解密的隨機數(shù)RN'。安全元件執(zhí)行的解密操作可以被表示為:
[0060]RN' = AES-1 (GKl, ERN) (6)
[0061]然后,經(jīng)過解密的隨機數(shù)RN'被發(fā)送到非易失性存儲器,并被寫入非易失性存儲器中的代碼塊。接下來,主機處理器從非易失性存儲器中讀出經(jīng)過解密的隨機數(shù)RN',并將隨機數(shù)RN與經(jīng)過解密的隨機數(shù)RN'進行比較。如果該隨機數(shù)RN等于經(jīng)過解密的隨機數(shù)RN',即RN = RN',則確認(rèn)存在安全元件并且安全元件是可使用的。另一方面,如果隨機數(shù)RN不等于經(jīng)過解密的隨機數(shù)RN' , RN ^ RNi,則確認(rèn)安全元件不存在并且是不可使用的。
[0062]參考圖7A和圖7B描述的技術(shù)利用第一加密密鑰GKl對隨機數(shù)RN進行加密/解密,該隨機數(shù)是在主機處理器210中生成并確認(rèn)的。在替代實施例中,在服務(wù)提供商服務(wù)器206中生成隨機數(shù),并且在服務(wù)提供商服務(wù)器206中使用替代密鑰例如會話密鑰SK來確認(rèn)該隨機數(shù)。圖8A示出的是根據(jù)本發(fā)明用于確認(rèn)計算設(shè)備202中的安全元件230的存在的網(wǎng)絡(luò)結(jié)構(gòu)800。在圖8A的實施例中,會話加密密鑰SK是由密鑰源提供的。
[0063]圖SB說明的是根據(jù)本發(fā)明用于確認(rèn)圖8A的計算設(shè)備202中的安全元件230的存在的處理。第一操作756被稱為“獲取SK”,在第一操作756中,計算設(shè)備的安全元件與服務(wù)提供商服務(wù)器進行通信以配置解密操作。在實施例中,獲取SK操作是軟件服務(wù),該軟件服務(wù)被添加到計算設(shè)備的Bootoom中的設(shè)備固件升級(DFU)模塊。獲取SK操作被配置為實現(xiàn)安全元件和服務(wù)提供商服務(wù)器之間的相互認(rèn)證操作,以通過安全通道將會話加密密鑰SK傳送到安全元件,并且獲取SK操作被配置為學(xué)習(xí)非易失性存儲器的地址配置,例如,非易失性存儲器中的哪些地址被指定為代碼塊,非易失性存儲器中的哪些地址被指定為數(shù)據(jù)塊。獲取SK操作的通信發(fā)生在計算設(shè)備內(nèi)部,主機處理器和安全元件之間的控制總線(例如,I2C總線)上。一旦安全元件被配置用于解密,例如,安全元件知道會話加密密鑰SK以及非易失性存儲器中的代碼塊地址,則處理進行到“檢查安全元件”操作758。在檢查安全元件操作758中,服務(wù)提供商服務(wù)器產(chǎn)生隨機數(shù)RN,并且服務(wù)提供商服務(wù)器使用AES和會話加密密鑰SK對所產(chǎn)生的隨機數(shù)RN進行加密。經(jīng)過加密的隨機數(shù)ERN可以被表示為:
[0064]ERN = AES (SK,RN) (7)
[0065]經(jīng)過加密的隨機數(shù)ERN隨后被寫入非易失性存儲器212的代碼塊242。由于安全元件230位于主機處理器210和非易失性存儲器212之間的數(shù)據(jù)路徑232/234中,因此經(jīng)過加密的隨機數(shù)ERN必定進入安全元件。當(dāng)經(jīng)過加密的隨機數(shù)ERN進入安全元件時,經(jīng)過加密的隨機數(shù)被標(biāo)識為將要被寫入非易失性存儲器的代碼塊中的數(shù)據(jù),并且安全元件使用會話加密密鑰SK對經(jīng)過加密的隨機數(shù)ERN進行解密。使用會話加密密鑰SK對經(jīng)過加密的隨機數(shù)ERN進行解密得到的結(jié)果是經(jīng)過解密的隨機數(shù)RN'。安全元件執(zhí)行的解密操作可以被表示為:
[0066]RN' = AES-1 (SK, ERN) (8)
[0067]然后,經(jīng)過解密的隨機數(shù)RN'被發(fā)送到非易失性存儲器,并被寫入非易失性存儲器中的代碼塊。接下來,服務(wù)提供商服務(wù)器從計算設(shè)備請求經(jīng)過解密的隨機數(shù)RN'。服務(wù)提供商服務(wù)器接收經(jīng)過解密的隨機數(shù)RN',并將隨機數(shù)RN與經(jīng)過解密的隨機數(shù)RN'進行比較。如果該隨機數(shù)RN等于經(jīng)過解密的隨機數(shù)RN',即RN = RN',則確認(rèn)存在安全元件并且安全元件是可使用的。另一方面,如果隨機數(shù)RN不等于經(jīng)過解密的隨機數(shù)RN' ,RN^RNi,則確認(rèn)安全元件不存在并且是不可使用的。
[0068]圖9是根據(jù)本發(fā)明用于確認(rèn)`計算設(shè)備中的安全元件的存在的處理流程圖。在方框902中,安全元件接收經(jīng)過加密的隨機數(shù),其中該隨機數(shù)是使用加密密鑰被加密的。在方框904中,從外部密鑰源接收加密密鑰。在方框906中,安全元件使用該加密密鑰對經(jīng)過加密的隨機數(shù)進行解密,以產(chǎn)生經(jīng)過解密的隨機數(shù)。在方框908中,將經(jīng)過解密的隨機數(shù)存儲在計算設(shè)備的非易失性存儲器中。在方框910中,從計算設(shè)備的非易失性存儲器中讀出經(jīng)過解密的隨機數(shù)。在方框912中,將經(jīng)過解密的隨機數(shù)與隨機數(shù)的存儲版本進行比較。在方框914中,如果經(jīng)過解密的隨機數(shù)與所存儲的隨機數(shù)相匹配,則確認(rèn)存在安全元件。
[0069]在上述描述中,提供了各種實施例的具體細節(jié)。然而,一些實施例采用少一些具體細節(jié)也是可以實施的。在其他情況下,為了簡潔和清楚起見,某些方法,程序,組件,結(jié)構(gòu)和/或功能在描述時作了省略。
[0070]雖然在本文中,方法的操作步驟是按特定順序描述的,但是每個方法的操作步驟的順序是可以改變的,以致某些操作步驟的順序可以顛倒,或者某些操作可以至少部分地與其他操作同時執(zhí)行。在另一實施例中,可以采用間斷的方式和/或交替的方式來執(zhí)行不同操作的指令或子操作。
[0071]應(yīng)當(dāng)理解的是,本文中描述的方法的至少一些操作可以使用由計算機執(zhí)行的計算機上可用的存儲介質(zhì)存儲的軟件指令來實現(xiàn)。例如,計算機程序產(chǎn)品的實施例包括計算機可用存儲介質(zhì),以存儲計算機可讀程序。
[0072]計算機可用或計算機可讀存儲介質(zhì)可以是電子的,磁的,光學(xué)的,電磁的,紅外的,或半導(dǎo)體系統(tǒng)(或裝置或設(shè)備)。非臨時性計算機可用和計算機可讀存儲介質(zhì)的實例包括半導(dǎo)體或固態(tài)存儲器,磁帶,可移動計算機磁盤,隨機存取存儲器(RAM),只讀存儲器(R0M),剛性磁盤,以及光盤。光盤的當(dāng)前例子包括具有只讀存儲器(CD-ROM)的高密度磁盤,具有讀/寫(CD-R/W)功能的高密度磁盤,以及數(shù)字視頻盤(DVD)。
[0073]或者,本發(fā)明的實施例中可以完全用硬件來實現(xiàn),或者采用同時包含硬件和軟件的方式來實現(xiàn)。在使用軟件的實施例中,軟件可以包括但不限于固件,常駐軟件,微碼等。
[0074]雖然本文中已經(jīng)描述和示出了本發(fā)明的具體實施例,但本發(fā)明并不限于本文中所描述和示出的特定形式或組成部件的布置。本發(fā)明的范圍由本文所附的權(quán)利要求及其等同物定義。
【權(quán)利要求】
1.一種用于更新計算設(shè)備中的固件的方法,該計算設(shè)備包括主機處理器和非易失性存儲器,其特征在于,該方法包括: 從外部固件源接收經(jīng)過兩次加密的固件圖像,其中,經(jīng)過兩次加密的固件圖像是由經(jīng)第一加密密鑰進行第一次加密然后經(jīng)第二加密密鑰進行第二次加密的固件所生成的; 從外部密鑰源接收第二加密密鑰; 使用第二加密密鑰對經(jīng)過兩次加密的固件圖像進行解密,以產(chǎn)生經(jīng)過加密的固件圖像; 將經(jīng)過加密的固件圖像存儲在計算設(shè)備的非易失性存儲器中; 從計算設(shè)備的非易失性存儲器中讀出經(jīng)過加密的固件圖像; 使用第一加密密鑰對經(jīng)過加密的固件圖像進行解密以產(chǎn)生固件;以及 在計算設(shè)備上執(zhí)行該固件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,安全元件接收并存儲第二加密密鑰,其中安全元件位于主機處理器和非易失性存儲器之間。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,安全元件使用第二加密密鑰對經(jīng)過兩次加密的固件圖像進行解密。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,安全元件包括連接到主機側(cè)數(shù)據(jù)總線的主機側(cè)接口和連接到存儲器側(cè)數(shù)據(jù)總線的存儲器側(cè)接口,并且其中安全元件包括加密引擎,加密引擎被配置為對經(jīng)過兩次加密的固件圖像進行解密。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,安全元件被配置為對寫入地址為非易失性存儲器中的代碼塊的數(shù)據(jù)進行解密,并且無需解密傳送寫入地址為非易失性存儲器中的數(shù)據(jù)塊的數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)從外部固件源接收到經(jīng)過兩次加密的固件圖像時,并不是首先將經(jīng)過兩次加密的固件圖像存儲在非易失性存儲器中,而是使用第二加密密鑰對經(jīng)過兩次加密的固件圖像進行解密。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,經(jīng)過兩次加密的固件圖像首先被存儲在非易失性存儲器中,然后從非易失性存儲器中讀出經(jīng)過兩次加密的固件圖像,并使用第二加密密鑰對其進行解密。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,第一加密密鑰是對于一組計算設(shè)備都相同的群組密鑰(GKl),第二加密密鑰是對于特定版本的固件都相同的群組密鑰(GK2)。
9.根據(jù)權(quán)利要求2所述的方法,其特征在于,第二加密密鑰是通過安全通道從外部密鑰源接收到的。
10.根據(jù)權(quán)利要求2所述的方法,其特征在于,該方法還包括由安全元件對經(jīng)過加密的隨機數(shù)進行解密,以確認(rèn)存在安全元件。
11.一種計算設(shè)備,其特征在于,包括: 數(shù)據(jù)接口,被配置為從外部固件源接收經(jīng)過兩次加密的固件圖像,以及從外部密鑰源接收第二加密密鑰,其中,經(jīng)過兩次加密的固件圖像是由經(jīng)第一加密密鑰進行第一次加密然后經(jīng)第二加密密鑰進行第二次加密的固件所生成的; 主機處理器,被配置為執(zhí)行固件的程序代碼; 非易失性存儲器,被配置為存儲經(jīng)過加密的固件圖像,以及安全元件,位于主機處理器和非易失性存儲器之間的數(shù)據(jù)路徑中,并具有加密引擎,加密引擎被配置為使用第二加密密鑰對經(jīng)過兩次加密的固件圖像進行解密,以產(chǎn)生經(jīng)過加密的固件圖像,安全元件被配置為將經(jīng)過加密的固件圖像提供給計算設(shè)備的非易失性存儲器用于存儲; 主機處理器,被配置為:從非易失性存儲器中讀出經(jīng)過加密的固件圖像,使用第一加密密鑰對經(jīng)過加密的固件圖像進行解密以產(chǎn)生固件,以及在計算設(shè)備上執(zhí)行固件的程序代碼。
12.根據(jù)權(quán)利要求11所述的計算設(shè)備,其特征在于,安全元件被配置為對寫入地址為非易失性存儲器中的代碼塊的數(shù)據(jù)進行解密,以及無需解密傳送寫入地址為非易失性存儲器中的數(shù)據(jù)塊的數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的計算設(shè)備,其特征在于,當(dāng)從外部固件源接收到經(jīng)過兩次加密的固件圖像時,并不是首先將經(jīng)過兩次加密的固件圖像存儲在非易失性存儲器中,而是由安全元件使用第二加密密鑰對經(jīng)過兩次加密的固件圖像進行解密。
14.根據(jù)權(quán)利要求12所述的計算設(shè)備,其特征在于,經(jīng)過兩次加密的固件圖像首先無需解密通過安全元件被傳送并且被存儲在非易失性存儲器中,然后在啟動時從非易失性存儲器中讀出經(jīng)過兩次加密的固件圖像,并且安全元件使用第二加密密鑰對其進行解密。
15.根據(jù)權(quán)利要求11所述的計算設(shè)備,其特征在于,第一加密密鑰是對于一組計算設(shè)備都相同的群組密鑰(GKl),第二加密密鑰是對于特定版本的固件都相同的群組密鑰(GK2)。
16.一種用于計算設(shè)備的安全元件,該計算設(shè)備包括主機處理器和非易失性存儲器,其特征在于,該安全元件包括:` 主機側(cè)總線接口; 存儲器側(cè)總線接口;以及 加密引擎, 其中,在至少一個接口處接收經(jīng)過兩次加密的固件圖像,經(jīng)過兩次加密的固件圖像是由經(jīng)第一加密密鑰進行第一次加密然后經(jīng)第二加密密鑰進行第二次加密的固件所生成的; 其中,加密引擎被配置為使用第二加密密鑰對經(jīng)過兩次加密的固件圖像進行解密,以產(chǎn)生經(jīng)過加密的固件圖像; 其中,存儲器側(cè)總線接口被配置為將經(jīng)過加密的固件圖像提供給非易失性存儲器,以用于主機處理器執(zhí)行。
17.根據(jù)權(quán)利要求16所述的安全元件,其特征在于,安全元件還被配置為對寫入地址為非易失性存儲器中的代碼塊的數(shù)據(jù)進行解密,并且無需解密傳送寫入地址為非易失性存儲器中的數(shù)據(jù)塊的數(shù)據(jù)。
18.根據(jù)權(quán)利要求17所述的安全元件,其特征在于,當(dāng)從外部固件源接收到經(jīng)過兩次加密的固件圖像時,并不是首先將經(jīng)過兩次加密的固件圖像存儲在非易失性存儲器中,而是由安全元件使用第二加密密鑰對經(jīng)過兩次加密的固件圖像進行解密。
19.根據(jù)權(quán)利要求17所述的安全元件,其特征在于,經(jīng)過兩次加密的固件圖像首先無需解密通過安全元件被傳送并且被存儲在非易失性存儲器中,然后從非易失性存儲器中讀出經(jīng)過兩次加密的固件圖像,并且安全元件使用第二加密密鑰對其進行解密。
20.根據(jù)權(quán)利要求16所述的安全元件,其特征在于,第一加密密鑰是對于一組計算設(shè)備都相同的群組密鑰(GKl),第二加密密鑰是對于特定版本的固件都相同的群組密鑰(GK2)。
21.根據(jù)權(quán)利要求16所述的安全元件,其特征在于,加密引擎被配置為在上電時生成隨機加密密鑰,并且使用該隨機加密密鑰對數(shù)據(jù)進行解密,直到接收到第二加密密鑰。
22.一種用于確認(rèn)計算設(shè)備中存在安全元件的方法,該計算設(shè)備包括主機處理器和非易失性存儲器,其特征在于,該方法包括: 安全元件接收經(jīng)過加密的隨機數(shù),其中該隨機數(shù)是使用加密密鑰被加密的; 從外部密鑰源接收加密密鑰; 安全元件使用加密密鑰對經(jīng)過加密的隨機數(shù)進行解密,以產(chǎn)生經(jīng)過解密的隨機數(shù); 將經(jīng)過解密的隨機數(shù)存儲在計算設(shè)備的非易失性存儲器中; 從計算設(shè)備的非易失性存儲器中讀出經(jīng)過解密的隨機數(shù); 將經(jīng)過解密的隨機數(shù)與隨機數(shù)的存儲版本進行比較,以及 如果經(jīng)過解密的隨機數(shù)與所存儲的隨機數(shù)相匹配,則確認(rèn)存在安全元件。
23.根據(jù)權(quán)利要求22所述的方法,其特征在于,安全元件接收并存儲加密密鑰,其中安全元件位于主機處理器和非易失性存儲器之間。
24.根據(jù)權(quán)利要求23所述的方法,其特征在于,安全元件被配置為對寫入地址為非易失性存儲器中的代碼塊的數(shù)據(jù)進行解密,并且無需解密傳送寫入地址為非易失性存儲器中的數(shù)據(jù)塊的數(shù)據(jù)。
25.根據(jù)權(quán)利要求22所述的方法,其特征在于,加密密鑰是對于一組計算設(shè)備都相同的群組密鑰(GK)。
26.根據(jù)權(quán)利要求22所述的方法,其特征在于,加密密鑰是對于計算設(shè)備的通信會話特定的會話密鑰(SK)。
【文檔編號】G06F21/51GK103679004SQ201310409125
【公開日】2014年3月26日 申請日期:2013年9月10日 優(yōu)先權(quán)日:2012年9月19日
【發(fā)明者】文森特·塞德里克·科爾諾 申請人:Nxp股份有限公司