OTA 更新對于連接設(shè)備的開發(fā)人員來說至關(guān)重要。在今天的文章中,我們將探討嵌入式開發(fā)人員在實施其 OTA
解決方案時應(yīng)牢記的幾個最佳實踐。盡管我將指出一些特定于 AWS 的最佳實踐,但其中大部分都是通用的。
最佳實踐1 – 加密你的固件更新
創(chuàng)建和測試非常耗時,并且會消耗很大一部分開發(fā)預算。軟件雖然也驅(qū)動產(chǎn)品中的大多數(shù)功能,并且可以顯著改變產(chǎn)品,該軟件是值得通過加密保護的知識產(chǎn)權(quán)。
加密固件映像有幾個好處。首先,它可以將你的固件二進制文件轉(zhuǎn)換為看似隨機或無意義的形式。這是理想的,因為開發(fā)人員不希望他們的二進制圖像容易被研究、調(diào)查或逆向工程。這使某人更難竊取知識產(chǎn)權(quán),并且對可能對攻擊系統(tǒng)感興趣的人來說更難理解。其次,加密圖像意味著發(fā)送者必須擁有與解密圖像的設(shè)備相匹配的某種密鑰或憑證。這可以看一個簡單的源來幫助驗證源,盡管應(yīng)該做更多的工作而不只是加密來完全驗證和驗證完整性,例如簽署圖像。
最佳實踐2 – 不支持固件回滾
關(guān)于系統(tǒng)是否應(yīng)支持固件回滾經(jīng)常存在爭議。回滾的論點通常是,如果固件更新出現(xiàn)問題,那么用戶可以回滾到正在運行的舊版本。乍一看,這似乎是個好主意,但它可能是系統(tǒng)中的漏洞來源。例如,假設(shè)
1.7 版系統(tǒng)中存在允許遠程攻擊者訪問系統(tǒng)的錯誤,新的固件版本 1.8 修復了這個缺陷??蛻魧⑺麄兊墓碳碌?1.8
版本,但攻擊者知道如果他們可以強制系統(tǒng)恢復到 1.7,他們就可以擁有該系統(tǒng)。在當今我們執(zhí)行 OTA
更新的互聯(lián)世界中,固件回滾是一個漏洞,因此嵌入式開發(fā)人員可以禁用它們以保護你的用戶。
最佳實踐3 – 保護你的引導加載程序
無線更新固件需要多個組件來確保安全且成功地完成。通常,重點是將新圖像發(fā)送到設(shè)備并對其進行解密。然而,就像在傳統(tǒng)固件更新中一樣,引導加載程序仍然是更新過程的關(guān)鍵部分,在
OTA 更新中,引導加載程序不僅是你的傳統(tǒng)風格,而且必須是安全的。
有很多方法可以與板載引導加載程序一起使用,但無論使用哪種方法,引導加載程序都必須是安全的。安全引導加載程序需要能夠在加載之前驗證固件的真實性和完整性。一些系統(tǒng)將使用應(yīng)用程序代碼來驗證固件并將其安裝到新的應(yīng)用程序插槽中,而其他系統(tǒng)則完全依賴引導加載程序。在任何一種情況下,安全引導加載程序都需要能夠在接受新固件映像之前驗證固件的真實性和完整性。
嵌入式開發(fā)人員確保在信任鏈中引導加載程序內(nèi)置,并且不輕易修改或更新也是一個好主意。安全引導加載程序是確保系統(tǒng)安全所必需的信任鏈中的關(guān)鍵組件。
最佳實踐4 — 建立信任鏈
信任鏈是在啟動設(shè)備時發(fā)生的一系列事件,可確保鏈中的每個鏈接都是受信任的軟件。例如,如果部件出廠時帶有基于硬件的信任根,以驗證
MCU 來自安全來源。然后將該信任根 (RoT) 轉(zhuǎn)移給開發(fā)人員,該開發(fā)人員將安全引導加載程序和安全策略編程到設(shè)備上。在引導序列期間,RoT
驗證引導加載程序的完整性和真實性,然后驗證任何第二階段引導加載程序或軟件的完整性和真實性,然后驗證應(yīng)用程序的真實性和完整性。然后應(yīng)用程序驗證其數(shù)據(jù)、密鑰、操作參數(shù)等的真實性和完整性。
該序列創(chuàng)建了一個信任鏈,固件 OTA
更新需要和使用該鏈。當發(fā)出新固件請求時,應(yīng)用程序必須解密圖像并驗證新固件的真實性和完整性是否完好無損。只有當信任鏈能夠成功通過鏈中的每個環(huán)節(jié)時,才能使用新固件。最重要的是,開發(fā)人員和最終用戶知道,當系統(tǒng)成功啟動時,新固件是合法的。
結(jié)論
OTA
更新是幾乎所有嵌入式開發(fā)設(shè)備的關(guān)鍵基礎(chǔ)設(shè)施組件。當然,有些系統(tǒng)一旦部署就永遠不會更新,但是,這些可能只是系統(tǒng)的一小部分。 OTA
更新是現(xiàn)場更新固件的首選機制。