欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

使用駐留在外部存儲(chǔ)器設(shè)備上的芯片限制的指令用于啟動(dòng)序列修改的系統(tǒng)和方法與流程

文檔序號(hào):11851380閱讀:346來源:國知局
使用駐留在外部存儲(chǔ)器設(shè)備上的芯片限制的指令用于啟動(dòng)序列修改的系統(tǒng)和方法與流程

該申請(qǐng)要求根據(jù)35U.S.C.§119為非臨時(shí)申請(qǐng)的、于2014年4月7日提交的并且名稱為“SYSTEM AND METHOD FOR BOOT SEQUENCE MODIFICATION USING CHIP-RESTRICTED INSTRUCTIONS RESIDING ON AN EXTERNAL MEMORY DEVICE”的美國臨時(shí)專利申請(qǐng)61/976,491的優(yōu)先權(quán),通過引用方式將其整體內(nèi)容并入本文。



背景技術(shù):

便攜式計(jì)算設(shè)備(“PCD”)正在成為人們個(gè)人層面以及專業(yè)層面的必需品。這些設(shè)備可以包括蜂窩電話、便攜式數(shù)字助理(“PDA”)、便攜式游戲機(jī)、掌上型計(jì)算機(jī)、和其它便攜式電子設(shè)備。

PCD與大多數(shù)計(jì)算設(shè)備共同的一個(gè)方面是用于存儲(chǔ)指令和/或數(shù)據(jù)的電子存儲(chǔ)器組件的使用。在PCD中可以存在各種類型的存儲(chǔ)器組件,每一個(gè)被指定用于不同的目的。通常,非易失性只讀存儲(chǔ)器(“ROM”)(諸如掩膜ROM)位于片上系統(tǒng)(“SoC”)上,并用于存儲(chǔ)以第一階段啟動(dòng)裝載程序(“FSBL”)的形式的初始化指令,PCD需要其用于啟動(dòng)、加載操作系統(tǒng)(“OS”)軟件、并將對(duì)PCD的控制轉(zhuǎn)移至該OS。相比之下,非易失性可編程存儲(chǔ)器(“閃速”存儲(chǔ)器)位于SoC的外部并通常用于存儲(chǔ)與啟動(dòng)序列的后續(xù)階段相關(guān)聯(lián)的額外指令,諸如第二階段的啟動(dòng)加載程序(“SSBL”)、第三階段的啟動(dòng)加載程序(“TSBL”)等。如本領(lǐng)域普通技術(shù)人員將理解的,盡管由于在制造時(shí)第一階段的啟動(dòng)加載程序軟件是永久地“燒錄”到不可變的ROM中,該第一階段的啟動(dòng)加載程序軟件是固有地值得信賴的,但后續(xù)啟動(dòng)序列階段的軟件可能處于可信的狀態(tài)或不可信的狀態(tài)。

典型地,在將啟動(dòng)過程從硬編碼在掩模ROM中的指令轉(zhuǎn)換到存儲(chǔ)在閃存中的SSBL指令之前,F(xiàn)SBL驗(yàn)證SSBL的可靠性(authenticity)和完整性。類似地,在將啟動(dòng)序列從SSBL指令轉(zhuǎn)換至下一個(gè)階段之前,SSBL驗(yàn)證與下一啟動(dòng)序列階段相關(guān)聯(lián)的指令的可靠性和完整性。通過使用啟動(dòng)序列的每個(gè)階段來驗(yàn)證下一個(gè)階段的可靠性和完整性,PCD制造商已經(jīng)尋求了保護(hù)合起來包括用于PCD的啟動(dòng)序列的編碼數(shù)據(jù)和指令的完整性。

然而,要注意的是,PCD的終端用戶對(duì)具有修改啟動(dòng)序列的能力的這一需求已經(jīng)導(dǎo)致了一些制造商在啟動(dòng)序列后期階段放棄認(rèn)證和完整性檢查措施。因此,在現(xiàn)有技術(shù)的某些系統(tǒng)中,與啟動(dòng)序列的后期階段相關(guān)聯(lián)的指令的安全性可能容易受到損害。因此,本領(lǐng)域中存在對(duì)系統(tǒng)和方法的需要,所述系統(tǒng)和方法提供對(duì)后期啟動(dòng)序列階段的安全條件下的修改,同時(shí)保護(hù)經(jīng)修改的指令的完整性和可靠性。更具體地,本領(lǐng)域中存在對(duì)可配置的安全啟動(dòng)模式(“CSBM”)系統(tǒng)和方法的需要。



技術(shù)實(shí)現(xiàn)要素:

公開了用于修改與啟動(dòng)序列中的一個(gè)或多個(gè)啟動(dòng)階段相關(guān)聯(lián)的指令和/或數(shù)據(jù)的方法和系統(tǒng)的各種實(shí)施例。在某些實(shí)施例中,可以通過使用機(jī)密密鑰作為生成消息認(rèn)證碼(“MAC”)輸出的MAC算法的輸入,來保證經(jīng)修改的指令和/或數(shù)據(jù)的可靠性和完整性。機(jī)密密鑰可以唯一地與特定的片上系統(tǒng)(“SoC”)模塊相關(guān)聯(lián),并被燒錄到所述SoC中。在一些實(shí)施例中,可以從唯一地與SoC相關(guān)聯(lián)并燒錄到SoC中的另一機(jī)密密鑰導(dǎo)出該機(jī)密密鑰。以這種方式,該方案的實(shí)施例防止對(duì)OEM啟動(dòng)指令的未經(jīng)授權(quán)的修改或替換。

在操作中,一種用于SoC中的啟動(dòng)階段的可配置安全啟動(dòng)模式(“CSBM”)的方法的示例性實(shí)施例識(shí)別來自處理組件的對(duì)存儲(chǔ)在外部存儲(chǔ)器組件中的編碼指令的請(qǐng)求??梢越?jīng)由使用MAC算法和唯一地與SoC相關(guān)聯(lián)并燒錄在SoC中的機(jī)密密鑰來驗(yàn)證編碼指令的可靠性和完整性。可以修改由諸如CPU等處理組件請(qǐng)求的編碼指令和/或數(shù)據(jù),或替換與啟動(dòng)序列的特定啟動(dòng)階段相關(guān)聯(lián)的指令。啟動(dòng)序列的特定啟動(dòng)階段可以例如是第二階段的啟動(dòng)加載程序(“SSBL”)或第三階段的啟動(dòng)加載程序(“TSBL”)或具有存儲(chǔ)在外部存儲(chǔ)器設(shè)備中的代碼的任何啟動(dòng)階段。

接下來,通過使用MAC算法和來自SoC的機(jī)密密鑰,可以在PCD的安全環(huán)境中對(duì)包括相關(guān)聯(lián)的MAC值的編碼指令進(jìn)行認(rèn)證和完整性檢查。如果機(jī)密密鑰成功地與該MAC算法一起使用以根據(jù)經(jīng)編碼的指令生成了與相關(guān)聯(lián)的MAC值匹配的MAC輸出,則可以假定所述指令是可靠的并具有未受損的完整性。隨后,可以將經(jīng)編碼的指令提供給請(qǐng)求處理組件。啟動(dòng)序列可以繼續(xù)。要注意的是,如果向編碼指令應(yīng)用MAC算法和機(jī)密密鑰生成了與關(guān)聯(lián)于這些指令的預(yù)期MAC輸出不一致的MAC輸出,則可以假定編碼指令的完整性或可靠性是無效的,并且啟動(dòng)序列可以終止。

附圖說明

在附圖中,貫穿各視圖,除非另有說明,否則類似的附圖標(biāo)記指代類似的部件。對(duì)于具有字母字符名稱的附圖標(biāo)記,如“102A”或“102B”,字母字符名稱可以區(qū)分存在于同一附圖中的兩個(gè)相同部件或元件。當(dāng)旨在的是附圖標(biāo)記涵蓋所有附圖中具有相同附圖標(biāo)記的所有部件時(shí),可以省略附圖標(biāo)記的字母字符名稱。

圖1是示出了用于實(shí)現(xiàn)可配置安全啟動(dòng)模式(“CSBM”)的方法和系統(tǒng)的以無線電話形式的便攜式計(jì)算設(shè)備(“PCD”)的示例性、非限制性的各方面的功能框圖;

圖2是示出了用于執(zhí)行全部存儲(chǔ)在PCD的啟動(dòng)ROM中的第一階段啟動(dòng)加載程序(“FSBL”)的片上系統(tǒng)的實(shí)施例的功能框圖;

圖3是示出了用于執(zhí)行存儲(chǔ)在PCD的外部存儲(chǔ)器設(shè)備中的啟動(dòng)序列階段的片上系統(tǒng)的實(shí)施例的功能框圖;

圖4是示出了根據(jù)本發(fā)明的實(shí)施例,用于使用可配置安全啟動(dòng)模式(“CSBM”)設(shè)置來執(zhí)行PCD的啟動(dòng)序列階段的片上系統(tǒng)的實(shí)施例的功能框圖;

圖5是示出了用于安全修改駐留在外部存儲(chǔ)器設(shè)備中的與例如第二階段啟動(dòng)加載程序(“SSBL”)的啟動(dòng)階段相關(guān)聯(lián)的指令和/或數(shù)據(jù)的方法的邏輯流程圖;以及

圖6是示出了用于安全修改可能駐留在不可信的外部存儲(chǔ)器設(shè)備中的與第三階段啟動(dòng)加載程序(“TSBL”)相關(guān)聯(lián)的指令和/或數(shù)據(jù)的方法的啟動(dòng)序列邏輯流程圖;以及

圖7是更詳細(xì)地示出了圖6的方法中的、關(guān)于對(duì)駐留在不可信的存儲(chǔ)塊中的經(jīng)修改的代碼和/或數(shù)據(jù)進(jìn)行認(rèn)證和檢查完整性的方法部分的邏輯流程圖。

具體實(shí)施方式

詞語“示例性”在本文中用于意味著充當(dāng)例子、實(shí)例或說明。本文中描述為“示例性”的任意方面不必被解釋為排他性的、優(yōu)選的或比其它方面有利。

在本說明書中,術(shù)語“應(yīng)用”還可以包括具有可執(zhí)行內(nèi)容的文件,例如:對(duì)象代碼、腳本、字節(jié)碼、標(biāo)記語言文件和片。另外,本文中所提及的“應(yīng)用”也可以包括本質(zhì)上不可執(zhí)行的文件,例如可能需要打開的文檔或需要訪問的其他數(shù)據(jù)文件。

在本說明書中,術(shù)語“熔絲(fuse)”意味著指的是由接收對(duì)存儲(chǔ)在存儲(chǔ)器地址(例如掩膜ROM存儲(chǔ)器組件中的地址)處的指令或數(shù)據(jù)的請(qǐng)求的安全控制器進(jìn)行控制的可編程門。如本領(lǐng)域普通技術(shù)人員應(yīng)理解的,熔絲是可以駐留在位于芯片上的非易失存儲(chǔ)器組件中的一次性可編程存儲(chǔ)器。熔絲可以包含本說明書中被稱為“片(patch)”的指令或數(shù)據(jù),或其可以包含指向儲(chǔ)存在可替代地址中的指令或數(shù)據(jù)的指針。類似地,在本說明書中,術(shù)語“軟件熔絲”意味著指的是物理熔絲的僅軟件實(shí)現(xiàn)方式,其可以提供基本上與通常關(guān)聯(lián)于僅物理熔絲的安全等級(jí)等同的安全等級(jí)?!叭劢z”是物理性一次性可編程門,不相類似地,“軟件熔絲”可以采取在可逆或可再編程的外部存儲(chǔ)器設(shè)備(例如,“閃速”存儲(chǔ)器設(shè)備)中的指令和/或數(shù)據(jù)的形式。

在本說明書中,對(duì)“外部存儲(chǔ)器設(shè)備”等的引用指的是更廣泛類別的非易失性(即,電源被移除后保留其數(shù)據(jù))可編程存儲(chǔ)器,并且將不會(huì)限制所公開的方案的范圍。因此,要理解,對(duì)該術(shù)語的使用設(shè)想的是任何可編程只讀存儲(chǔ)器或現(xiàn)場(chǎng)可編程非易失性存儲(chǔ)器適于方案的給定應(yīng)用,其例如但不限于嵌入式多媒體卡(“eMMC”)存儲(chǔ)器、電可擦除可編程只讀存儲(chǔ)器(“EEPROM”)、閃速存儲(chǔ)器等。

如本說明書中所使用的,術(shù)語“組件”、“數(shù)據(jù)庫”、“模塊”、“系統(tǒng)”等旨在指的是計(jì)算機(jī)相關(guān)的實(shí)體,其可以是硬件、固件、硬件和軟件的組合、軟件、或執(zhí)行中的軟件。例如,組件可以是但不限于:在處理器上運(yùn)行的進(jìn)程、處理器、對(duì)象、可執(zhí)行文件、執(zhí)行的線程、程序和/或計(jì)算機(jī)。通過說明的方式,在計(jì)算設(shè)備上運(yùn)行的應(yīng)用和計(jì)算設(shè)備二者都可以是組件。一個(gè)或多個(gè)組件可以駐留在進(jìn)程和/或執(zhí)行的線程內(nèi),并且組件可以位于一個(gè)計(jì)算機(jī)上和/或在兩個(gè)或更多個(gè)計(jì)算機(jī)之間分布。另外,這些組件可以根據(jù)上面存儲(chǔ)有各種數(shù)據(jù)結(jié)構(gòu)的各種計(jì)算機(jī)可讀介質(zhì)來執(zhí)行。這些組件可以例如根據(jù)具有一個(gè)或多個(gè)數(shù)據(jù)分組的信號(hào),通過本地和/或遠(yuǎn)程進(jìn)程的方式進(jìn)行通信(例如,來自一個(gè)組件的數(shù)據(jù)通過信號(hào)的方式與本地系統(tǒng)、分布式系統(tǒng)中的另一組件進(jìn)行交互,和/或跨越網(wǎng)絡(luò)(例如互聯(lián)網(wǎng))與其它系統(tǒng)交互)。

在本說明書中,術(shù)語“中央處理單元(“CPU”)”、“數(shù)字信號(hào)處理器(“DSP”)”、“圖形處理單元(“GPU”)”和“芯片”可以互換使用。另外,CPU、DSP、GPU或芯片可以包括本文中一般稱為“核”的一個(gè)或多個(gè)不同的處理組件。

在本說明書中,術(shù)語“便攜式計(jì)算設(shè)備”(“PCD”)用于描述以有限容量電源(例如電池)操作的任何設(shè)備。雖然電池供電的PCD已經(jīng)使用了幾十年,但可再充電電池中的技術(shù)進(jìn)步以及第三代(“3G”)與第四代(“4G”)無線技術(shù)的出現(xiàn)已使得很多PCD具有多種功能。因此,PCD可以是蜂窩電話、衛(wèi)星電話、尋呼機(jī)、PDA、智能電話、導(dǎo)航設(shè)備、“電子書”或閱讀器、媒體播放器、手持式游戲控制臺(tái)、上述設(shè)備的組合、具有無線連接的膝上型計(jì)算機(jī)等等。

在本說明書中,術(shù)語“自舉(bootstrapping)”、“啟動(dòng)(boot)”、“啟動(dòng)序列”等意味著指的是PCD在引導(dǎo)第一階段啟動(dòng)加載程序(“FSBL”)時(shí)執(zhí)行的操作的初始集合,當(dāng)PCD最初接通電源時(shí)或從省電模式恢復(fù)時(shí)的后續(xù)階段包括但不限于:加載操作系統(tǒng)、對(duì)應(yīng)于例如工廠設(shè)置(factory provision)或正常啟動(dòng)等不同場(chǎng)景的后續(xù)鏡像、以及準(zhǔn)備要使用的各種PCD組件。諸如“啟動(dòng)時(shí)期(phase)”和“啟動(dòng)階段”等術(shù)語意味著指的是本領(lǐng)域普通技術(shù)人員所理解的共同構(gòu)成在時(shí)間上執(zhí)行的一系列啟動(dòng)階段的、整個(gè)啟動(dòng)序列的一部分。啟動(dòng)序列可以以FSBL階段開始,接著是第二階段的啟動(dòng)加載程序(“SSBL”)階段、第三階段的啟動(dòng)加載程序(“TSBL”)階段等。要注意的是,這些方案的示例性實(shí)施例是在修改SSBL或TSBL指令的上下文中描述的;然而,設(shè)想的是,該方案的某些實(shí)施例可以適用于存儲(chǔ)在非易失性存儲(chǔ)器中并需要修改的其它指令和/或數(shù)據(jù)集。

在本說明書中,術(shù)語“隨后的啟動(dòng)階段”或“經(jīng)修改的啟動(dòng)階段”意味著指的是啟動(dòng)序列中的在初始FSBL之后發(fā)生的、包括存儲(chǔ)在一次性可編程并且不可逆的ROM中的可執(zhí)行代碼和/或數(shù)據(jù)的任何階段。因此,諸如第二階段的啟動(dòng)加載程序(“SSBL”)或第三階段的啟動(dòng)加載程序(“TSBL”)或主操作系統(tǒng)啟動(dòng)加載程序(“MOSBL”)等啟動(dòng)階段是可以包括如本文中所描述的可配置的安全啟動(dòng)模式(“CSBM”)方案的實(shí)施例的、示例性的可修改啟動(dòng)階段。因此,在具體的可修改啟動(dòng)階段的上下文中對(duì)任何示例性CSBM實(shí)施例的描述將不會(huì)把實(shí)施例限制為該特定階段。

可配置的安全啟動(dòng)模式的方案尋求在不冒險(xiǎn)安裝未經(jīng)授權(quán)的代碼和/或數(shù)據(jù)(如未經(jīng)授權(quán)的操作系統(tǒng))的情況下為原始的設(shè)備制造商(“OEM”)提供修改與可修改的啟動(dòng)階段相關(guān)聯(lián)的啟動(dòng)指令的能力。如上所解釋的,在將啟動(dòng)序列轉(zhuǎn)移到SSBL之前,啟動(dòng)序列中的初始FSBL階段典型地認(rèn)證SSBL階段的有效性。類似地,SSBL認(rèn)證和驗(yàn)證啟動(dòng)序列中緊隨其后的啟動(dòng)階段,例如TSBL。

然而,要注意的是,最近的趨勢(shì)是,一些后續(xù)的啟動(dòng)階段不需要認(rèn)證,以便在啟動(dòng)過程中執(zhí)行與這些階段相關(guān)聯(lián)的代碼(例如,MOSBL、系統(tǒng)恢復(fù)啟動(dòng)裝載程序等可以不要求認(rèn)證,以使得用戶可以自由地進(jìn)行修改)。這種趨勢(shì)已經(jīng)向OEM呈現(xiàn)出了這樣的困境(complication),即尋求維持他們對(duì)某些啟動(dòng)階段的專有代碼的完整性和可靠性的同時(shí),仍向終端用戶提供引入定制啟動(dòng)指令和/或修改啟動(dòng)指令的原始實(shí)例的能力。本質(zhì)上講,OEM已經(jīng)給予了用戶在由OEM認(rèn)可的固件提供的固有地安全性/完整性與運(yùn)行潛在不安全的未經(jīng)認(rèn)可的操作系統(tǒng)的自由之間進(jìn)行選擇的能力。要注意的是,一旦用戶選擇了由OEM認(rèn)可的固件提供的安全性/完整性,在不出現(xiàn)具有規(guī)避用戶的原始決定的機(jī)會(huì)的攻擊者的情況下扭轉(zhuǎn)該決定可能是一項(xiàng)復(fù)雜的工作。有利的是,CSBM系統(tǒng)和方法向OEM提供了一種在無需引進(jìn)未經(jīng)授權(quán)的代碼的情況下安全地引入經(jīng)修改的啟動(dòng)指令的方式。

CSBM實(shí)施例的進(jìn)一步優(yōu)勢(shì)是,可以通過在外部存儲(chǔ)器設(shè)備中使用軟件熔絲來向可修改的啟動(dòng)階段的鏡像引入經(jīng)授權(quán)的更新,來實(shí)現(xiàn)PCD中新添加的或升級(jí)的功能。更新的鏡像(在改變或升級(jí)PCD的功能時(shí),其可以被加載到外部存儲(chǔ)器設(shè)備中)可以被認(rèn)證并進(jìn)行完整性檢查,以確保其授權(quán)狀態(tài)。

圖1是示出了用于實(shí)現(xiàn)可配置安全啟動(dòng)模式(“CSBM”)的方法和系統(tǒng)的以無線電話形式的便攜式計(jì)算設(shè)備(“PCD”)100的示例性、非限制性的各方面的功能框圖。如所示,PCD 100包括片上系統(tǒng)102,其包括多核中央處理單元(“CPU”)110和耦合在一起的模擬信號(hào)處理器126。如本領(lǐng)域普通技術(shù)人員所理解的,CPU 110可以包括第零核222、第一核224、以及第N核230。此外,如本領(lǐng)域普通技術(shù)人員所理解的,取代于CPU 110,也可以采用數(shù)字信號(hào)處理器(“DSP”)。

一般地,安全控制器101可以由硬件和/或軟件形成,并且可以負(fù)責(zé)接收對(duì)與第一階段的啟動(dòng)加載程序(“FSBL”)相關(guān)聯(lián)的指令和/或數(shù)據(jù)的請(qǐng)求。類似地,CSBM模塊104(在一些實(shí)施例中,其可以包括安全控制器101),可以負(fù)責(zé)監(jiān)測(cè)對(duì)存儲(chǔ)在非易失性外部存儲(chǔ)器組件112中并與隨后的啟動(dòng)階段相關(guān)聯(lián)的可修改指令和/或數(shù)據(jù)的請(qǐng)求。通過使用“軟件熔絲”,CSBM模塊104可以在滿足該請(qǐng)求之前認(rèn)證該可修改代碼和/或數(shù)據(jù)并檢查其完整性。有利的是,使用該軟件熔絲,CSBM模塊104可以在不影響代碼的安全性的情況下提供對(duì)存儲(chǔ)在外部存儲(chǔ)器設(shè)備中的可修改啟動(dòng)階段代碼的修改和/或更新。

如圖1所示,顯示控制器128和觸摸屏控制器130耦合到數(shù)字信號(hào)處理器110。片上系統(tǒng)102外部的觸摸屏顯示器132耦合到顯示器控制器128和觸摸屏控制器130。PCD 100還可以包括視頻編碼器134,其例如逐行倒相制式(“PAL”)編碼器、順序與存儲(chǔ)彩色電視系統(tǒng)(“SECAM”)編碼器、國家電視制式委員會(huì)(“NTSC”)編碼器或任何其它類型的視頻編碼器134。視頻編碼器134耦合到多核CPU 110。視頻放大器136耦合到視頻編碼器134和觸摸屏顯示器132。視頻端口138耦合到視頻放大器136。如圖1中所描繪的,通用串行總線(“USB”)控制器140耦合到CPU 110。另外,USB端口142耦合到USB控制器140。存儲(chǔ)器112可以包括PoP存儲(chǔ)器、高速緩存器116、掩模ROM/Boot ROM 113、一次性可編程(“OTP”)存儲(chǔ)器、外部存儲(chǔ)器設(shè)備115(諸如閃存)等,該存儲(chǔ)器112也可以耦合至CPU110。

用戶身份模塊(“SIM”)卡146也可以耦合至CPU 110。此外,如圖1所示,數(shù)字相機(jī)148可以耦合至CPU 110。在示例性方面中,數(shù)字相機(jī)148是電荷耦合設(shè)備(“CCD”)相機(jī)或互補(bǔ)金屬氧化物半導(dǎo)體(“CMOS”)相機(jī)。

如圖1中進(jìn)一步示出的,立體聲音頻編解碼器150可以耦合到模擬信號(hào)處理器126。另外,音頻放大器152可以耦合到立體聲音頻編解碼器150。在示例性方面中,第一揚(yáng)聲器154和第二揚(yáng)聲器156連接到音頻放大器152。圖1示出了話筒放大器158可以耦合到立體聲音頻編解碼器150。另外,話筒160可以耦合到話筒放大器158。在特定的方面中,調(diào)頻(“FM”)無線調(diào)諧器162可以耦合到立體聲音頻編解碼器150。另外,F(xiàn)M天線164耦合到FM無線調(diào)諧器162。此外,立體聲耳機(jī)166可以耦合到立體聲音頻編解碼器150。

圖1進(jìn)一步指示射頻(“RF”)收發(fā)器168可以耦合到模擬信號(hào)處理器126。RF開關(guān)170可以耦合到RF收發(fā)器168和RF天線172。如圖1中所示,小鍵盤174可以耦合到模擬信號(hào)處理器126。另外,具有話筒176的單聲道耳機(jī)可以耦合到模擬信號(hào)處理器126。此外,振動(dòng)器設(shè)備178可以耦合到模擬信號(hào)處理器126。圖1還示出了電源188(其例如電池),其通過電源管理集成電路(“PMIC”)180耦合到片上系統(tǒng)102。在特定方面,電源188包括可再充電DC電池或者從連接到交流電(“AC”)電源的AC到DC變壓器導(dǎo)出的DC電源。

CPU 110還可以耦合到一個(gè)或多個(gè)內(nèi)部的片上熱傳感器157A以及一個(gè)或多個(gè)外部的片外(off-chip)熱傳感器157B。片上熱傳感器157A可以包括一個(gè)或多個(gè)與絕對(duì)溫度成比例(“PTAT”)的溫度傳感器,其基于垂直PNP結(jié)構(gòu)并且通常專用于互補(bǔ)金屬氧化物半導(dǎo)體(“CMOS”)超大規(guī)模集成(“VLSI”)電路。片外熱傳感器157B可以包括一個(gè)或多個(gè)熱敏電阻。熱傳感器157可以產(chǎn)生壓降,該壓降利用模擬-數(shù)字轉(zhuǎn)換器(“ADC”)控制器103轉(zhuǎn)換為數(shù)字信號(hào)。然而,也可以采用其他類型的熱傳感器157。

所述的觸摸屏顯示器132、視頻端口138、USB端口142、相機(jī)148、第一立體聲揚(yáng)聲器154、第二立體聲揚(yáng)聲器156、話筒160、FM天線164、立體聲耳機(jī)166、RF開關(guān)170、RF天線172、小鍵盤174、單聲道耳機(jī)176、振動(dòng)器178、熱傳感器157B、PMIC 180和電源188在片上系統(tǒng)102的外部。然而,將理解的是,在圖1中的PCD 100的示例性實(shí)施例中被描繪為在片上系統(tǒng)102外部的一個(gè)或多個(gè)這些設(shè)備,在其它示例性實(shí)施例中可以駐留在芯片102上。

在具體的方面中,本文中描述的一個(gè)或多個(gè)方法步驟可以由存儲(chǔ)在存儲(chǔ)器112中的可執(zhí)行指令和參數(shù)來實(shí)現(xiàn)或?qū)崿F(xiàn)為形成安全控制器101和/或其熔絲。此外,安全控制器101、存儲(chǔ)器112、存儲(chǔ)在其中的指令或其組合可以用作用于執(zhí)行本文所描述的一個(gè)或多個(gè)方法步驟的裝置。

圖2是示出了用于執(zhí)行全部存儲(chǔ)在PCD 100的啟動(dòng)ROM 113中的第一階段啟動(dòng)加載程序(“FSBL”)的片上系統(tǒng)的實(shí)施例的功能框圖。如本領(lǐng)域普通技術(shù)人員將理解的,F(xiàn)SBL可以是用于自舉PCD 100的初始指令集,并可以駐留在一次性可編程(“OTP”)ROM 113中。借助于駐留在OTP ROM中,F(xiàn)SBL是固有地安全的,并且相對(duì)于其他片外非易失性可編程存儲(chǔ)器112,(如果不是完全不切實(shí)際的)難于由終端用戶修改。

如圖2圖示中的箭頭205A、205B所指示的,在啟動(dòng)序列期間,地址從CPU 110發(fā)出并且被引導(dǎo)至安全控制器101和包含在啟動(dòng)ROM 113中的掩模ROM 117二者。如由本領(lǐng)域普通技術(shù)人員理解的,CPU 110可以獲取與存儲(chǔ)在掩模ROM 117中的地址處的FSBL相關(guān)聯(lián)的指令和/或數(shù)據(jù)。

如果已經(jīng)修補(bǔ)了存儲(chǔ)在所請(qǐng)求的地址處的特定指令或數(shù)據(jù),即,安全控制器101已經(jīng)針對(duì)該地址設(shè)置了“片有效”位,則由熔絲保持的片數(shù)據(jù)(例如,F(xiàn)0)被轉(zhuǎn)發(fā)(箭頭215)至啟動(dòng)ROM片和多路復(fù)用器模塊(“MUX”模塊)114。MUX模塊114覆寫(override)了從金屬掩膜ROM 117出來的(箭頭210)FSBL數(shù)據(jù),并視情況而定將片代碼或片數(shù)據(jù)而不是存儲(chǔ)在掩模ROM 117中的代碼或數(shù)據(jù)的原始實(shí)例返回至CPU 110(箭頭220)。如果安全控制器101的熔絲沒有保持有效的片數(shù)據(jù),則MUX模塊114向CPU 110返回原始的指令和/或數(shù)據(jù)(箭頭220)。

要注意的是,圖2中示出的片上系統(tǒng)102的特定實(shí)施例由于熔絲(F0...F47)攜帶片指令和數(shù)據(jù)的能力而受限于其修改掩模ROM 117中最初實(shí)例化的FSBL指令和數(shù)據(jù)的能力。即便如此,掩模ROM 117中現(xiàn)存的FSBL代碼的性質(zhì)和安全控制器101的熔絲導(dǎo)致了使得難于修改FSBL代碼的固有的安全等級(jí)。在FSBL階段完成并將啟動(dòng)序列傳送到SSBL指令集之前,F(xiàn)SBL可以認(rèn)證SSBL指令,以確保它們沒有被改變。

圖3是示出了用于執(zhí)行存儲(chǔ)在PCD 100的外部存儲(chǔ)器設(shè)備115中的可修改啟動(dòng)序列階段的片上系統(tǒng)102的實(shí)施例的功能框圖。要注意,設(shè)想的是,外部存儲(chǔ)器設(shè)備115可以是非易失性存儲(chǔ)器組件、易失性存儲(chǔ)器組件或非易失性和易失性存儲(chǔ)器的組合。在圖3圖示中,可以看出,外部存儲(chǔ)器組件115緊密耦合到啟動(dòng)ROM 113,使得完成圖2中描述的FSBL階段時(shí),啟動(dòng)序列可以轉(zhuǎn)移到在外部存儲(chǔ)器組件115中實(shí)例化為軟件的隨后啟動(dòng)階段(箭頭310)。FSBL階段之后的啟動(dòng)階段的示例是第二階段的啟動(dòng)加載程序(“SSBL”),如本領(lǐng)域普通技術(shù)人員將理解的。FSBL可以將來自外部非易失性存儲(chǔ)器(例如閃存)的SSBL加載到例如DRAM。一旦在DRAM中,在啟動(dòng)序列的控制被轉(zhuǎn)移到SSBL之前,SSBL的完整性可以由FSBL檢查。

一旦啟動(dòng)序列從FSBL轉(zhuǎn)移到SSBL,則CPU 110根據(jù)從外部存儲(chǔ)器組件115取回的指令繼續(xù)該啟動(dòng)序列。隨后,SSBL可以將啟動(dòng)序列轉(zhuǎn)移給其后的啟動(dòng)階段,例如第三階段的啟動(dòng)加載程序(“TSBL”)。隨后,CPU 110可以根據(jù)例如TSBL,繼續(xù)從外部存儲(chǔ)器設(shè)備115取回指令(箭頭305)。根據(jù)每個(gè)后續(xù)啟動(dòng)階段,請(qǐng)求(箭頭305)以及返回所請(qǐng)求的指令(箭頭320)的循環(huán)繼續(xù)進(jìn)行直到啟動(dòng)序列終止。

圖4是示出了根據(jù)本發(fā)明的實(shí)施例,用于使用可配置安全啟動(dòng)模式(“CSBM”)設(shè)置來執(zhí)行PCD 100的可修改啟動(dòng)序列階段的片上系統(tǒng)102的實(shí)施例的功能框圖。類似于上述的請(qǐng)求過程,CPU 110可以請(qǐng)求與可修改的啟動(dòng)序列階段(例如SSBL)相關(guān)聯(lián)的指令和/或數(shù)據(jù)(箭頭305)。請(qǐng)求305可以直接送達(dá)存儲(chǔ)器設(shè)備112(箭頭305B)和可配置安全啟動(dòng)模式(“CSBM”)模塊104。隨后,CSBM模塊104可以查詢(箭頭410)在外部存儲(chǔ)器設(shè)備115中存儲(chǔ)為“軟件熔絲”的經(jīng)修改的SSBL指令。如果經(jīng)修改的SSBL指令存在并與消息認(rèn)證碼(“MAC”)相關(guān)聯(lián),則可以通過使用MAC算法以及唯一地與SoC相關(guān)聯(lián)的機(jī)密密鑰由CSBM模塊104來對(duì)其認(rèn)證。

該機(jī)密密鑰可以唯一地與芯片102相關(guān)聯(lián)并被燒錄到芯片102中。由于僅在應(yīng)用于經(jīng)修改的指令的MAC算法生成了與關(guān)聯(lián)與該經(jīng)修改的指令的預(yù)期的MAC完全一致的MAC輸出時(shí)才使用該經(jīng)修改的指令,因此可以保持指令的可靠性和完整性,并保護(hù)其不受到外部攻擊或具有受損代碼的替換的損害。也就是說,盡管未經(jīng)授權(quán)的代碼和經(jīng)授權(quán)的代碼二者可以在PCD的外部存儲(chǔ)器設(shè)備中以未加密且容易執(zhí)行的形式存在,但如果使用燒錄到該SoC中的機(jī)密密鑰成功地驗(yàn)證了其可靠性和完整性,則CSBM實(shí)施例可以僅繼續(xù)執(zhí)行該代碼。以這種方式,可以在不犧牲針對(duì)經(jīng)授權(quán)的啟動(dòng)序列修改的能力的情況下成功地阻撓使用替換代碼和/或數(shù)據(jù)的未經(jīng)授權(quán)的攻擊或阻撓換出SoC上的存儲(chǔ)器元件以努力規(guī)避經(jīng)授權(quán)的啟動(dòng)階段。

返回到圖4圖示,與SSBL代碼的原始實(shí)例相關(guān)聯(lián)的所請(qǐng)求的指令可以經(jīng)由CSBM模塊104返回到CPU 110(箭頭405、420)??商娲兀绻鸆SBM模塊104認(rèn)證了替換SSBL指令(例如不可信的非易失性外部存儲(chǔ)器115),則CSBM模塊104可以覆寫(override)原始指令,并返回經(jīng)授權(quán)的替換指令和/或數(shù)據(jù)(箭頭410、420)。以這種方式,CSBM方案的實(shí)施例可以提供軟件熔絲,制造商可以利用其在不損害啟動(dòng)序列的安全性的情況下修改啟動(dòng)指令。要注意的是,對(duì)于CSBM實(shí)施例來說,軟件熔絲的實(shí)質(zhì)上無限數(shù)量的編程周期呈現(xiàn)了比使用數(shù)量有限的硬件熔絲的現(xiàn)有技術(shù)有利的方面。根據(jù)某些CSBM實(shí)施例的軟件熔絲比使用硬件熔絲的現(xiàn)有技術(shù)方案的其他優(yōu)點(diǎn)可以包括但不限于:對(duì)經(jīng)修改的啟動(dòng)階段指令和/或數(shù)據(jù)的現(xiàn)場(chǎng)可編程能力,以及對(duì)經(jīng)修改的指令和/或數(shù)據(jù)的擴(kuò)展存儲(chǔ)容量。

圖5是示出了用于安全修改與第二階段的啟動(dòng)加載程序(“SSBL”)形式的可修改啟動(dòng)階段相關(guān)聯(lián)的指令和/或數(shù)據(jù)的方法500的邏輯流程圖。盡管示例性方法500以及本文所述的其它示例性實(shí)施例是在SSBL的上下文中描述的,但設(shè)想的是,該方案的某些實(shí)施例可以適用于其他的可修改啟動(dòng)階段,并且因此,該方案的范圍將不限于其對(duì)SSBL或TSBL階段的應(yīng)用。此外,雖然方法500是在安全地修改可修改啟動(dòng)階段的原始實(shí)例的上下文中描述的,但將理解的是,CSBM方案的某些實(shí)施例可以用于完全代替可修改啟動(dòng)階段的原始實(shí)例,而不用冒未經(jīng)授權(quán)的替換的風(fēng)險(xiǎn)或犧牲替換代碼的安全性。

在框505處開始,CSBM模塊104識(shí)別對(duì)與SSBL相關(guān)聯(lián)的指令和/或數(shù)據(jù)的請(qǐng)求。在決定框處510,CSBM模塊104可以確定不可信的存儲(chǔ)設(shè)備(例如非易失性外部存儲(chǔ)器設(shè)備115)中的軟件熔絲是否包含與所請(qǐng)求的指令和/或數(shù)據(jù)相關(guān)聯(lián)的經(jīng)修改的代碼。如果經(jīng)修改的代碼不存在,則運(yùn)行“否”分支到框515,并將來自原始SSBL實(shí)例的所請(qǐng)求的指令和/或數(shù)據(jù)返回到CPU 110。

然而,如果該CSBM模塊104確定與該請(qǐng)求相關(guān)聯(lián)的替換指令和/或數(shù)據(jù)是可用的,則運(yùn)行“是”分支到框520。在框520,可以使用唯一地與SoC相關(guān)聯(lián)并且燒錄到SoC中以作為MAC算法102的輸入的機(jī)密密鑰,來認(rèn)證經(jīng)修改的指令并對(duì)其進(jìn)行完整性檢查。如上所述,可以在安全的環(huán)境中認(rèn)證經(jīng)修改的啟動(dòng)數(shù)據(jù),以便不損害密鑰的機(jī)密性。以這種方式,在不知道密鑰的情況下,未經(jīng)授權(quán)的替換數(shù)據(jù)無法獲得授權(quán),這是因?yàn)榕c替換數(shù)據(jù)相關(guān)聯(lián)的預(yù)期的MAC必須是使用機(jī)密密鑰根據(jù)MAC算法生成的。在不知道機(jī)密密鑰的情況下,與替換數(shù)據(jù)相關(guān)聯(lián)的預(yù)期的MAC值將不等同于使用機(jī)密密鑰和MAC算法由CSBM模塊104生成的MAC輸出。設(shè)想了其他的加密手段,并且本領(lǐng)域普通技術(shù)人員會(huì)想到這些加密手段;然而,還設(shè)想的是,某些CSBM實(shí)施例的新穎方面是,經(jīng)修改的啟動(dòng)代碼的可靠性和完整性驗(yàn)證可以基于唯一地與SoC 102本身相關(guān)聯(lián)并燒錄到SoC本身102中的機(jī)密密鑰。

返回方法500,在決定框525處,驗(yàn)證經(jīng)修改的指令的可靠性和完整性。如果指令是使用與SoC 102相關(guān)聯(lián)的機(jī)密密鑰由CSBM模塊104驗(yàn)證為可靠的(即,由CSBM模塊生成的MAC值104與關(guān)聯(lián)于該指令的MAC值相匹配),則運(yùn)行“是”分支到框530并且經(jīng)修改的指令返回到CPU 110。如果經(jīng)修改的指令未被驗(yàn)證為是可靠的或經(jīng)授權(quán)的,則運(yùn)行“否”分支,且啟動(dòng)序列終止。

圖6是示出了用于安全修改可能駐留在不可信的外部存儲(chǔ)器設(shè)備115中的與第三階段啟動(dòng)加載程序(“TSBL”)相關(guān)聯(lián)的指令和/或數(shù)據(jù)的方法600的啟動(dòng)序列邏輯流程圖。圖6圖示包括以從左至右平移的箭頭605的形式的對(duì)啟動(dòng)序列的時(shí)間表示。方法600開始于啟動(dòng)以FSBL指令形式的啟動(dòng)序列。如上所述,F(xiàn)SBL指令/數(shù)據(jù)可以在可信的、不可逆的ROM設(shè)備中實(shí)例化,如本領(lǐng)域普通技術(shù)人員理解的。

在框610處,執(zhí)行FSBL。在FSBL完成之前,在決定框615處驗(yàn)證隨后的啟動(dòng)階段(即SSBL)的可靠性和完整性。如果SSBL未被認(rèn)證,則運(yùn)行“失敗”分支并且啟動(dòng)序列終止。然而,如果SSBL被認(rèn)證,則運(yùn)行“通過”分支和并且啟動(dòng)序列轉(zhuǎn)換到SSBL啟動(dòng)階段。類似于FSBL階段,SSBL啟動(dòng)階段可以與在可信的存儲(chǔ)器設(shè)備(例如OTP存儲(chǔ)器)中實(shí)例化的指令和/或數(shù)據(jù)相關(guān)聯(lián)。

在框620處,執(zhí)行SSBL。在SSBL完成之前,在決定框625處驗(yàn)證隨后的啟動(dòng)階段(即,TSBL)的可靠性和完整性。如果認(rèn)證失敗,則運(yùn)行“失敗”分支并且啟動(dòng)序列終止。否則,則運(yùn)行“通過”分支并且啟動(dòng)序列轉(zhuǎn)換到TSBL。要注意的是,在由圖6示出的示例性CSBM實(shí)施例600中,利用駐留在不可信的存儲(chǔ)設(shè)備(例如,片外的非易失性或易失性存儲(chǔ)器設(shè)備)中的經(jīng)修改的代碼和/或指令,TSBL可以是可修改的。

在決定框630中,CSBM實(shí)施例可以確定經(jīng)修改的TSBL指令和/或數(shù)據(jù)是否是可用的以及是否在不可信的存儲(chǔ)器中。如果經(jīng)修改的TSBL存儲(chǔ)在可信的存儲(chǔ)器(類似于例如FSBL和SSBL)中,則方法600可以運(yùn)行“是”分支到框645,并執(zhí)行TSBL。然而,如果經(jīng)修改的TSBL駐留在不可信的存儲(chǔ)器中,則方法600可以通過運(yùn)行“否”分支到?jīng)Q定框635來從決定框630繼續(xù)。

在決定框635處,通過使用如上所述的MAC算法和唯一地與SoC相關(guān)聯(lián)并燒錄到SoC中的機(jī)密密鑰,來驗(yàn)證存儲(chǔ)在不可信的存儲(chǔ)塊中的指令和/或數(shù)據(jù)的完整性和可靠性。如果驗(yàn)證失敗,則方法600從決定框635運(yùn)行“失敗”分支并且啟動(dòng)序列終止。然而,如果使用唯一地與SoC 102相關(guān)聯(lián)的密鑰來生成與關(guān)聯(lián)于經(jīng)修改的指令的MAC值相一致的MAC輸出,成功地驗(yàn)證了存儲(chǔ)在不可信的存儲(chǔ)塊中的經(jīng)修改的指令,則方法600運(yùn)行“通過”分支到框640。

在框640,執(zhí)行來自不安全存儲(chǔ)塊的經(jīng)認(rèn)證且經(jīng)完整性檢查的TSBL代碼,并且該方法移動(dòng)至框645,在此處完成可修改的啟動(dòng)階段。啟動(dòng)序列從框645進(jìn)行到例如可能與MOSBL相關(guān)聯(lián)的隨后的啟動(dòng)階段,并且在框650處繼續(xù)。

圖7更詳細(xì)地示出了圖6的方法600中的、關(guān)于對(duì)駐留在不可信的存儲(chǔ)塊705中的經(jīng)修改的代碼和/或數(shù)據(jù)進(jìn)行認(rèn)證和檢查完整性的方法部分的邏輯流程圖。在方法600中的決定框630之前,在框629處讀取與TSBL啟動(dòng)階段相關(guān)聯(lián)的指令和/或數(shù)據(jù)的存儲(chǔ)塊。如上所述,如果存儲(chǔ)塊是能夠包含未經(jīng)授權(quán)的代碼和/或數(shù)據(jù)的不可信的存儲(chǔ)塊,則方法600前進(jìn)至決定框635。在圖7圖示中,方法600中的以決定框635開始的一部分可以在安全的環(huán)境內(nèi)進(jìn)行,以便維持機(jī)密密鑰的機(jī)密性。如果在框635處成功驗(yàn)證了經(jīng)修改的代碼和/或數(shù)據(jù)的可靠性和完整性,則運(yùn)行“通過”分支到框639并且啟動(dòng)階段使用經(jīng)修改的指令和/或數(shù)據(jù)繼續(xù)至框640。

如果在決定框635處可靠性和完整性檢查失敗,則運(yùn)行“失敗”分支到?jīng)Q定框636,并且方法600尋求確定該代碼是否與制造目的相關(guān)聯(lián)。如果不是,則運(yùn)行“否”分支并且啟動(dòng)序列終止。如果該代碼與制造目的相關(guān)聯(lián),則運(yùn)行“是”分支到框637并且創(chuàng)建默認(rèn)指令塊。該方法移動(dòng)到框639,并且啟動(dòng)階段繼續(xù)至框640。

在本說明書中描述的過程或過程流的某些步驟自然地先于其他步驟,以便本發(fā)明如所描述的那樣運(yùn)作。然而,如果本發(fā)明所描述的步驟的順序或序列不改變本發(fā)明的功能,則本發(fā)明不受限于所描述的步驟的順序。也就是說,要認(rèn)識(shí)到的是,在不脫離本發(fā)明的范圍和精神的情況下,一些步驟可以在其它步驟之前、之后或并行(基本上同時(shí)地)執(zhí)行。在一些實(shí)例中,在不背離本發(fā)明的情況下,可以省略或不執(zhí)行某些步驟。此外,諸如“此后”、“然后”、“接下來”等詞語,不旨在限制這些步驟的順序。這些詞語僅用于貫穿對(duì)示例性方法的描述來引導(dǎo)讀者。

另外,基于例如本說明書中的流程圖和相關(guān)聯(lián)的描述,編程領(lǐng)域的普通技術(shù)人員能夠無困難地編寫計(jì)算機(jī)代碼或識(shí)別適當(dāng)?shù)挠布?或電路來實(shí)現(xiàn)所公開的發(fā)明。因此,對(duì)特定的程序代碼指令集或詳細(xì)的硬件設(shè)備的公開不應(yīng)認(rèn)為是對(duì)充分理解如何做出和使用本發(fā)明是必要的。在以上描述中并且連同附圖來更詳細(xì)地解釋了所要求保護(hù)的計(jì)算機(jī)實(shí)現(xiàn)的過程的創(chuàng)造性功能,所述附圖可以示出各種過程流程。

在一個(gè)或多個(gè)示例性方面中,所描述的功能可以用硬件、軟件或其任意組合來實(shí)現(xiàn)。如果在軟件中實(shí)現(xiàn),可以將這些功能存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上或者作為計(jì)算機(jī)可讀介質(zhì)上的一個(gè)或多個(gè)指令或代碼進(jìn)行傳輸。計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)二者,其中通信介質(zhì)包括便于從一個(gè)地方向另一個(gè)地方傳送計(jì)算機(jī)程序的任何介質(zhì)。存儲(chǔ)介質(zhì)可以是計(jì)算機(jī)可以存取的任何可用介質(zhì)。舉例而言,但非做出限制,這種計(jì)算機(jī)可讀介質(zhì)可以包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲(chǔ)器、磁盤存儲(chǔ)器或其它磁存儲(chǔ)設(shè)備、或者能夠用于攜帶或存儲(chǔ)具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并可以由計(jì)算機(jī)進(jìn)行存取的任何其它介質(zhì)。

因此,雖然已經(jīng)詳細(xì)地說明并描述了所選擇的方面,但應(yīng)當(dāng)理解的是,可以在不脫離如由以下權(quán)利要求所限定的、本發(fā)明的精神和范圍的情況下,在其中進(jìn)行各種替換和改變。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
金秀| 甘洛县| 安陆市| 宣汉县| 新泰市| 东乡县| 唐山市| 九寨沟县| 昌都县| 格尔木市| 库车县| 阿克陶县| 阆中市| 崇礼县| 丰宁| 全椒县| 潍坊市| 吴堡县| 北流市| 哈巴河县| 开化县| 华安县| 宁蒗| 鄂州市| 平利县| 犍为县| 洪洞县| 广宁县| 海淀区| 漳浦县| 万山特区| 平谷区| 天等县| 板桥市| 镇远县| 新郑市| 马关县| 田东县| 海安县| 汪清县| 横峰县|