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