現(xiàn)在被激活并處于工作狀態(tài)的許多物聯(lián)網(wǎng)設(shè)備需要服務(wù)許多年時(shí)間,具體取決于應(yīng)用類型。舉例來說,水電氣等公用事業(yè)儀表很少會(huì)更換。通信基礎(chǔ)設(shè)施設(shè)計(jì)可以運(yùn)行和共存長(zhǎng)達(dá)50年的時(shí)間。電力傳輸系統(tǒng)需要持續(xù)運(yùn)行30年或更長(zhǎng)時(shí)間。住宅、辦公室、工業(yè)大樓和其它建筑物通過數(shù)十年翻新一次,可以持續(xù)使用無(wú)限長(zhǎng)的時(shí)間。如果現(xiàn)在這些新系統(tǒng)是不安全的,那么隨著威脅的發(fā)展,它們可能很快被淘汰掉。
為了保護(hù)用戶在智能設(shè)備上的投資,防止這些設(shè)備受到入侵破壞,安全性對(duì)所有這些新設(shè)備來說都是最基本的要求。在今后幾年中,近500億個(gè)物聯(lián)網(wǎng)設(shè)備有望登錄互聯(lián)網(wǎng),其中很大部分將是微控制器或具有有限資源的小型微處理器。幸運(yùn)的是,這些小設(shè)備要比大的多的設(shè)備安全得多,因?yàn)樗鼈兏菀椎玫奖Wo(hù),并且不會(huì)遭受相同類型的威脅。這并不意味著安全性很容易滿足,只是如果你正確地發(fā)揮了MCU和小型MPU功能的話,難度沒那么大。本文將討論如何保護(hù)物聯(lián)網(wǎng)上的小設(shè)備。
必要的物聯(lián)網(wǎng)安全功能
為了完整地保護(hù)MCU或小型MPU,通常要求采用以下一些安全功能,雖然其中一些功能并不是對(duì)每個(gè)系統(tǒng)都是必要的。對(duì)于深度嵌入的MCU和MPU產(chǎn)品來說,使用標(biāo)準(zhǔn)信息技術(shù)安全解決方案的安全機(jī)制是核心安全機(jī)制。這些安全協(xié)議包括:
●TLS
●IPSec/VPN
●SSH
●SFTP
●安全引導(dǎo)程序和自動(dòng)回退
●過濾
●HTTPS
●SNMP v3
●安全無(wú)線鏈路
●加密和解密
●加密的文件系統(tǒng)
●DTLS(僅針對(duì)UDP的安全性)
●安全電子郵件
TLS、IPSec/VPN、HTTPS、安全無(wú)線鏈路和DTLS都是安全通信鏈路可以采用的方法。SFTP提供安全的文件傳輸,SSH則提供安全的遠(yuǎn)程訪問,安全電子郵件可以在加密的鏈路上提供電子郵件服務(wù)。
具有自動(dòng)回退功能的安全引導(dǎo)程序可以確保系統(tǒng)不會(huì)被破壞。SNMPv3、加密的數(shù)據(jù)和加密的文件系統(tǒng)可以通過加密保護(hù)本地?cái)?shù)據(jù)的安全,或者將要發(fā)送到另外一臺(tái)機(jī)器的數(shù)據(jù)的安全。過濾實(shí)際上是一種防火墻功能,用于拒絕有害的和未被邀請(qǐng)的客戶的訪問。下面先討論系統(tǒng)級(jí)的安全性,然后詳細(xì)討論每個(gè)部分和每個(gè)項(xiàng)目。
[page]
系統(tǒng)安全性
安全性的強(qiáng)弱只取決于最弱的鏈路或部件。為了保證系統(tǒng)的安全,所有的各種通信通道、所有的文件傳送、所有的數(shù)據(jù)存儲(chǔ)和任何更新方式都必須是安全的。在具有動(dòng)態(tài)加載、可執(zhí)行文件修改和其它復(fù)雜功能的系統(tǒng)中,很難做到真正的安全。想象以下的場(chǎng)景:
入侵者通過使用電子郵件、FTP或其它一些方式將文件移動(dòng)到機(jī)器上。
文件是動(dòng)態(tài)加載的,當(dāng)它運(yùn)行時(shí),它會(huì)破壞其它可執(zhí)行文件,然后清理并刪除自己。
如果病毒是新的,或者對(duì)系統(tǒng)來說是未知的類型,那么它就不會(huì)被系統(tǒng)認(rèn)出來是病毒,從而大搖大擺地進(jìn)入系統(tǒng)并感染它。
考慮通信鏈路不安全或沒有得到正確保護(hù)的另外一種場(chǎng)合。在這種場(chǎng)合中,可能存在讀取最低限度數(shù)據(jù)的方法。也可能存在將新數(shù)據(jù)注入數(shù)據(jù)流的方法,繼而這個(gè)數(shù)據(jù)流被用來破壞接收系統(tǒng)。
通過互聯(lián)網(wǎng)向一個(gè)設(shè)備加載一個(gè)不安全的映像就是一個(gè)很好的例子。當(dāng)這個(gè)新的映像被加載和運(yùn)行時(shí),它將接管系統(tǒng),當(dāng)然前提是它擁有正確的訪問權(quán)。
還有一種情景,即設(shè)備上的一些關(guān)鍵數(shù)據(jù)被偷竊了。除非數(shù)據(jù)已經(jīng)被加密,或者處于一個(gè)加密的文件系統(tǒng)中,否則就很可能從設(shè)備中恢復(fù)出受限制的數(shù)據(jù)。這是另一種需要考慮的情景。
為了確保系統(tǒng)的安全性,通常最好的方法是認(rèn)真考慮設(shè)備信息是如何被訪問的。通常較高的安全性要求:你知道的東西(口令),你有的東西(借記卡或可穿戴設(shè)備),以及你是什么(虹膜掃描)。
對(duì)于小型設(shè)備來說,這可能有點(diǎn)過份了,但在要求非常高安全性的場(chǎng)合,通過一些間接方法是可以滿足這些要求的,只要各個(gè)部分都是安全的。通過與服務(wù)器進(jìn)行安全的交互,進(jìn)而安全地訪問設(shè)備,那么設(shè)備的安全性接口就既可以在更大的機(jī)器上運(yùn)行,也可以用來保護(hù)小設(shè)備的安全。
安全系統(tǒng)的另外一個(gè)關(guān)鍵要素是分層的安全性,以及人們只能獲得部分訪問權(quán)的前提條件。好的設(shè)計(jì)實(shí)踐是盡可能使用層次化的安全特性。在這種情況下,入侵者也許能夠訪問系統(tǒng)的某個(gè)部分,但沒有其它顯著措施的話將不能訪問整個(gè)系統(tǒng)。舉例來說,將兩個(gè)不同的防火墻級(jí)聯(lián)在一起來保證服務(wù)器的安全,這樣一臺(tái)服務(wù)器的漏洞可以由第二個(gè)防火墻堵住。
下文先回顧提供各種安全功能的部件或軟件組件(圖1),然后討論如何使用這些組件來滿足上述各種情景中的要求。
圖1:物聯(lián)網(wǎng)就緒操作系統(tǒng)應(yīng)該包含的與安全性有關(guān)的互聯(lián)網(wǎng)協(xié)議組件將允許在整套協(xié)議之上實(shí)現(xiàn)無(wú)縫集成,從而提供高質(zhì)量的安全性。
通信安全
這類安全協(xié)議用于確保機(jī)到機(jī)通信是安全的。它有一個(gè)信任層,可確保某些信息是可以依賴的,并且可以建立安全的通信。
TLS或較老的SSL是最常用的方法,可用于為TCP流套接字或具有順序數(shù)據(jù)和保證送達(dá)承諾的流連接提供通信安全。DTLS是一種較新的協(xié)議,用于提供安全的UDP傳送,或基于TLS的數(shù)據(jù)報(bào)分組。這兩種協(xié)議都適用于應(yīng)用到應(yīng)用的通信。
IPSec或虛擬專用網(wǎng)(VPN)使用TCP棧中的虛擬鏈路安全性,它的設(shè)置比較復(fù)雜,但允許應(yīng)用程序通過鏈路實(shí)現(xiàn)安全的通信,即使應(yīng)用程序本身不提供安全性。這種方法使用不是很廣泛,一方面是因?yàn)樵O(shè)置有一定難度,另一方面是許多人認(rèn)為算法開發(fā)中美國(guó)國(guó)家安全局(NSA)的界入使得安全性可疑的事實(shí)。
HTTPS是基于TLS的一種安全的網(wǎng)絡(luò)服務(wù)器訪問協(xié)議,它能提供安全的應(yīng)用層訪問。同樣,SSH提供對(duì)遠(yuǎn)程用戶的安全終端模擬訪問。
安全的無(wú)線鏈路可以確保無(wú)線信號(hào)不會(huì)被收集,數(shù)據(jù)不會(huì)被任何有天線的人提取出來。
安全電子郵件用于確保用電子郵件發(fā)送的數(shù)據(jù)不會(huì)以明文方式傳送。一種選項(xiàng)是在數(shù)據(jù)發(fā)送前進(jìn)行加密。更簡(jiǎn)單更通用的解決方案是在加密的鏈路上提供電子郵件服務(wù),這種加密的鏈路可以確保所有電子郵件數(shù)據(jù)對(duì)管理電子郵件的服務(wù)器來說都是安全的。
[page]
使用SNMP進(jìn)行安全的文件傳輸
SNMPv3可以加密數(shù)據(jù),同時(shí)加密和解密例程用于保護(hù)數(shù)據(jù)。如果所有數(shù)據(jù)都是重要的,那么可以使用文件加密方法,雖然這樣做會(huì)犧牲一點(diǎn)性能。
過濾和防火墻保護(hù)。通過過濾掉經(jīng)過網(wǎng)絡(luò)服務(wù)器抵達(dá)的所有數(shù)據(jù)包可以阻止未授權(quán)的訪問。使用先進(jìn)的過濾技術(shù),設(shè)計(jì)師可以確保正確的用戶取得訪問權(quán),系統(tǒng)能防止未授權(quán)的訪問。這些過濾規(guī)則可能需要逐個(gè)設(shè)備去設(shè)置。通常它與SSH或SNMP共同起作用。
安全的引導(dǎo)程序。安全啟動(dòng)是一個(gè)安全系統(tǒng)的重要部分(圖2)。一般經(jīng)常需要更新固件,而以安全的方式進(jìn)行更新是非常重要的。這種方法可以取消所有出廠固件更新,并且利用自動(dòng)回退機(jī)制可以極大地增強(qiáng)更新能力。借助自動(dòng)回退機(jī)制,如果新版本(可能被破壞了的版本)無(wú)法啟動(dòng),可以自動(dòng)啟動(dòng)以前的安全版本——這是層次化安全機(jī)制的一個(gè)組成部分。
圖2:Unison RTOS能夠在最低層次提供額外的安全啟動(dòng)功能,因此可以完整地保護(hù)系統(tǒng)。沒有解釋器或加載一個(gè)程序并加以運(yùn)行然后利用系統(tǒng)漏洞的其它方法,攻擊系統(tǒng)就會(huì)變得異常困難。
重新審視系統(tǒng)安全性
現(xiàn)在讓我們考慮一下具有有限資源的MCU或MPU安全性,它們需要借助如果不是全部也是大部分這些協(xié)議來實(shí)現(xiàn)安全。為了提供實(shí)際例子,考慮Unison操作系統(tǒng)——一種微型POSIX RTOS,它具有現(xiàn)成的這些功能。
首先,使用安全通信協(xié)議,與目標(biāo)設(shè)備交談的所有應(yīng)用程序都可以做到很安全,包括電話應(yīng)用、對(duì)微型網(wǎng)絡(luò)服務(wù)器的安全網(wǎng)絡(luò)訪問等。像緩沖器溢出攻擊等騙局就不可能發(fā)生了,因?yàn)閁nison設(shè)計(jì)在很少的資源條件下運(yùn)行,必須防止任何不合理的資源使用。安全的無(wú)線鏈路是可以使用的。VPN也可以使用。
為了將文件發(fā)送到系統(tǒng),可以使用SFTP。這樣可以保證數(shù)據(jù)在傳輸過程中不會(huì)被破壞——這對(duì)于保證系統(tǒng)更新的安全非常重要。
向TCP服務(wù)器中的前端處理過程中增加過濾功能可以確保只有授權(quán)的請(qǐng)求和更新得到處理。這樣可以防止設(shè)備受到入侵者的破壞,極大地提高安全性。
另外,SSH可以用來借助基于終端的方法對(duì)設(shè)備進(jìn)行遠(yuǎn)程設(shè)置。與網(wǎng)絡(luò)服務(wù)器相比,這種方法比基于腳本的方法更有幫助,可以保證設(shè)備的設(shè)置也是安全的。
此時(shí)數(shù)據(jù)流入流出設(shè)備都是安全的。任何修改或設(shè)置也是安全的,授權(quán)的應(yīng)用和用戶可以獲取對(duì)設(shè)備數(shù)據(jù)和功能的訪問權(quán)。
如果設(shè)備被偷了怎么辦?為了保證這種情況下的安全,要么加密設(shè)備上存儲(chǔ)的數(shù)據(jù),要么不保存本地?cái)?shù)據(jù),或者使用加密的文件系統(tǒng)。這樣可以確保設(shè)備上的關(guān)鍵數(shù)據(jù)的安全。
如果用戶有設(shè)備,并且有口令,那么通常被認(rèn)為具有合理的安全性??梢栽黾又讣y掃描、虹膜掃描、掌紋和其它設(shè)備等方面的額外安全性,從而實(shí)現(xiàn)與設(shè)備的安全,或連接到安全訪問站的安全。
上面討論了幾乎所有的安全場(chǎng)景,還有一種除外,即破壞安全系統(tǒng)的程序執(zhí)行問題還沒有考慮。在MCU和某些MPU案例中,程序是從閃存運(yùn)行的單個(gè)鏈接映像。在這種情況下,不可能給系統(tǒng)增加任何東西,因?yàn)檎麄€(gè)映像是從閃存運(yùn)行的,如果啟動(dòng)機(jī)制或刷新機(jī)制是安全的,那么入侵者根本不可能引入新的代碼。對(duì)Unison操作系統(tǒng)來說就是這樣,因此這種系統(tǒng)特別安全。
當(dāng)系統(tǒng)中存在解釋器的時(shí)候,就不能下相同的結(jié)論了。解釋性程序可以利用MCU或MPU上的自由訪問權(quán)而到處修改系統(tǒng),除非安裝了精心設(shè)計(jì)的安全機(jī)制,比如使用內(nèi)存保護(hù)單元或內(nèi)存管理單元(MMU)。
相關(guān)閱讀:
如何應(yīng)對(duì)物聯(lián)網(wǎng)的四大隱患?且看招
揭秘物聯(lián)網(wǎng)安全五大“謊言”,其實(shí)沒那么安全
專家剖析:物聯(lián)網(wǎng)智能硬件給哪些行業(yè)帶來實(shí)質(zhì)利好?