基于嵌入式的物聯(lián)網(wǎng)安全如何來(lái)保障
掃描二維碼
隨時(shí)隨地手機(jī)看文章
當(dāng)今社會(huì)的很多商業(yè)行為,如通信、金融交易及娛樂(lè)在很大程度上依賴于互聯(lián)網(wǎng)。隨著越來(lái)越多的設(shè)備連接到物聯(lián)網(wǎng)(IoT)中,對(duì)互聯(lián)網(wǎng)的依賴性將不斷增加。如果設(shè)備不安全,這種依賴將導(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)期使用。如果這些系統(tǒng)不安全,在威脅增加時(shí),它們很快會(huì)被拋棄。
為增加用戶對(duì)智能設(shè)備的投資信心,保護(hù)設(shè)備免遭破壞,安全成為所有新型設(shè)備的基本要求。在未來(lái)的幾年中,將有500億個(gè)物聯(lián)網(wǎng)設(shè)備連接到互聯(lián)網(wǎng),其中很大一部分是使用微控制器和資源有限的微處理器。幸運(yùn)的是,與大型設(shè)備相比,這些小型設(shè)備更容易保護(hù),不易受同類型威脅的攻擊,因此更安全。但并不意味著安全很容易實(shí)現(xiàn),只是如果能正確利用MCU和小型MPU的特性,開發(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)回退、過(guò)濾、HTTPS、SNMPv3、安全的無(wú)線連接、加密和解密、加密文件系統(tǒng)、DTLS(用于UDP安全)和安全電子郵件。其中TLS、IPSec/VPN、HTTPS、安全的無(wú)線連接及DTLS意味著安全的通信連接,SFTP提供了安全的文件傳輸,SSH提供了安全的遠(yuǎn)程訪問(wèn),而安全電子郵件提供了基于加密連接的郵件服務(wù)。支持自動(dòng)回退的安全啟動(dòng)程序(Bootloacler)確保系統(tǒng)不被破壞,SNMPv3、數(shù)據(jù)加密和加密文件系統(tǒng)通過(guò)加密來(lái)保護(hù)本地?cái)?shù)據(jù)或傳輸?shù)狡渌麢C(jī)器的數(shù)據(jù),過(guò)濾實(shí)際上是起到防火墻的功能,用于阻止不受歡迎的訪問(wèn)。各種協(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)景:
①入侵者通過(guò)電子郵件、FTP或其他方式將文件傳入設(shè)備。
②文件動(dòng)態(tài)加載運(yùn)行時(shí),會(huì)破壞其他可執(zhí)行文件,然后需要清理現(xiàn)場(chǎng)并刪除自己。
③如果病毒很新,系統(tǒng)不認(rèn)識(shí)該病毒,它將獲準(zhǔn)進(jìn)入,從而感染系統(tǒng)。
考慮另外一種情況,在不安全或者沒(méi)有正確安全設(shè)計(jì)的通信連接中,有可能會(huì)讀取少量的數(shù)據(jù),還可能會(huì)在數(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è)不安全的鏡像文件將接管整個(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)景,討論如何使用這些軟件來(lái)保護(hù)系統(tǒng)。
通信安全
通信安全協(xié)議確保機(jī)器到機(jī)器間的通信安全,有一個(gè)可以依賴的信任等級(jí),以建立安全通信。
TLS及其前身SSL是為TCP套接字流和需按順序交付的流連接提供通信安全最常用的方式。DTLS是一個(gè)新協(xié)議,提供可靠的UDP傳輸和基于TLS的數(shù)據(jù)包傳輸,TLS和DTLS協(xié)議是面向應(yīng)用到應(yīng)用間的通信。
IPSec或虛擬專用網(wǎng)絡(luò)(VPN)在TCP協(xié)議棧的基礎(chǔ)上使用虛擬鏈路安全技術(shù),設(shè)置比較困難,但它允許應(yīng)用通過(guò)鏈路通信,即使應(yīng)用沒(méi)有提供安全保護(hù)。通常情況下,由于設(shè)置困難,并且很多人認(rèn)為NSA(國(guó)家安全局)參與開發(fā)的算法不安全,導(dǎo)致它沒(méi)有被廣泛使用。
HTTPS是建立在TLS上的安全網(wǎng)絡(luò)服務(wù)器訪問(wèn)協(xié)議,它提供了安全的應(yīng)用訪問(wèn),通過(guò)與SSH相同的方式,為遠(yuǎn)程用戶提供安全的模擬終端訪問(wèn)。
安全的無(wú)線連接確保無(wú)線信息不會(huì)被收集,數(shù)據(jù)不會(huì)被其他人通過(guò)天線獲取。
安全電子郵件用于確保數(shù)據(jù)不會(huì)通過(guò)電子郵件直接傳輸。一種方式是在郵件發(fā)送之前加密數(shù)據(jù),另一種更簡(jiǎn)單更通用的方案是在加密連接中提供郵件服務(wù),以確保管理郵件的服務(wù)器接收的所有郵件數(shù)據(jù)都是安全的。
基于SNMPv3的安全文件傳輸
使用加密和解密程序保護(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ì)者可以確保只有真正的用戶才能訪問(wèn)系統(tǒng),阻止非法訪問(wèn),以保證系統(tǒng)安全。這些過(guò)濾規(guī)則需要在設(shè)備上配置,過(guò)濾功能通常需要結(jié)合SSH或SNMPv3使用。
安全啟動(dòng)
安全啟動(dòng)是安全系統(tǒng)的重要組成部分(圖2),支持固件更新并通過(guò)安全的方式實(shí)現(xiàn)更新非常重要。固件更新可以刪除所有工廠固件,并通過(guò)自動(dòng)回退(fall back)機(jī)制增強(qiáng)該功能。通過(guò)自動(dòng)回退,如果新的固件(可能損壞)導(dǎo)致啟動(dòng)失敗,可以使用舊的安全版本重新啟動(dòng)系統(tǒng),這是分層安全機(jī)制的部分功能。
通過(guò)解釋器或其他方式加載的程序運(yùn)行時(shí),可能破壞系統(tǒng)。Unison的操作系統(tǒng)在底層提供了額外的安全啟動(dòng)功能來(lái)保護(hù)系統(tǒng),該功能使得系統(tǒng)很難被攻擊。
系統(tǒng)安全的考慮
MCU或資源有限的MPU如果需要應(yīng)用很多協(xié)議來(lái)實(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)等。類似緩沖區(qū)溢出之類的攻擊是不可能出現(xiàn)的,因?yàn)閁nison系統(tǒng)在運(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)用和用戶可以使用設(shè)備的數(shù)據(jù)和功能。
如果設(shè)備被偷了,怎么辦?為了防止這種情況發(fā)生,可以加密設(shè)備存儲(chǔ)的數(shù)據(jù),不使用本地?cái)?shù)據(jù)而使用加密文件系統(tǒng),這將確保設(shè)備的關(guān)鍵數(shù)據(jù)是安全的。如果用戶的設(shè)備有密碼,通常這被認(rèn)為是合適的安全措施,還可以使用其他安全措施,如增加指紋掃描、虹膜掃描、掌紋和其他功能給設(shè)備或?qū)⑵溥B接到安全工作站,以增加設(shè)備的可靠性。
前面列出的安全場(chǎng)景,除了程序執(zhí)行時(shí),可能破壞系統(tǒng)安全的情況都考慮過(guò)了。對(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)的,因此Uni son使整個(gè)系統(tǒng)非常安全。
但如果系統(tǒng)中有解釋器,Unison不能保證整個(gè)系統(tǒng)是安全的。解釋程序可以在MCU或MPU上自由運(yùn)行,不受限制地更改系統(tǒng)映像,除非建立了安全機(jī)制,例如使用了內(nèi)存管理單元(MMU)。
結(jié)語(yǔ)
通過(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)安全。