無論是用作獨立處理元件還是與輔助處理器結合使用,SoC FPGA 都提高了嵌入式處理的安全性。雖然可以構建具有執行監控和靜態密鑰存儲的專用安全設備的嵌入式處理器模塊,但在 SoC FPGA 中整合系統關鍵功能和安全特性可提供更高的安全性、靈活性和性能。
Linux 已成為嵌入式設計中裸機系統的日益流行的替代方案。隨著 32 位計算成為一種商品,并且像 Yocto 這樣的項目使得為嵌入式應用程序創建、開發和維護基于 Linux 的系統變得更加容易,它的受歡迎程度可能會增長。Linux 使 OEM 變得更像初創公司,其敏捷的硬件開發團隊可以通過使用操作系統來抽象底層硬件細節來加快上市時間。盡管有好處,但如果沒有適當的方法來啟動其嵌入式處理器,Linux 系統可能容易受到 rootkit 的攻擊。對于新興的物聯網而言,Rootkit 尤其成問題,它將產生數十億個新的、可能不安全的端點。
通常,rootkit 會嘗試訪問特權 (root) 模式,同時躲避系統惡意軟件檢測工具。惡意軟件還可能通過修改系統的啟動過程來嘗試將自身安裝到持久狀態。如果成功,感染將是永久性的或通過電源循環持續存在。從那里,惡意軟件會做其作者想要做的任何事情,包括記錄擊鍵、形成僵尸網絡、收集個人信息和啟用未經授權的服務。一旦系統被感染,可能需要重新安裝完整的操作系統。
問題從嵌入式處理器開始,通常如圖 1 所示啟動。上電時片上 ROM 將從外部非易失性存儲器中獲取啟動加載程序。引導加載程序是特定于應用程序的,并在其啟動期間配置處理器以滿足指定的應用程序要求。時鐘、緩存、內存控制器和外圍設備都已配置。一旦處理器被初始化,應用程序就會從外部非易失性存儲器中取出,有時會被解壓縮,然后復制到啟動應用程序的快速外部易失性存儲器中。
圖 1:嵌入式啟動過程。
在引導過程中,惡意軟件有機會嘗試修改嵌入式系統的引導加載程序。圖 2 顯示了嵌入式 Linux 系統的簡化典型框圖。UBOOT、Linux 內核和應用層都存儲在易于訪問的非易失性存儲器中。
圖 2:嵌入式 Linux 系統。
保護啟動過程的唯一方法是使用一個可以信任的實體來保護它,該實體始終以預期的方式運行。作為系統元素,此信任根支持系統、軟件和數據完整性和機密性的驗證,以及將信任擴展到內部和外部實體。它是創建所有進一步安全層的基礎,并且它的密鑰必須保密并且它遵循的過程是不可變的。在嵌入式系統中,信任根與其他系統元素一起工作,以確保主處理器僅使用授權代碼安全啟動,從而將信任區域擴展到處理器及其應用程序。使用加密技術,可信區域可以擴展到覆蓋手頭系統的所有關鍵元素,
雖然許多較新的處理器具有支持安全啟動的特殊功能,但處理器芯片中對安全啟動的內在支持遠非普遍,并且通常需要多芯片解決方案。更好的解決方案是基于閃存的 FPGA,它提供了多芯片嵌入式系統中最好的信任根設備之一,顯著提高了主嵌入式處理器運行的任何代碼都是真實的保證水平。
基于閃存的解決方案本質上更安全(一旦它們被編程,關鍵信息永遠不會離開芯片),今天基于閃存的 SoC FPGA 解決方案還提供了許多額外的高級安全功能,包括片上振蕩器、加密服務加速器、安全密鑰存儲、真正的隨機數生成器、安全嵌入式閃存 (eNVM) 中的片上啟動代碼存儲以及高速串行外圍接口 (SPI) 閃存仿真,以實現外部處理器的高速安全啟動。 與早期解決方案相比,這些設備還具有更強的設計安全性,并包括差分功率分析 (DPA) 抗篡改措施。再加上嵌入式 Linux CPU,它們可以有效地防止惡意軟件試圖修改嵌入式系統的引導加載程序。
圖 3 提供了一個可用于安全啟動的基于閃存的 SoC 示例。Microsemi 的 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 到 FPGA SPI 接口請求時將其提供給主 MPU。為了增加安全性,引導加載程序代碼將存儲在 SoC FPGA 的 eNVM 中。
上電后,FPGA 將保持主 MPU 處于復位狀態,直到它完成自身的完整性自檢。準備就緒后,它將釋放復位。MPU 將被配置為從接口引導到 FPGA(例如,通過其 SPI 接口)。作為 SPI 從機的 FPGA 將在 MPU 完成復位時將請求的 Phase-0 引導代碼傳送到 MPU。假設 MPU 本身不支持安全啟動,挑戰是將一些代碼加載到 MPU 中,并高度保證它沒有被篡改。
如果一切正常,引導過程將通過跳轉到 MPU SRAM 中現在受信任的代碼來繼續。這將包含啟動下一階段所需的代碼,并且可能包括現在受信任的 RSA 或 ECC 公鑰。一旦 MPU SRAM 中的代碼被信任,就可以采用額外的安全措施,例如使用公鑰方法建立共享密鑰,并使用該共享密鑰加密 FPGA 和 MPU 之間傳輸的所有后續引導代碼。此外,可以將系統的所有硬件組件以密碼方式綁定在一起,因此如果沒有原始系統的所有確切組件,任何一個都無法工作。
SoC 還可以提供對模塊環境條件的實時監控,例如溫度、電壓、時鐘頻率和其他因素。FPGA 架構可以安全地配置為為外部篡改傳感器和入侵檢測器提供 I/O。這些可以被 SoC 感知,以防止受到已知漏洞攻擊的漏洞,這些漏洞應用異常條件來提取關鍵信息。通過適當的設計可以實現更高的安全級別。
審核編輯:郭婷
-
傳感器
+關注
關注
2567文章
53091瀏覽量
768389 -
處理器
+關注
關注
68文章
19924瀏覽量
235797 -
嵌入式
+關注
關注
5154文章
19713瀏覽量
318223
發布評論請先 登錄
怎么結合嵌入式,Linux,和FPGA三個方向達到一個均衡發展?

Linux權限管理基礎入門

Linux系統中通過預留物理內存實現ARM與FPGA高效通信的方法

SMR配置后面向故障的安全引導重置了,為什么?
從零開始馴服Linux(一):ZYNQ-Linux啟動文件構建全解析
嵌入式系統信息安全概述
DHCP在企業網的部署及安全防范
采用Xilinx FPGA的AFE79xx SPI啟動指南

UID加密安全啟動原理分析

評論