在構(gòu)建物聯(lián)網(wǎng)產(chǎn)品以確保物聯(lián)網(wǎng)設(shè)備安全時(shí),人們應(yīng)該問自己一些問題。在構(gòu)建物聯(lián)網(wǎng)解決方案時(shí)確保安全是非常具有挑戰(zhàn)性的。
可以論證的是,保護(hù)解決方案的“云”端并不是什么新鮮事,而且有很多完善的實(shí)踐和支持框架可以幫助您做正確的事情。當(dāng)涉及到“硬件”方面,最終連接到公共網(wǎng)絡(luò)的嵌入式設(shè)備——這對(duì)大多數(shù)人來說仍然是未知的領(lǐng)域。
本文將介紹在構(gòu)建連接產(chǎn)品時(shí)應(yīng)該問自己的幾個(gè)問題,并提供一些答案,以幫助企業(yè)使下一個(gè)物聯(lián)網(wǎng)設(shè)備盡可能安全。
(1)我的設(shè)備的身份是什么?它是不可偽造的嗎?
當(dāng)您以個(gè)人身份對(duì)網(wǎng)站或任何形式的在線服務(wù)進(jìn)行身份驗(yàn)證時(shí),您通常依賴于多因素身份驗(yàn)證(MFA)來避免冒充和身份盜竊。多因素身份驗(yàn)證使得攻擊者幾乎不可能偽造您的在線身份,因?yàn)樗麄兛赡軣o(wú)法訪問驗(yàn)證所述網(wǎng)站或服務(wù)所需的所有證據(jù)。
例如,他們可能知道你的密碼,他們甚至偷了你的手機(jī),但他們不知道你的6位數(shù)密碼,也沒有你的指紋。簡(jiǎn)而言之:他們將無(wú)法完成登錄過程并冒充您。
(2)是否可以實(shí)施類似的機(jī)制來防止物理物聯(lián)網(wǎng)設(shè)備的身份盜竊?
答案是使用專用硬件,如可信平臺(tái)模塊(TPM)。簡(jiǎn)而言之,這種設(shè)備持有由硬件保護(hù)的加密密鑰。私鑰一旦存儲(chǔ)在模塊中,就永遠(yuǎn)不會(huì)離開模塊,然后使用公鑰來證明設(shè)備的身份。由于密鑰無(wú)法偽造,因此冒充設(shè)備實(shí)際上相當(dāng)于獲得對(duì)其的物理訪問權(quán)限(當(dāng)然,這會(huì)帶來其他安全問題,我們將很快討論!)。
(3)我的代碼在哪里運(yùn)行?
術(shù)語(yǔ)可信計(jì)算基礎(chǔ)(TCB)是指對(duì)系統(tǒng)安全性至關(guān)重要的一組硬件、固件和軟件組件。物聯(lián)網(wǎng)設(shè)備有幾個(gè)方面將在確保系統(tǒng)的整體安全性方面發(fā)揮作用,從前面提到的TPM到操作系統(tǒng)的內(nèi)核(可能是實(shí)時(shí)的)。
在設(shè)計(jì)物聯(lián)網(wǎng)設(shè)備時(shí),必須記住,可信計(jì)算基礎(chǔ)應(yīng)盡可能小。這樣,可以最小化攻擊的表面,并降低TCB中允許攻擊者繞過安全保護(hù)并部署惡意有效負(fù)載(例如,允許他們竊取有價(jià)值的業(yè)務(wù)數(shù)據(jù))的錯(cuò)誤(或功能!)的風(fēng)險(xiǎn)。
如果可以的話,嘗試在一個(gè)操作系統(tǒng)或?qū)崟r(shí)操作系統(tǒng)之上構(gòu)建,它允許只發(fā)布和啟用您真正需要的功能。在任何情況下,您的應(yīng)用程序代碼都應(yīng)該在TCB之外運(yùn)行,這樣它就可以在不影響安全性的情況下出錯(cuò)。
(4)我的軟件組件是劃分的嗎?
看門狗計(jì)時(shí)器是一個(gè)精妙的概念,如果嵌入式系統(tǒng)的一個(gè)組件停止響應(yīng),可以自動(dòng)觸發(fā)完全重置——我有時(shí)也想知道它們是否應(yīng)該首先存在。
從歷史上看,通常由于硬件的限制,嵌入式代碼被設(shè)計(jì)成一個(gè)相當(dāng)單一的整體,其中一個(gè)組件的缺陷或破壞可能會(huì)危及整個(gè)系統(tǒng),因此需要監(jiān)管機(jī)構(gòu)來減輕軟件故障的后果。
現(xiàn)在,除了一個(gè)無(wú)害的軟件錯(cuò)誤導(dǎo)致模塊掛起之外,如果論的是該模塊的破壞,會(huì)發(fā)生什么?當(dāng)然,人們不希望攻擊者因?yàn)槟硞€(gè)軟件模塊的缺陷而控制整個(gè)系統(tǒng)。
為了降低這種風(fēng)險(xiǎn),安全的物聯(lián)網(wǎng)設(shè)備應(yīng)該允許將其各種軟件組件劃分開來,并在它們之間實(shí)現(xiàn)硬件強(qiáng)制的邊界。如果在RTOS之上構(gòu)建,允許將模塊作為獨(dú)立的任務(wù)或進(jìn)程運(yùn)行,那么可能處于良好狀態(tài)。
更重要的是,您的設(shè)備將理想地具有安全模型,允許限制每個(gè)軟件模塊可以訪問的硬件資源。
(5)我的安全機(jī)制的網(wǎng)播范圍有多廣?
從分布式拒絕服務(wù)(DDoS)或勒索軟件攻擊到使用物聯(lián)網(wǎng)設(shè)備作為訪問企業(yè)網(wǎng)絡(luò)的一種方式,物聯(lián)網(wǎng)設(shè)備可能成為黑客的一個(gè)誘人目標(biāo)。你應(yīng)該假設(shè)你的設(shè)備會(huì)被黑客攻擊,黑客通常比你想象的更有創(chuàng)造力和持久性。
縱深防御起源于軍事領(lǐng)域,是一種通過將資源(防御工事,軍事單位等)部署在前線并遠(yuǎn)遠(yuǎn)超出前線而延遲攻擊者的技術(shù)。這樣,即使攻擊者設(shè)法突破前線,他們?cè)谏钊霊?zhàn)場(chǎng)時(shí)仍將面臨幾層防御。
應(yīng)用于物聯(lián)網(wǎng)設(shè)備(以及一般的IT),縱深防御包括實(shí)施多層安全控制,在每個(gè)潛在威脅面前放置幾種類型的緩解措施。
例如,控制對(duì)物理總線的訪問的內(nèi)部防火墻、網(wǎng)絡(luò)防火墻和安全引導(dǎo)的組合將大大減少您的設(shè)備受到威脅的機(jī)會(huì)。在不太可能發(fā)生的情況下,攻擊者通過安全引導(dǎo)并能夠執(zhí)行惡意負(fù)載,防火墻將阻止他們物理訪問設(shè)備的外圍設(shè)備或連接到遠(yuǎn)程第三方服務(wù)器。
(6)鑒權(quán)是基于密碼還是證書?
由于可公開訪問的設(shè)備依賴于默認(rèn)憑據(jù),因此存在明顯的威脅,除此之外,基于密碼的身份驗(yàn)證在大規(guī)模管理時(shí)可能會(huì)很棘手。
例如,如何從被盜的密碼中恢復(fù),特別是當(dāng)它被部署在現(xiàn)場(chǎng)的數(shù)千臺(tái)設(shè)備使用時(shí)?另一方面,基于證書的身份驗(yàn)證不依賴于共享秘密,并且支持相互身份驗(yàn)證,從而限制了中間人攻擊的風(fēng)險(xiǎn)。
(7)設(shè)備可以輕松自動(dòng)更新嗎?
說到物聯(lián)網(wǎng)設(shè)備,俗話說:“如果你不能更新它,你就不能保護(hù)它。”
為了使設(shè)備在一段時(shí)間內(nèi)保持安全,它需要允許隨著安全威脅的發(fā)展和攻擊者發(fā)現(xiàn)新的攻擊媒介而推出安全更新。
在理想情況下,用戶還應(yīng)該有適當(dāng)?shù)挠布胧?,以防止設(shè)備在更新后恢復(fù)到已知的易受攻擊狀態(tài)。
我的設(shè)備是否報(bào)告故障?
物聯(lián)網(wǎng)設(shè)備可能出現(xiàn)故障的原因有很多。例如,它可能是由于攻擊者試圖通過利用漏洞或嘗試暴力破解密碼來控制它。它也可能僅僅是由于設(shè)備遇到角落情況并切換到未定義狀態(tài),使其易受攻擊。
無(wú)論出于何種原因,能夠跟蹤整個(gè)機(jī)隊(duì)的這些故障都是至關(guān)重要的,這樣不僅可以診斷和糾正故障,還可以在攻擊被有效利用之前隔離和減輕潛在的攻擊向量。
有幾種解決方案可以幫助處理錯(cuò)誤報(bào)告。Azure物聯(lián)網(wǎng)安全中心及其相關(guān)的開源代理是如何自動(dòng)收集和記錄事件的好例子,例如登錄嘗試失敗,來自異常IP地址的連接等。
結(jié)論
人們可能喜歡親自動(dòng)手使用實(shí)際設(shè)備和實(shí)際代碼來熟悉一個(gè)新領(lǐng)域。如果是這樣的話,我只能推薦AzureSphere開發(fā)工具包作為工具來掌握構(gòu)建安全物聯(lián)網(wǎng)設(shè)備所需的工具。
該套件基于開放硬件參考設(shè)計(jì),基本上實(shí)現(xiàn)了本文中列舉的所有屬性,并使物聯(lián)網(wǎng)設(shè)備安全。它具有一個(gè)安全的,連接的微控制器單元(MCU),一個(gè)定制的高級(jí)基于linux的操作系統(tǒng),以及一個(gè)基于云的安全服務(wù),提供持續(xù)的,可更新的安全性。