無(wú)論用做獨(dú)立的處理單元,或者與輔助處理器聯(lián)合使用,SoC FPGA器件均可以改善嵌入式處理的安全性。雖然可以利用專(zhuān)用安全器件來(lái)構(gòu)建嵌入式處理器模塊,實(shí)施監(jiān)測(cè)和靜態(tài)密匙存儲(chǔ),然而,整合系統(tǒng)關(guān)鍵功能的SoC FPGA器件若能提供安全特性,便可以提供更大的安全性、靈活性和更好的性能。
在嵌入式設(shè)計(jì)中,Linux日益流行。隨著32位計(jì)算成為常見(jiàn)商品,Yocto等項(xiàng)目使得用于嵌入式應(yīng)用和基于Linux的系統(tǒng)的創(chuàng)建、開(kāi)發(fā),以及維護(hù)變得更加容易,使得Linux系統(tǒng)的流行性可能會(huì)進(jìn)一步增長(zhǎng)。Linux使得OEM廠商變得更像初創(chuàng)企業(yè),其靈活的硬件開(kāi)發(fā)團(tuán)隊(duì)通過(guò)使用操作系統(tǒng)來(lái)提取底層的硬件細(xì)節(jié),可以加快上市速度。盡管Linux系統(tǒng)具有優(yōu)勢(shì),然而,如果沒(méi)有合適的方法來(lái)啟動(dòng)其嵌入式處理器,便會(huì)易于受到rootkit攻擊,對(duì)于將會(huì)創(chuàng)建數(shù)十億個(gè)新的潛在不安全端點(diǎn)的新興物聯(lián)網(wǎng)來(lái)說(shuō),Rootkit特別構(gòu)成重大威脅。
一般而言,rootkit試圖接入特權(quán)(根)模式,同時(shí)躲避系統(tǒng)惡意軟件檢測(cè)工具。惡意軟件也可能試圖通過(guò)修改系統(tǒng)的啟動(dòng)過(guò)程,把自己安裝系統(tǒng)以進(jìn)入持久狀態(tài)。如果成功,惡意軟件感染便是永久的,或者通過(guò)上電循環(huán)持續(xù),自此便可以為所欲為,包括記錄擊鍵、形成僵尸網(wǎng)絡(luò)、收集個(gè)人信息,以及實(shí)施未經(jīng)授權(quán)的服務(wù)。一旦系統(tǒng)受到感染,可能需要重新安裝整個(gè)操作系統(tǒng)。
問(wèn)題從嵌入式處理器開(kāi)始,其啟動(dòng)通常如圖1所示。在上電時(shí),片上ROM將從外部非易失性存儲(chǔ)器取得啟動(dòng)加載程序。啟動(dòng)加載程序是專(zhuān)用的,并且在啟動(dòng)期間對(duì)處理器進(jìn)行配置以滿(mǎn)足特定的應(yīng)用需求。時(shí)鐘、緩存、存儲(chǔ)器控制器,以及外設(shè)均進(jìn)行配置。一旦處理器完成初始化,就從外部非易失性存儲(chǔ)器取得應(yīng)用程序,有時(shí)進(jìn)行解壓縮,并且復(fù)制到應(yīng)用程序開(kāi)始之處的快速外部易失性存儲(chǔ)器,讓程序開(kāi)始運(yùn)行。
圖1 嵌入式啟動(dòng)過(guò)程
在啟動(dòng)過(guò)程中,惡意軟件有機(jī)會(huì)試圖修改嵌入式系統(tǒng)的啟動(dòng)程序bootloader。如圖2所示為嵌入式Linux系統(tǒng)的典型框圖,UBOOT、Linux內(nèi)核和應(yīng)用程序?qū)泳鎯?chǔ)在易于讀取的非易失性存儲(chǔ)器中。
圖2 嵌入式Linux系統(tǒng)
保護(hù)啟動(dòng)過(guò)程的唯一方法,是使用一個(gè)確信它始終以預(yù)期方式運(yùn)行的組件來(lái)提供保護(hù)。作為系統(tǒng)組件,這種信任根(root-of-trust)支持了系統(tǒng)、軟件和數(shù)據(jù)完整性和保密性的校驗(yàn),以及內(nèi)部和外部實(shí)體的信任擴(kuò)展。這是創(chuàng)建所有其它安全層的基礎(chǔ),它的密匙必須一直保密,而且之前的啟動(dòng)過(guò)程不可改變,這是十分重要的。在嵌入式系統(tǒng)中,信任根與其它系統(tǒng)組件共同工作,以期確保只有經(jīng)過(guò)授權(quán)的代碼來(lái)安全地啟動(dòng)主處理器,從而將信任域擴(kuò)展到處理器及其應(yīng)用。通過(guò)使用加密技術(shù),可以擴(kuò)展信任域以涵蓋所有重要的系統(tǒng)組件,甚至通過(guò)本質(zhì)上不安全的網(wǎng)絡(luò)將數(shù)個(gè)信任系統(tǒng)捆綁在一起。
雖然許多較新的處理器具有支持安全啟動(dòng)的專(zhuān)門(mén)特性,然而處理器芯片安全啟動(dòng)的固有支持遠(yuǎn)不普及,通常需要一個(gè)多芯片解決方案。一個(gè)更好的解決方案是基于閃存工藝的FPGA器件,它們可以在多芯片嵌入式系統(tǒng)中提供最佳的信任根器件,顯著提升主嵌入式處理器所運(yùn)行的代碼的可信性。
基于閃存工藝的解決方案本質(zhì)上更加安全(它們一經(jīng)編程,關(guān)鍵的信息永不丟失),而且今天基于閃存工藝的 SoC FPGA解決方案還具有數(shù)項(xiàng)附加的先進(jìn)安全特性,包括片上振蕩器、用于加密服務(wù)的加速器、安全密匙存儲(chǔ)、真正隨機(jī)數(shù)發(fā)生器、在安全的嵌入式Flash memory(eNVM)中的片上啟動(dòng)代碼存儲(chǔ),以及使能外部處理器高速安全啟動(dòng)的高速串行外設(shè)接口(SPI)。這些器件還具有超越較早期解決方案的更強(qiáng)大的設(shè)計(jì)安全性,并且包含抵御差異化功率分析(DPA)技術(shù)的防篡改措施。結(jié)合嵌入式Linux CPU,它們能夠有效地用于防止惡意軟件試圖修改嵌入式系統(tǒng)的啟動(dòng)程序。
圖3所示為可以用于安全啟動(dòng)的基于閃存工藝的SoC示例,美高森美SmartFusion2 SoC器件中的eNVM用于存儲(chǔ)UBOOT,其FPGA架構(gòu)則實(shí)現(xiàn)高速的SPI接口。CPU并不知悉SoC位于其和SPI閃存之間。在上電時(shí),SoC將UBOOT的SPI讀取請(qǐng)求從內(nèi)部eNVM導(dǎo)向CPU,而后,CPU經(jīng)過(guò)正常的UBOOT啟動(dòng)過(guò)程,并且從外部SPI閃存取得應(yīng)用鏡像的剩余部分,在后一個(gè)階段中,SoC用作外部存儲(chǔ)器的管道,并且將應(yīng)用鏡像傳送給CPU。SoC及其內(nèi)部eNVM僅可使用經(jīng)過(guò)認(rèn)證的加密位流進(jìn)行編程,這一位流僅可由SoC的FPGA開(kāi)發(fā)環(huán)境來(lái)建立。位流文件格式是專(zhuān)有的,并且不提供給任何人,并且具有從Cryptography Research Incorporated(現(xiàn)為Rambus)授權(quán)許可的專(zhuān)利保護(hù)措施,可以抵御DPA側(cè)道攻擊。換句話(huà)說(shuō),惡意軟件試圖寫(xiě)入快閃的唯一途徑是具有設(shè)計(jì)用于該SoC并備有合適的加密和用戶(hù)定義密匙的位流。
圖3 SmartFusion2器件用于存儲(chǔ)UBOOT
為了確保安全的多級(jí)啟動(dòng),在提供和執(zhí)行代碼之前必須先進(jìn)行驗(yàn)證,這是必不可少的,這可確保不會(huì)出現(xiàn)攪亂或損壞各階段的啟動(dòng),并且可以使用對(duì)稱(chēng)或非對(duì)稱(chēng)密匙加密技術(shù)來(lái)進(jìn)行。更好的是,使用對(duì)前一個(gè)階段的連續(xù)反饋來(lái)確認(rèn)在啟動(dòng)加載期間沒(méi)有發(fā)生篡改。如果所有的防篡改(AT)監(jiān)測(cè)器確認(rèn)環(huán)境安全,隨后的各個(gè)階段便可以繼續(xù)執(zhí)行。
今天的SoC FPGA可以獨(dú)立提供運(yùn)行時(shí)間監(jiān)測(cè)和校正行動(dòng),有需要時(shí)也可以提供懲罰。為了這樣做,所有的應(yīng)用程序代碼將存儲(chǔ)在SPI快閃中,而且可加密。SoC器件將在每個(gè)階段對(duì)代碼進(jìn)行真實(shí)性檢查和解密 (如果需要),并且通過(guò)MPU-to-FPGA SPI接口進(jìn)行請(qǐng)求時(shí),把它們饋入主MPU。為了增加安全性,啟動(dòng)加載程序代碼將會(huì)存儲(chǔ)在SoC FPGA的eNVM中。
在上電之后,F(xiàn)PGA將保持主MPU在復(fù)位狀態(tài),直到它完成自已的完整性自我測(cè)試。在準(zhǔn)備好時(shí),它會(huì)釋放復(fù)位。MPU將被配置成從通向FPGA的接口啟動(dòng)(例如通過(guò)SPI接口)。FPGA用作SPI從器件,在MPU復(fù)位之后,將向MPU提供所請(qǐng)求的Phase-0啟動(dòng)代碼,假設(shè)MPU本身不支持安全啟動(dòng),挑戰(zhàn)則會(huì)是將某些代碼載入MPU中并且高度確保它未被篡改。
如果各個(gè)項(xiàng)目均沒(méi)有問(wèn)題,啟動(dòng)過(guò)程將會(huì)連續(xù)將通過(guò)確認(rèn)的代碼載入MPU的SRAM中,這將包括發(fā)起下一階段的所需代碼,以及包括一個(gè)通過(guò)確認(rèn)的RSA 或者 ECC公共密匙。一旦MPU SRAM中的代碼獲得信任,便可以部署附加的安全措施,比如使用公共密匙方法來(lái)建立分享的密匙,以及使用分享的密匙,對(duì)FPGA和MPU之間傳輸?shù)乃泻罄m(xù)導(dǎo)引代碼進(jìn)行加密。此外,也可以將系統(tǒng)所有的硬件組件捆綁在一起加密,使得系統(tǒng)中必須具備初始系統(tǒng)的所有組件才可以運(yùn)作。
此外,SoC可以提供模塊環(huán)境情況的實(shí)時(shí)監(jiān)控,比如溫度、電壓、時(shí)鐘頻率和其它因素。FPGA架構(gòu)可以通過(guò)安全的配置,提供I/O給外部篡改傳感器和侵入檢測(cè)器。SoC通過(guò)它們來(lái)感測(cè),防止來(lái)自已知漏洞的攻擊,這些攻擊會(huì)施加異常條件來(lái)提取關(guān)鍵的信息。只要通過(guò)合適的設(shè)計(jì),便可以達(dá)到更高的安全水平。
-
處理器
+關(guān)注
關(guān)注
68文章
19100瀏覽量
228814 -
嵌入式
+關(guān)注
關(guān)注
5059文章
18973瀏覽量
302040 -
soc
+關(guān)注
關(guān)注
38文章
4099瀏覽量
217774
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論