作者:Bhargavi Nisarga,Luis Reynoso
現場固件更新是基于微控制器(基于MCU)的應用中越來越受歡迎的功能。這些更新使新的固件映像能夠下載到設備的內存中,為產品制造商提供了一種有效的方式,可以為已經在現場部署的產品提供服務和支持。物聯網(IoT)時代正在推動嵌入式世界連接性的提高,使其成為當今互聯產品最關鍵的功能之一,只要它們是安全的。
在部署固件更新機制時,物聯網開發人員通常考慮縮短上市時間并降低產品維護成本,因為該功能允許他們分階段推出功能,在現場設備上啟用/禁用特性或功能,在產品發布后修復固件錯誤,減少對昂貴技術支持的需求,并實現更好的整體最終用戶體驗。但是,如果沒有適當的安全措施,則此功能可能會被濫用,并且成功利用的后果可能是災難性的,從知識產權(IP)盜竊和產品克隆一直到對部署系統的未經授權的控制。例如,成功利用不支持在醫院藥物泵中驗證新固件映像的真實性的固件更新機制,可能會導致黑客篡改交付給患者的藥物劑量。
固件更新及其漏洞
圖1顯示了一個典型的固件更新過程。這些步驟包括:
產品制造商在受信任的環境中創建初始固件映像并將其加載到設備中。
產品與初始固件一起部署到現場。
當需要固件更新時,產品制造商會創建新的固件映像。
制造商將新的固件映像直接通過不受信任的通信通道發送給最終用戶/技術人員或產品。
新固件將加載到現場的設備上。
潛在的安全威脅在“傳輸”階段通過不受信任的通信通道傳輸時,或者在“固件加載”階段,當新固件下載到現場的設備上時,潛在的安全威脅是顯而易見的。
正在下載到設備的新固件映像對應于產品制造商的 IP 和目標資產。對此資產的威脅包括:
將固件二進制映像反向工程成匯編或更高級別的工程語言,以分析其功能和內容。
產品克隆,其中將產品制造商的固件映像加載到未經授權的設備上。
更改產品制造商分發的固件。
將未經授權的固件映像加載到設備上,該映像可能對應于產品制造商提供的具有已知錯誤或由未經授權方創建的代碼的較舊固件版本,或者不適用于特定設備的固件(固件降級)。
中斷固件更新過程,使固件僅部分更新,從而導致設備無法提供服務。
很明顯,上述威脅可能會對產品制造商、服務提供商和最終用戶造成災難性后果,因此表明嵌入式設計人員迫切需要采取措施來提高固件更新機制的整體安全性。
設計工程師的安全固件更新注意事項
圖 2 顯示了網絡連接系統的示例表示形式。在這種情況下,新的固件映像從產品制造商(例如,新功能推出或固件錯誤修復)或服務提供商(例如,啟用/禁用產品中的功能或服務)傳輸到本地或廣域網(LAN /WAN)上的終端節點,并且可能涉及來自最終用戶應用程序的身份驗證(例如, 通過移動設備和Web應用程序)執行固件更新。
[圖2 |安全固件更新包括由用于網絡通信的接口協議規定的安全措施,以及確保在數據進入網絡之前保護固件映像的應用程序級安全性。
為物聯網系統設計固件更新功能的嵌入式系統工程師不僅需要了解需要保護的資產和潛在威脅,還需要了解其系統的功能和局限性,特別是當它們與受限系統的成本、性能或功耗有關時。作為起點,必須考慮結合加密算法和協議級措施的正確組合的有效安全解決方案。
加密算法提供了一種保護內容隱私的方法,同時確保其真實性和完整性。并非所有加密算法都是相同的,但它們基于四個加密基元,這些原語處理機密性、完整性和真實性 (CIA) 三元組的一個或多個組件。這些基元是:
加密和解密:加密是將數據(明文)轉換為隨機和無意義(密文)的過程,而解密則執行相反的工作。這些基元提供機密性和真實性,并用于防止固件的逆向工程。
單向功能:諸如哈希之類的函數是數學算法,在一個方向上很容易計算,但在另一個方向上很難計算。它們用于獲取數字“指紋”,以確保固件在傳輸到現場之前的完整性。
數字簽名:用于檢測消息在簽名后是否被更改,從而不僅提供完整性,還提供身份驗證。這些使用公鑰加密來生成只能使用制造商的公鑰正確解密的簽名。
消息身份驗證代碼: 與數字簽名類似,只是它使用對稱密鑰來加密和解密制造商生成的哈希。如果接收方解密的哈希值與為消息計算的哈希值匹配,則該消息有效。通過這種方式,MAC提供了真實性和完整性。
影響加密算法選擇的一些因素包括性能要求、系統的安全需求、內存占用、能耗以及安全社區(如美國國家標準與技術研究院 (NIST) 等組織)對算法的可靠性和接受度。
除了加密算法之外,還應考慮針對固件降級等威脅的協議級措施。如前所述,固件降級是一種攻擊,其中較舊的有缺陷的固件映像(加密或未加密)被重新發送到設備以將其恢復到易受攻擊的狀態。對固件和密鑰進行版本檢查可以確保在更新期間僅對新版本進行編程。
攻擊者還可以使用多種方法(斷電、物理連接故障、傳輸過程中的位翻轉等)中斷固件更新過程。這可能導致設備執行不完整或無效的固件映像,使其無用或處于受損狀態。為了解決這種情況,固件更新機制需要確保不執行不完整或損壞的映像,如有必要,應將系統還原為以前使用的有效映像。
用于連接的嵌入式系統的加密引導加載程序
固件更新通常由設備引導加載程序處理。引導加載程序是駐留在設備內存上的一段代碼,能夠重新編程應用程序內存空間。但是,查找或創建具有網絡連接系統所需安全性的嵌入式引導加載程序可能具有挑戰性。例如,系統可能需要能夠更新加密密鑰,因此加密功能和引導加載程序協議應支持在固件更新過程中升級密鑰和提高網絡安全性。引導加載程序協議還應適應驗證固件更新版本和數據包跟蹤,以檢查是否接收了特定固件更新映像的所有數據包。
如前所述,加密算法的選擇至關重要,因為它不僅設置了系統的安全級別,還會影響其性能、內存占用和功耗。考慮到這一點,AES-CCM代表了嵌入式引導加載程序的最佳解決方案。AES-CCM 是一個基于兩個加密基元構建的加密引導加載程序(加密引導加載程序):用于加密的 AES 計數器模式 (AES-CTR) 和用于完整性和真實性驗證的密碼塊鏈接消息身份驗證代碼 (CBC-MAC)。由于 AES-CCM 提供的低開銷,它在提高安全性與低內存占用量、高吞吐量和高效功耗之間實現了完美平衡(圖 3)。
[圖3|AES-CCM 算法用于加密固件數據,例如固件版本號、數據包編號和數據包總數。該信息與對稱數據加密密鑰一起輸入算法,以加密數據并生成加密的MAC標簽,該標簽代表德州儀器的Crypto-Bootloader核心命令的一部分。
選擇實現引導加載程序的MCU也不容忽視。設計人員應考慮具有硬件加密引擎、存儲器保護單元(MPU)、低功耗外設和存儲器技術等功能的MCU,這些器件允許快速讀/寫周期以提高吞吐量。德州儀器 (TI) 的 MSP430FR5969 MCU 就是此類 MCU 的一個例子,它集成了 AES-256 協處理器以加速加密算法,MPU 和 MPU-IP 封裝 (MPU-IPE) 模塊可增強對內存區域的保護和封裝,以及高達 64 KB 的 FRAM 內存,可實現高性能和超低功耗。在 MSP430FR5969 設備上實現的加密引導加載程序解決方案封裝了此處概述的大多數安全功能和注意事項。
保護物聯網的固件
總之,越來越多的網絡嵌入式產品正在產生潛在的高級安全威脅,使現場固件更新更容易受到遠程攻擊和利用。因此,嵌入式設計人員必須考慮通過提供適當安全級別的解決方案來保護其固件更新機制,同時平衡物聯網產品的成本、功耗和性能限制。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7844瀏覽量
153363 -
mcu
+關注
關注
146文章
17718瀏覽量
358253 -
物聯網
+關注
關注
2922文章
45675瀏覽量
385368
發布評論請先 登錄
相關推薦
如何選擇超低功耗MCU
STM32低功耗模式注意事項
MCU實現低功耗有哪些注意事項啊
如何選擇超低功耗MCU
低功耗配置IO的注意事項是什么
【應用筆記】CS32L010 設計注意事項
MCU實現低功耗注意事項

超低功耗MCU的安全固件更新注意事項

微型/超低功耗 E7 仿真器用戶手冊附加文檔(連接 H8/38602RF 的注意事項)

微型/超低功耗 E7 仿真器用戶手冊附加文檔(連接 H8/38602RF 的注意事項)

評論