物聯(lián)網(wǎng)系統(tǒng)安全得靠什么手段來(lái)保證
物聯(lián)網(wǎng)擁有從傳感器和處于不同網(wǎng)絡(luò)中的嵌入式系統(tǒng)的實(shí)時(shí)數(shù)據(jù)中創(chuàng)造巨大價(jià)值的潛力。然而,造就高價(jià)值的同時(shí)也帶來(lái)了更高的風(fēng)險(xiǎn)。由于物聯(lián)網(wǎng)設(shè)備是可以經(jīng)由網(wǎng)絡(luò)連接的,尋找在線設(shè)備的漏洞和弱點(diǎn)的惡意用戶可以很容易地嘗試攻擊這些眾多的設(shè)備。一旦找到進(jìn)入的方法,攻擊者可以隨時(shí)讓整個(gè)網(wǎng)絡(luò)癱瘓。卡巴斯基實(shí)驗(yàn)室基于一項(xiàng)全球黑客活動(dòng)問(wèn)卷調(diào)查的報(bào)告表明,僅2018上半年,就有超過(guò)40%的工業(yè)控制系統(tǒng)計(jì)算機(jī)遭受過(guò)不同程度的攻擊。
雖然服務(wù)器是主要攻擊目標(biāo),但一些簡(jiǎn)單、看似平淡無(wú)味的嵌入式設(shè)備同樣是遭受威脅的對(duì)象。誰(shuí)能想到魚(yú)缸中的電子溫控器可能會(huì)威脅到企業(yè)網(wǎng)絡(luò)安全呢? 對(duì)于一個(gè)賭場(chǎng)而言,這是完全可能的! 黑客通過(guò)薄弱的電子溫控器進(jìn)入到核心網(wǎng)絡(luò)中,進(jìn)而從這里截獲一個(gè)關(guān)鍵用戶數(shù)據(jù)庫(kù)的信息,直到安全分析人員在網(wǎng)絡(luò)日志中發(fā)現(xiàn)數(shù)據(jù)通過(guò)流媒體播放協(xié)議傳往芬蘭的一臺(tái)服務(wù)器,真相才水落石出。
銀行的內(nèi)部網(wǎng)絡(luò)曾有過(guò)通過(guò)閉路電視網(wǎng)絡(luò)被入侵的先例(雖然閉路電視的存在改善了物理層面的安全),黑客也曾經(jīng)從吸塵器的攝像頭中監(jiān)控用戶的一舉一動(dòng)。這些攻擊都應(yīng)該被避免,從而保護(hù)核心網(wǎng)絡(luò)不受入侵。為了讓隨時(shí)可能發(fā)生的攻擊變得更加困難,多層安全保護(hù)是一個(gè)關(guān)鍵。
今天,黑客時(shí)常會(huì)利用開(kāi)發(fā)團(tuán)隊(duì)的草率決定,比如,一個(gè)常見(jiàn)的問(wèn)題是設(shè)備時(shí)常會(huì)有一個(gè)統(tǒng)一的默認(rèn)的遠(yuǎn)程登錄密碼,通常這樣的密碼是為了方便物聯(lián)網(wǎng)設(shè)備的初始化,但最好的方式是給每一個(gè)設(shè)備設(shè)定不同的密碼。隨著設(shè)備生產(chǎn)商不斷提升他們的基礎(chǔ)安全水平,網(wǎng)絡(luò)犯罪者們也在升級(jí)攻擊服務(wù)器的手段。在不斷變化的環(huán)境中,嵌入式系統(tǒng)不能再以本身的價(jià)值低為理由而不去提升安全水平。就像上文中賭場(chǎng)擁有者所發(fā)現(xiàn)的那樣,任何物聯(lián)網(wǎng)設(shè)備都可能導(dǎo)致一個(gè)專有網(wǎng)絡(luò)被入侵。
如圖1所示,網(wǎng)絡(luò)系統(tǒng)可能遭遇不同類型的攻擊。舉例來(lái)說(shuō),黑客通常會(huì)利用軟件中的漏洞,如果一個(gè)設(shè)備收取了超出緩沖區(qū)大小的數(shù)據(jù),額外的字節(jié)將會(huì)溢出到其他的數(shù)據(jù)結(jié)構(gòu)中,這樣的數(shù)據(jù)結(jié)構(gòu)進(jìn)入到其他程序中后就可能會(huì)導(dǎo)致錯(cuò)誤的結(jié)果或者崩潰的發(fā)生,處理器甚至可能將這些字節(jié)認(rèn)為是跳轉(zhuǎn)地址進(jìn)而執(zhí)行錯(cuò)誤的代碼。除此之外,熟悉設(shè)備內(nèi)存布局的黑客可以構(gòu)建特定的小程序來(lái)獲取設(shè)備的控制權(quán),或者通過(guò)向設(shè)備發(fā)送特定的、能讓處理程序崩潰的數(shù)據(jù)達(dá)到目的。
圖1 應(yīng)對(duì)多種不同攻擊的方式
一些攻擊方式著重于攻擊通信協(xié)議,而不是核心設(shè)備軟件。如果協(xié)議在壓力下發(fā)生崩潰,那么在恢復(fù)過(guò)程中攻擊者就可能會(huì)趁虛而入。如果攻擊者能夠攻破設(shè)備附近的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,或者直接取得對(duì)設(shè)備的物理訪問(wèn),那么就可以偽造服務(wù)和設(shè)備見(jiàn)的通信。這類中間人攻擊可以用于分析從設(shè)備發(fā)送出來(lái)的數(shù)據(jù),并取得更多的情報(bào)用于下一步的攻擊。黑客也可能試圖在設(shè)備上載入修改后的固件,一旦成功,重啟后的硬件將可以執(zhí)行任何黑客希望的功能。
應(yīng)對(duì)方式
系統(tǒng)應(yīng)當(dāng)能夠拒絕任何未授權(quán)方發(fā)起的通信請(qǐng)求,這樣設(shè)備就不會(huì)載入黑客修改過(guò)的固件,能夠忽略拒絕服務(wù)式的攻擊,自然可以避免因蠶食系統(tǒng)的資源造成的系統(tǒng)崩潰。再者,設(shè)備不會(huì)將敏感數(shù)據(jù)發(fā)送給未經(jīng)驗(yàn)證的服務(wù)器。即使對(duì)于設(shè)備接受的數(shù)據(jù),系統(tǒng)也應(yīng)該檢查數(shù)據(jù)包的長(zhǎng)度和正確性,并拒收可能導(dǎo)致緩沖區(qū)溢出和包含命令注入的數(shù)據(jù)包。
不過(guò),對(duì)于已經(jīng)很龐大的代碼庫(kù)來(lái)說(shuō),在設(shè)備的固件中實(shí)現(xiàn)這些功能可能是不現(xiàn)實(shí)的,費(fèi)用也極其高昂,特別是使用了許多第三方軟件的固件。更加現(xiàn)實(shí)的方式是,將固件分為需要高安全保障的部分以及可以被攻擊的、不會(huì)連累安全功能的部分。舉例來(lái)說(shuō),將溫度傳感器數(shù)據(jù)包裝為JSON格式并返回給手機(jī)App的例程,并不需要進(jìn)行安全檢查。安全的代碼則需要在送出數(shù)據(jù)前進(jìn)行身份驗(yàn)證。
軟件的考量
相對(duì)于所有的代碼而言,需要全面安全強(qiáng)化的僅僅是一小部分。這樣的分隔必須確保沒(méi)有從不安全代碼滲透到安全代碼的后門。在上文緩存區(qū)泄露的例子中,如果攻擊者能夠?qū)?shù)據(jù)混入“安全的”數(shù)據(jù)中并成功偽裝成系統(tǒng)管理員,那么所有的保護(hù)措施都將失效。安全內(nèi)存和不安全區(qū)域隔離的重要性是不可言喻的,這一任務(wù)也只能在硬件級(jí)別才能可靠地完成。
Microchip SAM L11家族的嵌入式微處理器包含基于Arm TrustZone擴(kuò)展架構(gòu)的安全保護(hù)硬件,以及專有的應(yīng)對(duì)軟件攻擊的保護(hù)。SAM L11的硬件保護(hù)構(gòu)建起的信任根能讓系統(tǒng)成為更加復(fù)雜的安全框架中的一環(huán)(見(jiàn)圖2)。
圖2 雙開(kāi)發(fā)者方式
在信任根上進(jìn)行的密碼學(xué)操作能夠?qū)⑿湃螀^(qū)擴(kuò)展到系統(tǒng)的其他部分,從而在不受信任的網(wǎng)絡(luò)中建立安全的通信信道。內(nèi)建密碼學(xué)微控制器提供產(chǎn)生會(huì)話密鑰、加密和解密功能,并能夠檢查來(lái)自網(wǎng)絡(luò)的外部消息以及內(nèi)部代碼的可信性。基于密碼學(xué)的保護(hù)甚至可以檢測(cè)偽造的硬件:運(yùn)行在可信區(qū)的軟件可以向設(shè)備內(nèi)的電路板發(fā)出質(zhì)詢,并檢查返回的結(jié)果是否有效。
為了維持信任根的可靠性,SAML11硬件使用安全啟動(dòng)過(guò)程。初始啟動(dòng)首先加載ROM 中的代碼,這部分代碼通過(guò)密碼學(xué)加速器來(lái)檢查其余固件的可信性,比對(duì)每一個(gè)部分的哈希值是否與廠商在出廠時(shí)設(shè)置的參考哈希值相同。當(dāng)比對(duì)失敗時(shí)設(shè)備重置,安全啟動(dòng)過(guò)程會(huì)再次開(kāi)始。因此,即使黑客能夠修改閃存上的固件,系統(tǒng)也無(wú)法正常啟動(dòng),除非固件被恢復(fù)為出廠版本。
TrustZone技術(shù)
當(dāng)設(shè)備成功啟動(dòng)可信的固件時(shí),SAML11上的Arm TrustZone實(shí)現(xiàn)確??尚藕涂赡苡泻浖g的隔離。SAM L11的Arm Cortex M23處理器上的Arm Trust-Zone代碼提供了一組安全指令集,可以確保當(dāng)不可信的代碼執(zhí)行訪問(wèn)安全域函數(shù)調(diào)用時(shí),系統(tǒng)將會(huì)進(jìn)行檢查(見(jiàn)圖3)。Arm TrustZone技術(shù)支持安全域的創(chuàng)建,在不影響性能的前提下,不同的安全域會(huì)允許不同級(jí)別的存儲(chǔ)器、外設(shè)和面向可信軟件的I/O 訪問(wèn)。Arm TrustZone技術(shù)允許安全代碼的分組和保護(hù),這很大程度上簡(jiǎn)化了嵌入式設(shè)備的安全評(píng)估。
圖3 Cortex-M23中斷機(jī)制
為了區(qū)分和隔離安全代碼,SAML11的存儲(chǔ)器被分為不同的區(qū)域。每一個(gè)區(qū)域都由硬件來(lái)保護(hù),不受軟件攻擊影響,任何從非安全區(qū)域向安全區(qū)域的訪問(wèn),或者運(yùn)行的代碼與當(dāng)前的系統(tǒng)安全狀態(tài)不符,都會(huì)導(dǎo)致硬錯(cuò)誤發(fā)生。在此狀況下訪問(wèn)將無(wú)法成功,系統(tǒng)也可能會(huì)自動(dòng)重啟。即使在處理中斷和調(diào)試時(shí),這一保護(hù)措施依然存在。
如圖4所示,Arm TrustZone技術(shù)的實(shí)現(xiàn)維護(hù)兩個(gè)棧指針來(lái)區(qū)分安全和非安全代碼的執(zhí)行,并保證中斷處理例程不會(huì)導(dǎo)致數(shù)據(jù)泄露。調(diào)試程序時(shí)可以通過(guò)不同的訪問(wèn)級(jí)別對(duì)安全和非安全代碼進(jìn)行區(qū)別對(duì)待。在非安全部分工作的開(kāi)發(fā)者不能改變安全代碼或者直接訪問(wèn)安全區(qū)的信息,這一機(jī)制使開(kāi)發(fā)者的職責(zé)得以清楚區(qū)分,只有擁有安全資質(zhì)的開(kāi)發(fā)者才可以修改受保護(hù)的代碼。
圖4 安全和非安全態(tài)之間的標(biāo)準(zhǔn)交互
一般來(lái)講,編寫安全應(yīng)用的開(kāi)發(fā)者會(huì)提供頭文件和庫(kù)函數(shù),以便非安全代碼做出請(qǐng)求,比如加密和發(fā)送一個(gè)網(wǎng)絡(luò)數(shù)據(jù)包。受保護(hù)的代碼會(huì)在受保護(hù)的內(nèi)存區(qū)域中加載,沒(méi)有安全權(quán)限的開(kāi)發(fā)者開(kāi)發(fā)網(wǎng)絡(luò)應(yīng)用時(shí)只能通過(guò)代碼庫(kù)的API訪問(wèn)安全代碼。這樣安全代碼和數(shù)據(jù)就處在了一個(gè)黑盒子中。啟動(dòng)時(shí)安全代碼的哈希值會(huì)被檢查,被篡改的安全代碼會(huì)導(dǎo)致啟動(dòng)失敗。SAM L11的可信安全啟動(dòng)過(guò)程使得這樣的檢查成為可能。舉例來(lái)說(shuō),通過(guò)指針指向不正確的內(nèi)存位置會(huì)導(dǎo)致錯(cuò)誤發(fā)生。
外設(shè)也可以被設(shè)置為安全或者不安全,僅由被授權(quán)的軟件訪問(wèn)和控制對(duì)應(yīng)的設(shè)備。至于向兩個(gè)區(qū)域同時(shí)提供服務(wù)的外設(shè),對(duì)于它們的訪問(wèn)可以用類似安全函數(shù)的方式進(jìn)行管理。不安全的代碼可以通過(guò)安全代碼開(kāi)發(fā)者提供的API訪問(wèn)這類設(shè)備。這確保只有被授權(quán)的、可以檢測(cè)惡意訪問(wèn)的代碼才能夠直接訪問(wèn)外設(shè)。
舉例來(lái)說(shuō),不可信的代碼可以讀取一個(gè)計(jì)數(shù)器的當(dāng)前數(shù)值,但并不能進(jìn)行重置。微處理器訪問(wèn)外設(shè)和子系統(tǒng)時(shí),必須驗(yàn)證芯片密鑰存儲(chǔ)器中相應(yīng)的數(shù)字證書(shū)和獲得數(shù)據(jù)的哈希值。這一機(jī)制保護(hù)系統(tǒng)不受單個(gè)被攻陷的設(shè)備影響,也幫助生產(chǎn)商確保設(shè)備不會(huì)被用于仿制的系統(tǒng)中。即使黑客能夠篡改用于密鑰存儲(chǔ)的256字節(jié)的存儲(chǔ)器區(qū)域,SAML11也能夠檢測(cè)到這樣的行為并將密鑰和數(shù)據(jù)清零。
SAM L11的安全機(jī)制覆蓋從Arm TrustZone的隔離技術(shù)到存儲(chǔ)器物理安全等不同方面。這些機(jī)制幫助OEM在嵌入式設(shè)備中構(gòu)建整個(gè)系統(tǒng)安全,確保對(duì)應(yīng)的應(yīng)用不會(huì)成為物聯(lián)網(wǎng)中的安全薄弱環(huán)節(jié)。