首頁 > 新能源汽車

安全更新基于 FPGA 的嵌入式系統(tǒng)

來源:新能源汽車網(wǎng)
時間:2023-03-07 17:09:27
熱度:

安全更新基于 FPGA 的嵌入式系統(tǒng)“系統(tǒng)更新時請勿關(guān)閉電源。” 我們以前都見過這個警告。它通常發(fā)生在我們的電子設(shè)備之一更新其閃存以安裝代碼更新時。如果此更新被中斷,閃存將無法正確

“系統(tǒng)更新時請勿關(guān)閉電源?!?nbsp;我們以前都見過這個警告。它通常發(fā)生在我們的電子設(shè)備之一更新其閃存以安裝代碼更新時。如果此更新被中斷,閃存將無法正確更新。代碼將被破壞并且設(shè)備無法操作或“變磚”。熟悉的警告通知的根本原因是,絕大多數(shù)使用閃存的半導(dǎo)體設(shè)備都需要在編程或擦除操作期間始終通電。顯然,避免創(chuàng)建“變磚”設(shè)備很重要。但是,如果僅發(fā)出警告還不夠怎么辦?一些嵌入式設(shè)備甚至沒有用戶顯示器,因此無法生成警告。您可以在設(shè)計中做些什么來創(chuàng)建可靠、安全和有保障的遠(yuǎn)程系統(tǒng)更新?

遠(yuǎn)程更新在嵌入式系統(tǒng)中的重要性 遠(yuǎn)程 
更新對于連接的嵌入式系統(tǒng)來說是一個越來越重要的特性。能夠通過 Internet 遠(yuǎn)程修復(fù)錯誤或添加功能,可以節(jié)省大量的服務(wù)調(diào)用費(fèi)用,而當(dāng)部署了數(shù)千個嵌入式系統(tǒng)時,服務(wù)調(diào)用就會出現(xiàn)問題。針對嵌入式系統(tǒng)的安全漏洞越來越頻繁,這也凸顯了對遠(yuǎn)程安全代碼更新的需求,以修復(fù)潛在的安全漏洞。顯然更新需要安全,否則攻擊算法可以使用不安全的安全更新作為破壞系統(tǒng)的簡單方法。讓我們看一個典型的系統(tǒng),以便更好地理解安全、可靠和可靠的遠(yuǎn)程更新設(shè)施的要求。

示例系統(tǒng)——控制平面橋 
一個需要遠(yuǎn)程更新的常見示例系統(tǒng)是通信或網(wǎng)絡(luò)機(jī)箱內(nèi)的控制平面橋。該子系統(tǒng)聚合了許多低速外設(shè)——例如模擬傳感器、電源管理模塊、風(fēng)扇、故障記錄存儲器和使用 I2C、SPI 和 GPIO 接口的狀態(tài)輸出。然后可以使用更高速度的總線,也許是 PCIe——許多通信和網(wǎng)絡(luò)機(jī)箱中非常常見的子系統(tǒng)接口——直接與低速外設(shè)通信。底盤控制子系統(tǒng)可以實(shí)現(xiàn)智能聚合功能,在指定的觸發(fā)點(diǎn)被激活時“推送”通信——例如溫度或電壓水平。下面的圖 1 顯示了使用 FPGA 和片上微控制器(通常稱為 SoC FPGA)實(shí)現(xiàn)的此類系統(tǒng)。


圖 1. 通過 PCIe 進(jìn)行遠(yuǎn)程更新的機(jī)箱控制平面橋

FPGA 和閃存 
在上面的示例系統(tǒng)中,遠(yuǎn)程更新是通過 PCIe 總線進(jìn)行的,但在編程過程中沒有受到可能的斷電保護(hù)。讓我們看看常見的 FPGA 實(shí)現(xiàn)類型,以更好地了解保護(hù)閃存遠(yuǎn)程更新過程免受斷電期間嚴(yán)重故障影響的要求。

幾乎每個基于 FPGA 的系統(tǒng)都需要某種形式的非易失性存儲器來存儲配置存儲器。通常配置存儲器駐留在片外或片上?;?SRAM 的 FPGA 需要外部閃存用于上電配置?;陂W存的 FPGA 要么存儲嵌入在 FPGA 結(jié)構(gòu)中的配置內(nèi)存(結(jié)構(gòu)嵌入式閃存 FPGA),要么使用基于 SRAM 的結(jié)構(gòu),但將閃存塊放在片上(閃存在側(cè)面 FPGA 上)。

對于基于 SRAM 的 FPGA,通常使用 NOR SPI 閃存,因?yàn)樗牡囊_少,有多個供應(yīng)商提供相同的引腳分配,并且密度高達(dá) 1 Gb。當(dāng)前的 NOR SPI 閃存設(shè)備具有 32 位地址選項,允許在不更改命令和控制協(xié)議的情況下增長到 4GB 設(shè)備。當(dāng)此 SPI 閃存處于編程或擦除模式(電荷泵處于活動狀態(tài))并且電源消失時會發(fā)生什么情況?電荷在哪里消散?是否有電路可以檢測這些閃存中的電源故障并將電荷安全地分流到地面?通常發(fā)生的情況是被寫入的頁面將遇到數(shù)據(jù)損壞。


圖 2. 三種 FPGA 配置選項圖:基于 SRAM 的外部配置閃存、側(cè)面閃存和嵌入式閃存

對于側(cè)面閃存 FPGA,寬片上數(shù)據(jù)總線用于在加電時加載基于 SRAM 的配置存儲器。通常配置比使用外部閃存配置設(shè)備的基于 SRAM 的 FPGA 更快。然而,需要詢問有關(guān)編程或擦除周期期間功率損耗的類似問題。費(fèi)用去哪兒了?閃存是否損壞?只有被寫入的頁面損壞了嗎?還是整個閃存都處于危險之中?FPGA 能否檢測到損壞的片上存儲器,或者損壞的數(shù)據(jù)是否會在上電過程中加載到配置存儲器中?

不僅閃存損壞是個問題,如何保護(hù)遠(yuǎn)程數(shù)據(jù)也至關(guān)重要。當(dāng)終用戶可以訪問嵌入式產(chǎn)品時,它就有可能被篡改。為防止不必要的攻擊,必須同時采用軟件和硬件安全措施。僅加密遠(yuǎn)程配置數(shù)據(jù)文件是不夠的。盡管此軟件加密安全性有所幫助,但要解密數(shù)據(jù)的硬件 (FPGA) 也必須內(nèi)置安全保護(hù)。當(dāng)用戶可以訪問嵌入式設(shè)備時,可以輕松提取加密數(shù)據(jù)文件的密鑰。這是通過使用廉價的電磁探頭和實(shí)施差分功率分析 (DPA) 來完成的。有許多使用此技術(shù)提取的 FPGA 安全密鑰示例。如果 FPGA 沒有內(nèi)置 DPA 對策,那么任何遠(yuǎn)程更新都可能成為安全漏洞。當(dāng)用戶可以訪問嵌入式產(chǎn)品時,沒有 DPA 對策就等同于沒有安全性。

對于閃存嵌入式 FPGA,配置存儲器存儲在芯片上并緊密集成在 FPGA 結(jié)構(gòu)中。例如,在 Microsemi SmartFusion2 和 IGLOO2 閃存 FPGA 上,編程可以通過 USB、PCIe 或 JTAG 等外部通信端口進(jìn)行,整個編程過程由片上專用編程接口管理。此外,SmartFusion2 和 IGLOO2 FPGA 上還提供一種稱為在應(yīng)用程序編程 (IAP) 的編程工具,即使在編程過程中出現(xiàn)斷電時,它也能提供所需的可靠、安全和可靠的編程工具。現(xiàn)在讓我們看看如何使用 IAP 設(shè)施來幫助實(shí)現(xiàn)當(dāng)今嵌入式系統(tǒng)所需的強(qiáng)大的遠(yuǎn)程更新功能。

在基于 FPGA 的嵌入式系統(tǒng)中實(shí)現(xiàn)可靠、安全和安全的遠(yuǎn)程更新 閃存 
嵌入式 FPGA 可以提供更輕松地支持安全和強(qiáng)大的遠(yuǎn)程更新所需的關(guān)鍵功能。例如,SmartFusion2 具有實(shí)現(xiàn)關(guān)鍵橋接功能所需的所有主流 FPGA 功能以及所需的安全和 IAP 功能。如下圖 3 所示,低速接口可以使用 I2C 和 GPIO 進(jìn)行連接。高速主機(jī)接口 PCIe 作為專用端口實(shí)現(xiàn),不需要 FPGA 結(jié)構(gòu)。


圖 3. 應(yīng)用程序編程 (IAP) 中的 SmartFusion2 支持底盤控制平面橋中安全、可靠的遠(yuǎn)程更新

片上處理器可以使用高速內(nèi)存子系統(tǒng) (HSMS) 訪問用于代碼存儲的大型內(nèi)部閃存、用于數(shù)據(jù)緩沖的大型內(nèi)部 SRAM 以及專用 DDR 控制器,以便在需要時訪問額外的外部存儲器。專用系統(tǒng)控制器提供編程期間使用的安全功能和遠(yuǎn)程更新期間使用的 IAP 功能。下面的圖 4 顯示了 SmartFusion2 FPGA 上可用的關(guān)鍵功能的更詳細(xì)視圖。

單擊以獲取更大的圖像 

圖 4. Microsemi SmartFusion2 SoC FPGA 具有主流特性以及強(qiáng)大的安全性和遠(yuǎn)程更新功能

使用在應(yīng)用程序編程實(shí)現(xiàn)安全、可靠和可靠的更新 
SmartFusion2 和 IGLOO2 提供的在應(yīng)用程序編程 (IAP) 工具提供了一種安全可靠地遠(yuǎn)程更新配置比特流的方法。IAP 從 FPGA 內(nèi)的專用系統(tǒng)控制器執(zhí)行,因此它不需要使用任何 FPGA 架構(gòu)或其他用戶可配置邏輯。IAP 功能是兩步過程,使用外部 SPI 閃存設(shè)備。在步中,外部 SPI 閃存設(shè)備使用任何可用接口(PCIe、USB、JTAG 甚至以太網(wǎng))使用所需的比特流進(jìn)行編程。用于對 SmartFusion2 設(shè)備進(jìn)行編程的所有比特流都經(jīng)過加密,以確保它們不受篡改,因此該比特流也將采用加密形式。

在下一步中,系統(tǒng)控制器通過系統(tǒng)服務(wù)調(diào)用執(zhí)行 IAP 服務(wù)。用戶提供一個指向系統(tǒng)控制器的指針,其中包含外部 SPI 閃存中比特流位置的起始地址。IAP 系統(tǒng)服務(wù)調(diào)用也為用戶提供了三個選項:Authenticate、Program 或 Verify。身份驗(yàn)證通常在對 FPGA 配置存儲器進(jìn)行編程之前執(zhí)行,以驗(yàn)證 SPI 閃存中的比特流是否針對正在編程的設(shè)備正確構(gòu)建。在驗(yàn)證過程中,設(shè)備運(yùn)行正常。

包含新比特流的外部 SPI 閃存也可以包含一個額外的圖像,一個可以用作恢復(fù)目的的已知良好版本。用戶可以隨時指向恢復(fù)映像并使用它將 FPGA 配置為已知的良好狀態(tài)?;謴?fù)映像可以從天起“按原樣”保存,也可以根據(jù)需要更新以修復(fù)關(guān)鍵錯誤。

在 IAP 功能期間,程序恢復(fù)選項可用。如果在編程期間發(fā)生電源故障,則啟用編程恢復(fù)時,系統(tǒng)控制器將禁用用于以受控方式對 FPGA 進(jìn)行編程的內(nèi)部電荷泵。在下一個后續(xù)上電周期中,在啟用 FPGA 架構(gòu)之前,系統(tǒng)控制器將檢測到器件編程操作已被中斷,并將從位于外部 SPI 閃存中的比特流啟動編程周期。用戶可以選擇從已知的良好映像或剛剛推送到 SPI 閃存的遠(yuǎn)程更新映像進(jìn)行更新。當(dāng)外部比特流加載到 SmartFusion2 FPGA 時,它會使用內(nèi)置的 DPA 對抗邏輯。這確保沒有電磁探測器可以破譯加密密鑰,從而產(chǎn)生可信的、

程序恢復(fù)與安全加密的比特流和比特流驗(yàn)證相結(jié)合,即使在 FPGA 配置存儲器編程期間斷電,也能提供當(dāng)今連接的嵌入式系統(tǒng)所需的可靠、安全和可靠的遠(yuǎn)程編程更新工具。

Ted Marena 是 Microsemi 的 FPGA/SOC 營銷總監(jiān)。他在 FPGA 領(lǐng)域擁有超過 20 年的經(jīng)驗(yàn)。此前,Marena 曾在業(yè)務(wù)開發(fā)、產(chǎn)品和戰(zhàn)略營銷方面擔(dān)任過職務(wù)。2014 年 2 月,他在 Lattice Semiconductor 工作時被授予年度創(chuàng)新者獎。Marena 為垂直市場定義、創(chuàng)建和執(zhí)行獨(dú)特的營銷平臺解決方案,包括消費(fèi)、無線小型基站、工業(yè)、相機(jī)、顯示器和汽車應(yīng)用。