嵌入式設(shè)備很可能構(gòu)成物聯(lián)網(wǎng)基礎(chǔ)設(shè)施的大部分低級(jí)別傳感器和控制裝置——比如運(yùn)動(dòng)傳感器、環(huán)境監(jiān)測(cè)和設(shè)備控制。在嵌入式開(kāi)發(fā)中,嵌入式設(shè)備非常適合此角色,因?yàn)樗麄兊凸?、低成本?/span>
所有這些嵌入式設(shè)備都有非常具體的安全要求。除了容易受到服務(wù)器、桌面和移動(dòng)設(shè)備中常見(jiàn)的所有攻擊(即保護(hù)我們的數(shù)據(jù)),嵌入式設(shè)備還容易受到更高級(jí)的硬件攻擊。讓我們來(lái)看看我們?cè)跇?gòu)建物聯(lián)網(wǎng)產(chǎn)品的嵌入式設(shè)備時(shí)可能面臨的一些問(wèn)題。
有限的資源
在嵌入式設(shè)備中保護(hù)數(shù)據(jù)與在服務(wù)器中保護(hù)數(shù)據(jù)非常相似,但需要注意一些事項(xiàng)。嵌入式設(shè)備的低功耗和低成本的結(jié)果當(dāng)然是有限的計(jì)算資源。通常,嵌入式設(shè)備將具有有限的可用程序空間、CPU和RAM。這些約束將直接影響您的安全考慮,可能意味著您無(wú)法使用用于構(gòu)建服務(wù)器端、集線(xiàn)器或移動(dòng)設(shè)備功能的安全庫(kù)。但如果您的嵌入式設(shè)備需要使用應(yīng)用層加密,則必須訪(fǎng)問(wèn)加密庫(kù),這一要求可以通過(guò)使用專(zhuān)門(mén)為嵌入式設(shè)備設(shè)計(jì)的加密庫(kù)來(lái)解決,例如wolfSSL或底層wolfCrypto。
在嵌入式開(kāi)發(fā)中,向嵌入式設(shè)備添加加密功能的另一個(gè)選項(xiàng)是使用加密協(xié)處理器;例如,Atmel的加密身份驗(yàn)證范圍。這種協(xié)處理器將加密功能從應(yīng)用程序處理器卸載到另一個(gè)專(zhuān)用處理器。
固件空中傳送
“空中傳送”(Over-the-air)或“固件空中傳送”(FOTA)——從技術(shù)上講,更新不是安全功能。事實(shí)上,可以說(shuō),如果實(shí)施不當(dāng),它們實(shí)際上可能導(dǎo)致安全漏洞。但是,如果正確實(shí)施,F(xiàn)OTA允許您在已經(jīng)發(fā)貨的設(shè)備上更新固件,更重要的是更新安全固件。
保護(hù)您的FOTA系統(tǒng)的一個(gè)有用步驟是為您的設(shè)備提供公鑰,該公鑰可用于驗(yàn)證簽名代碼更新。使用此機(jī)制,您可以確保僅將正式簽署的更新應(yīng)用于您的設(shè)備。然而,值得注意的是,這個(gè)簽名方法只與它的實(shí)現(xiàn)一樣好。Trammell
Hudson的ThunderTrike攻擊利用Thunderbolt Option
ROM中的漏洞繞過(guò)蘋(píng)果EFI固件更新例程中的此類(lèi)檢查。該攻擊允許將不受信任的代碼閃存到啟動(dòng)ROM中,以及過(guò)度寫(xiě)入用于驗(yàn)證更新的公共RSA密鑰。雖然最初的攻擊需要物理訪(fǎng)問(wèn)計(jì)算機(jī),但在嵌入式開(kāi)發(fā)中,通過(guò)過(guò)度寫(xiě)入RSA密鑰,可以遠(yuǎn)程實(shí)現(xiàn)未來(lái)的更新。
高級(jí)攻擊–側(cè)通道攻擊
側(cè)通道攻擊是指任何依賴(lài)于物理信息的加密攻擊。例如,功耗或電磁輻射。簡(jiǎn)單功率分析(SPA)和差分功率分析(DPA)就是此類(lèi)攻擊的示例。執(zhí)行SPA或DPA攻擊需要監(jiān)控設(shè)備的功耗,這將隨微處理器操作的不同而變化。功耗的變化允許有經(jīng)驗(yàn)的攻擊者提取有關(guān)加密的信息。理想情況下,攻擊者希望獲得加密密鑰,因?yàn)檫@樣他們就可以簡(jiǎn)單地監(jiān)視傳輸并根據(jù)需要進(jìn)行解碼。
顯然,側(cè)通道攻擊需要正確的設(shè)備和專(zhuān)業(yè)知識(shí)。因此,它不太可能被一個(gè)沒(méi)有經(jīng)驗(yàn)的裂解工使用。但是,如果您的物聯(lián)網(wǎng)產(chǎn)品具有較高的安全要求,并且可能會(huì)受到高級(jí)破解程序的攻擊,則可能需要解決這一問(wèn)題。
高級(jí)攻擊–易受攻擊的接口
稍微容易的硬件攻擊向量是脆弱的接口。聯(lián)合測(cè)試行動(dòng)小組(JTAG)接口通常用于測(cè)試和調(diào)試嵌入式系統(tǒng)。它們顯然對(duì)在原型階段工作的嵌入式開(kāi)發(fā)團(tuán)隊(duì)有巨大的好處。然而,當(dāng)出現(xiàn)在生產(chǎn)階段的設(shè)備中時(shí),它們會(huì)成為一個(gè)巨大的安全風(fēng)險(xiǎn)。用JTAG接口傳輸設(shè)備,打開(kāi)攻擊向量,黑客會(huì)非常愿意利用它。作為一項(xiàng)規(guī)則,您應(yīng)該從您提供的產(chǎn)品中刪除JTAG接口——以及實(shí)際上并非絕對(duì)必要的任何其他調(diào)試接口。
還值得注意的是,熔斷絲或切割痕跡不足以作為拆除的技術(shù)。不要低估你的攻擊者。在這種情況下,他們知道的足夠多,可以訪(fǎng)問(wèn)您的調(diào)試界面。沒(méi)有理由認(rèn)為他們無(wú)法修復(fù)您的接口。
高級(jí)攻擊–物理I/O掃描攻擊
類(lèi)似于IP端口掃描,這種類(lèi)型的攻擊涉及使用所有可能的輸入組合探測(cè)輸入引腳,然后監(jiān)視輸出。I/O掃描攻擊可能會(huì)導(dǎo)致任意數(shù)量的意外結(jié)果。至少在某些情況下,這種類(lèi)型的攻擊很容易被發(fā)現(xiàn)。嵌入式開(kāi)發(fā)人員可以利用嵌入式系統(tǒng)中未使用的輸入引腳。監(jiān)控這些引腳的輸入將讓?xiě)?yīng)用程序知道有人試圖以非預(yù)期的方式使用嵌入式設(shè)備,比如執(zhí)行I/O掃描。一旦檢測(cè)到這種非預(yù)期操作嘗試,應(yīng)用程序可以采取適當(dāng)?shù)膶?duì)策,防止發(fā)生任何未經(jīng)授權(quán)的活動(dòng)。
顯然,與服務(wù)器端開(kāi)發(fā)相比,嵌入式系統(tǒng)的安全性需要一些特殊的考慮。有限的資源需要優(yōu)化的加密堆棧??赡鼙┞兜挠布枰囟ㄓ谟布陌踩胧?。決定物聯(lián)網(wǎng)系統(tǒng)的嵌入式設(shè)備需要哪些安全措施在很大程度上取決于平臺(tái)。