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