如今,物聯(lián)網(wǎng)(IoT)設(shè)備無處不在,增加了巨大的價(jià)值,但不幸的是,也代表著前所未有的開發(fā)風(fēng)險(xiǎn)。任何連接到互聯(lián)網(wǎng)的東西都有可能被黑客入侵。保護(hù)聯(lián)網(wǎng)設(shè)備是一項(xiàng)挑戰(zhàn),也是電子產(chǎn)品制造商最關(guān)心的問題,因?yàn)槎枷M苊庠O(shè)備被黑客入侵的尷尬。
物聯(lián)網(wǎng)安全的主題是復(fù)雜的,本文提供了一些久經(jīng)考驗(yàn)的安全解決方案的高級(jí)總結(jié),可用于構(gòu)建更安全的物聯(lián)網(wǎng)設(shè)備。
通常,連接的設(shè)備包含大量的信息,攻擊者對此非常感興趣。眾所周知,電子郵件和密碼等設(shè)備上的個(gè)人信息的價(jià)值,但攻擊者也對大量其他信息感興趣。攻擊者可能想要禁止對設(shè)備功能的訪問,或獲得對設(shè)備本身數(shù)據(jù)的訪問,從而發(fā)動(dòng)勒索軟件攻擊。他們可能使用設(shè)備作為中轉(zhuǎn)點(diǎn),以訪問該設(shè)備所連接的網(wǎng)絡(luò)。然后可以使用此中轉(zhuǎn)點(diǎn)來攻擊更多的安全敏感設(shè)備。攻擊者還可能對特定設(shè)備所代表的處理器資源或網(wǎng)絡(luò)帶寬感興趣。如果他們設(shè)法控制大量設(shè)備,那么這些資源就可以用于拒絕服務(wù)攻擊。最后,使用執(zhí)行器或傳感器的設(shè)備(例如開門或斷電)可能會(huì)受到攻擊,使家庭或工作場所的關(guān)鍵功能容易受到攻擊。
那么,可以通過哪些方式來保護(hù)設(shè)備呢?
一種方法是實(shí)施經(jīng)過現(xiàn)場驗(yàn)證的安全啟動(dòng)機(jī)制,以確保只有受信任的軟件才能在設(shè)備上運(yùn)行。這可以使用基于ROM的代碼機(jī)制來驗(yàn)證軟件,使用攻擊者無法修改的密鑰材料。然而,使用信任根模塊來啟動(dòng)設(shè)備可以進(jìn)一步加強(qiáng)啟動(dòng)過程,并支持其他安全敏感功能的安全實(shí)現(xiàn),如固件/軟件更新、安全調(diào)試訪問控制和啟動(dòng)映像機(jī)密性。使用加密來保護(hù)軟件的機(jī)密性會(huì)使攻擊者更難發(fā)現(xiàn)潛在的漏洞,但也確實(shí)要求用于解密軟件的密鑰材料保持機(jī)密。在運(yùn)行大量復(fù)雜軟件(易受邏輯攻擊)的設(shè)備中,攻擊者可以在設(shè)備啟動(dòng)后獲得代碼執(zhí)行,這意味著永遠(yuǎn)不能從設(shè)備讀取固件解密密鑰,且其使用必須僅限于設(shè)備初始化。
其次,良好的安全性需要良好的隨機(jī)數(shù)??深A(yù)測的隨機(jī)數(shù)據(jù)會(huì)立即導(dǎo)致安全漏洞。生成隨機(jī)數(shù)需要訪問一個(gè)或多個(gè)“不可預(yù)測的數(shù)據(jù)”來源,這些數(shù)據(jù)可以在典型的熵池中收集。如果攻擊者無法猜測熵池的狀態(tài),則使用該池中的數(shù)據(jù)生成的隨機(jī)數(shù)將是不可預(yù)測的。大型設(shè)備,例如基于linux的計(jì)算機(jī),可以訪問許多不同來源的不可預(yù)測的數(shù)據(jù),例如敲擊鍵盤之間的時(shí)間間隔和許多其他來源。通過訪問多個(gè)不可預(yù)測數(shù)據(jù)來源,設(shè)備可以快速填充其熵池,并生成高質(zhì)量的隨機(jī)數(shù)據(jù)。
另一方面,物聯(lián)網(wǎng)設(shè)備很小,沒有足夠多的來源來填充其熵池以播種隨機(jī)數(shù)。擁有一個(gè)“空”池,會(huì)提供一個(gè)可預(yù)測的隨機(jī)數(shù),這顯然不利于安全性。對于物聯(lián)網(wǎng)設(shè)備的用例來說,等待設(shè)備在沒有太多不可預(yù)測輸入的情況下產(chǎn)生足夠的熵可能需要很長時(shí)間。為了解決這個(gè)問題,可以在設(shè)備的芯片中構(gòu)建一個(gè)專用的隨機(jī)數(shù)生成器,這能夠快速填充熵池。在這種情況下,通過FIPS、SESIP或Common Criteria認(rèn)證的解決方案是最佳選擇,因?yàn)檫@意味著能從一個(gè)經(jīng)過嘗試、測試和認(rèn)證的來源獲得隨機(jī)數(shù)生成器。
第三,可以對進(jìn)出設(shè)備的數(shù)據(jù)進(jìn)行加密和認(rèn)證,以防止某些攻擊。保證云、后端和設(shè)備之間的通信安全。實(shí)現(xiàn)這些通信安全協(xié)議的軟件棧是抵御遠(yuǎn)程/邏輯攻擊的第一道防線。軟件需要來自可信的來源,以確保其不包含bug或后門。理想情況下,與隨機(jī)數(shù)生成器一樣,其應(yīng)該來自經(jīng)過測試和認(rèn)證的來源。
在許多情況下,設(shè)備的功能要求需要大量軟件才能在系統(tǒng)的主機(jī)處理器上運(yùn)行。這個(gè)軟件專注于讓設(shè)備做其應(yīng)該做的事情。其直接重點(diǎn)不是保護(hù)設(shè)備免受邏輯和物理攻擊,這可能會(huì)使其變得易受攻擊。如果發(fā)生攻擊,限制攻擊者行為的能力,以及確保設(shè)備能夠安全恢復(fù)的能力是至關(guān)重要的。同樣,信任根核心可以在這種情況下發(fā)揮作用,從物理上將安全關(guān)鍵軟件和數(shù)據(jù)與不受信任的軟件組件分離開來。其還可以防止密鑰材料離開設(shè)備的安全邊界,防止攻擊者對安全架構(gòu)進(jìn)行永久性更改。