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