當(dāng)今社會(huì)的很多商業(yè)行為、通信、金融交易及娛樂(lè)在很大程度上依賴(lài)于互聯(lián)網(wǎng)。隨著越來(lái)越多的設(shè)備連接到物聯(lián)網(wǎng)(IoT)中,各個(gè)行業(yè)對(duì)互聯(lián)網(wǎng)的依賴(lài)性將不斷增加。如果設(shè)備不安全,這種依賴(lài)將導(dǎo)致互聯(lián)網(wǎng)重大的安全漏洞,并使設(shè)備遭到攻擊和破壞。
目前,很多在使用的物聯(lián)網(wǎng)設(shè)備,根據(jù)不同的應(yīng)用范圍將持續(xù)使用。例如,公用事業(yè)使用的儀表幾乎不會(huì)更換,通信基礎(chǔ)設(shè)施的設(shè)計(jì)使用年限為50年,電力傳輸系統(tǒng)使用壽命也在30年以上。住宅、辦公室、工業(yè)建筑和其他建筑物可以每10年裝修一次,以便長(zhǎng)期使用。如果這些設(shè)備不安全,在威脅增加時(shí),它們很快會(huì)被拋棄。
為保持用戶(hù)對(duì)智能設(shè)備的投資,保護(hù)設(shè)備免遭破壞,安全成為所有新型設(shè)備的基本要求。在未來(lái)的幾年中,將有500億的物聯(lián)網(wǎng)設(shè)備連入互聯(lián)網(wǎng),其中很大一部分是使用微控制器和資源有限的微處理器。幸運(yùn)的是,與大型設(shè)備相比,這些小型設(shè)備更容易保護(hù),更不易受到同類(lèi)型威脅的攻擊,因而顯得更安全。但并不意味著安全很容易實(shí)現(xiàn),只是如果能正確地利用MCU和小型的MPU的特性,則開(kāi)發(fā)安全的設(shè)備不困難而已。本文的后續(xù)部分將討論如何保護(hù)物聯(lián)網(wǎng)中的小型設(shè)備。
一、物聯(lián)網(wǎng)安全特征
為了充分保護(hù)MCU或小型MPU,下列安全功能通常是必需的。當(dāng)然,并不是每個(gè)系統(tǒng)都必須具備所有功能。使用標(biāo)準(zhǔn)信息技術(shù)實(shí)現(xiàn)的安全解決方案是嵌入式MCU和MPU產(chǎn)品安全機(jī)制的核心。這些安全協(xié)議包括:TLS、IPSec/VPN、SSH、SFTP、安全啟動(dòng)和自動(dòng)回調(diào)、過(guò)濾、HTTPS、SNMP v3、安全的無(wú)線連接、加密和解密、加密文件系統(tǒng)、DTLS(用于UDP安全)和安全電子郵件。
其中,TLS、IPSec/VPN、HTTPS、安全的無(wú)線連接及DTLS意味著安全的通信連接;SFTP提供了安全的文件傳輸;SSH提供了安全的遠(yuǎn)程訪問(wèn);而安全電子郵件則提供了基于加密連接的郵件服務(wù)。
支持自動(dòng)回退的安全啟動(dòng)程序(bootloader)確保系統(tǒng)不被破壞。SNMPv3、數(shù)據(jù)加密和加密文件系統(tǒng)通過(guò)加密保護(hù)本地?cái)?shù)據(jù)或傳輸?shù)狡渌麢C(jī)器的數(shù)據(jù)。過(guò)濾實(shí)際上是防火墻的功能,用于阻止不受歡迎的訪問(wèn)。各個(gè)協(xié)議將在系統(tǒng)安全一節(jié)之后討論。
二、系統(tǒng)安全
只有系統(tǒng)中最薄弱的連接或組件都可靠時(shí),整個(gè)系統(tǒng)才是安全的。為保證系統(tǒng)的安全,其所有的通信通道、文件傳輸、數(shù)據(jù)存儲(chǔ)和系統(tǒng)更新方式都必須是安全的。在系統(tǒng)支持動(dòng)態(tài)加載、可執(zhí)行文件修改及其他復(fù)雜功能時(shí),實(shí)現(xiàn)系統(tǒng)安全是非常困難的。想象以下這些場(chǎng)景:
1)入侵者通過(guò)電子郵件、ftp或其他方式將文件傳入設(shè)備。
2)文件動(dòng)態(tài)加載,其運(yùn)行時(shí),會(huì)破壞其他可執(zhí)行文件,然后需要清理現(xiàn)場(chǎng)并刪除自己。
3)如果病毒很新,系統(tǒng)不認(rèn)識(shí)該病毒,它將獲準(zhǔn)進(jìn)入系統(tǒng)并感染系統(tǒng)。
再考慮另外一種情況,在不安全或者沒(méi)有正確安全設(shè)計(jì)的通信連接中,有可能讀取少量的數(shù)據(jù),還可能有辦法在數(shù)據(jù)流中添加新的數(shù)據(jù),并破壞正在接收數(shù)據(jù)的系統(tǒng)。
通過(guò)互聯(lián)網(wǎng)加載不安全的鏡像文件到設(shè)備就是這種情況的一個(gè)實(shí)例。當(dāng)新加載的鏡像運(yùn)行時(shí),如果該鏡像可以正確訪問(wèn)系統(tǒng),不安全的鏡像文件將接管整個(gè)系統(tǒng)。
還有一種情況就是設(shè)備的關(guān)鍵數(shù)據(jù)會(huì)被竊取,除非數(shù)據(jù)被加密或保存在安全文件系統(tǒng)中,才可能從設(shè)備中恢復(fù)加密的數(shù)據(jù)。這是需要考慮的另一種情況。
為了確保系統(tǒng)安全,最好的方式是考慮如何訪問(wèn)設(shè)備信息。通常,好的安全系統(tǒng)要求:你知道的(密碼)、你擁有的(借記卡或可穿戴式設(shè)備)和你是誰(shuí)(虹膜掃描設(shè)備)。
對(duì)小型設(shè)備來(lái)說(shuō),這些安全措施過(guò)頭了。但如果系統(tǒng)有非常高的安全要求,可以通過(guò)間接方式來(lái)實(shí)現(xiàn),只要確保系統(tǒng)的各個(gè)組件都是安全的。通過(guò)與服務(wù)器的安全交互,服務(wù)器可以安全地訪問(wèn)設(shè)備,安全設(shè)備接口可以運(yùn)行在大型設(shè)備上,也可以用于小型設(shè)備。
安全系統(tǒng)的另一個(gè)關(guān)鍵要素是分層安全,假設(shè)一些人只需要訪問(wèn)系統(tǒng)的一部分,好的設(shè)計(jì)原則采用分層安全機(jī)制。這種情況下,如果沒(méi)有重要的工作,入侵者僅能訪問(wèn)部分系統(tǒng)。一個(gè)實(shí)例是使用兩個(gè)防火墻級(jí)聯(lián)來(lái)保護(hù)服務(wù)器,因此,一個(gè)防火墻的漏洞可以被第二個(gè)防火墻隔離。
如圖1所示提供了安全功能的軟件概述。后面將針對(duì)前面列出的場(chǎng)景,討論如何使用這些軟件,以保護(hù)系統(tǒng)。
圖1 安全物聯(lián)網(wǎng)系統(tǒng)應(yīng)該包含的互聯(lián)網(wǎng)協(xié)議軟件
三、通信安全
通信安全協(xié)議確保機(jī)器到機(jī)器間的通信安全。有一個(gè)可以依賴(lài)的信任等級(jí),以建立安全通信。
TLS及其前身SSL是為T(mén)CP套接字流和需按順序交付的流連接提供通信安全的最常用的方式。DTLS是一個(gè)新的協(xié)議,提供可靠的UDP傳輸和基于TLS的數(shù)據(jù)包傳輸。TLS和DTLS協(xié)議面向應(yīng)用到應(yīng)用間的通信。
IPSec或虛擬專(zhuān)用網(wǎng)絡(luò)(VPN)在TCP協(xié)議棧的基礎(chǔ)上使用虛擬鏈路安全技術(shù)。它的設(shè)置比較困難,但它允許應(yīng)用通過(guò)鏈路通信,即使應(yīng)用沒(méi)有提供安全保護(hù)。通常情況下,由于設(shè)置困難,并且很多人認(rèn)為NSA(美國(guó)國(guó)家安全局)參與開(kāi)發(fā)的算法不安全,導(dǎo)致它沒(méi)有被廣泛使用。
HTTPS是建立在TLS上的安全的網(wǎng)絡(luò)服務(wù)器訪問(wèn)協(xié)議,它提供了安全的應(yīng)用訪問(wèn),通過(guò)與SSH相同的方式,為遠(yuǎn)程用戶(hù)提供安全的模擬終端訪問(wèn)。
安全的無(wú)線連接確保無(wú)線信息不被收集,數(shù)據(jù)不會(huì)被其他人通過(guò)天線獲取。
安全電子郵件用于確保數(shù)據(jù)不會(huì)通過(guò)電子郵件直接傳輸。一種方式是在郵件發(fā)送之前加密數(shù)據(jù)。而更簡(jiǎn)單、更通用的方案是在加密連接中提供郵件服務(wù),以確保管理郵件的服務(wù)器接收的所有郵件數(shù)據(jù)都是安全的。
四、基于SNMP的安全文件傳輸
使用加密和解密程序保護(hù)數(shù)據(jù)時(shí),SNMPv3用于加密數(shù)據(jù)。如果所有的數(shù)據(jù)都很重要,可以使用文件加密,盡管文件加密方式會(huì)損失性能。
五、過(guò)濾和防火墻
防火墻通過(guò)過(guò)濾網(wǎng)絡(luò)服務(wù)器發(fā)送所有數(shù)據(jù)包,拒絕未授權(quán)的訪問(wèn)。通過(guò)過(guò)濾,設(shè)計(jì)者可以確保只有真正的用戶(hù)才能訪問(wèn)系統(tǒng),阻止非法訪問(wèn),保證系統(tǒng)安全。這些過(guò)濾規(guī)則需要在設(shè)備上配置,過(guò)濾功能通常需要結(jié)合SSH或SNMP使用。
六、安全啟動(dòng)
安全啟動(dòng)是一個(gè)安全系統(tǒng)的重要組成部分,支持固件更新并通過(guò)安全的方式實(shí)現(xiàn)更新非常重要,固件更新可以刪除所有工廠固件,并通過(guò)自動(dòng)回退(fall back)機(jī)制增強(qiáng)了該功能。通過(guò)自動(dòng)回退,如果新的固件(可能損壞)導(dǎo)致啟動(dòng)失敗,可以使用舊的安全版本重新啟動(dòng)系統(tǒng),這是分層安全機(jī)制的部分功能。
Unison操作系統(tǒng)(Nanoexec)分層安全機(jī)制通過(guò)解釋器或其他方式加載的程序運(yùn)行時(shí),可能破壞系統(tǒng)。Unison的操作系統(tǒng)在底層提供了額外的安全啟動(dòng)功能,以保護(hù)系統(tǒng),該功能使得系統(tǒng)很難被攻擊,如圖2所示。
圖2 Unison操作系統(tǒng)(Nanoexec)架構(gòu)
七、系統(tǒng)安全的考慮
現(xiàn)在考慮一下這種情況:MCU或資源有限的MPU需要應(yīng)用很多協(xié)議以實(shí)現(xiàn)安全目的。一個(gè)參考實(shí)例是Unison的操作系統(tǒng),它是一個(gè)小型的POSIX實(shí)時(shí)操作系統(tǒng),以非常小的代碼尺寸提供了這些安全功能。
首先,Unison系統(tǒng)使用了安全通信協(xié)議,目標(biāo)設(shè)備的所有應(yīng)用是安全的。這些應(yīng)用包括手機(jī)應(yīng)用、面向小型網(wǎng)絡(luò)服務(wù)器的安全Web訪問(wèn)等。類(lèi)似緩沖區(qū)溢出之類(lèi)的攻擊是不可能的,因?yàn)閁nison設(shè)計(jì)在運(yùn)行時(shí)占用很少的資源,禁止任何不合理的資源占用。還可以使用安全無(wú)線連接,但必須使用VPN。
可以使用SFTP將文件傳輸?shù)较到y(tǒng)。該機(jī)制保證數(shù)據(jù)在傳輸時(shí)不被破壞,這對(duì)安全系統(tǒng)更新非常重要。在TCP服務(wù)器前端增加過(guò)濾處理,可以確保只處理授權(quán)的請(qǐng)求和更新,防止設(shè)備被入侵,極大地提高了安全性。此外,可以使用終端通過(guò)SSH協(xié)議遠(yuǎn)程配置設(shè)備。與使用網(wǎng)絡(luò)服務(wù)器相比,使用腳本的方法更可靠。這種配置方式確保了配置設(shè)備也是安全的。此時(shí),設(shè)備接收和發(fā)送的數(shù)據(jù)是安全的。任何更改或配置也是可靠的,授權(quán)的應(yīng)用和用戶(hù)可以使用設(shè)備的數(shù)據(jù)和功能。
如果設(shè)備被偷了,怎么辦?為了應(yīng)對(duì)這種情況,可以加密設(shè)備存儲(chǔ)的數(shù)據(jù),不使用本地?cái)?shù)據(jù)或使用加密文件系統(tǒng),這將確保設(shè)備的關(guān)鍵數(shù)據(jù)是安全的。如果用戶(hù)的設(shè)備有密碼,通常被認(rèn)為是合適的安全措施。還可以增加其他安全措施,如增加指紋掃描、虹膜掃描、掌紋和其他功能給設(shè)備,或?qū)⑵溥B接到安全工作站,以增加設(shè)備的可靠性。
前面列出的安全場(chǎng)景中,可能破壞系統(tǒng)安全的情況都一一考慮到了。對(duì)MCU或一些MPU來(lái)說(shuō),程序是一個(gè)運(yùn)行在Flash中的單個(gè)映像文件。這種情況下,由于整個(gè)映像在Flash中運(yùn)行,并且如果啟動(dòng)機(jī)制和刷新機(jī)制是安全的,不可能添加任何東西到系統(tǒng)中,因此入侵者不能加入新的代碼。在使用Unison時(shí),該功能是可以實(shí)現(xiàn)的,因此Unison使整個(gè)系統(tǒng)非常安全。
但如果系統(tǒng)中有解釋器,Unison不能保證整個(gè)系統(tǒng)是安全的。解釋程序可以在MCU或MPU上自由運(yùn)行,不受限制地更改系統(tǒng)映像,除非建立了安全機(jī)制,例如使用了內(nèi)存保護(hù)單元(MMU)。
通過(guò)使用標(biāo)準(zhǔn)IT安全協(xié)議,安全啟動(dòng)及限制解釋器的使用,可以完全保護(hù)MCU和小的MPU系統(tǒng)。安全不應(yīng)該事后考慮,或位于操作系統(tǒng)之上,它應(yīng)該集成到系統(tǒng)中,作為一個(gè)功能單元測(cè)試,以實(shí)現(xiàn)真正的系統(tǒng)安全。
原文來(lái)源:米內(nèi)羅機(jī)電