安全啟動(dòng)是構(gòu)建安全電子系統(tǒng)的基礎(chǔ)。隨著微控制器的工藝幾何形狀不斷縮小,板載嵌入式閃存正逐漸被取代。
電子系統(tǒng)在我們的生活中起著至關(guān)重要的作用。無(wú)論是通過(guò)智能手機(jī)進(jìn)行通信,還是駕駛配備高級(jí)駕駛輔助系統(tǒng)(ADAS)的汽車,我們都依靠電子設(shè)備來(lái)簡(jiǎn)化甚至執(zhí)行我們的日常任務(wù)。這些系統(tǒng)容易被黑客入侵,并且它們連接的事實(shí)放大了威脅。隨著可信情報(bào)采取關(guān)鍵活動(dòng)(例如,個(gè)人醫(yī)療監(jiān)控),網(wǎng)絡(luò)攻擊和破壞的后果增長(zhǎng)到包括身體傷害甚至死亡。在這種新的現(xiàn)實(shí)中,建立能夠抵御此類攻擊的電子系統(tǒng)勢(shì)在必行。
安全啟動(dòng)是構(gòu)建安全電子系統(tǒng)的基礎(chǔ)。隨著微控制器的工藝幾何形狀不斷縮小,板載嵌入式閃存正逐漸被外部NOR閃存所取代。這種體系結(jié)構(gòu)演變通過(guò)公開(kāi)的總線接口、克隆可能性等創(chuàng)建了更大的攻擊面。解決這一日益嚴(yán)重的漏洞的一種方法是使用安全NOR閃存進(jìn)行設(shè)計(jì),以保護(hù)存儲(chǔ),并幫助MCU在啟動(dòng)時(shí)建立安全的信任鏈。
安全啟動(dòng) – 安全系統(tǒng)的基礎(chǔ)
每個(gè)電子系統(tǒng)在通電時(shí)都會(huì)啟動(dòng)。對(duì)于嵌入式系統(tǒng),這通常通過(guò)運(yùn)行存儲(chǔ)在非易失性存儲(chǔ)器中的引導(dǎo)代碼來(lái)實(shí)現(xiàn)。要啟用安全引導(dǎo),系統(tǒng)需要建立信任根,從原始硬件存儲(chǔ)引導(dǎo),并使用原始受信任的引導(dǎo)代碼引導(dǎo)(請(qǐng)參閱圖 1)。
建立信任根
當(dāng)MCU開(kāi)始啟動(dòng)時(shí),它必須從受信任位置運(yùn)行。這通常是通過(guò)小型內(nèi)部ROM或受信任的嵌入式閃存實(shí)現(xiàn)的。此代碼必須是不可變的,以便系統(tǒng)可以從本質(zhì)上信任它。它是信任根層次結(jié)構(gòu)的基礎(chǔ)。從這里,系統(tǒng)可以通過(guò)對(duì)硬件進(jìn)行身份驗(yàn)證并驗(yàn)證存儲(chǔ)內(nèi)容來(lái)將信任擴(kuò)展到外部存儲(chǔ)。
非對(duì)稱密鑰算法。
為了建立信任根,ROM代碼通常依賴于預(yù)先存儲(chǔ)的密鑰。如果使用非對(duì)稱密鑰算法,則此密鑰通常是公鑰。MCU 使用此公鑰來(lái)驗(yàn)證第二階段引導(dǎo)加載程序的簽名,該簽名位于外部閃存設(shè)備上。與實(shí)際引導(dǎo)加載程序一起存儲(chǔ)的簽名是引導(dǎo)加載程序的摘要值,并使用與公鑰以加密方式配對(duì)的私鑰進(jìn)行簽名。如果MCU使用公鑰成功驗(yàn)證引導(dǎo)加載程序簽名,并從當(dāng)前引導(dǎo)加載程序計(jì)算相同的摘要值,則可以確定引導(dǎo)加載程序代碼未被更改。通過(guò)這種方式,建立了信任根。這個(gè)經(jīng)過(guò)驗(yàn)證的第二階段引導(dǎo)加載程序現(xiàn)在可以安全地執(zhí)行。
對(duì)稱密鑰算法
通常,對(duì)稱密鑰算法的執(zhí)行速度比對(duì)稱算法慢。因此,在啟動(dòng)時(shí)間至關(guān)重要的應(yīng)用程序中,用戶通常選擇對(duì)稱密鑰算法。使用對(duì)稱密鑰,主機(jī)MCU和外部閃存共享相同的密鑰。在現(xiàn)場(chǎng)部署之前(即在制造過(guò)程中),可以在安全環(huán)境中提前建立此共享密鑰。隨后,共享密鑰可用于通過(guò)在軟件上使用基于密鑰的哈希值來(lái)快速驗(yàn)證第二階段引導(dǎo)加載程序。

圖 1:建立信任根
從原始硬件存儲(chǔ)啟動(dòng)
如果整個(gè)引導(dǎo)代碼存儲(chǔ)在 MCU 內(nèi)的嵌入式閃存上,則從原始硬件存儲(chǔ)引導(dǎo)可能不是主要問(wèn)題。這是因?yàn)樵诓粨p壞MCU主機(jī)的情況下更換嵌入式閃存是不可能的。然而,隨著行業(yè)向22 nm MCU邁進(jìn),在MCU中嵌入閃存變得越來(lái)越困難。超過(guò)28nm的技術(shù)可能被迫將引導(dǎo)代碼存儲(chǔ)在外部閃存中。因此,要安全引導(dǎo),主機(jī)必須考慮是否已更換外部閃存。
為了防止黑客克隆具有原始內(nèi)存內(nèi)容的硬件,主機(jī)MCU可以在制造過(guò)程中執(zhí)行與引導(dǎo)存儲(chǔ)設(shè)備的配對(duì)過(guò)程。之后,只有此配對(duì)的存儲(chǔ)設(shè)備才能提供用于引導(dǎo)的引導(dǎo)代碼。因此,必須在設(shè)備上使用安全的硬件標(biāo)識(shí)符來(lái)提供此類配對(duì)功能。標(biāo)識(shí)符可以是不能篡改或克隆的非常強(qiáng)的設(shè)備 ID。因此,配對(duì)后的認(rèn)證過(guò)程可以基于這樣的標(biāo)識(shí)符。
使用受信任的原始啟動(dòng)代碼啟動(dòng)
識(shí)別原始硬件存儲(chǔ)后,下一步是驗(yàn)證引導(dǎo)代碼,以確保其未被篡改或修改。有多種方法可以做到這一點(diǎn),每種方法都需要不同的處理能力并提供相應(yīng)的安全級(jí)別。
簡(jiǎn)單保護(hù)
與大多數(shù)傳統(tǒng)的NOR閃存一樣,用戶可以在引導(dǎo)代碼所在的內(nèi)存范圍內(nèi)啟用塊或基于扇區(qū)的保護(hù)。這種保護(hù)還可以防止意外寫(xiě)入并從受保護(hù)區(qū)域擦除。簡(jiǎn)單保護(hù)中沒(méi)有安全元素,因此這種保護(hù)對(duì)于更改代碼的故意攻擊很弱。黑客可以輕松發(fā)出命令來(lái)取消對(duì)區(qū)域的保護(hù)并修改啟動(dòng)代碼。即使保護(hù)方案包含密碼,也可能被復(fù)雜的攻擊所破解,因?yàn)槊艽a本質(zhì)上是靜態(tài)的。
校驗(yàn)和驗(yàn)證
如果校驗(yàn)和是根據(jù)原始引導(dǎo)代碼計(jì)算得出的,則可以在后續(xù)引導(dǎo)中使用它來(lái)驗(yàn)證代碼是否未被修改。此過(guò)程必須由主機(jī)完成;因此,它要求主機(jī)從引導(dǎo)設(shè)備讀取整個(gè)引導(dǎo)代碼并計(jì)算校驗(yàn)和,然后才能開(kāi)始使用它運(yùn)行。請(qǐng)注意,主機(jī)不能依賴內(nèi)存設(shè)備來(lái)提供校驗(yàn)和值,因?yàn)樵诠羝陂g可能會(huì)修改校驗(yàn)和值。
使用加密存儲(chǔ)引導(dǎo)代碼
加密的引導(dǎo)代碼可以使用密鑰存儲(chǔ)在 NOR 閃存上。MCU內(nèi)部可能有硬件,可以在啟動(dòng)時(shí)透明地解密數(shù)據(jù)。由于引導(dǎo)代碼純文本未在總線上公開(kāi),因此無(wú)法進(jìn)行竊聽(tīng)。只要用于加密的密鑰未被泄露,此方法就是安全的。但是,如果加密密鑰泄露,則必須重新刷新外部閃存上的啟動(dòng)代碼內(nèi)容。這個(gè)過(guò)程可能很繁瑣,甚至不可能在現(xiàn)場(chǎng)已有的設(shè)備上實(shí)施。
閃存設(shè)備輔助驗(yàn)證
如果器件提供此類功能,則無(wú)需MCU將整個(gè)引導(dǎo)加載程序讀入RAM進(jìn)行驗(yàn)證,而是將驗(yàn)證任務(wù)卸載到NOR閃存。在引導(dǎo)時(shí)間敏感型系統(tǒng)中,卸載驗(yàn)證任務(wù)可以幫助MCU更快地開(kāi)始執(zhí)行引導(dǎo)加載程序。看門(mén)狗定時(shí)器可用于在驗(yàn)證失敗的情況下重置系統(tǒng)。使用這種方法,MCU可以在閃存設(shè)備驗(yàn)證代碼時(shí)開(kāi)始處理一些緊急任務(wù)。當(dāng)然,在驗(yàn)證完成之前,只能運(yùn)行不安全的函數(shù)。這意味著主機(jī)必須實(shí)現(xiàn)一個(gè)安全的中斷處理程序,該處理程序可以通過(guò)中斷事件從 NOR 閃存獲取驗(yàn)證結(jié)果。
安全非閃存
傳統(tǒng)的NOR閃存能夠提供簡(jiǎn)單的數(shù)據(jù)保護(hù),無(wú)論是否使用密碼。這使得使用傳統(tǒng)的NOR閃存實(shí)現(xiàn)安全啟動(dòng)功能變得困難。賽普拉斯等公司提供的下一代安全NOR閃存集成了安全功能,可實(shí)現(xiàn)更強(qiáng)級(jí)別的安全啟動(dòng)。
設(shè)備識(shí)別復(fù)合引擎
DICE 由可信計(jì)算組 (TCG) 指定,它提供了一種方法,用于根據(jù)每個(gè)設(shè)備的唯一設(shè)備密鑰派生強(qiáng)大且安全的設(shè)備 ID。在存儲(chǔ)引導(dǎo)代碼的設(shè)備上使用 DICE,系統(tǒng)可以在引導(dǎo)時(shí)建立信任根基礎(chǔ)。
DICE 建立在唯一設(shè)備機(jī)密 (UDS) 的基礎(chǔ)上。UDS 是每個(gè)設(shè)備上的真正隨機(jī)數(shù),沒(méi)有任何關(guān)聯(lián)。UDS 在客戶的設(shè)施中生成,并存儲(chǔ)在設(shè)備上的機(jī)密位置,一旦寫(xiě)入,就無(wú)法讀取 UDS。由證書(shū)提供的設(shè)備標(biāo)識(shí)派生自 UDS。因此,一旦MCU與特定的閃存設(shè)備配對(duì),就不可能克隆包含相同UDS的設(shè)備。
安全存儲(chǔ)區(qū)域
安全 NOR 閃存可以配置為在設(shè)備內(nèi)具有多個(gè)獨(dú)立的安全區(qū)域。具有不同訪問(wèn)級(jí)別的區(qū)域可用于存儲(chǔ)可能需要不同安全級(jí)別的固件或軟件。還可以將單個(gè)區(qū)域配置為常規(guī)數(shù)據(jù)的不安全存儲(chǔ)。隨著安全級(jí)別的提高,由于加密措施,來(lái)自設(shè)備的讀取吞吐量會(huì)降低。通過(guò)提供各種訪問(wèn)級(jí)別,用戶可以決定系統(tǒng)每個(gè)部分的性能和安全性之間的權(quán)衡。
如果固件引導(dǎo)加載程序存儲(chǔ)在配置為需要身份驗(yàn)證的區(qū)域中,則用戶可以確保固件未被任何未經(jīng)授權(quán)的各方修改。如果固件包含用戶不希望在SPI總線上公開(kāi)的敏感數(shù)據(jù),則可以將其存儲(chǔ)在需要加密的區(qū)域,以便僅將加密數(shù)據(jù)傳輸?shù)娇偩€上。
快速安全啟動(dòng)
某些應(yīng)用(如汽車系統(tǒng))需要及時(shí)安全啟動(dòng)。在現(xiàn)代復(fù)雜系統(tǒng)中,引導(dǎo)代碼或應(yīng)用軟件可能非常大,以至于MCU需要大量時(shí)間來(lái)讀取和驗(yàn)證整個(gè)軟件。在這種情況下,安全NOR閃存可以在啟動(dòng)期間卸載MCU,以驗(yàn)證存儲(chǔ)在設(shè)備上的軟件。這是通過(guò)在MCU和設(shè)備之間提前存儲(chǔ)共享的秘密信息來(lái)實(shí)現(xiàn)的。在啟動(dòng)過(guò)程中,可以快速驗(yàn)證此共享密鑰,以確保設(shè)備和存儲(chǔ)軟件的原創(chuàng)性。該器件還可以在MCU開(kāi)始處理一些基本任務(wù)時(shí)對(duì)軟件應(yīng)用代碼進(jìn)行身份驗(yàn)證。因此,可以縮短整個(gè)啟動(dòng)時(shí)間,以滿足汽車應(yīng)用的嚴(yán)格要求。
汽車、工業(yè)和通信領(lǐng)域的現(xiàn)代電子系統(tǒng)需要高度安全的閃存存儲(chǔ)。設(shè)計(jì)人員面臨著構(gòu)建能夠抵御網(wǎng)絡(luò)攻擊的安全可靠的系統(tǒng)的挑戰(zhàn)。安全存儲(chǔ)器,如賽普拉斯串行和并行NOR閃存,實(shí)現(xiàn)安全功能,使外部存儲(chǔ)能夠支持快速安全的啟動(dòng)。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
49文章
8893瀏覽量
165926 -
代碼
+關(guān)注
關(guān)注
30文章
4979瀏覽量
74457 -
adas
+關(guān)注
關(guān)注
311文章
2350瀏覽量
212176
發(fā)布評(píng)論請(qǐng)先 登錄
i.MX RT1064使用 DDR 選項(xiàng)時(shí),F(xiàn)lexSPI NOR ROM API get_config寫(xiě)入閃存中固件映像的校驗(yàn)和不正確,如何解決?
i.MXRT1173跨界處理器能支持2GB NOR閃存嗎?
如何使用 SPI NOR 閃存啟動(dòng)電路板?
華邦電子NOR閃存與NAND閃存產(chǎn)品概述
如何進(jìn)一步從SPI NOR閃存啟動(dòng)電路板?
RW612 ROM 引導(dǎo)加載程序卡在 ISP 模式測(cè)試
在SPI NOR閃存中加載文件的偏移地址是多少?
通用SPI接口的NOR Flash存儲(chǔ)器特性
NOR Flash GT25D20E-U串行NOR閃存
SPI NOR Flash和SPI NAND Flash存儲(chǔ)芯片的區(qū)別
將您的引導(dǎo)代碼存儲(chǔ)在安全的NOR閃存中
評(píng)論