景意新
(威凱檢測技術(shù)有限公司 廣州 510663)
近年來,隨著硬件成本進一步降低,同時新的低功耗無線電技術(shù)發(fā)展,以及專門為這些嵌入式設(shè)備設(shè)計的實時操作系統(tǒng)越來越完善,使得物聯(lián)網(wǎng)(IoT)可為更廣泛的開發(fā)人員所使用。IoT設(shè)備更是用于許多垂直行業(yè),從物流到家電產(chǎn)業(yè),從精準農(nóng)業(yè)到養(yǎng)老產(chǎn)業(yè),均引入了優(yōu)化現(xiàn)有業(yè)務(wù)流程的新方法,并通過創(chuàng)新使產(chǎn)業(yè)實現(xiàn)了了進一步發(fā)展。IoT設(shè)備還廣泛應(yīng)用于關(guān)鍵基礎(chǔ)設(shè)施當(dāng)中,其安全保障發(fā)揮著更重要的作用。
然而,雖然IoT設(shè)備對我們的經(jīng)濟社會有著重大影響,但現(xiàn)階段因其薄弱的安全性也存在很多隱患。例如,Mirai僵尸網(wǎng)絡(luò)攻擊事件表明,利用被入侵的IoT設(shè)備進行的大規(guī)模DDoS攻擊可威脅到其他通信基礎(chǔ)設(shè)施。更甚者,許多被入侵的IoT設(shè)備沒有配備固件更新機制,被攻擊后仍未安裝補丁進行升級防御。這些案例凸顯了在產(chǎn)品研發(fā)之初就將固件更新機制設(shè)計到IoT設(shè)備中的必要性。需要注意的是,如果設(shè)計不正確,固件更新本身也會成為攻擊載體。例如,Zigbee蠕蟲引發(fā)了一系列惡意固件更新與雜亂的無線通信相結(jié)合的連鎖反應(yīng)。如果開發(fā)者能夠使用標準化的固件更新機制,而非自行設(shè)計固件更新機制,那么情況將得到顯著改善。
本文特別關(guān)注了符合開源IoT標準的受限設(shè)備的固件更新機制。如RFC 7228中所規(guī)定的,使用微控制器(如Arm Cortex-M)在其上運行實時操作系統(tǒng),如C/OS、Contiki、RIOT、FreeRTOS、mbed OS等。
與運行完整的操作系統(tǒng)(如Linux)的機器相比。受限IoT設(shè)備使用的是一低功耗,并配備了RAM和大小在千字節(jié)范圍內(nèi)的閃存。受限IoT設(shè)備因無法承受Wi-Fi的能量消耗,故而利用鏈路層低功耗、無線技術(shù)連接網(wǎng)絡(luò),如低功耗藍牙、LoRa、IEEE 802.15.4、3GPP蜂窩IoT(NB-IoT),或如BACnet協(xié)議利用總線技術(shù)。
IoT固件升級屬于軟件升級的特例,包括以下三方面工作:①在低端IoT設(shè)備上進行嵌入式軟件設(shè)計;②后端框架;③固件向IoT設(shè)備的網(wǎng)絡(luò)傳輸。
圖1 OTA固件升級流程
IoT設(shè)備上的軟件必須具備支持固件更新的機制。設(shè)備需要一個引導(dǎo)加載程序(Bootloader),即設(shè)備啟動時首先執(zhí)行的邏輯,并決定啟動哪個固件。
有時設(shè)備會配備多個引導(dǎo)加載程序,例如,ROM中的第1級引導(dǎo)加載程序和可更新的第2級引導(dǎo)加載程序。這種設(shè)計方式與安全有關(guān),因為更新引導(dǎo)加載程序可能會導(dǎo)致設(shè)備死機。每當(dāng)設(shè)備上出現(xiàn)一個引導(dǎo)加載程序,便需考慮硬件的內(nèi)存布局,異常處理程序必須重新定位。
典型的固件更新程序相當(dāng)簡單,開發(fā)人員重新編譯代碼,并生成一個全新的固件鏡像文件,然后將其分發(fā)到設(shè)備。IoT設(shè)備的閃存被分為多塊存儲區(qū)域(插槽),包含引導(dǎo)加載程序和固件鏡像文件(含一些元數(shù)據(jù))。新的固件存儲在其中一個可用的插槽中。然后重置IoT設(shè)備,以便啟動加載程序,從而可以運行新的固件鏡像文件。例如MCUboot和ESPER便是運用這種方法。
從不同角度考量會產(chǎn)生差異化的設(shè)計。例如,人們可能會考慮軟件更新的粒度,或更新所需傳輸?shù)臄?shù)據(jù)量。某些方法通過動態(tài)加載二進制模塊,來實現(xiàn)部分更新,而其他方法則使用差分二進制補丁。還有一種技術(shù)是二進制壓縮。使用基于組件的編程、的方法旨在通過強制執(zhí)行系統(tǒng)模塊之間的黑盒式交互,來簡化系統(tǒng)在受限IoT設(shè)備上的動態(tài)修改和可重構(gòu)。軟件的部分更新也可以使用腳本取代二進制代碼,如JavaScript。而另一種技術(shù)則是利用微型虛擬機,如Mate或ReLog。
雖然上文列舉了不同的方法,但IoT設(shè)備軟件更新通常采用一次性替換完整的固件鏡像,其優(yōu)勢在于簡單易操作。
IoT固件更新的第二個方面涉及IoT軟件的后端框架和保障安全?;ヂ?lián)網(wǎng)工程任務(wù)組(IETF)IoT軟件更新(SUIT)工作組為IoT固件更新制定了一個簡單的后端架構(gòu)。有認證和完整性保護,可在不受信任的存儲庫上更新存儲,SUIT規(guī)范還實現(xiàn)了對固件鏡像的加密,以防止基于逆向工程的攻擊。SUIT工作組遵循了已有的工作,如FOSE,它提出了使用JSON和JOSE的固件加密和簽名。
更新框架(TUF)和Uptane旨在確保軟件更新系統(tǒng)的安全性,即使是針對破壞存儲庫或簽名密鑰的攻擊者。
ASSURED則是建立在TUF的基礎(chǔ)上,通過利用更新倉庫和IoT設(shè)備之間的可信中間控制器,提高對受限IoT設(shè)備的支持。
另一種方法是CHAINIAC,它使用類似區(qū)塊鏈的機制來表明之前更新的歷史,甚至沒有中央控制。
IoT固件更新的第三個方面涉及通過網(wǎng)絡(luò)軟件分發(fā)。最近發(fā)表的文獻中介紹了針對這一主題的各種方法,包括在多跳網(wǎng)絡(luò)、低功耗無線網(wǎng)絡(luò)中通過多路徑優(yōu)化廣播更新的協(xié)議,更新網(wǎng)絡(luò)堆棧模塊直接重新配置網(wǎng)絡(luò),以及使用消息隊列遙測傳輸(MQTT)協(xié)議向IoT設(shè)備群分發(fā)軟件更新。6LoWPAN協(xié)議實現(xiàn)了從受限IoT設(shè)備到(IPv6)互聯(lián)網(wǎng)上任何地方的端到端IP連接。IETF的可信執(zhí)行環(huán)境供應(yīng) (TEEP)工作組正在將一個傳輸機制標準化,該機制在可信執(zhí)行環(huán)境(TEE)更新受信任的應(yīng)用程序,如Arm TrustZone和英特爾SGX。
近年來,針對固件升級過程涉及的各個方面,技術(shù)社群一直致力于研究開源標準,從而可以將這些標準組合,促進IoT設(shè)備固件更新機制發(fā)展。這些開源標準可分為以下幾類:加密算法,固件元數(shù)據(jù),通過網(wǎng)絡(luò)傳輸更新的協(xié)議,IoT設(shè)備管理協(xié)議。
使用最先進的加密算法是保證固件更新安全性的必要條件。以往,人們的印象是在更廣泛的互聯(lián)網(wǎng)上使用的算法不能用于受限IoT設(shè)備。然而事實證明,對不同算法進行優(yōu)化和選擇便有機會實現(xiàn)。對于公鑰加密,通常使用橢圓曲線加密算法(ECC),因為它的密鑰與RSA加密算法相比較小。美國國家標準與技術(shù)研究院(NIST)將橢圓曲線數(shù)字簽名算法(ECDSA)標準化,用于P256r1曲線,在業(yè)界較為流行。另一種基于不同曲線的簽名算法——ed25519也實現(xiàn)了標準化。此外,評估后量子加密領(lǐng)域的算法的標準化工作也在開展。
IETF SUIT工作組目前正在制定描述固件更新的規(guī)范。SUIT工作組定義了一個清單,該清單提供了:①更新設(shè)備所需固件的信息;②保護端到端元數(shù)據(jù)的安全封裝。
例如,以TUF/Uptane為參考,SUIT清單格式可以提供適用Uptane固件映像的兼容(自定義)元數(shù)據(jù)。相較于SUIT標準,TUF標準既不以互操作性為目標,也不指定具體的元數(shù)據(jù)格式。
SUIT 規(guī)范包括結(jié)構(gòu)文件,一份信息模型說明,和一份清單規(guī)范的提案。為了達到其目的,SUIT是建立在許多提供通用構(gòu)建模式的開放標準之上。特別是將簡潔二進制對象表示法(CBOR)用作數(shù)據(jù)格式規(guī)范。CBOR是為了小信息量二優(yōu)化的使用二進制編碼的無架構(gòu)格式。此外,CBOR對象簽名和加密(COSE)規(guī)范用于對通過CBOR序列化的數(shù)據(jù)進行加密保護。COSE定義了多種結(jié)構(gòu),其中包括符號結(jié)構(gòu),該結(jié)構(gòu)指定了如何通過使用密碼簽名來保護有效載荷以防止篡改。
許多協(xié)議提供了用于通過網(wǎng)絡(luò)傳輸固件更新的規(guī)范?;緜鬏敺桨竿ㄟ^特定的低功耗介質(zhì)訪問控制層(MAC)技術(shù)(例如藍牙)或特定的總線技術(shù)(例如USB)啟用設(shè)備固件更新(DFU)。另一方面,為了在多跳或異構(gòu)低功耗網(wǎng)絡(luò)之間傳輸固件,IETF協(xié)議套件對網(wǎng)絡(luò)堆棧進行了標準化,該網(wǎng)絡(luò)堆棧結(jié)合了UDP上的約束應(yīng)用協(xié)議(CoAP)和TCP/TLS上的CoAP。 CoAP提供了與HTTP等效的功能,但專為受限的IoT設(shè)備量身定制。6LoWPAN規(guī)范旨在為不能直接使用IPv6的網(wǎng)絡(luò)提供適配層。為了提供通信安全性,對DTLS和TLS配置文件進行了標準化,以用于IoT部署。
最為突出的IoT設(shè)備管理開放標準是由OMA Spec-Works研制的輕量級機器對機器協(xié)議(LwM2M)。為了傳輸數(shù)據(jù),LwM2M V1.1用CoAP,可使用DTLS保證安全。LwM2M 規(guī)范定義了一個簡單的數(shù)據(jù)模型和幾個用于遠程管理 IoT 設(shè)備的 RESTful 接口。這些接口使設(shè)備能夠注冊到服務(wù)器、提供信息更新和獲取密鑰材料。大量對象和資源已經(jīng)標準化,以支持常用的傳感器、執(zhí)行器和其他資源。標準化對象中包括固件更新對象。
由IETF開發(fā)了 CoAP 管理接口標準(CoMI)。CoMI使用 CoAP 和基于 YANG 建模語言的數(shù)據(jù)模型,旨在重用現(xiàn)有的 SNMP 定義的對象和資源。CoMI仍在開發(fā)中,固件更新機制尚未定義,希望將來會定義這種擴展。
開放互聯(lián)基金會(OCF)對在CoAP 和TLS/DTLS之上運行的IoT設(shè)備管理協(xié)議進行標準化,以促進設(shè)備間的互聯(lián)互通,其類似于LwM2M。OCF定義了一個以RESTful API建模語言(RAML) 作為數(shù)據(jù)建模語言的數(shù)據(jù)模型。在針對智能家居環(huán)境中更大的IoT設(shè)備的同時,OCF在也在考慮其他垂直行業(yè)。
IoT設(shè)備的設(shè)備管理的早期工作使用遠程過程調(diào)用而不是 RESTful 設(shè)計。 例如,TR-069,即寬帶論壇開發(fā)的CPE 廣域網(wǎng)管理協(xié)議(CWMP),可為更高端的IoT設(shè)備(例如聯(lián)網(wǎng)打印機)提供固件更新功能。寬帶論壇最近發(fā)布了TR-069的繼任者,稱為用戶服務(wù)平臺 (USP)。
現(xiàn)成的開源操作系統(tǒng)(如 Linux),無法用于缺乏必要硬件資源的受限IoT設(shè)備。更甚,連接互聯(lián)網(wǎng)的設(shè)備日益復(fù)雜,需要相當(dāng)復(fù)雜的協(xié)議棧,其中包括 IPv6、UDP、DTLS和CoAP。這種情況促使IoT操作系統(tǒng)的發(fā)展,包括許多開源IoT操作系統(tǒng),如RIOT Zephyr、Mbed OS、MyNewt或Tock。此類別中流行的商業(yè)操作系統(tǒng)包括μC/OS和FreeRTOS。
OTA 固件更新系統(tǒng)是每個IoT項目的重要組成部分,必須設(shè)計詳細的結(jié)構(gòu)及架構(gòu)。本文介紹了受限IoT設(shè)備軟件升級的三個主要工作,以及針對固件升級過程的開源標準,對于現(xiàn)階段主要發(fā)展情況做出了較為詳細的概括。盡管方法及架構(gòu)各有不同,但其總體向著安全、便捷、高效的方向發(fā)展。此外,隨著技術(shù)不斷發(fā)展,IoT真正實現(xiàn)萬物互聯(lián),在某些情況下便需要技術(shù)遷移,因此對用于創(chuàng)建和實施的結(jié)構(gòu)化流程的管理非常重要。未來,計劃研究絕大多數(shù)可用的技術(shù),并提出可以覆蓋更廣泛的IoT設(shè)備和嵌入式軟件項目OTA升級技術(shù)架構(gòu)和機制,涵蓋拓撲與技術(shù)獨立性,最大限度地減少技術(shù)遷移到引發(fā)的不確定性。