• 晶片資安第一站

《晶片安全設計驗證指引》安不安全?用這2種方法一測就知道

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

為確保所生產之晶片能盡可能地防範各種資料竊取的手段,在設計之初應充分設計安全防護措施,並經由縝密的驗證手段對所實施的安全防護措施進行驗證,方能確保晶片的安全性。

綜上所述,為幫助業者驗證晶片設計的安全性,本驗證指引將針對晶片設計的各項階段進行說明,並介紹該階段可能導入的安全漏洞。除此之外,亦將介紹兩種可用於驗證設計之安全性的方法及流程;適用之對象為晶片設計部門主管,及晶片設計人員。

晶片設計的資安風險

為了能夠建立可靠且安全的晶片,設計人員除了需要訂定電路中需保護的資產及其防護措施,也需具備可能遭受之攻擊方式的相關知識。同時,設計人員也
應識別可能利用安全漏洞進行攻擊的潛在攻擊者。

識別潛在的攻擊者在安全設計中佔有很重要的一部份,當設計人員能夠預期潛在攻擊者的能力,將能夠幫助設計人員針對可能遭受的攻擊,選擇效益最佳的防禦對策。因此晶片設計人員應具備在晶片生產鏈中的參與者(包括攻擊者與保護者)的相關知識,以及他們在生產鏈中所扮演的角色。生產實體晶片前的三個設計階段包括:暫存器轉移層次(RTL)、閘級設計階段(Gate Level)以及實體繞線階段(Layout Level)。

此章節將會依照晶片設計矽前(pre-silicon)流程,對各階段逐一進行介紹,並且也會討論各階段中可能存在的潛在漏洞。最後將會列舉著名的弱點與漏洞分類系統 CWE (Common Weakness Enumeration)中,所枚舉通用硬體設計弱點的部分漏洞進行說明。

(一) 暫存器轉移層次階段(Register Transfer Level,RTL)
在訂定完成要製作的 IC 規格之後,會先利用硬體描述語言(例如:VHDL、Verilog 等)將 IC 的電路與功能以程式碼的形式將設計的概念與輪廓描寫出來。由後續階段所設計的邏輯閘與線路布置皆是為了實現此階段設計的功能所進行,因此此階段的安全設計尤為重要。許多攻擊方式所針對的目標,經常是來源於此階段的設計不良所遺留的。

設計不良除了代表單純設計錯誤,同時也包含了在設計時未考慮到未來可能會發生的狀況,所產生的空白狀態。此類空白狀態已經在 Nicole Fern 等人的研究報告中表明,存在硬體木馬攻擊的漏洞,便是利用在此階段程式碼中設計不良所產生的“ don’tcare” assignment 以進行攻擊,進而導致重要的機密資產洩漏。

除此之外,在這個設計階段中硬體木馬最常被植入在程式碼中難以控制與難以觀測的部分。如果檢測或是驗證方法能夠識別程式碼中難以控制與難以觀測的部分,將能夠大大的幫助設計人員評估IC 設計中被植入硬體木馬的可能性。

這個階段也經常使用由第三方設計的 IP 元件,亦有這些元件中隱藏了木馬程式或是後門,從而導致開發的晶片也包含了這些漏洞;因此除了需要確保自行開發設計的電路安全性之外,也需要考慮第三方元件中包含了漏洞的可能性。

(二) 閘級設計階段(Gate Level)
不同於 RTL,在 gate level 中,經常使用平面的網路連線表來表示設計。相較於 RTL 使用程式碼來模擬實際 IC 的電流變化以及功能的運作,為了將硬體描述語言轉化為電路元件的配置設計,此階段會將更為精準的設計細節(如: 邏輯閘、電晶體等電路元件的配置)提供給設計人員,因此當設計由 RTL邁入到 gate level 時,通常會透過像是設計編譯器等整合系統,將硬體描述語言的程式碼整合到閘級網路連線表中。

需注意的是,在通過整合系統將暫存器轉移層級整合進閘級設計階段時,電腦輔助設計工具有可能會導入額外的漏洞。另外,在暫存器設計階段中難以控制與觀測的電路節點(nets),可能在此階段被設計為難以偵測的硬體木馬。上述漏洞都需要在此階段被識別出來,並將可除錯設計,以及可測試設計加入至設計中的時機,因此由這兩項設計結構所導入的弱點,也需要在這個時候被分析與識別。

(三) 實體布置階段 (Layout Level)
Layout level 是將設計檔案交給製造商生產前的最後一個階段,所有剩餘的設計漏洞都應該要在這個階段被識別並且進行排除。

這個階段包含了實體的電路元件配置以及線路的規劃,在此階段的設計,可以查看到晶片設計的所有電子元件與電路中的金屬連接點,進而在 layout level 將允許開發人員對功耗、電磁輻射和執行時間進行精準的模擬,以至於有關旁通道攻擊與錯誤注入攻擊都能夠在這個階段得到完整且精準的漏洞分析。

除此之外,諸如微探針攻擊(micro probing attack)等侵入性的攻擊漏洞分析也只能夠在這個階段完成。雖然這個階段可以進行許多完善且精準的漏洞分析,但是在此階段進行的所有分析,與 RTL 和 gatelevel 所進行的漏洞分析相比都非常耗時,並且若想在此階段修改設計,很容易產生更為嚴重或是更多的漏洞。

相關的通用硬體設計弱點

在 CWE 中所整理的弱點涵蓋許多硬體設計常見的弱點,因此在進行安全驗證時應特別注意是否在無意間包含了這些漏洞。每項弱點都會有其編號、名稱與弱點說明,相關範例或是緩解措施可至 CWE 網站上查詢。

簡介幾項如下:

需要更多整理,請加入會員索取本指引

資料來源:CWE弱點與漏洞系統

由 CWE 的弱點列表可以發現,在晶片設計的過程中除了需要確保所生產的晶片能夠正常的運作之外,亦須考慮到在晶片被製成實體後,於設計階段使用的功能是否被完整的保護或是禁用,以及生產後的漏洞是否能夠被排除或是修補等細節。

晶片設計安全的驗證方式與流程

為確保所設計的安全防護措施能有效的阻擋攻擊,使用縝密的手段對防護措施的成效進行驗證是非常重要的。在驗證的過程中,除了需要識別各階段可能包含的漏洞,亦須考量如何將設計中的威脅進行量化評分,以達到分析成效之目的。

在晶片設計過程中進行安全性的驗證做法,建議有二:

  1. 建立安全設計規則檢核表:安全設計規則核對框架由三個部分所構成:(1)弱點列表、(2)將弱點量化的規定與指標、(3)用於執行自動安全評估的電腦輔助設計工具(CAD)。
  2. 使用定理證明程式:當系統特性被以邏輯敘述描述時,可以使用定理證明程式來證明,或是否定系統是否具有該特性。除了大型且複雜的系統需耗費大量時間與精力外,定理證明程式已經成為能夠為設計提供高等級保護力
    的方法。方法有4:(1)攜帶證明硬體框架。(2)基於攜帶證明的 RTL 安全驗證 。(3) RTL 安全性的驗證流程 。(4)基於攜帶證明的 gate level 驗證。

想了解更詳細的指引內容,請加入會員索取

 

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