編者按:隨著(zhù)物聯(lián)網(wǎng)設備應用的激增,確保這些設備的安全是人們一直要持續關(guān)注的問(wèn)題;在某種程度上,若要在工業(yè)物聯(lián)網(wǎng) (IIoT) 和任務(wù)關(guān)鍵型應用中采用聯(lián)網(wǎng)設備,安全挑戰可能會(huì )成為阻礙;這是因為如果攻擊成功,就可能導致企業(yè)和個(gè)人數據泄露。確保物聯(lián)網(wǎng)應用安全可能是一項非常艱巨的任務(wù),但在現實(shí)中,物聯(lián)網(wǎng)設備的安全可以建立在一些相對簡(jiǎn)單的原則之上,并使用硬件安全設備加以支撐。只要遵循完善的安全實(shí)踐,這些問(wèn)題就能得到解決。本系列文章由多個(gè)部分組成,文中將提供一些實(shí)用的指導,以幫助開(kāi)發(fā)人員確保從一開(kāi)始就遵循相關(guān)的最佳實(shí)踐。第 1 部分探討底層安全設計的加密算法。第 2 部分探討私鑰、密鑰管理和安全存儲在安全物聯(lián)網(wǎng)設計中所起的作用。第 3 部分(文本)檢查安全處理器的內建機制,以緩和物聯(lián)網(wǎng)設備所面臨的其他類(lèi)型威脅。第 4 部分明確并展示如何在高級處理器中應用安全機制,幫助確保進(jìn)行必要的隔離,以緩解對物聯(lián)網(wǎng)設備運行時(shí)環(huán)境進(jìn)行的攻擊。第 5 部分介紹如何在將物聯(lián)網(wǎng)設備連接到物聯(lián)網(wǎng)云資源時(shí),通過(guò)采用更高級別安全措施,讓這些設備實(shí)現持續的物聯(lián)網(wǎng)安全。 通過(guò)組合使用,基于硬件的加密技術(shù)與安全存儲可提供實(shí)現安全物聯(lián)網(wǎng) (IoT) 設計所需的基本功能。但是,物聯(lián)網(wǎng)設備一旦部署,就會(huì )面臨多種威脅,這些威脅會(huì )破壞這些設備,發(fā)起即時(shí)攻擊,或造成更微妙和高級的持續性威脅。 本文描述了開(kāi)發(fā)人員應如何使用基于底層安全機制構建的信任根來(lái)增強物聯(lián)網(wǎng)設備的安全性,這個(gè)信任根在 Maxim Integrated、Microchip Technology、NXP Semiconductors 和 Silicon Labs 等廠(chǎng)商推出的安全處理器上可為軟件執行提供一個(gè)可信任的環(huán)境。 什么是信任根,為什么需要信任根? 加密方法和安全密鑰是確保任何互聯(lián)設備安全性的關(guān)鍵促進(jìn)因素。如本系列文章的第 1 部分和第 2 部分所述,它們提供了更高層次協(xié)議所用的基本機制,以保護數據和通信。要保護系統本身,需要開(kāi)發(fā)人員解決可能影響嵌入式系統中的系統操作和軟件執行的漏洞。 在典型的嵌入式系統中,由于電源故障或關(guān)鍵軟件異常導致的系統復位最終會(huì )引起軟件引導過(guò)程,從非易失性存儲器重新加載固件映像。通常,軟件重新引導是一種重要的安全機制,用于恢復被意外或有意打破穩定性的系統功能。在互聯(lián)系統中,黑客使用各種黑帽工具來(lái)破壞軟件,而安全專(zhuān)家通常建議通過(guò)重新引導,來(lái)應對影響軟件執行的入侵行為。例如,FBI 在 2018 年曾建議消費者和企業(yè)主重新啟動(dòng)路由器,以阻止所發(fā)生的大規模黑客攻擊活動(dòng)。 實(shí)際上,重新引導并不能保證系統完整性。在固件映像被盜用的情況下重新引導后,系統仍處于黑客的控制之下。為了緩和此類(lèi)威脅,開(kāi)發(fā)人員需要確保其軟件在信任鏈上運行,而該信任鏈則基于引導時(shí)建立的信任根所構建,并延伸至軟件執行環(huán)境的所有層面。能否達到此安全級別關(guān)鍵取決于,確保使用可信的固件開(kāi)始引導過(guò)程。 驗證固件映像進(jìn)行安全引導 在嵌入式系統中,主機處理器將固件映像從閃存加載到主存儲器中并開(kāi)始執行(或者直接從具有芯片內執行 (XIP) 功能的閃存開(kāi)始執行)。如果黑客已盜用固件映像,則引導過(guò)程將會(huì )導致系統被劫持。 為了在引導之前驗證固件的完整性,開(kāi)發(fā)人員使用了一個(gè)從供應鏈早期開(kāi)始的代碼簽名過(guò)程。在安全的設施內,通過(guò)使用橢圓曲線(xiàn)數字簽名算法 (ECDSA) 之類(lèi)的加密穩健算法創(chuàng )建的私鑰-公鑰對,可對系統的固件映像進(jìn)行簽名。盡管私鑰從未離開(kāi)過(guò)設施,但系統公鑰會(huì )隨系統一起發(fā)運。在引導過(guò)程中,處理器會(huì )在使用映像之前運用此系統公鑰來(lái)驗證固件簽名。 當然,在上述過(guò)程中,公鑰本身容易受到攻擊,而且在擴展時(shí),這會(huì )使系統固件容易遭到未經(jīng)授權的替換。如果公鑰在嵌入式系統中繼續不受保護,黑客可能會(huì )用自己生成的私鑰-公鑰對中的公鑰來(lái)替換它。如果他們以自己擁有的相關(guān)私鑰簽名的惡意固件替換了系統的固件映像,則被盜用的固件簽名將會(huì )通過(guò)驗證過(guò)程,并繼續引導過(guò)程,從而導致系統被劫持。 因此,安全系統依賴(lài)于在安全設施內的安全元件中預配置的有效公鑰。Maxim Integrated 的 DS28C36 和 Microchip Technology 的 ATECC608A 這類(lèi)安全 IC 不僅可以安全地存儲傳統安全元件,還能安全地執行 ECDSA 等認證算法進(jìn)行固件簽名認證。 例如,在引導之前,主機處理器可通過(guò)串行接口將固件發(fā)送到 DS28C36。DS28C36 隨即使用先前在安全設施中預配置的系統公鑰,來(lái)驗證固件簽名是否確實(shí)由同一安全設施中的關(guān)聯(lián)私鑰創(chuàng )建。最后,DS28C36 將驗證結果發(fā)送至主機處理器,如果簽名有效,主機處理器會(huì )繼續加載固件映像(圖 1)。 ![]() 圖 1:開(kāi)發(fā)人員可以使用 Maxim Integrated 的 DS28C36 這類(lèi)安全 IC 來(lái)驗證固件簽名,以防止主機處理器引導被盜用的固件。(圖片來(lái)源:Maxim Integrated) 更安全的引導過(guò)程可保護固件映像,以消除密鑰或映像被盜用造成的問(wèn)題。通過(guò)使用安全存儲和加密加速器,有效的安全引導功能已內置到越來(lái)越多的處理器中,包括 Silicon Laboratories 的 Gecko 系列 2 處理器、NXP 的 LPC55S69JBD100、Maxim Integrated 的 MAX32520 和 Microchip Technology 的 ATSAML11D16A 等等。利用這些功能,此類(lèi)安全處理器可以提供所需的信任根,以創(chuàng )建用于系統和應用軟件執行的可信環(huán)境。 通過(guò)安全引導提供信任根 此類(lèi)安全處理器提供安全引導選項,旨在確保信任根所依托的固件映像的完整性。例如,Silicon Laboratories 的 EFR32MG21A 和 EFR32BG22 Gecko 系列 2 處理器分別通過(guò)基于硬件安全元件和虛擬安全元件 (VSE) 的多級引導過(guò)程來(lái)構建此信任根(圖 2)。 ![]() 圖 2:Silicon Laboratories 的 Gecko 系列 2 EFR32MG21A 處理器在多級引導過(guò)程的第一級使用集成的硬件安全元件(如本圖所示),而 EFR32BG22 則使用虛擬安全元件來(lái)啟動(dòng)多級引導過(guò)程。(圖片來(lái)源:Silicon Laboratories) 在 EFR32MG21A 中,專(zhuān)用處理器內核提供加密功能以及用于安全密鑰存儲的硬件安全元件。在此專(zhuān)用功能的支持下,處理器使用只讀存儲器 (ROM) 中存儲的代碼發(fā)起引導過(guò)程,以驗證第一級引導程序 (FSB) 代碼。完成驗證后,FSB 代碼即會(huì )運行,接著(zhù)又會(huì )驗證第二級引導程序 (SSB) 的代碼簽名。引導序列繼續執行經(jīng)驗證的 SSB,后者進(jìn)而會(huì )驗證應用程序代碼的簽名,而該代碼通常包括系統級代碼和更高級別的應用程序代碼。最后,經(jīng)驗證的應用程序代碼運行,系統根據應用程序的要求繼續執行操作。 由于此過(guò)程從 ROM 代碼開(kāi)始,而且僅運行經(jīng)驗證的 FSB、SSB 和應用程序代碼,因此該方法將產(chǎn)生經(jīng)驗證的信任鏈來(lái)執行代碼。由于此信任鏈中的第一環(huán)依賴(lài)于無(wú)法修改的 ROM 代碼,因此信任鏈中后續的每一環(huán)都會(huì )延續此可信環(huán)境。與此同時(shí),這種方法還允許開(kāi)發(fā)人員安全地更新應用程序代碼,甚至是第一級和第二級引導程序代碼。只要每個(gè)代碼包都提供經(jīng)驗證的簽名,可信環(huán)境就能保持完好。 使用信任根提供這種安全引導的處理器,通常支持多種模式和選項。例如,Silicon Laboratories 的 Gecko 系列 2 處理器提供了更強大的基于證書(shū)的安全引導功能。 證書(shū)可用于常規公鑰基礎結構 (PKI) 事務(wù)處理,包含公鑰以及對一個(gè)或多個(gè)相關(guān)證書(shū)的引用,這些證書(shū)最終指向證書(shū)頒發(fā)機構 (CA) 授予的根證書(shū)。此鏈中的每個(gè)證書(shū)均用于驗證其下面的證書(shū),從而形成基于值得信賴(lài)的 CA 的信任鏈。在傳輸層安全性 (TLS) 的認證階段,瀏覽器依靠此信任鏈來(lái)確認 Web 服務(wù)器的身份。嵌入式系統可采用相同的方法使用證書(shū)來(lái)確認引導程序或應用程序代碼源的身份。在這里,按照前述方式執行多級引導過(guò)程,但需要額外驗證與每一級相關(guān)的證書(shū)(圖 3)。 ![]() 圖 3:Silicon Laboratories 的 Gecko 系列 2 處理器通過(guò)在引導過(guò)程每一級的簽名驗證期間驗證所用公鑰的證書(shū),來(lái)增強系統安全性。(圖片來(lái)源:Silicon Laboratories) NXP 的 LPC55S69JBD100 等其他處理器支持多種不同的固件映像選項。除了簽名的固件映像外,這些處理器還支持使用可信計算組織推出的設備標識符組合引擎 (DICE) 行業(yè)標準的引導映像。第三個(gè)選項允許開(kāi)發(fā)人員將映像存儲在支持 PRINCE 加密的處理器閃存特殊區域內,其中 PRINCE 加密是一種低延遲的分組加密,能夠在小得多的硅面積內達到與其他加密相當的安全強度。在 LPC55S69JBD100 中可實(shí)現 PRINCE 加密,這種技術(shù)能對處理器專(zhuān)用的 PRINCE 閃存區中存儲的加密代碼或數據執行實(shí)時(shí)解密。由于解密使用的密鑰僅供 PRINCE 加密引擎訪(fǎng)問(wèn),因此該解密過(guò)程仍然是安全的。實(shí)際上,這些密鑰由 LPC55S69JBD100 的物理不可克隆功能 (PUF) 生成的密鑰加密密鑰 (KEK) 提供保護。(有關(guān) PUF 和 KEK 用法的更多信息,請參見(jiàn)第 2 部分。) 這種方法使開(kāi)發(fā)人員能夠存儲更多固件映像,而這是在避免“封閉”設備的風(fēng)險情況下,為物聯(lián)網(wǎng)設備提供固件無(wú)線(xiàn) (FOTA) 更新方法所需的功能。如果處理器只能使用一個(gè)位置來(lái)存儲固件映像,則有缺陷的固件映像會(huì )將處理器置于不確定或鎖定的狀態(tài),從而鎖定或阻塞設備。通過(guò)將固件映像存儲在 LPC55S69JBD100 中啟用了 PRINCE 的閃存區內,開(kāi)發(fā)人員可使用回退策略,即如果新版本引導進(jìn)入無(wú)法工作狀態(tài),則還原固件的上一個(gè)正常工作版本。 由于所有這些新固件映像都必須通過(guò)基礎引導過(guò)程中所需的簽名驗證檢查,所以開(kāi)發(fā)人員可充分利用安全 FOTA,在不影響系統或其信任鏈的情況下添加新功能或修復錯誤。 總結 系統和應用級別的安全性需要一個(gè)只允許授權軟件運行的執行環(huán)境。盡管代碼簽名驗證是實(shí)現此類(lèi)環(huán)境的基本功能,但安全系統還需要利用更全面的功能集來(lái)構建必要的信任鏈,以確保執行的是受信任的軟件。這些可信環(huán)境的基礎在于信任根,而信任根可通過(guò)安全處理器所支持的安全引導機制提供。使用此類(lèi)處理器,開(kāi)發(fā)人員可以實(shí)現安全的物聯(lián)網(wǎng)設備,使其能夠抵御企圖破壞系統中的軟件執行或完全劫持系統的攻擊行為。 來(lái)源:Digi-Key 作者:Stephen Evanczuk |