<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 為基于FPGA的嵌入式系統進(jìn)行安全升級

為基于FPGA的嵌入式系統進(jìn)行安全升級

作者: 時(shí)間:2017-10-13 來(lái)源:網(wǎng)絡(luò ) 收藏

  如何防止器件“磚頭化”,只發(fā)出警告就夠了嗎?

  “系統正在更新,請勿關(guān)閉電源。”我們都看到過(guò)這個(gè)警告,它通常在電子器件要在閃存安裝代碼更新時(shí)出現。如果更新被中斷,閃存將無(wú)法正確更新,代碼將會(huì )損壞,而器件無(wú)法運行,即“磚頭化” (bricked)。這種大家熟悉的警告存在的原因,是因為使用閃存的大多數半導體器件在編程或擦除操作期間需要一直供電。顯然,防止器件“磚頭化”是非常重要的。但是,只發(fā)出警告就夠了嗎?有些嵌入式器件甚至都沒(méi)有用戶(hù)顯示器,因此無(wú)法產(chǎn)生警告。在設計中如何才能確??煽壳野踩倪h程系統更新呢?

本文引用地址:http://dyxdggzs.com/article/201710/365922.htm

  遠程升級的重要性

  遠程升級對連接的日益重要。通過(guò)互聯(lián)網(wǎng)遠程修復漏洞或增加新特性,可以節省大量的維護費用;當部署數千個(gè)時(shí),維護便是一個(gè)大問(wèn)題了。隨著(zhù)嵌入式系統安全問(wèn)題的不斷增加,通過(guò)遠程安全定向代碼升級來(lái)修復潛在安全漏洞變得愈發(fā)重要。顯然,升級必須安全地完成,否則,攻擊算法便很容易利用不安全的更新來(lái)破壞系統。下面是一個(gè)典型系統的示例,有助于更好地了解安全可靠的遠程升級設施的要求。

  系統示例——控制平面橋

  通信或網(wǎng)絡(luò )機箱內的控制平面橋(Control Plane Bridge),是需要遠程更新的常見(jiàn)系統示例。這種子系統匯集了許多低速外設,比如模擬傳感器、電源管理模塊、風(fēng)扇、故障記錄存儲器和利用I2C、SPI和GPIO接口的狀態(tài)輸出。然后,可以采用速度更快的總線(xiàn)——可能是通信和連網(wǎng)機箱內很常見(jiàn)的子系統接口PCIe,與低速外設直接通信。這種機箱控制子系統能夠實(shí)施智能匯聚功能,當規定啟動(dòng)點(diǎn)被激活,例如到達最高溫度或最低電壓水平時(shí),便會(huì )“推進(jìn)”通信。圖1所示就是這樣一個(gè)系統,它是用配備片上微控制器的FPGA (通常稱(chēng)為SoC FPGA) 實(shí)現的。

  

  圖1 經(jīng)PCIe遠程升級的機箱控制平面橋

  FPGA和閃存

  在上面的例子中,遠程更新經(jīng)由PCIe總線(xiàn)實(shí)現,但并未對編程期間可能出現的斷電進(jìn)行保護。讓我們看看常見(jiàn)的FPGA實(shí)施類(lèi)型,從而更好地防范閃存遠程更新過(guò)程中突然斷電時(shí)可能出現的重大故障。

  幾乎每個(gè)基于FPGA的系統都需要采用某種形式的非易失性存儲器來(lái)儲存配置存儲。一般說(shuō)來(lái),配置存儲器位于芯片外或芯片上?;赟RAM的FPGA需要外部閃存,用于上電時(shí)的配置?;陂W存的FPGA可以使用嵌在FPGA結構(結構嵌入閃存FPGA)內的配置存儲器,或使用基于SRAM的結構,但將一個(gè)閃存塊放在芯片上(側面閃存FPGA)。

  基于SRAM的FPGA通常使用NOR SPI閃存,因為它消耗的引腳數最少,幾家供應商有同樣的引腳輸出,而且密度高達1 Gb。目前的NOR SPI閃存器件擁有32位地址選擇,可擴展成為4GB器件,而且不需要改變指令和控制協(xié)議。當這種SPI閃存處于程序或擦除模式 (電荷泵啟動(dòng)) 且電力消失時(shí),會(huì )發(fā)生什么事情呢?電荷在哪里消失?是否有電路檢測到這些閃存的電力故障并將電荷安全地引導到地面?一般說(shuō)來(lái),正被寫(xiě)入的頁(yè)面將出現數據損壞。

  

  圖2 三種FPGA配置圖:帶外部配置閃存的基于SRAM的FPGA、側面閃存FPGA和嵌入閃存FPGA

  側面閃存FPGA系統采用較寬的片上數據總線(xiàn)在上電時(shí)載入基于SRAM的配置存儲。通常,這種方法載入配置比基于SRAM的FPGA要快,因為后者是采用外部閃存來(lái)配置器件的。但是,這種方法存在程序或擦除周期期間功率損失的問(wèn)題。電荷去了哪里?閃存是否被破壞?是否僅寫(xiě)入頁(yè)面被破壞?整個(gè)閃存都存在風(fēng)險?FPGA是否能夠檢測被破壞的片上存儲器,或者,在上電期間,被破壞的數據是否被載入到配置存儲器內?

  閃存的破壞是個(gè)問(wèn)題,如何確保遠程數據的安全也非常重要。當嵌入式產(chǎn)品可由終端用戶(hù)訪(fǎng)問(wèn)時(shí),就存在被篡改的可能。為了防止攻擊,必須同時(shí)采用軟件和硬件的安全功能。僅對遠程配置數據文件進(jìn)行加密遠遠不夠。雖然這種軟件加密安全有用,但是還必須將解密數據的硬件 (FPGA) 置于安全保護內。當用戶(hù)訪(fǎng)問(wèn)嵌入式器件時(shí),加密數據文件很容易被提取。利用價(jià)格便宜的電磁探針和進(jìn)行差分功耗分析 (DPA) 即可實(shí)現這一點(diǎn)。采用這種方法提取FPGA安全密匙的例子很多。如果FPGA并未內置DPA對抗措施,則任何遠程更新都存在安全風(fēng)險。當用戶(hù)能夠訪(fǎng)問(wèn)嵌入式產(chǎn)品時(shí),如果沒(méi)有DPA對抗措施,便如同中門(mén)大開(kāi),沒(méi)有安全可言。

  在嵌入閃存的FPGA中,配置儲存在芯片上,并緊密集成在FPGA結構內。例如,在美高森美SmartFusion2和IGLOO2 flash FPGA上,可經(jīng)由外部通信端口如USB、PCIe或JTAG等進(jìn)行編程,整個(gè)編程過(guò)程由片上專(zhuān)用編程接口管理。此外,SmartFusion2和IGLOO2 FPGA使用了一種稱(chēng)為“在應用中編程”(IAP)的高級編程機制,即便在編程期間有功率損耗的情況下,仍可提供可靠且安全的編程。讓我們看看如何采用IAP機制來(lái)實(shí)現目前嵌入式系統需要的可靠遠程升級的能力。

  在基于FPGA的嵌入式系統中實(shí)現可靠且安全的遠程更新

  嵌入閃存的FPGA可以提供更容易支持安全可靠的遠程更新所需的關(guān)鍵功能。例如,SmartFusion2擁有實(shí)施關(guān)鍵橋接功能及安全和IAP功能需要的所有主流FPGA特點(diǎn)。如圖3所示,低速接口可以采用I2C和GPIO連接。高速主機接口PCIe則作為不需要FPGA結構的專(zhuān)用端口。

  

  圖3 SmartFusion2“在應用中編程”(IAP)支持機箱控制平面橋,以實(shí)現安全可靠的遠程更新

  片上處理器可以利用高速存儲子系統(HSMS)訪(fǎng)問(wèn)大型內部閃存來(lái)進(jìn)行代碼儲存,訪(fǎng)問(wèn)大型內部SRAM來(lái)進(jìn)行數據緩沖,而專(zhuān)用DDR控制器則在有需要時(shí)訪(fǎng)問(wèn)其它外部存儲器。專(zhuān)用系統控制器提供編程期間使用的安全功能,以及遠程更新期間使用的IAP功能。圖4詳細描述了SmartFusion2 FPGA上可以提供的關(guān)鍵功能。

  

  圖4 美高森美SmartFusion2 SoC FPGA擁有主流特點(diǎn)及可靠的安全和遠程更新能力

  利用“在應用中編程”來(lái)實(shí)現安全可靠的升級

  SmartFusion2和IGLOO2提供的IAP機制是一種安全可靠地遠程更新配置比特流的方法。IAP在FPGA內由專(zhuān)用系統控制器執行,因此并不需要使用任何FPGA結構或其它用戶(hù)可配置邏輯。IAP功能采用一個(gè)外部SPI閃存器件,是一個(gè)兩步過(guò)程。在第一步中,外部SPI閃存器件通過(guò)任何可用的接口,比如PCIe、USB、JTAG甚至以太網(wǎng),用需要的比特流編程。用于SmartFusion2器件編程的所有比特流都進(jìn)行了加密,以確保它們不會(huì )被篡改。

  在第二步中,系統控制器通過(guò)系統服務(wù)請求執行IAP服務(wù)。用戶(hù)向系統控制器提供指針,指向外部SPI閃存內比特流位置的初始地址。IAP系統服務(wù)請求也有三個(gè)用戶(hù)選項:認證、編程或驗證。認證通常是在FPGA配置存儲器編程之前執行的,以驗證SPI閃存內的比特流適用于正在編程的器件。在認證期間,器件正常運行。

  包含新比特流的外部SPI閃存還包含一個(gè)額外的鏡像,即用作恢復目的的一個(gè)好版本。用戶(hù)可以在任何時(shí)間點(diǎn)使用恢復鏡像將FPGA配置為良好狀態(tài)?;謴顽R像可以 “原樣”保存,也可在需要時(shí)進(jìn)行更新以便用于關(guān)鍵漏洞的修復。

  IAP功能實(shí)施期間可以使用程序恢復功能。若編程期間斷電,啟動(dòng)編程恢復,系統控制器會(huì )以可控的方式將編程FPGA的內部電荷泵禁動(dòng)。在接下來(lái)的供電周期中,在啟動(dòng)FPGA結構之前,系統控制器將檢測到器件編程操作已經(jīng)被中斷,它將從外部SPI閃存中的比特流啟動(dòng)編程周期。用戶(hù)可選擇從好的鏡像進(jìn)行更新或從剛剛推送到SPI閃存的遠程更新鏡像進(jìn)行更新。當外部比特流被載入到SmartFusion2 FPGA內時(shí),它采用內置的DPA對抗邏輯,以確保沒(méi)有電磁探針能夠將加密匙解密,從而為嵌入式系統提供可信任的安全器件。

  與安全加密比特流和比特流驗證一起使用,程序恢復可提供目前連接的嵌入式系統需要的安全可靠的遠程編程更新機制,即使FPGA配置存儲器在編程的過(guò)程中斷電也一樣。



關(guān)鍵詞: fpga 嵌入式系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>