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