理解IOT安全的硬件依賴(lài)關(guān)系
在嵌入式系統(tǒng)或物聯(lián)網(wǎng)項(xiàng)目上工作的工程師必須與影響設(shè)計(jì)各個(gè)方面的性能和成本之間的權(quán)衡作斗爭(zhēng)。安全性與處理速度和存儲(chǔ)能力一樣,也是這個(gè)方程的一部分。
當(dāng)涉及到在任何成本限制的應(yīng)用程序中強(qiáng)制執(zhí)行安全性時(shí),需要在應(yīng)用程序所需的保護(hù)和滿(mǎn)足目標(biāo)市場(chǎng)成本概況的設(shè)備的性能之間取得平衡。可以很容易地假設(shè),一個(gè)集成了某些安全機(jī)制的單片機(jī)將提供所需的保護(hù)。
但是,硬件、固件和系統(tǒng)環(huán)境相互作用的方式有很多,可能導(dǎo)致不可預(yù)見(jiàn)的漏洞。開(kāi)發(fā)人員需要意識(shí)到不同形式的嵌入式系統(tǒng)安全硬件支持之間的區(qū)別。理想的情況是,硬件平臺(tái)將包含幾個(gè)被設(shè)計(jì)用來(lái)保護(hù)固件、數(shù)據(jù)和通信的元素,這些元素一起提供信任的基礎(chǔ)。
制造商通常會(huì)將這些功能整合到一個(gè)模塊中,將其集成到集成到iot設(shè)備中的主處理器或系統(tǒng)芯片上。或者,連接到主處理器串口的安全元素提供所需的功能。
硬件供應(yīng)商必須做出平衡成本和功能的選擇,這將影響開(kāi)發(fā),如果開(kāi)發(fā)商不考慮實(shí)現(xiàn)的細(xì)節(jié),可能會(huì)對(duì)安全性造成超出預(yù)期的影響。即使在同一個(gè)產(chǎn)品家族中,對(duì)硬件安全的支持也會(huì)有很大差異。
例如,ESP32SOC被用于許多國(guó)際物流平臺(tái)。有些設(shè)備將配備單獨(dú)的安全元件,如微芯片的ACT608。一些版本的esp32包括一個(gè)芯片控制器,管理設(shè)備的安全基礎(chǔ)設(shè)施。這種芯片上控制器通常包括一些功能,比如帶有電源支持的數(shù)字簽名外圍設(shè)備,這提高了設(shè)備的安全性。
電子引信技術(shù)有助于永久存儲(chǔ)安全關(guān)鍵數(shù)據(jù),如加密密鑰或設(shè)備專(zhuān)用信息,使攻擊者更難破壞系統(tǒng)。然而,有些平臺(tái)既不包括芯片控制器,也不包括單獨(dú)的安全元素,這意味著需要在軟件中實(shí)現(xiàn)更多的安全裝置。
基本保護(hù)
多年來(lái),微控制器提供了基本的內(nèi)存保護(hù),例如保護(hù)固件和配置內(nèi)存,防止應(yīng)用程序代碼非法寫(xiě)入。另一個(gè)常見(jiàn)的保護(hù)機(jī)制,通常是保護(hù)知識(shí)產(chǎn)權(quán)(IP),是加密固件,通常存儲(chǔ)在閃存中。這保護(hù)了基本的反向工程技術(shù),并提供了一種保護(hù)數(shù)據(jù)的方法,如數(shù)據(jù)加密鍵,應(yīng)該是私有的。
單片機(jī)通常會(huì)在芯片配置存儲(chǔ)器中存儲(chǔ)存儲(chǔ)解密鍵,可能會(huì)使用電子流體來(lái)保證不可變性和強(qiáng)保護(hù)。在休息時(shí),使用該密鑰加密的數(shù)據(jù)位于閃存中。這保護(hù)它不被試圖直接讀取該塊的攻擊者使用。
然而,一旦加密閃存塊中的敏感數(shù)據(jù)和鍵被移到內(nèi)存中,它們就可以以純文本形式提供。如果攻擊者能夠探測(cè)正在運(yùn)行的設(shè)備的內(nèi)存,那么副本的存在會(huì)使密鑰比那些有更先進(jìn)的安全措施的設(shè)備更容易受到攻擊。
即使對(duì)于閃存加密的基本選項(xiàng),開(kāi)發(fā)者的選擇也會(huì)影響安全性的效果。從歷史上看,設(shè)備制造商使用的加密密鑰對(duì)產(chǎn)品家族的所有成員都是共同的。如果一個(gè)設(shè)備上的鑰匙被破壞了,那么這個(gè)家庭中的其他所有人都同樣脆弱。理想的做法是,OEM和積分器使每個(gè)設(shè)備的內(nèi)存加密鍵具有獨(dú)特性。它們還需要遵循更高級(jí)別函數(shù)的各個(gè)鍵。
單個(gè)設(shè)備級(jí)別的管理對(duì)于一個(gè)多站點(diǎn)服務(wù)的整體安全至關(guān)重要。當(dāng)設(shè)備進(jìn)入網(wǎng)絡(luò)與云交換數(shù)據(jù)時(shí),運(yùn)營(yíng)商和用戶(hù)需要確保所有連接的設(shè)備都是合法的,沒(méi)有受到損害。
在線(xiàn)服務(wù)核實(shí)使用一套數(shù)字證書(shū)和使用公用鑰匙基礎(chǔ)設(shè)施(公鑰基礎(chǔ)設(shè)施)實(shí)現(xiàn)的簽名的設(shè)備的身份和合法性。每個(gè)設(shè)備都需要自己獨(dú)特的鑰匙和證書(shū),最好在制造時(shí)插入,以便向其他合法用戶(hù)顯示,它不是假冒的,而且正在運(yùn)行經(jīng)批準(zhǔn)的固件。
固件檢查
有效的證書(shū)本身不能保證單個(gè)設(shè)備沒(méi)有受到損害。但是,它們確實(shí)支持安全或被測(cè)量的引導(dǎo)等進(jìn)程。這些過(guò)程為設(shè)備運(yùn)行中的固件的真實(shí)性提供了很高的信心。安全引導(dǎo)使用數(shù)字證書(shū)和簽名來(lái)檢查設(shè)備接收的任何軟件更新的來(lái)源。它確保只使用有效的圖像來(lái)引導(dǎo)設(shè)備準(zhǔn)備就緒。
如果使用安全引導(dǎo)執(zhí)行的檢查有任何失敗,則設(shè)備將拒絕固件,如果可用,將嘗試加載已知的好版本。除非有有效的固件可用,否則該設(shè)備無(wú)法啟動(dòng)并連接到保護(hù)網(wǎng)絡(luò)其余部分的iot。
安全引導(dǎo)依賴(lài)于是否存在引導(dǎo)加載器映像,用戶(hù)在沒(méi)有所需憑證的情況下無(wú)法更改該映像。為了實(shí)現(xiàn)這一點(diǎn),硬件平臺(tái)將引導(dǎo)加載器與根鍵和證書(shū)一起存儲(chǔ)在一次性可編程存儲(chǔ)器中,以提供不可變性。
為了最大限度地防止發(fā)生變化,制造商將使用電子流體實(shí)現(xiàn)此存儲(chǔ)器。然而,一些設(shè)備卻保留了一部分閃光燈,一旦保險(xiǎn)絲被引爆,就可以在或者是被引爆的情況下使用。
原則上,安全引導(dǎo)是可能的,沒(méi)有進(jìn)一步的硬件支持.然而,完全基于軟件的啟動(dòng)管理流程無(wú)法防止運(yùn)行時(shí)的干擾,因?yàn)楣粽呖梢源鄹囊龑?dǎo)加載程序代碼可能需要加載到的SRAM或DRAM中才能運(yùn)行。
基于硬件的安全和非安全操作模式分離的微控制器提供了更高程度的保護(hù)。一個(gè)例子是ARM的信任區(qū),它以不同的形式在嵌入式處理器的皮層A和皮層M系列中實(shí)現(xiàn)。信任區(qū)提供基于安全屬性限制對(duì)外圍設(shè)備和內(nèi)存區(qū)域訪(fǎng)問(wèn)的能力。
只有在I/O或內(nèi)存訪(fǎng)問(wèn)命令的屬性到位的情況下,才應(yīng)該授予訪(fǎng)問(wèn)權(quán)限。默認(rèn)情況下,處理器以其安全模式啟動(dòng),提供對(duì)安全區(qū)域的訪(fǎng)問(wèn)。當(dāng)處理器完成啟動(dòng)過(guò)程并離開(kāi)安全模式時(shí),它將拒絕返回安全區(qū)域,除非代碼通過(guò)身份驗(yàn)證檢查。原則上,像信任區(qū)這樣的系統(tǒng)可以成功地保護(hù)引導(dǎo)過(guò)程。
然而,需要注意確保攻擊者沒(méi)有機(jī)會(huì)以純文本形式窺探數(shù)據(jù)。例如,在解密之前,處理器應(yīng)該將加密的數(shù)據(jù)加載到內(nèi)部的單極存儲(chǔ)器中,以避免內(nèi)存-Bus的窺探。
硬件安全元素提供了一種方式,可以為引導(dǎo)和加密過(guò)程提供更大的安全性,無(wú)論是否有安全的執(zhí)行模式。它最大的保證來(lái)自于它能夠?qū)崿F(xiàn)一種信任的基礎(chǔ),這種信任可以保護(hù)存儲(chǔ)在非易失性?xún)?nèi)存中的鍵和證書(shū)。每一個(gè)涉及密鑰的境外交易都要加密。
安全元件可在單片機(jī)或嵌入式處理器系統(tǒng)中實(shí)現(xiàn),例如在ESP32上的數(shù)字簽名單元或在多核SOCS上的完全可信平臺(tái)模塊(TPM),或部署在外部設(shè)備中,例如ACT-608,并通過(guò)直接串口訪(fǎng)問(wèn)。
即使在有安全人員在場(chǎng)的情況下,如果不直接處理,一些攻擊仍有可能發(fā)生。一是回滾攻擊。這是攻擊者試圖加載一個(gè)舊的但有效的軟件映像的地方,其中包含一個(gè)可以被利用的漏洞。反回滾使用設(shè)備的安全存儲(chǔ)器來(lái)保持一個(gè)只能單調(diào)地增加的計(jì)數(shù)器。一些IC供應(yīng)商使用硬件和固件相結(jié)合的方式支持這一點(diǎn)。
解決硬件依賴(lài)
雖然硬件供應(yīng)商可能提供大致相似的功能,但在標(biāo)準(zhǔn)的實(shí)施和支持方面往往存在重大差異。例如,設(shè)計(jì)了一些安全的元素,以便與AES一起為公鑰基礎(chǔ)設(shè)施執(zhí)行RSA協(xié)議。其他人將使用橢圓曲線(xiàn)技術(shù),甚至是更新的技術(shù)。
為了訪(fǎng)問(wèn)和控制這些功能,開(kāi)發(fā)人員需要理解和使用不同的API,這增加了總體項(xiàng)目時(shí)間,此外還需要進(jìn)行必要的分析,以評(píng)估安全模型中每個(gè)硬件和軟件組件的重要性。
解決這些復(fù)雜設(shè)備安全問(wèn)題的一種方法是部署一個(gè)與不同的硅架構(gòu)接口的通用安全框架。它決定了目標(biāo)平臺(tái)上的哪些硬件特性,例如是否存在信任執(zhí)行模式或TPM,并使用這些特性來(lái)交付一個(gè)框架,為這些特性的組合實(shí)現(xiàn)盡可能高的安全性。
雖然硬件供應(yīng)商在其產(chǎn)品上實(shí)現(xiàn)安全特性時(shí)有許多選擇,其中每一個(gè)都對(duì)固件和生命周期管理產(chǎn)生連鎖影響,但是一個(gè)全面的集成平臺(tái)使開(kāi)發(fā)人員能夠在一個(gè)共同的編程接口上工作,并充分利用他們使用的每一個(gè)設(shè)備上實(shí)現(xiàn)的硬件安全特性。