用于軟件防回滾恢復(fù)的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明總體設(shè)及軟件安全性,尤其設(shè)及在電子設(shè)備上替換防回滾機(jī)制。
【背景技術(shù)】
[0002] 在許多領(lǐng)域中,電子設(shè)備(尤其是便攜式電子設(shè)備)是現(xiàn)代生活的無所不在的一 部分。示例包括無線通信終端(例如,蜂窩式無線電話、"智能手機(jī)"等)、衛(wèi)星導(dǎo)航接收機(jī)、 計算設(shè)備(例如,筆記本電腦和上網(wǎng)本電腦、個人數(shù)字助理等)、醫(yī)療和環(huán)境監(jiān)控設(shè)備、W及 許多其它設(shè)備。對于許多電子設(shè)備的功能起關(guān)鍵作用的是軟件,軟件抵抗入侵、欺騙等的安 全性是持續(xù)關(guān)注的問題。
[0003] 該關(guān)注可W通過考慮移動電信終端中的軟件安全性問題而被說明(注意該類電 子設(shè)備出于討論的目的僅僅是代表性的,且本發(fā)明的實施方式不限于電信應(yīng)用)。作為一 個示例,在許多領(lǐng)域中用于移動電信終端銷售的商業(yè)模式為電子設(shè)備的成本由電信服務(wù)提 供商來貼補(bǔ),作為規(guī)定的最小持續(xù)時間(例如,兩年)的服務(wù)合同的一部分。該模式提供了 對電子設(shè)備內(nèi)的軟件"入侵"或變更的誘因,從而允許用戶獲得來自不同的服務(wù)提供商的服 務(wù)。作為另一示例,電子設(shè)備制造商可設(shè)計和構(gòu)造包括多種功能的單個設(shè)備,且出售該設(shè)備 的不同模型,不同模型通過借助軟件啟動不同級別的功能而區(qū)分。該形成入侵設(shè)備中的軟 件W啟動消費(fèi)者已經(jīng)支付的功能之外的功能的誘因。對于入侵還存在許多其它誘因。因此, 軟件安全性是電子設(shè)備設(shè)計和制造的重要方面。
[0004] 為了能夠具有軟件安全性,通常存在負(fù)責(zé)驗證其它可信軟件組件的可信計算基 (TrustedComputingBase,TCB)。該TCB通常包括加密功能、和存儲在一次性可編程(One TimeProgramm油le,0T巧存儲器中的數(shù)據(jù)(例如,隨機(jī)數(shù)、巧片專用密鑰、公共加密密鑰或 私人加密密鑰等)。OTP存儲器,也被稱作一次寫入存儲器,包括可烙鏈的陣列或其它技術(shù), 一旦被寫入,即一旦位元的狀態(tài)被改變,就不能夠使其改變回去。在OTP存儲器中的數(shù)據(jù)僅 可W通過(永久地)翻轉(zhuǎn)額外的位元(即,它能夠被增加)而被變更。
[0005] 許多電子設(shè)備包括"安全的"或"可信的"執(zhí)行能力。在該種情況下,TCB通常包含 可信執(zhí)行環(huán)境(TrustedExecution化vironment,TE巧的部分??尚艌?zhí)行環(huán)境可在分離的 處理器上實施(用于富OS的一個(或多個)通用處理器和用于T邸的一個安全處理器使 集成在一個巧片上的多個核在物理上分離,或使上述多個核分離),或者富執(zhí)行環(huán)境和可信 執(zhí)行環(huán)境可為單個處理器的分離的操作模式。ARM"'處理器架構(gòu)的TR.USTZONE'k'特征 為該架構(gòu)的示例。在可信執(zhí)行環(huán)境中執(zhí)行的應(yīng)用被稱作可信應(yīng)用。另外,可信執(zhí)行環(huán)境核 巧和可信應(yīng)用從安全存儲器執(zhí)行,從富OS及其應(yīng)用不可訪問該安全存儲器。
[0006] 為了確保電子設(shè)備上軟件的適當(dāng)安全性,軟件安全性必須從最初開機(jī)過程開始時 就被實施;否則入侵的開機(jī)裝載器或者操作系統(tǒng)軟件會接管和執(zhí)行入侵的代碼。因此,安全 開機(jī)是實現(xiàn)電子設(shè)備中的其它安全特征的基礎(chǔ)。安全開機(jī)通?;跇?biāo)準(zhǔn)的公共密鑰基礎(chǔ)設(shè) 施(PublicIfeyIn化astruc化re,PKI)方案。使用私人密鑰對各個受保護(hù)的軟件組件進(jìn)行 數(shù)字簽名,且使用在設(shè)備中可用的相對應(yīng)的公共密鑰對該軟件組件進(jìn)行驗證。安全開機(jī)過 程從包含驗證核的ROM代碼開始。存在可用于ROM代碼驗證的根公共密鑰。該密鑰可存在 于非易失性存儲器中,且通過將該公共密鑰的哈希值存儲在OTP存儲器中而與設(shè)備綁定。 根公共密鑰通常用于驗證第一開機(jī)裝載器(即,通過ROM代碼裝載的第一軟件組件)和/ 或是一組公共密鑰用于驗證其它軟件組件。第一開機(jī)裝載器然后裝載且驗證下一個開機(jī)裝 載器,其然后裝載且驗證下一個軟件組件,依此類推。安全開機(jī)過程保證了可信SW組件的 裝載和驗證。根據(jù)設(shè)備,該可包括全部設(shè)備軟件或者部分設(shè)備軟件。作為示例,對于現(xiàn)代化 移動手機(jī),安全開機(jī)過程的適當(dāng)執(zhí)行通常保證了全部代碼的裝載和驗證,該全部代碼裝載 至(包括)富操作系統(tǒng)內(nèi)核(例如,Linux)、調(diào)制解調(diào)器軟件、系統(tǒng)控制處理器固件、可信執(zhí) 行環(huán)境軟件、和可信應(yīng)用。
[0007] 軟件防回滾,也稱作軟件降級預(yù)防,通常是在安全開機(jī)期間進(jìn)行的驗證的一部分。 防回滾為用W防止包含安全漏洞的較舊版本的軟件組件被重新安裝到設(shè)備上且在設(shè)備上 執(zhí)行的機(jī)制,在該設(shè)備上已安裝有其中的漏洞已經(jīng)修正的較新版本的該軟件組件。出于軟 件防回滾目的,常見的是使用安全修訂號,只有當(dāng)安全敏感漏洞被修正時才增大修訂號。該 安全修訂通常與軟件組件的版本號不同。
[000引對于各個軟件組件,已經(jīng)安裝在設(shè)備上的最高安全修訂號必須被存儲在設(shè)備上。 該可W采用許多方式來進(jìn)行。在本領(lǐng)域中已知的一種技術(shù)為對于TCB將安全修訂號存儲在 OTP存儲器中。每次增加安全修訂時,烙絲被燒斷(即,OTP位元翻轉(zhuǎn))W增大存儲的安全 修訂號。然后在裝載和執(zhí)行之前針對該些存儲的安全修訂號檢查軟件組件。盡管該對于具 有一個或僅幾個軟件組件的單用途設(shè)備非常有效,但它沒有擴(kuò)展到經(jīng)常運(yùn)行復(fù)雜的操作系 統(tǒng)(例如Linux)的現(xiàn)代化的多用途設(shè)備。該種系統(tǒng)執(zhí)行大量的單個的軟件組件,且將每個 軟件組件的安全修訂號存儲在OTP存儲器中是成本非常高的方案。
[0009] 在本領(lǐng)域中已知的更有成本效率的方案是維護(hù)包含對于已經(jīng)安裝在設(shè)備上的各 個受保護(hù)的軟件組件的最高安全修訂的表。該"防回滾表"被存儲在非易失性存儲器(例 如嵌入式多媒體卡(embeddedMultiMediaCarcUeMMC)存儲器)中。存在兩種用W安全地 存儲防回滾表的方式。
[0010] 第一種,可將防回滾表存儲在非可信軟件也可訪問的非易失性存儲器中。在該情 況下,為了防止對該表的操作,利用僅可用于TCB的唯一密鑰(例如,從對于處理器或設(shè)備 唯一的隨機(jī)值推導(dǎo)出的且存儲在安全OTP存儲器中的密鑰)對該表進(jìn)行完整保護(hù),例如使 用基于哈希的消息認(rèn)證碼,例如HMAC-SHA-256。防回滾表本身具有相關(guān)聯(lián)的版本號,該版本 號例如被存儲在OTP存儲器中。每當(dāng)防回滾表被更新W反映對于一個或多個軟件組件的較 晚的安全修訂號時,通過TCB增大表版本號,且更新存儲的版本,例如通過翻轉(zhuǎn)OTP位元。
[0011] 第二種,可將防回滾表存儲在可保證表的完整性的非易失性存儲器中。例如,可利 用eMMC的回放保護(hù)內(nèi)存塊巧巧layProtectedMemoirBlock,RPMB)區(qū)域。對于RPMB的 完整性保護(hù)的讀取和寫入使用eMMC和TCB之間共享的密鑰,從而保證非可信軟件不能夠篡 改數(shù)據(jù)。
[0012] 在設(shè)備具有可信執(zhí)行環(huán)境的情況下,T邸通常為TCB的一部分。T邸提供用W保護(hù)TCB的密鑰和加密功能免受非可信SW(例如富OS應(yīng)用或甚至富OS本身)侵襲的方式。對 于其它不具有TEE的不太高級的設(shè)備,可利用其它HW機(jī)制來保護(hù)密鑰和加密功能。例如, 暫時的讀寫鎖定可W保護(hù)對于SW防回滾來說至關(guān)重要的OTP區(qū)域,直到下次開機(jī),W阻止 訪問在保護(hù)SW防回滾表中或在受保護(hù)的與RPMB的通信中所使用的密鑰。另一示例為使該 密鑰根本不能從SW讀取、而只能通過執(zhí)行加密操作的HW塊來讀取。在該情況下,可存在該 HW塊的暫時鎖定機(jī)制,從而防止在加密操作中使用該密鑰,直到下次開機(jī)。第=示例為使用 CPU子系統(tǒng)的MPU/MMU功能來使非可信軟件與可信軟件分離,并且阻止非可信SW訪問OTP 和加密的HW。
[0013]當(dāng)軟件組件被裝載和驗證時,TCB針對在防回滾表中的對應(yīng)的安全修訂號檢查各 個軟件組件的安全修訂號;裝載具有舊的安全版本的軟件組件的嘗試導(dǎo)致失敗的開機(jī)。當(dāng) 設(shè)備處于認(rèn)證狀態(tài)時,例如通過OTP存儲器的初始設(shè)置,在制造設(shè)備期間將防回滾表初始 化并激活。在全部的軟件和配置數(shù)據(jù)被裝載到設(shè)備上后,OTP烙絲可被燒斷W使設(shè)備離開 認(rèn)證狀態(tài)并進(jìn)入操作狀態(tài),在操作狀態(tài)中,僅在裝載具有更高安全修訂的更新的SW組件之 后,由TCB更新防回滾表(W及其它安全參數(shù))。
[0014] 在設(shè)備使用期期間,非易失性存儲器可被破壞,使得防回滾表丟失或被破壞(意 味著其完整性不能夠被驗證)。該將阻止設(shè)備開機(jī),該是因為在開機(jī)過程中早期裝載的可信 軟件組件將無法成功進(jìn)行防回滾驗證。在該種情況下,需要對該表重新初始化。然而,在開 機(jī)過程期間,處理防回滾表的驗證和重新初始化(包括寫入非易失性存儲器)的軟件未裝 載直到接近末期。目P,許多軟件組件(裝載器、驅(qū)動器等)必須在沒有防回滾保護(hù)的情況下 被裝載,W便修復(fù)或替換防回滾表。該產(chǎn)生了巨大的安全風(fēng)險,已知的防回滾技術(shù)不能夠規(guī) 避該風(fēng)險。
[0015] 提供本文的背景部分使得本發(fā)明的實施方式處于技術(shù)和操作背景下,W幫助本領(lǐng) 域技術(shù)人員理解它們的范圍和效用。除非清晰地如此指出,否則文中的陳述不會由于包括 在背景部分中而被認(rèn)為是現(xiàn)有技術(shù)。
【發(fā)明內(nèi)容】
[0016] 下文給出了