在設(shè)計嵌入式系統(tǒng)時,考慮安全性已經(jīng)成為許多行業(yè)的需要。將設(shè)備連接到互聯(lián)網(wǎng)的驅(qū)動器允許對系統(tǒng)進行遠程攻擊。想要構(gòu)建安全嵌入式系統(tǒng)的嵌入式開發(fā)人員必須確保他們的設(shè)備實現(xiàn)信任鏈。在這篇文章中,我們將探討什么是信任鏈,以及嵌入式系統(tǒng)信任鏈中的關(guān)鍵元素。
什么是信任鏈?
信任鏈是一系列身份驗證和完整性檢查,可確保只有經(jīng)過批準的軟件才能在系統(tǒng)上運行——對于嵌入式系統(tǒng),開發(fā)信任鏈需要開發(fā)人員分階段啟動他們的系統(tǒng)。每個階段都使用加密密鑰、證書和哈希來驗證以下加載的軟件組件未被修改(完整性)以及它們來自開發(fā)人員(身份驗證)。
多年來,在運行Linux的應(yīng)用處理器上工作的嵌入式軟件開發(fā)人員一直采用多階段引導(dǎo)過程。然而,使用微控制器、實時操作系統(tǒng)或裸機系統(tǒng)的嵌入式開發(fā)人員最初可能會發(fā)現(xiàn)這非常不同。一般來說,建立信任鏈看起來像下圖:
信任根——The Root of Trust (RoT)
每個系統(tǒng)都必須有一個錨,形成信任的基礎(chǔ)。然后,該錨點用于驗證系統(tǒng)上加載的每一個軟件。RoT是用作信任鏈中第一個實體的不可變過程或身份。一個好的RoT利用硬件來建立信任錨。例如,加密PUF是從微控制器的RAM中生成安全密鑰對的軟件算法。
一般來說,RoT是密鑰和證書的集合,它們驗證運行在系統(tǒng)上的軟件是完整的和經(jīng)過認證的。RoT通常還會為系統(tǒng)提供安全服務(wù),如安全存儲、證明和應(yīng)用程序分區(qū)。
當(dāng)系統(tǒng)首次啟動時,它會建立RoT。接下來,RoT將認證和驗證安全引導(dǎo)加載程序的完整性。首先,引導(dǎo)裝載程序有公司創(chuàng)建的數(shù)字簽名。接下來,嵌入式開發(fā)人員使用在引導(dǎo)裝載程序上計算的散列來驗證應(yīng)用程序簽名。成功的驗證表明,引導(dǎo)加載程序是由該公司未經(jīng)修改就放在那里的。
安全引導(dǎo)加載程序——Secure Bootloaders
安全引導(dǎo)加載程序有幾個用途。首先,它們用于認證和驗證在它之后加載的安全和用戶應(yīng)用程序的完整性。如果身份驗證或完整性失敗,引導(dǎo)加載程序?qū)⒉粫虞d這些應(yīng)用程序。該設(shè)備將不會正常運行,而是將在安全引導(dǎo)加載程序中保持安全狀態(tài)。通常,安全和用戶應(yīng)用將被驗證并加載到存儲器中以執(zhí)行它們的主要功能。
其次,引導(dǎo)加載程序也用于更新安全和用戶應(yīng)用程序代碼。當(dāng)軟件更新時,引導(dǎo)裝載程序檢索新版本,存儲它,然后驗證和確認它。例如,如果新的應(yīng)用程序來自公司并且有效,引導(dǎo)裝載程序?qū)?zhí)行固件更新。
安全應(yīng)用程序(安全代碼域)——Secure App
有幾種方法可以創(chuàng)建硬件隔離的執(zhí)行環(huán)境。首先,嵌入式開發(fā)人員可以使用多核微控制器。一個核心用于安全執(zhí)行環(huán)境,而另一個核心是用戶應(yīng)用程序。接下來,開發(fā)人員可以使用單核微控制器,這些微控制器使用Arm的Trustzone等技術(shù)。最后,開發(fā)人員可以利用內(nèi)存保護單元(MPU)在其應(yīng)用中提供不同的隔離級別。
用戶應(yīng)用程序(非安全代碼域)——User App
在大多數(shù)嵌入式設(shè)備的信任鏈實現(xiàn)中,用戶應(yīng)用程序區(qū)域是最后一個環(huán)節(jié)。用戶應(yīng)用程序通常在引導(dǎo)期間被驗證和認證,但是是不安全的。用戶應(yīng)用程序是通常與外界交互的代碼,遵循嵌入式開發(fā)人員常用的軟件模型。如果發(fā)生安全事故,預(yù)計會發(fā)生在用戶應(yīng)用程序代碼中。雖然有人可能會立即認為這是不可接受的,但理解用戶代碼中的確切內(nèi)容是非常重要的。
用戶數(shù)據(jù)、密鑰和任何需要保護的東西都不會放在用戶應(yīng)用程序區(qū)域。用戶應(yīng)用是與安全執(zhí)行環(huán)境分離的硬件隔離的執(zhí)行環(huán)境。如果有人設(shè)法注入代碼或進入這個區(qū)域,他們將無法訪問設(shè)備的任何秘密。
結(jié)論
安全性對于各種各樣的嵌入式系統(tǒng)已經(jīng)變得至關(guān)重要。在大多數(shù)情況下,公司不能再忽視設(shè)備的安全性需求。雖然安全性初看起來令人望而生畏,但是有各種各樣的工具和示例可供嵌入式開發(fā)人員用來保護他們的嵌入式系統(tǒng)。每個安全系統(tǒng)的一個關(guān)鍵組件是建立信任鏈,該信任鏈利用信任根、安全引導(dǎo)加載程序,并將應(yīng)用程序分為安全和非安全執(zhí)行空間。