• 晶片資安第一站

《晶片安全實現測試指引》3個測試法,抓出旁通道攻擊

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

晶片測試,著重探討晶片產品是否具備抵禦入侵及偵測入侵的能力,本指引透過分析旁通道相關之攻擊,並在國際標準之基礎上,提出實際之測試方法,其中囊括三組旁通道分析模式,具體說明其運作原理與測試步驟,同時亦說明晶片測試工具之使用方法,並列舉出可能須具備之測試工具項目。

晶片測試工具

一、 量測工具使用
量測工具收集晶片的旁通道放射訊號,其中至少應有兩個測量單位:時間(水平旁通道)和電壓/電磁場(垂直旁通道)。量測工具可以是兩個不同的工具,如計時器(timer)和數位轉換器(digitizer)。這兩種的功能都可以通過單個工具(例如示波器)來呈現,該工具能夠量測垂直量以及時間。

二、 分析工具使用
分析工具是由三部分組成。第一個部分控制量測的過程,是一項自動化的任務,可以透過多種方式來實現,例如通過腳本或使用程式來達到目的,此控制可以簡單地按順序來觸發並擷取 trace。

第二個部分是資料後處理(post-processing),記錄的量測值,會被進行幾項調整:
‒ 去除異常的 trace,過濾掉被識別為異常值的明顯無效 trace;
‒ 將 trace 中的點(point)進行對齊;
‒ 透過主成分分析(principal components analysis)、線性判別分析(linear discriminant analysis)或方差測試(variance tests),進行資料壓縮、統計等目的;

‒ 進行資料融合(fusion),尤其是在多感測器或多模態(multiple modality)的情況下,集合多個資料源以產生比任何單個資料源所提供的資訊更一致、更準確和更有用的資訊,例如使用功率和電磁場伴隨變量(concomitant measurements)。

這種後處理通常由軟體執行,它可能需要暫存部分或全部的量測值。

第三個部分會分析後處理過的資料,以識別任何有效的分析,並驗證量測和分析是否正確執行,最後檢查獲得的 CSP 與已知明文/密文的一致性。

晶片安全測試

本指引將針對測試中的旁通道分析,進行詳細的說明。旁通道分析是在晶片運行時進行監聽作為分析的途徑,通過目標設備的其他非預期管道尋找資訊,其中敏感性資料等是從目標晶片的物理訊號中獲得的。旁通道訊號可從許多來源獲得,包括晶片的時脈頻率、電源電壓、功耗消耗、溫度、電磁(EM)輻射、聲音和光源等。攻擊者尋找旁通道訊號的異常情況,例如功耗變化或時脈頻率的突波,或是像加密模組加密的時序、電源電壓和電磁旁通
道等,來確定是否可以利用它們來發現 CSP 。

對於攻擊者可以存取其硬體的嵌入式系統,熱能(heat)和功率(power)是最重要的洩漏來源,且攻擊者可以載入自己的程式碼,或觀察現有應用程式之間的互動來了解產品之行為。對於網路系統(networked systems),基於時間的攻擊是最可行且已被證實的。使用記憶體快取的系統特別容易受到時序攻擊,因為特定程式碼段落的效能,會根據是否有進行存取快取而存在顯著差異,若沒有存取快取則會從主記憶體進行讀取或寫入,便會造成時間較長。

如果攻擊者能夠在產品上運行自己的程式碼,便可以不僅透過觀察目標應用程式的運行時間,也可透過觀察自己的記憶體存取時間,來進行時序分析,因為這些時間會受到快取行為的影響。

一、 TA 測試
(一) 測試原理及說明
時序攻擊(Timing Attack)是一種旁通道攻擊,攻擊者試圖通過分析執行密碼演算法所花費的時間來獲取 CSP。晶片中的每個邏輯運算都需要時間來執行,並且時間會因輸入而有所不同;通過精確測量每個運算的時間,並通過時間資訊尋找秘密,可能比使用已知明文與密文對(known plaintext, ciphertext pairs)的密碼分析容易得多,有時也會將時序資訊與密碼分析結合起來,以增加資訊洩漏率。

通過量測某些功能所需的回應時間,資訊可能會從晶片中洩漏,這些資訊對攻擊者的幫助程度取決於許多因素,如密碼系統設計、運行系統的 CPU、使用的演算法、時序攻擊防範措施、時序量測的準確性等。時序攻擊可應用於任何具有資料相關時序變化的演算法,在一些使用低階運算的演算法中,消除時間依賴關係是很困難,因為這些低階運算經常呈現出不同的執行時間。

(二) 測試方法
在成功的時序分析中,攻擊者與產品互動,測量訊息的往返時間,並使用統計技術處理這些往返時間,以推斷目標的執行時間,再逐步推算每個位元組(多個位元組)的秘密值。

在此過程中,攻擊者試圖透過向服務器提供特定的輸入值,來獲取不同的回應時間,而要發送的確切輸入則取決於攻擊場景。通常攻擊者將擁有候選值,包含一些潛在的輸入資料(例如使用者名稱、session tokens、簽名等),然後時序分析將進行多回合測試,在每一回合中,攻擊者都會更瞭解關於秘密值的相關資料(例如,使用者名稱的有效性、session tokens 或簽名的位元組);為此,攻擊者反覆運算所有候選值,並選擇導致最長(或最短)執行時間的值。

二、 SPA/SEMA 測試
(一) 測試原理及說明
簡單功率分析(SPA)與簡單電磁分析(SEMA)之差別在於觀察的對象不同,也就是電流與電磁輻射,然而在測試及判別的方法卻較為相似,故以下以 SPA 為例來說明測試原理及方法。

簡單功率分析(SPA) 是一種旁道分析,分析設備隨時間變化所使用的電流。隨著設備執行不同的運算,功耗會發生變化,例如微處理器執行的不同指令,將具有不同的功耗曲線。由於不同的運算將顯示不同的功耗曲線,因此可以確定在給定時間所執行的功能類型。例如,可以區分乘法函式和加法函式,因為乘法比加法消耗更多的電流。此外,當從記憶體中讀取資料時,1 與 0 的比率也會反應在功耗曲線中。

(二) 測試方法

圖1顯示了 SPA/SEMA 分析的流程,流程可以分為兩個階段,第一個階段是資料獲取及識別運算階段;第二個階段,則是資料分析階段,可透過多種方式來解析出CSP。相關分析在指引中也有詳盡解說。

圖1:SPA/SEMA分析流程圖

三、 DPA/DEMA 測試
(一) 測試原理及說明
差分功率分析(DPA)與差分電磁分析(DEMA)之差別在於觀察的對象不同,差分電磁分析是一種高階分析,它使用多個電磁輻射trace 來提高捕獲訊號的真實度(fidelity),適用於不可能進行簡單的電磁分析或無法提供足夠的訊息的情況。

差分功率分析是一種統計方法,用於分析功耗,以確定資料的相關性; 雖然觀察對象不同,然而 DPA 與 DEMA 在測試及判別的方法卻較為相似,故後續也會以DPA 為例來說明測試原理及方法。

(二) 測試方法

透過DPA/DEMA 分析流程,將有四個測試步驟:

第一步驟 – 量測資訊
差分功耗分析的第一步,是量測加密設備在執行運算時的資訊洩漏。如果知道傳輸的明文,則示波器或類比數位轉換器(ADC)的觸發位置,可以設為觸發在電腦傳送給密碼設備的明文位置上。如果知道傳輸的是密文,示波器或 ADC 的觸發位置,將設為密碼設備回傳給電腦的密文位置上。

第二步驟 – 對齊與訊號雜訊比
一般情況下,假設加密運算總是在每次量測的同一時刻發生,但儘管如此,開發人員有可能在演算法執行過程中,包含改變運算頻率的內部時脈(internal clocks),或是有隨機的等待狀態,因此時間不再是固定的,並且加密運算不是在量測同一時間執行的,這會在造成 trace 集合未對齊,從而使分析變得困難,並且需要處理的 trace 更多成本也更高。

未對齊的原因是量測中的錯誤設定值,如果在啟動量測時可以確定模糊度,則可以對齊 trace,從而正確地替換 trace。這個過程稱為靜態對齊(static alignment)。如果在運算開始時提供(或存在)觸發訊號,則這種模糊性也可以減輕,或者至少有助於對齊。

第三步驟 – 計算中間值
獲取產品執行加密演算法的中間值,也就是經過運算後得出的數值,通常測試人員可以知道明文或是密文,也可能兩者都知道,這取決於加密演算法的結構,且通常測試人員會使用預先指定的測試向量集合,來收集旁通道量測值,以在測試時暴露潛在 CSP。

第四步驟 – 統計分析
最後一步是對對齊和/或預處理的 trace 進行統計測試,應對多個預先指定的資料集合進行簡單的統計測試(稱為 Welch’st-test)。

旁通道traces將分為兩個子集,如果兩個子集中的旁通道trace在統計上具有高可信度的差異,則存在資訊洩漏,產品測試不通過。反之則資訊洩漏不存在或是被隱藏。

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

 

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