• 晶片資安第一站

《晶片安全實現指引》從位元流到FPGA自身的全方位防禦手段

指引著作/臺灣資安卓越深耕-半導體及資通訊供應鏈資安關鍵技術發展計畫

晶片安全實現指引主要分析 FPGA 的 IP 位元流在 FPGA 的合成流程中,各個階段可能面臨的威脅,包含來自外部不可信任的使用者,及內部設計與合成流程中所經手過的單位,並介紹各種常見的反制措施。

現場可程式化邏輯閘陣列(Field Programmable Gate Array,FPGA)是擁有製程後程式化能力的積體電路。由於其可重配置特性、低開發成本與高效能,其應用範圍涵蓋消費性電子產品到高端商業系統。

配置在FPGA的程式屬於二進制檔案的形式,又稱位元流,亦是惡意攻擊的一大標的。因此,如何保護位元流的機密性與完整性,即是保護 FPGA  安全性的第一要素。而為了全方面抵禦惡意攻擊,我們必須在設計  FPGA 之初,就遵循一份安全指引,以降低駭侵機率。相關摘錄如下:

防護措施一:FPGA 位元流保護措施

針對位元流從生成到結束的五個階段各自會面對的威脅,我們需要準備以下的應對措施:

  • 位元流生成階段

1.木馬對策

我們可以借鑒ASIC木馬檢測工作,通過分析跟模擬設計來探測很少被啟動的邏輯來識別木馬;或是將可以測試驗證的虛擬設計用來填充未使用的邏輯塊與路由元件,以防止攻擊者插入木馬。

2.矽智財剽竊對策

首先,用戶可以在矽智財設計階段插入浮水印,以提供作者身分的證明。FPGA供應商軟體包提供IEEE標準 P1735 加密的第三方矽智財分發,以防止逆向工程。另外還可以利用物理不可複製功能回營納入許可的方法,以生成特定於設備的密鑰。另外,尚有邏輯混淆的手法。

3.非惡意威脅預防

防禦工具引發的漏洞首先要遵循經過驗證的最佳軟體安全流程,並在工具下載和安裝期間通過使用受信任的供應商提供的雜湊來驗證工具真實性。另外,在設計層面,亦有一種活動目標防禦(moving target defense)手段來抵禦來自惡意FPGA 軟體工具的攻擊。

  • 位元流休息階段

1.位元流篡改

對此議題,我們可以採用邏輯鎖定技術:藉由在位元流層應用邏輯鎖定,來混淆網表功能,從而幫助防禦篡改攻擊。

2.矽智財剽竊

我們可以在位元流層插入浮水印;這種技術直接將水印嵌入到設計的茶找表內容當中,驗證者可以在位元流層執行水印提取跟比較。

3.單密鑰加密

Xilinx、Intel 與 MicrosemiFPGA 提供生成的位元流加密版本,可以增強對位元流篡改、盜版和逆向工程的抵抗力。

4.紅黑加密

Xilinx、Intel 與 MicrosemiFPGA 已在各自的產品中採用紅黑加密的概念。舉例來說,特定於設備的PUF用於生成儲存在FPGA 內部的黑鍵。在開啟電源之後,PUF被執行;其回應 ─ 也就是黑密鑰 ─ 生成用於解密、填充FPGA 架構的位元流紅密鑰。

  • 位元流加載階段

1.旁通道威脅

密鑰滾動(Key Rolling)限制了攻擊者提取密鑰的時間量,並抑制依賴多個樣本的攻擊類型。

2.位元流重播威脅

Mircosemi 通過在位元流實施版本控制,並在FPGA 設置不同的不變性版本控制位置來解決重播問題;Xinlinx 提供快速啟動當作解決方案,根據位元流中設置的位置在不同的非揮發性記憶體位置加載不同的位元流版本。

3.基於FPGA 的片上系統

為了保護FSBL的隱私跟完整性,片上系統通常會實施FSBL身分驗證方案,包含基於 RSA的身分驗證、使用公私鑰對來比較雜湊簽名等等的方式。

  • 位元流執行階段

1.錯誤注入

針對部分重組態內核的存取權限引發的漏洞,數篇學術論文提出,使用 Xinlinx ICAP在運行時讀取FPGA 配置存儲器,並生成雜湊以與預期雜湊進行比較,以檢測運行時篡改。而使用部分重配置核心時,必須採取適當的防護措施。

2.運行時攻擊

針對此類攻擊的防禦措施,包含對租戶位元流進行位元流級別的篩選,以檢查可疑功能。現代FPGA 還整合片上電壓與溫度感測器,以便共享FPGA 資源中的異常。

  • 位元流結束階段

1.位元流剩磁

FPGA 供應商已將供應商已將歸零機制納入其安全功能當中,允許用戶刪除存儲在FPGA 的某些訊息,或作為篡改懲罰。

防護措施二:基於FPGA 硬體加密的保護

除了對位元流的防護之外,為了保護資料安全, FPGA  通常也會採用硬體加密的手段。然而,針對這些防護措施,攻擊者仍有相應的滲透、干涉手段。因此,我們也需要準備對應的反制方法。

  • 旁通道攻擊反制

旁通道攻擊的原理,是在積體電路運行時,監控特定物理現象出現的訊號,再對其進行分析。如此一來,便有機會獲得積體電路的狀態,及其處理的數據資訊。

目前已知的旁通道攻擊防範機制包含:

1.實體安全

進行旁通道攻擊時,攻擊者會盡可能延長對受害裝置的存取時間,以獲得更高的訊號雜訊比。因此,要拒絕沒有認證的使用者存取和擁有金鑰。

2.遮罩或致盲

遮罩與致盲對策會消除輸入和電路中間節點的旁通道訊息相關性。

3.雜訊產生器

通過添加雜訊產生器,可以有效降低攻擊者所擷取的訊號雜訊比來保護電路。

4.調整加密演算法

由於FPGA 硬體加密的演算法都是依靠數學來建立其安全性,只要攻擊者熟悉演算法原理,即可從旁通道提取資訊。因此,可以針對演算法進行硬體上的調整,使其在執行加密時減少洩漏可利用的訊息。

5.簡單功耗攻擊反制

設計者可以透過執行隨機運算,來遮蓋實際執行的運算,使得雜訊進入系統。另外,加密硬體的執行條件分支結果也可能被間單功耗分析區分,所以應確保加密硬體實作中沒有影響條件分支的秘密值。

6.差分功耗攻擊反制

為了防止差分功耗分析,通常有三類防制手段:添加雜訊來增加攻擊所需的功耗紀錄數量;減少訊號大小,但這會大幅增加設備成本與尺寸;添加基於底層硬體結構的實際情形而設計的密碼系統,以確保功耗紀錄之間沒有相關性。

7.時序攻擊反制

時序分析攻擊的反制可以參考功耗分析攻擊的反制措施,因為兩種攻擊的本質相當接近。另有時序相等化與時序隨機化兩種手段,但它們都會對設備產生額外的負擔。

8.消除或減少旁通道訊號

透過特殊屏蔽層、電力線調節與濾波等功能,可以有效降低訊息釋放,阻止或延遲功耗監控攻擊。另外,增加雜訊與隨機性亦可有效阻止時序分析攻擊。

9.部分重新配置

此對策的主要概念是生成一個功能大致不變但物理上配置不同的加密演算法,並在使用部分重新配置(Partial Reconfiguration)運算期間交換它們。

  • 錯誤注入攻擊反制

錯誤注入攻擊涉及攻擊者對設備進行策略性操縱,以產生所需效果。為此,我們通常假設攻擊者以經存取了實體電路,並在此前提下嘗試用緩解措施迴避其干涉的結果。

為了防範各式錯誤注入攻擊,目前已知的防範機制包含:

1.檢測機制

由於錯誤注入攻擊利用了演算法執行時所發生的暫態錯誤,所以只要藉由電路使用空間、時間或資訊冗餘來識別有無錯誤發生;一旦檢測到錯誤,則加密密文將被壓制或隨機化,從而讓攻擊者無法利用。

2.保留設計餘裕

設計電路時,設計者可以通過電路模擬,使電路保留足夠的設計餘裕。足夠的設計餘裕會使得電路的電源電壓或時脈受到突波嚴重干擾時,電路不會正常運作,從而確保安全性。

3.感測器

電源電壓、時脈頻率和電流造成的錯誤注入所引起的突波會被感測器檢測到,從而阻止運算繼續執行。

4.屏蔽

設計者可以透過覆蓋電路的某些區塊,使得電磁無法通過,進而難以產生錯誤;或是透過檢查資料的完整性以防止電磁攻擊。

5.電源電壓

透過重新佈局的方式縮小電容,但這會影響設備密度,從而降低性能、提高成本。

6.反制突波分析

首先確保模型和實作已妥善定義所有狀態,並驗證突波是否無法更改事件的執行順序。接著藉由實作篡改檢測機制來避免故障注入。

7.反制離子化輻射分析

以現今積體電路的複雜性與尺寸來說,要實現這樣的攻擊手段已經相當困難。許多檢測與移除軟錯誤的方法可以阻止這類攻擊。

防護措施三:FPGA 本身的保護措施

  • 硬體木馬偵測

由於木馬通常處在隱藏狀態,代表它們極少被觸發,導致相關檢測相當困難。不過,目前我們仍有幾種檢測的方法:

1.Payload 觸發

此方法類似於製造測試,把它像是模擬邏輯錯誤一樣,加入適當的輸入向量。當一個硬體木馬被觸發時,Payload 將意圖改變邏輯值;這個偏差可以透過觀察輸出結果被檢測。

2.旁通道分析

通過分析電子設備自身的物理特性(功率、電流與延遲等等),以偵測隱藏的木馬。

3.物理檢查

一般來說,木馬是額外添加的元件或是遭到修改的元件,也導致晶片佈局與設計不同。因此只要直接比較現實的設計,就可以偵測到木馬。但這種方法實踐起來相當困難,也所費不貲。

  • 物理不可複製函數(PUF)

PUF是一種保護硬體的方法,通常以接收挑戰為輸入,對應到回應作為輸出。由於對應到裝置本身的特徵,所以對不同晶片的PUF 輸入相同的值,會得到不同的結果。

  • 真隨機數產生器(TRNG)

TRNG 可以用來產生公/密鑰,或是初始化向量及亂數種子,以及作為填充位元或一次性數值。

 

想了解更詳細的指引內容,請與我們聯絡索取

Share:
This site is registered on wpml.org as a development site.