在嵌入式系統(tǒng)或物聯(lián)網(wǎng)項目上工作的工程師必須與影響設(shè)計各個方面的性能和成本之間的權(quán)衡作斗爭。安全性與處理速度和存儲能力一樣,也是這個方程的一部分。
當涉及到在任何成本限制的應(yīng)用程序中強制執(zhí)行安全性時,需要在應(yīng)用程序所需的保護和滿足目標市場成本概況的設(shè)備的性能之間取得平衡??梢院苋菀椎丶僭O(shè),一個集成了某些安全機制的單片機將提供所需的保護。
但是,硬件、固件和系統(tǒng)環(huán)境相互作用的方式有很多,可能導致不可預見的漏洞。開發(fā)人員需要意識到不同形式的嵌入式系統(tǒng)安全硬件支持之間的區(qū)別。理想的情況是,硬件平臺將包含幾個被設(shè)計用來保護固件、數(shù)據(jù)和通信的元素,這些元素一起提供信任的基礎(chǔ)。
制造商通常會將這些功能整合到一個模塊中,將其集成到集成到iot設(shè)備中的主處理器或系統(tǒng)芯片上?;蛘?連接到主處理器串口的安全元素提供所需的功能。
硬件供應(yīng)商必須做出平衡成本和功能的選擇,這將影響開發(fā),如果開發(fā)商不考慮實現(xiàn)的細節(jié),可能會對安全性造成超出預期的影響。即使在同一個產(chǎn)品家族中,對硬件安全的支持也會有很大差異。
例如,ESP32SOC被用于許多國際物流平臺。有些設(shè)備將配備單獨的安全元件,如微芯片的ACT608。一些版本的esp32包括一個芯片控制器,管理設(shè)備的安全基礎(chǔ)設(shè)施。這種芯片上控制器通常包括一些功能,比如帶有電源支持的數(shù)字簽名外圍設(shè)備,這提高了設(shè)備的安全性。
電子引信技術(shù)有助于永久存儲安全關(guān)鍵數(shù)據(jù),如加密密鑰或設(shè)備專用信息,使攻擊者更難破壞系統(tǒng)。然而,有些平臺既不包括芯片控制器,也不包括單獨的安全元素,這意味著需要在軟件中實現(xiàn)更多的安全裝置。
基本保護
多年來,微控制器提供了基本的內(nèi)存保護,例如保護固件和配置內(nèi)存,防止應(yīng)用程序代碼非法寫入。另一個常見的保護機制,通常是保護知識產(chǎn)權(quán)(IP),是加密固件,通常存儲在閃存中。這保護了基本的反向工程技術(shù),并提供了一種保護數(shù)據(jù)的方法,如數(shù)據(jù)加密鍵,應(yīng)該是私有的。
單片機通常會在芯片配置存儲器中存儲存儲解密鍵,可能會使用電子流體來保證不可變性和強保護。在休息時,使用該密鑰加密的數(shù)據(jù)位于閃存中。這保護它不被試圖直接讀取該塊的攻擊者使用。
然而,一旦加密閃存塊中的敏感數(shù)據(jù)和鍵被移到內(nèi)存中,它們就可以以純文本形式提供。如果攻擊者能夠探測正在運行的設(shè)備的內(nèi)存,那么副本的存在會使密鑰比那些有更先進的安全措施的設(shè)備更容易受到攻擊。
即使對于閃存加密的基本選項,開發(fā)者的選擇也會影響安全性的效果。從歷史上看,設(shè)備制造商使用的加密密鑰對產(chǎn)品家族的所有成員都是共同的。如果一個設(shè)備上的鑰匙被破壞了,那么這個家庭中的其他所有人都同樣脆弱。理想的做法是,OEM和積分器使每個設(shè)備的內(nèi)存加密鍵具有獨特性。它們還需要遵循更高級別函數(shù)的各個鍵。
單個設(shè)備級別的管理對于一個多站點服務(wù)的整體安全至關(guān)重要。當設(shè)備進入網(wǎng)絡(luò)與云交換數(shù)據(jù)時,運營商和用戶需要確保所有連接的設(shè)備都是合法的,沒有受到損害。
在線服務(wù)核實使用一套數(shù)字證書和使用公用鑰匙基礎(chǔ)設(shè)施(公鑰基礎(chǔ)設(shè)施)實現(xiàn)的簽名的設(shè)備的身份和合法性。每個設(shè)備都需要自己獨特的鑰匙和證書,最好在制造時插入,以便向其他合法用戶顯示,它不是假冒的,而且正在運行經(jīng)批準的固件。
固件檢查
有效的證書本身不能保證單個設(shè)備沒有受到損害。但是,它們確實支持安全或被測量的引導等進程。這些過程為設(shè)備運行中的固件的真實性提供了很高的信心。安全引導使用數(shù)字證書和簽名來檢查設(shè)備接收的任何軟件更新的來源。它確保只使用有效的圖像來引導設(shè)備準備就緒。
如果使用安全引導執(zhí)行的檢查有任何失敗,則設(shè)備將拒絕固件,如果可用,將嘗試加載已知的好版本。除非有有效的固件可用,否則該設(shè)備無法啟動并連接到保護網(wǎng)絡(luò)其余部分的iot。
安全引導依賴于是否存在引導加載器映像,用戶在沒有所需憑證的情況下無法更改該映像。為了實現(xiàn)這一點,硬件平臺將引導加載器與根鍵和證書一起存儲在一次性可編程存儲器中,以提供不可變性。
為了最大限度地防止發(fā)生變化,制造商將使用電子流體實現(xiàn)此存儲器。然而,一些設(shè)備卻保留了一部分閃光燈,一旦保險絲被引爆,就可以在或者是被引爆的情況下使用。
原則上,安全引導是可能的,沒有進一步的硬件支持.然而,完全基于軟件的啟動管理流程無法防止運行時的干擾,因為攻擊者可以篡改引導加載程序代碼可能需要加載到的SRAM或DRAM中才能運行。
基于硬件的安全和非安全操作模式分離的微控制器提供了更高程度的保護。一個例子是ARM的信任區(qū),它以不同的形式在嵌入式處理器的皮層A和皮層M系列中實現(xiàn)。信任區(qū)提供基于安全屬性限制對外圍設(shè)備和內(nèi)存區(qū)域訪問的能力。
只有在I/O或內(nèi)存訪問命令的屬性到位的情況下,才應(yīng)該授予訪問權(quán)限。默認情況下,處理器以其安全模式啟動,提供對安全區(qū)域的訪問。當處理器完成啟動過程并離開安全模式時,它將拒絕返回安全區(qū)域,除非代碼通過身份驗證檢查。原則上,像信任區(qū)這樣的系統(tǒng)可以成功地保護引導過程。
然而,需要注意確保攻擊者沒有機會以純文本形式窺探數(shù)據(jù)。例如,在解密之前,處理器應(yīng)該將加密的數(shù)據(jù)加載到內(nèi)部的單極存儲器中,以避免內(nèi)存-Bus的窺探。
硬件安全元素提供了一種方式,可以為引導和加密過程提供更大的安全性,無論是否有安全的執(zhí)行模式。它最大的保證來自于它能夠?qū)崿F(xiàn)一種信任的基礎(chǔ),這種信任可以保護存儲在非易失性內(nèi)存中的鍵和證書。每一個涉及密鑰的境外交易都要加密。
安全元件可在單片機或嵌入式處理器系統(tǒng)中實現(xiàn),例如在ESP32上的數(shù)字簽名單元或在多核SOCS上的完全可信平臺模塊(TPM),或部署在外部設(shè)備中,例如ACT-608,并通過直接串口訪問。
即使在有安全人員在場的情況下,如果不直接處理,一些攻擊仍有可能發(fā)生。一是回滾攻擊。這是攻擊者試圖加載一個舊的但有效的軟件映像的地方,其中包含一個可以被利用的漏洞。反回滾使用設(shè)備的安全存儲器來保持一個只能單調(diào)地增加的計數(shù)器。一些IC供應(yīng)商使用硬件和固件相結(jié)合的方式支持這一點。
解決硬件依賴
雖然硬件供應(yīng)商可能提供大致相似的功能,但在標準的實施和支持方面往往存在重大差異。例如,設(shè)計了一些安全的元素,以便與AES一起為公鑰基礎(chǔ)設(shè)施執(zhí)行RSA協(xié)議。其他人將使用橢圓曲線技術(shù),甚至是更新的技術(shù)。
為了訪問和控制這些功能,開發(fā)人員需要理解和使用不同的API,這增加了總體項目時間,此外還需要進行必要的分析,以評估安全模型中每個硬件和軟件組件的重要性。
解決這些復雜設(shè)備安全問題的一種方法是部署一個與不同的硅架構(gòu)接口的通用安全框架。它決定了目標平臺上的哪些硬件特性,例如是否存在信任執(zhí)行模式或TPM,并使用這些特性來交付一個框架,為這些特性的組合實現(xiàn)盡可能高的安全性。
雖然硬件供應(yīng)商在其產(chǎn)品上實現(xiàn)安全特性時有許多選擇,其中每一個都對固件和生命周期管理產(chǎn)生連鎖影響,但是一個全面的集成平臺使開發(fā)人員能夠在一個共同的編程接口上工作,并充分利用他們使用的每一個設(shè)備上實現(xiàn)的硬件安全特性。