現(xiàn)場(chǎng)固件更新是基于微控制器(基于 MCU)的應(yīng)用中越來(lái)越受歡迎的功能。這些更新可以將新的固件映像下載到設(shè)備的內(nèi)存中,從而為產(chǎn)品制造商提供一種有效的方式來(lái)為已經(jīng)部署在現(xiàn)場(chǎng)的產(chǎn)品提供服務(wù)和支持。物聯(lián)網(wǎng) (IoT) 時(shí)代正在推動(dòng)嵌入式世界的連接性增加,這使其成為當(dāng)今連接產(chǎn)品最重要的功能之一,只要它們是安全的。
物聯(lián)網(wǎng)開(kāi)發(fā)人員在部署固件更新機(jī)制時(shí)通常會(huì)考慮更快的上市時(shí)間和更低的產(chǎn)品維護(hù)成本,因?yàn)樵摴δ茉试S他們分階段推出功能、啟用/禁用現(xiàn)場(chǎng)設(shè)備上的特性或功能、修復(fù)固件錯(cuò)誤后產(chǎn)品已發(fā)布,減少對(duì)昂貴技術(shù)支持的需求,并實(shí)現(xiàn)更好的整體最終用戶體驗(yàn)。但是,如果沒(méi)有適當(dāng)?shù)陌踩胧?,此功能可能?huì)被濫用,成功利用的后果可能是災(zāi)難性的,從知識(shí)產(chǎn)權(quán) (IP) 盜竊和產(chǎn)品克隆一直到對(duì)已部署系統(tǒng)的未經(jīng)授權(quán)控制。例如,
固件更新及其漏洞
圖 1 顯示了一個(gè)典型的固件更新過(guò)程。這些步驟包括:
產(chǎn)品制造商在受信任的環(huán)境中創(chuàng)建初始固件映像并將其加載到設(shè)備中。
該產(chǎn)品與初始固件一起部署到現(xiàn)場(chǎng)。
當(dāng)需要更新固件時(shí),產(chǎn)品制造商會(huì)創(chuàng)建一個(gè)新的固件映像。
制造商通過(guò)不受信任的通信渠道將新固件映像直接發(fā)送給最終用戶/技術(shù)人員或產(chǎn)品。
新固件被加載到現(xiàn)場(chǎng)的設(shè)備上。
在“傳輸”階段,當(dāng)新固件通過(guò)不受信任的通信通道傳輸時(shí),或在“固件加載”階段,當(dāng)新固件被下載到現(xiàn)場(chǎng)設(shè)備上時(shí),潛在的安全威脅是顯而易見(jiàn)的。
正在下載到設(shè)備的新固件映像對(duì)應(yīng)于產(chǎn)品制造商的 IP 和目標(biāo)資產(chǎn)。對(duì)該資產(chǎn)的威脅包括:
將固件二進(jìn)制映像逆向工程為匯編或更高級(jí)別的工程語(yǔ)言,以分析其功能和內(nèi)容。
產(chǎn)品克隆,將來(lái)自產(chǎn)品制造商的固件映像加載到未經(jīng)授權(quán)的設(shè)備上。
更改產(chǎn)品制造商分發(fā)的固件。
將未經(jīng)授權(quán)的固件映像加載到設(shè)備上,這可能對(duì)應(yīng)于產(chǎn)品制造商提供的具有已知錯(cuò)誤或未經(jīng)授權(quán)方創(chuàng)建的代碼的較舊固件版本,或不適合特定設(shè)備的固件(固件降級(jí))。
中斷固件更新過(guò)程,使得固件僅部分更新,導(dǎo)致設(shè)備無(wú)法服務(wù)。
顯然,上述威脅可能對(duì)產(chǎn)品制造商、服務(wù)提供商和最終用戶造成災(zāi)難性后果,因此表明嵌入式設(shè)計(jì)人員迫切需要考慮采取措施提高固件更新機(jī)制的整體安全性。
設(shè)計(jì)工程師的安全固件更新注意事項(xiàng)
圖 2 顯示了網(wǎng)絡(luò)連接系統(tǒng)的示例表示。在這種情況下,新固件映像從產(chǎn)品制造商(例如,新功能推出或固件錯(cuò)誤修復(fù))或服務(wù)提供商(例如,啟用/禁用產(chǎn)品中的功能或服務(wù))傳輸?shù)阶詈缶钟蚓W(wǎng)或廣域網(wǎng) (LAN/WAN) 上的節(jié)點(diǎn),并且可能涉及來(lái)自最終用戶應(yīng)用程序的身份驗(yàn)證(例如,通過(guò)移動(dòng)設(shè)備和 Web 應(yīng)用程序)以執(zhí)行固件更新。

【圖2 | 安全固件更新包括由用于網(wǎng)絡(luò)通信的接口協(xié)議規(guī)定的安全措施,以及確保固件映像在數(shù)據(jù)進(jìn)入網(wǎng)絡(luò)之前得到保護(hù)的應(yīng)用程序級(jí)安全性。]
為物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)固件更新功能的嵌入式系統(tǒng)工程師不僅需要了解需要保護(hù)的資產(chǎn)和潛在威脅,還需要了解其系統(tǒng)的功能和限制,尤其是與成本、性能或功耗有關(guān)的系統(tǒng)受約束的系統(tǒng)。作為起點(diǎn),必須考慮一種有效的安全解決方案,該解決方案將密碼算法和協(xié)議級(jí)措施的正確組合結(jié)合在一起。
加密算法提供了一種保護(hù)內(nèi)容隱私的方法,同時(shí)確保其真實(shí)性和完整性。并非所有加密算法都是相同的,但它們基于四個(gè)加密原語(yǔ),這些原語(yǔ)處理機(jī)密性、完整性和真實(shí)性 (CIA) 三元組的一個(gè)或多個(gè)組件。這些原語(yǔ)是:
加密和解密:加密是將數(shù)據(jù)(明文)轉(zhuǎn)換為隨機(jī)且無(wú)意義的東西(密文)的過(guò)程,而解密則執(zhí)行相反的工作。這些原語(yǔ)提供機(jī)密性和真實(shí)性,并用于防止固件的逆向工程。
單向函數(shù):諸如哈希之類的函數(shù)是一種數(shù)學(xué)算法,在一個(gè)方向上很容易計(jì)算,但在另一個(gè)方向上卻很難。它們用于獲取數(shù)字“指紋”,以確保固件在傳輸?shù)浆F(xiàn)場(chǎng)之前的完整性。
數(shù)字簽名:用于檢測(cè)消息在簽名后是否被更改,從而不僅提供完整性,還提供身份驗(yàn)證。這些使用公鑰加密來(lái)生成只能使用制造商的公鑰正確解密的簽名。
消息驗(yàn)證碼 (MAC):類似于數(shù)字簽名,只是它使用對(duì)稱密鑰來(lái)加密和解密制造商生成的哈希。如果接收方解密的哈希值與為該消息計(jì)算的哈希值匹配,則該消息是有效的。通過(guò)這種方式,MAC 提供了真實(shí)性和完整性。
影響密碼算法選擇的一些因素包括性能要求、系統(tǒng)的安全需求、內(nèi)存占用、能源消耗以及安全社區(qū)(例如美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(National Institute of Standards and Technology)等組織對(duì)算法的可靠性和接受程度。 NIST))。
除了加密算法之外,還應(yīng)考慮針對(duì)固件降級(jí)等威脅的協(xié)議級(jí)措施。如前所述,固件降級(jí)是一種攻擊,其中將舊的有缺陷的固件映像(加密或未加密)重新發(fā)送到設(shè)備以將其恢復(fù)到易受攻擊的狀態(tài)。固件和密鑰的版本檢查可以確保在更新期間僅對(duì)新版本進(jìn)行編程。
攻擊者還可以使用多種方法(斷電、物理連接故障、傳輸過(guò)程中的位翻轉(zhuǎn)等)中斷固件更新過(guò)程。這可能導(dǎo)致設(shè)備執(zhí)行不完整或無(wú)效的固件映像,使其無(wú)用或處于受損狀態(tài)。為了解決這種情況,固件更新機(jī)制需要確保不執(zhí)行不完整或損壞的映像,并在必要時(shí)將系統(tǒng)恢復(fù)為有效的、以前使用過(guò)的映像。
用于連接嵌入式系統(tǒng)的加密引導(dǎo)加載程序
固件更新通常由設(shè)備引導(dǎo)加載程序處理。引導(dǎo)加載程序是駐留在設(shè)備內(nèi)存中的一段代碼,能夠?qū)?yīng)用程序內(nèi)存空間進(jìn)行重新編程。然而,尋找或創(chuàng)建具有網(wǎng)絡(luò)連接系統(tǒng)所需安全性的嵌入式引導(dǎo)加載程序可能具有挑戰(zhàn)性。例如,系統(tǒng)可能需要更新加密密鑰的能力,因此加密功能和引導(dǎo)加載程序協(xié)議應(yīng)支持在固件更新過(guò)程中升級(jí)密鑰并提高網(wǎng)絡(luò)安全性。引導(dǎo)加載程序協(xié)議還應(yīng)支持驗(yàn)證固件更新版本和數(shù)據(jù)包跟蹤,以檢查是否接收到特定固件更新映像的所有數(shù)據(jù)包。
如前所述,加密算法的選擇至關(guān)重要,因?yàn)樗粌H設(shè)置系統(tǒng)的安全級(jí)別,而且還影響其性能、內(nèi)存占用和功耗??紤]到這一點(diǎn),AES-CCM 代表了嵌入式引導(dǎo)加載程序的最佳解決方案。AES-CCM 是一種基于兩個(gè)加密原語(yǔ)的加密引導(dǎo)加載程序 (Crypto-Bootloader):用于加密的 AES 計(jì)數(shù)器模式 (AES-CTR) 和用于完整性和真實(shí)性驗(yàn)證的密碼塊鏈接消息驗(yàn)證碼 (CBC-MAC)。由于 AES-CCM 提供的低開(kāi)銷,它在提高安全性和低內(nèi)存占用、高吞吐量和高效功耗之間提供了完美平衡(圖 3)。

【圖3 | AES-CCM 算法用于加密固件數(shù)據(jù),例如固件版本號(hào)、數(shù)據(jù)包編號(hào)和數(shù)據(jù)包總數(shù)。此信息與對(duì)稱數(shù)據(jù)加密密鑰一起輸入算法,以加密數(shù)據(jù)并生成加密 MAC 標(biāo)簽,該標(biāo)簽代表德州儀器 Crypto-Bootloader 核心命令的一部分。]
選擇實(shí)現(xiàn)引導(dǎo)加載程序的 MCU 也不容忽視。設(shè)計(jì)人員應(yīng)考慮具有硬件加密引擎、內(nèi)存保護(hù)單元 (MPU)、低功耗外設(shè)和內(nèi)存技術(shù)等功能的 MCU,這些技術(shù)允許快速讀/寫(xiě)周期以提高吞吐量。德州儀器 (Texas Instruments)的MSP430FR5969 MCU就是此類 MCU 的一個(gè)示例,它集成了 AES-256 協(xié)處理器以加速加密算法、MPU 和 MPU-IP 封裝 (MPU-IPE) 模塊,以增強(qiáng)對(duì)存儲(chǔ)器區(qū)域的保護(hù)和封裝,如以及高達(dá) 64 KB 的 FRAM 內(nèi)存,可實(shí)現(xiàn)高性能和超低功耗。在 MSP430FR5969 器件上實(shí)施的 Crypto-Bootloader 解決方案封裝了此處概述的大部分安全功能和注意事項(xiàng)。
保護(hù)物聯(lián)網(wǎng)固件
總之,越來(lái)越多的網(wǎng)絡(luò)嵌入式產(chǎn)品正在創(chuàng)造潛在的高級(jí)安全威脅,使現(xiàn)場(chǎng)固件更新更容易受到遠(yuǎn)程攻擊和利用。因此,嵌入式設(shè)計(jì)人員必須考慮通過(guò)提供適當(dāng)安全級(jí)別的解決方案來(lái)保護(hù)其固件更新機(jī)制,同時(shí)平衡物聯(lián)網(wǎng)產(chǎn)品的成本、功耗和性能限制。
作者:Bhargavi Nisarga ,Luis Reynoso
審核編輯:郭婷
-
處理器
+關(guān)注
關(guān)注
68文章
20339瀏覽量
255348 -
嵌入式
+關(guān)注
關(guān)注
5210文章
20680瀏覽量
337374 -
德州儀器
+關(guān)注
關(guān)注
123文章
2048瀏覽量
145568
發(fā)布評(píng)論請(qǐng)先 登錄
探秘C8051F96x:超低功耗MCU的卓越之選
STM32L15x系列超低功耗MCU深度剖析:特性、應(yīng)用與設(shè)計(jì)考量
AD4129 - 8:超低功耗16位Sigma - Delta ADC的技術(shù)解析與應(yīng)用指南
ADuCM4050:超低功耗ARM Cortex - M4F MCU的卓越之選
STM32L051x6/8:超低功耗32位MCU的卓越之選
STM32L052x6/8:超低功耗32位MCU的卓越之選
RL78/G15 MCU:低功耗設(shè)計(jì)的理想之選
請(qǐng)問(wèn)CW32L052C8T6這種安全性低功耗MCU的安全固件部分怎么實(shí)現(xiàn)?
驅(qū)動(dòng)板PCB布線的注意事項(xiàng)
芯源的MCU使用電池過(guò)程中有哪些注意事項(xiàng)?
L083最低功耗是多少,應(yīng)該如何進(jìn)行低功耗設(shè)計(jì)?有哪些注意事項(xiàng)?
極海APM32E030 MCU中高速時(shí)鐘的配置和相關(guān)注意事項(xiàng)
Microchip PIC32CM Lx 系列:面向高安全與超低功耗應(yīng)用的微控制器
超低功耗MCU的安全固件更新注意事項(xiàng)
評(píng)論