密碼模塊的非入侵式攻擊檢測
從標準到案例:密碼模塊的非入侵式攻擊檢測
在上一期文章中我們學到了密碼模塊的相關定義以及密碼模塊的安全等級等知識,也了解到了非入侵式攻擊測試在密碼產品的高安全等級認證中的必要性,本篇文章將對非入侵式攻擊測試的定義和具體測試方法展開詳細的介紹。
非入侵式攻擊測試原理
非入侵式攻擊測試項
《GB/T 37092-2018 信息安全技術 密碼模塊安全要求》中規定的非入侵式攻擊測試項包括:
- 能量分析:簡單能量分析(Simple Power Analysis,SPA)和差分能量分析(Differential Power Analysis,DPA)。SPA需要直接(例如,通過視覺)分析密碼模塊在執行密碼過程中各指令的能量消耗模式。通過監視密碼模塊能量消耗的變化,可以發現所執行密碼算法的模式和實現方法,從而獲取密鑰值。一階DPA具有相同的目的,但是為了分析密碼模塊能量消耗的變化,使用了統計方法(例如,均值差、相關系數)對能量消耗進行統計分析,從而獲取密鑰值。
- 計時分析:計時分析(Timing Analysis,TA)攻擊依賴于密碼模塊執行時間的精確測量與密碼算法或過程有關的特殊數學操作之間的關系。對收集的耗時信息進行分析可以確定模塊的輸入和密鑰之間的關系。通過對此關系的分析,從而推導出密鑰和關鍵安全參數。計時分析攻擊假定攻擊者具有有關密碼模塊的設計知識。
- 電磁分析:由于密碼模塊電活動會導致密碼模塊發出的電磁信號發生變化,通過監視密碼模塊發出的電磁信號變化,可以采用簡單電磁分析(Simple Electro-Magnetic Analysis,SEMA)和差分電磁分析(Differential Electro-Magnetic Analysis,DEMA)。SEMA采用與SPA相同的方法對電磁信號變化進行分析,從而獲取密鑰值。DEMA采用與DPA相同的方法對電磁信號變化進行分析,從而獲取密鑰值。
非入侵式攻擊測試目標與原理
非入侵式攻擊測試的目標是評估使用了非入侵式攻擊緩解技術的密碼模塊能否提供抵抗非入侵式攻擊的能力。測試程序不能保證密碼模塊可以完全抵抗攻擊,但是有效的測試程序可以表明密碼模塊中充分考慮了非入侵式攻擊緩解技術的設計和實現。
非入侵式攻擊測試的基本原理是首先以非入侵的方法從密碼模塊中或密碼模塊周圍提取物理量,隨后利用隱藏在物理量中的有偏性展開攻擊。這種有偏性來源于或者依賴于攻擊者作為目標的秘密信息,這種依賴于秘密信息的有偏量被稱為泄露。如果實驗表明泄露的信息超過了允許的泄露閾值,則表明設備不能通過非入侵式攻擊測試;否則,攻擊失敗并且通過測試。這種測試泄露是否存在的測試被稱為泄露分析。
非入侵式攻擊測試方法
非入侵式攻擊測試一般包含計時分析、簡單能量/電磁分析和差分能量/電磁分析,而針對具體的計時分析、能量泄露、電磁泄露測試,《GB/T 37092-2018 信息安全技術 密碼模塊安全要求》也給出了通用的核心測試流程,下面將對具體的核心測試流程和泄露分析流程展開描述。
核心測試流程
核心測試是指對單個關鍵安全參數(Critical Security Parameter,CSP)類的單個安全功能進行測試,其中CSP類可以包括密鑰、生物特征數據或PIN。如果某些安全功能處理多個CSP類,則需要對所有的CSP類執行適用的泄露分析。測試方法需要使用不同的CSP類重復核心測試,直到第一次測試失敗或者所有的CSP類都通過為止。如果一個核心測試由于密碼模塊限制了可以重復操作的次數而無法繼續(比如說密碼模塊保護機制被觸發,關鍵安全參數自動更新或者密碼模塊強制停止工作),則測試結果為通過,將對下一個CSP類繼續進行核心測試。
核心測試流程如圖1所示,分為以下幾步:
1) 首先,針對指定的CSP驗證供應商文檔。
2) 然后,確定測量物理特性的可行性,若經測試后未測到相關物理特征,則測試結果為通過;否則,繼續執行下一步。
3) 將由測試實驗室確定的一套CSP配置到密碼模塊中。
4) 執行一次安全功能的泄露分析過程,檢查是否存在明顯的信息泄露,若觀察到明顯信息泄露則不通過測試,否則,通過測試。

圖1 核心測試流程
非入侵式攻擊測試框架
測試實驗室應當嚴格遵循圖2所示測試框架的操作順序,例如,只有通過了TA才能繼續執行SPA。另外,此處所提出的非入侵式攻擊測試方法并不需要提取出完整的密鑰,只要在測試過程中出現了明顯的敏感信息泄露則認為密碼模塊沒有通過測試。整個測試流程按順序分為如下幾步:
1) 首先執行一次計時分析,看是否存在與關鍵安全參數相關的執行時間的差異,如果不存在,則轉到第二步;否則測試失敗。
2) 執行一次簡單能量/電磁分析,看是否存在與關鍵安全參數相關的指令模式,如果不存在,則轉到第三步;否則測試失敗。
3) 執行一次差分能量/電磁分析,如果能檢測到敏感信息泄露,則測試失敗;否則,測試通過。

圖2 非入侵式攻擊測試框架
計時分析攻擊泄露測試
計時分析攻擊的泄露分析流程如圖3所示,整個測試流程可以分為兩個階段:
1) 第一階段,測試密碼模塊在固定文本輸入和不同關鍵安全參數下的執行時間,對應于多次測量密碼模塊使用固定安全參數以及固定文本的執行時間。此后同樣的過程在其他關鍵安全參數中被重復執行。如果通過統計分析表明測得的執行時間與CSP之間沒有相關性,則進行第二階段的測試;否則,測試失敗。
2) 第二階段,測試密碼模塊在不同文本輸入和固定關鍵安全參數下的執行時間,如果通過統計分析表明測得的執行時間和所有明文之間沒有相關性,則測試通過;否則,測試失敗。
另外,如果被測密碼模塊的執行時間難以準確測量,則可以使用目標密碼模塊的一個時鐘周期作為容錯值ε,比較兩個時間值T1和T2,當|T1-T2|<ε時測試通過,否則,測試失敗。

圖3 計時泄露分析流程
簡單能量/電磁泄露測試
簡單能量/電磁泄露分析的流程如圖4所示,分兩個階段進行:
1) 第一個階段,測試實驗室根據期望達到的安全能力獲取對應數量的側信道測量信息。
2) 第二個階段,測試實驗室通過交叉關聯的方法來檢索密碼算法指令序列,若使用此方法測量出的相關性過低以至于無法得出準確的結論時,測試實驗室可以使用聚類的方法來協助評估。對于所有的側信道測量,若交叉關聯方法識別出與關鍵安全參數相關的指令操作序列,則測試失敗。

圖4 簡單能量/電磁泄露分析流程
差分能量/電磁泄露測試
差分能量/電磁泄露分析的流程如圖5所示,可以描述為以下:
1) 測試實驗室根據期望達到的安全能力等級來獲取對應數量的側信道測量信息。
2) 使用校準函數靜態或動態對齊操作(廠商應該與測試實驗室合作,以便協助測試實驗室在密碼模塊中實現“校準函數”),直至計算所得的信噪比SNR滿足條件,則可以執行下一步操作。
3) 計算安全功能的中間值。
4) 對對齊的或預處理的曲線進行統計測試。測試實驗室應當在多個預先指定的數據集上進行統計分析(即Welch測試),以此來檢測側信道中是否存在敏感信息泄露。

圖5 差分能量/電磁泄露分析流程
非入侵式攻擊測試指標
由上述描述,安全等級一和安全等級二不需要側信道攻擊測試,下面給出安全等級三和四在側信道攻擊測試中對數據收集時間、分析時間和數據量的標準。

總結
本文主要介紹了非入侵式攻擊測試的目標、原理、具體測試流程和測試方法,以及測試通過/不通過的相關指標。非入侵式攻擊測試利用了隱藏在密碼模塊中或周圍的物理量的有偏性,這種依賴于秘密信息的有偏量被稱為泄露,測試泄露是否存在的測試即為泄露分析。在此基礎上,我們可以學習到非入侵式攻擊核心測試的基本流程和測試框架,測試人員需要遵循測試框架中的操作順序;然后我們可以根據測試框架中計時分析、簡單能量/電磁分析、差分能量/電磁分析的順序,依次了解到其泄露測試的具體流程;最后給出了安全等級三和四在側信道攻擊測試中對數據收集時間、分析時間和數據量的指標和標準。
今天我們了解到了非入侵式攻擊測試的相關原理和基本流程,那么如何利用已有的測評工具在實際場景中根據這些標準展開具體可靠的測試,以及如何讓測試結果更加明晰可靠,本公眾號11月11日的文章將展開詳細的介紹。