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