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