雖然嵌入式系統(tǒng)往往缺乏服務(wù)器甚至當(dāng)代個(gè)人計(jì)算機(jī)的處理能力,但這種設(shè)備數(shù)量之多正使它們成為非法僵尸網(wǎng)絡(luò)和加密貨幣挖礦操作等不良行為越來(lái)越有價(jià)值的目標(biāo)。事實(shí)上,嵌入式系統(tǒng)設(shè)計(jì)人員的第一個(gè)主要安全相關(guān)警鐘即包括 2016 年 Nest 恒溫器受到的僵尸網(wǎng)絡(luò)攻擊。由于許多特定物聯(lián)網(wǎng) (IoT)都會(huì)面向普通消費(fèi)者,以及它們對(duì)隱私和安全敏感性不斷增加的要求,Nest 僵尸網(wǎng)絡(luò)引發(fā)了大量討論。這些討論往往集中在公司應(yīng)該如何在他們的低成本物聯(lián)網(wǎng)產(chǎn)品中實(shí)現(xiàn)安全性,以及消費(fèi)者如何在他們的家庭和企業(yè)中安全地操作這些設(shè)備。
隨著網(wǎng)絡(luò)攻擊的威脅越來(lái)越大,開發(fā)人員必須在整個(gè)設(shè)計(jì)過(guò)程中牢記安全方面的考慮。通過(guò)遵循一些實(shí)用的提示和建議,開發(fā)人員可以防范各種攻擊場(chǎng)景。請(qǐng)繼續(xù)閱讀下文,開發(fā)人員可以了解在嵌入式設(shè)計(jì)中使用的安全措施概要。
安全構(gòu)建
雖然有許多種芯片架構(gòu)、操作系統(tǒng)和通信協(xié)議,許多物聯(lián)網(wǎng)設(shè)備往往是圍繞基于 Arm® 的架構(gòu)構(gòu)建,如果它們運(yùn)行操作系統(tǒng),則往往是 Linux 的一個(gè)版本Linux distribution。這種共性在很多方面都有好處,可實(shí)現(xiàn)更低的成本和更快的開發(fā)時(shí)間,但它也會(huì)產(chǎn)生很多負(fù)面影響。攻擊向量趨向于“一刀切”,尤其是對(duì)于運(yùn)行基于 Linux 操作系統(tǒng)的設(shè)備。為了減輕與廣泛的共享通用架構(gòu)設(shè)備相關(guān)的威脅,開發(fā)人員應(yīng)實(shí)施以下“速贏”安全設(shè)計(jì)原則:
- 不要將密碼硬編碼到固件中。此外,不要對(duì)所有設(shè)備使用通用默認(rèn)密碼,需要用戶在設(shè)備初始化期間創(chuàng)建自定義用戶名和密碼。
- 不要默認(rèn)啟用HTTP、FTP 或 Telnet等不安全的協(xié)議。通過(guò)有線或無(wú)線協(xié)議發(fā)送設(shè)備的數(shù)據(jù)必須經(jīng)過(guò)高度加密,避免“自制”加密解決方案。
- 以盡可能嚴(yán)格的配置運(yùn)送設(shè)備,讓最終用戶主動(dòng)決定減少與安全相關(guān)的設(shè)置。
- 用于訪問(wèn)設(shè)備的所有機(jī)制都應(yīng)要求身份驗(yàn)證和授權(quán)控制。如果可行,應(yīng)使用雙重身份驗(yàn)證 (2FA)。
- 所有面向用戶的輸入都應(yīng)該施加過(guò)濾,以避免注入型的攻擊。
- 為最終用戶實(shí)施一個(gè)安全的設(shè)備管理界面,使他們能夠管理其資產(chǎn)、更新設(shè)備、監(jiān)控設(shè)備以及安全地停用已達(dá)到其使用壽命 (EOL) 的設(shè)備。
- 必須在設(shè)備上驗(yàn)證無(wú)線 (OTA) 更新機(jī)制。更新文件在發(fā)送到設(shè)備的途中必須加密。最后,確保有防回滾(anti-rollback)功能,以防止設(shè)備恢復(fù)到以前的不安全固件。
- 如果您的設(shè)備在設(shè)計(jì)中使用了第三方軟件庫(kù),則必須對(duì)其進(jìn)行持續(xù)監(jiān)控,以確保集成第三方的更新并且它們不會(huì)被棄用。廢棄的軟件項(xiàng)目可能會(huì)成為您設(shè)備的嚴(yán)重漏洞。在將第三方軟件應(yīng)用到您的項(xiàng)目之前,請(qǐng)更改默認(rèn)密碼。
- 限制在設(shè)備上應(yīng)該存儲(chǔ)哪些敏感數(shù)據(jù),僅將此類信息存儲(chǔ)在安全飛地(enclave)中。
- 請(qǐng)記住,對(duì)于物聯(lián)網(wǎng),嵌入式系統(tǒng)只是更大生態(tài)系統(tǒng)的一部分,需要確保安全性也內(nèi)置于云端、桌面和移動(dòng)應(yīng)用程序中。生態(tài)系統(tǒng)的安全只取決于最薄弱的環(huán)節(jié)。
- 考慮建立漏洞賞金計(jì)劃,以鼓勵(lì)最終用戶和安全研究人員以安全、負(fù)責(zé)任的方式提交漏洞。
對(duì)設(shè)備的物理訪問(wèn)往往是對(duì)于設(shè)備游戲結(jié)束的情況,但這并不意味著沒有辦法讓物理侵入這些類型設(shè)備變得更加困難。有些整本的書都是關(guān)于制作防篡改的電路板和相關(guān)外殼,但如果想了解一些“速勝”技巧,請(qǐng)考慮以下物理設(shè)計(jì)經(jīng)驗(yàn)法則來(lái)強(qiáng)化您的設(shè)備:
- 用于調(diào)試JTAG 和 UART等端口的引腳在開發(fā)和測(cè)試設(shè)備時(shí)非常有用。對(duì)于那些尋求惡意逆向工程設(shè)備的人來(lái)說(shuō),它們也是誘人的攻擊目標(biāo)。建議混淆這些引腳和/或刪除生產(chǎn)單元的插頭引腳。請(qǐng)注意,這樣做的代價(jià)是一旦設(shè)備投入使用就很難進(jìn)行故障排除,設(shè)計(jì)人員必須考慮安全性和可維護(hù)性之間的平衡。
- 使用粘合劑、超聲焊接和/或?qū)S冒踩萁z會(huì)使打開設(shè)備變得更加困難。
- 在敏感元件上涂上非導(dǎo)電環(huán)氧樹脂能夠模糊它們的身份和用途。
- 您可能很想使用可能存在漏洞的舊組件,但需要注意假冒組件。如果一筆交易看起來(lái)好得令人難以置信,那它可能就存在風(fēng)險(xiǎn)。在平衡安全性和上市時(shí)間的問(wèn)題上,不能做輕率的決定。
- 可使用多層板進(jìn)行布線走線,使其更難以辨別電路板的功能。
以下一些建議可能更多地適用于消費(fèi)類物聯(lián)網(wǎng)設(shè)備,然而,正如我們稍后將討論的那樣,工業(yè)控制系統(tǒng)和國(guó)防系統(tǒng)同樣也會(huì)受益于這些更強(qiáng)大的物理安全措施:
- 將安全功能內(nèi)置到電路板本身,微動(dòng)開關(guān)(microswitches)、水銀開關(guān)(mercury switches)或磁性開關(guān)可以檢測(cè)電路板是否被無(wú)意處理或打開。也可以使用鎳鉻合金線或光纖。如果電線或光纖受到試圖篡改設(shè)備人的負(fù)面影響,那么電線的電流或通過(guò)光纖傳輸的光子行為將會(huì)發(fā)生可檢測(cè)的變化。
- 側(cè)通道或故障攻擊(glitching attacks)可能不常見,但能夠?yàn)閷?duì)手提供獨(dú)特的優(yōu)勢(shì),因?yàn)樗麄兪褂梦锢矶晒粼O(shè)備,因此雖然可以檢測(cè)到,但卻難以預(yù)防。通過(guò)攻擊時(shí)序或限制電子流向 CPU,有可能使設(shè)備以意想不到的方式運(yùn)行,從而降低安全功能。可以在電路板上安裝電壓和電流傳感器,以檢測(cè)是否可能發(fā)生故障攻擊,但這樣也存在誤報(bào)的可能性。
- 一些重量級(jí)對(duì)手可以使用 X 射線機(jī)器窺探微芯片,并發(fā)現(xiàn)晶體管的形態(tài)以確定其功能和更多信息??梢栽谙到y(tǒng)中添加能夠檢測(cè) X 射線的傳感器來(lái)監(jiān)測(cè)這種攻擊,但無(wú)法阻止對(duì)手提取有用信息。
應(yīng)該指出的是,安全和開放范式之間存在相當(dāng)大的區(qū)分,安全注重混淆程序,而開放硬件則注重理解程序。無(wú)論如何,請(qǐng)記住這句古老的格言:鎖只會(huì)讓誠(chéng)實(shí)的人保持誠(chéng)實(shí),對(duì)于整個(gè)安全領(lǐng)域也是如此。有關(guān)如何構(gòu)建安全 IoT 設(shè)備的更多信息,請(qǐng)?jiān)L問(wèn)開放網(wǎng)絡(luò)應(yīng)用安全項(xiàng)目 (Open Web Application Security Project ,OWASP) IoT 項(xiàng)目。
操作安全
即使制造商能夠在其產(chǎn)品中實(shí)施所有最好的安全設(shè)計(jì)原則,如果最終用戶不以安全的方式操作這些設(shè)備,結(jié)果也大多是徒勞無(wú)用。
- 更改默認(rèn)路由器名稱、路由器密碼、網(wǎng)絡(luò)名稱 (SSID) 和網(wǎng)絡(luò)加密密鑰。請(qǐng)務(wù)必使用強(qiáng)密碼原則,不要為兩個(gè)網(wǎng)絡(luò)設(shè)置相同的密碼。
- 將您的家庭網(wǎng)絡(luò)分割成兩個(gè)“虛擬”網(wǎng)絡(luò),這樣物聯(lián)網(wǎng)設(shè)備就不會(huì)被臺(tái)式計(jì)算機(jī)、網(wǎng)絡(luò)附加存儲(chǔ) (NAS) 設(shè)備等“看到”。要快速簡(jiǎn)捷地做到這一點(diǎn),請(qǐng)為您的物聯(lián)網(wǎng)采用訪客網(wǎng)絡(luò)功能。
- 大多數(shù)物聯(lián)網(wǎng)設(shè)備依賴智能手機(jī)應(yīng)用程序來(lái)控制設(shè)備,因而需使應(yīng)用程序保持最新狀態(tài),并在可用時(shí)使用 2FA 登錄。
- 禁用您不打算使用的 IoT 設(shè)備任何功能。
- 定期更新路由器和物聯(lián)網(wǎng)設(shè)備的固件。
- 當(dāng)物聯(lián)網(wǎng)設(shè)備達(dá)到使用壽命并且不再接收更新時(shí),請(qǐng)考慮將其替換為較新的型號(hào)。
工業(yè)應(yīng)用級(jí)安全
面向消費(fèi)者的物聯(lián)網(wǎng)產(chǎn)品可能很多,但對(duì)于工業(yè)領(lǐng)域的物聯(lián)網(wǎng)產(chǎn)品,可統(tǒng)稱為工業(yè)控制系統(tǒng) (ICS),它們管理著許多極其重要和具有潛在危險(xiǎn)的工業(yè)過(guò)程。從能源生產(chǎn)到工廠,所有一切都使用嵌入式數(shù)字技術(shù)(稱為操作技術(shù)或 OT,相對(duì)于以辦公室為中心的信息技術(shù)或 IT )來(lái)控制負(fù)責(zé)執(zhí)行各種流程的設(shè)施和相關(guān)機(jī)械設(shè)備。 ICS 環(huán)境與嚴(yán)格的 IT 環(huán)境有很大不同,因此需要特別考慮加固 OT 設(shè)備和 ICS 網(wǎng)絡(luò)。這其中最基本的原則是 ICS 不應(yīng)連接到互聯(lián)網(wǎng),雖然這看起來(lái)很簡(jiǎn)單,但令人驚訝的是,這條基本規(guī)則被違反的頻率卻是如此之高。有關(guān)如何保護(hù) ICS 網(wǎng)絡(luò)和設(shè)備的更多信息,請(qǐng)查看兩個(gè)安全框架:用于 ICS 的 MITRE ATT&CK 和用于企業(yè)的 MITRE ATT&CK。
通常ICS 系統(tǒng)都會(huì)部署在環(huán)境嚴(yán)苛、化學(xué)或其他危險(xiǎn)區(qū)域,這種性質(zhì)意味著 ICS 設(shè)計(jì)中系統(tǒng)的可用性優(yōu)先于機(jī)密性。 從更積極的角度來(lái)看,這通常要求存在冗余系統(tǒng),并且這些系統(tǒng)發(fā)生故障時(shí)需要保證安全性。 然而,ICS 系統(tǒng)可能會(huì)持續(xù)運(yùn)行數(shù)十年,并且可能并不總是保持最新狀,而且許多協(xié)議都版本較舊,并且在構(gòu)建時(shí)只考慮了效率,而不是安全性。 歸根結(jié)底,ICS 或 IIoT 領(lǐng)域的安全性具有獨(dú)特的巨大挑戰(zhàn),可能難以實(shí)施面面俱到的最佳部署實(shí)踐。 但是,此類設(shè)備的嵌入式開發(fā)人員應(yīng)該認(rèn)識(shí)到需要對(duì)設(shè)計(jì)慣例進(jìn)行現(xiàn)代化改進(jìn),并將安全性納入未來(lái)的設(shè)計(jì),而不是再采用事后的補(bǔ)充。