差分能量分析介绍(一)
一、背景
????????由于涉及多個系統層的攻擊難以預測和建模,因此安全漏洞通常是由組件和層之間的意外交互造成的。如果算法設計者、軟件開發人員和硬件工程師不合作,不了解彼此的工作,在系統的一個層中進行的安全性假設可能與其他層的實際屬性不匹配。許多技術已被設計用于單獨測試密碼算法。例如,差分密碼分析和線性密碼分析可以利用密碼輸入和輸出中極小的統計特征。現代密碼被設計來抵抗這種攻擊。然而,這種分析只適用于系統架構的一部分,即算法的數學結構。
????????對密碼分析的抵制不足以在實踐中創建安全的密碼系統。即使是使用強大算法和協議的正確實現也不一定是安全的,因為漏洞可能來自實現的其他層。
???????差分功率分析(DPA)、簡單功率分析(SPA)以及一些相關技術。這些攻擊通過測量目標設備(或其他側信道)的功率消耗來提取密鑰。這些方法對于所有主要算法的實現都是有效的。
? ? ? ? 這些攻擊已經針對數百種設備實施,包括ASIC、FPGA和軟件。目標范圍從小型的單一用途芯片到復雜的設備,這些設備的功率測量會產生噪音,并且會因不可預知的并行操作而變得模糊。
二、功率分析
1、產生原因
????????大多數現代密碼設備都是使用半導體邏輯門實現的,而半導體邏輯門是由晶體管構成的。當電荷被施加到晶體管的柵極或從柵極移除時,電子流過硅襯底。這種電子流消耗能量并產生電磁輻射。
????????集成電路或更大設備的功耗反映了其單個元件的聚合活動,以及系統的電容和其他電氣特性。例如,微處理器可能使用與寄存器負載不同的電路來調度加法操作,從而導致這些操作消耗不同的功率。凈功耗還取決于有源電路中開關的晶體管。一些晶體管的活動取決于電路正在處理的數據。例如,當將十六進制字節A7添加到B9時,可能比將01添加到00時更多的晶體管切換。
????????由于設備使用的電量受正在處理的數據的影響,因此功耗測量包含電路計算的信息。單個晶體管的影響雖然在大型設備的功率測量中無法直接觀察到,但卻表現為弱相關性。當設備處理加密機密時,其依賴于數據的電源使用會使這些機密受到攻擊。
圖1來自執行AES-128加密的智能卡的電源跟蹤,十輪清晰可見?
2、軌跡和頻率分布
????????功耗分析過程的第一步是從目標設備收集一條或多條記錄道。跟蹤是跨加密操作或操作序列進行的一系列測量。
????????圖1顯示了從執行AES-128加密操作的智能卡收集的大約3毫秒的電源跟蹤。功耗為采樣數100MHz,跟蹤中的每個點是多個采樣的平均值。通過將電阻器與設備接地線串聯,然后使用示波器測量接地輸入處的電壓來捕獲跟蹤數據。因此,較大的測量值(圖1中的較高值)表示較高的功耗。
????????圖2顯示了在CBC模式下使用ES128從ANFPGAE加密1MBOFD數據記錄的5微秒功率跟蹤段。圖中顯示了四個單獨的AES-128加密。完整的跟蹤記錄了500 MHz下近4000萬次測量,跨越了完整CBC加密中的216次AES操作。通過將電阻器與電源(Vcc)輸入串聯,并測量設備上的電壓,可以捕捉到該軌跡,因此圖中較高的功耗顯示為較低的值。
圖2執行AES-128 CBC模式加密的FPGA電源跟蹤的一部分。
在功率側測量中,向下對應于更大的功率?
圖3顯示智能卡上第一輪AES-128加密的電源跟蹤段。垂直線標記第一個S形框查找的位置
????????盡管AES輪在兩個圖中都可以清楚地識別。1和2,PAA攻擊不需要此類干凈的測量。下面的實驗使用從智能卡收集的一組痕跡進行,說明了功耗如何依賴于敏感數據。圖3、圖1顯示了AES-128運行第一階段的功率區域。(圖3顯示了比圖1更詳細的信息,因為較少的點被平均在一起以產生繪圖中的每個點。)卡計算第一個S盒輸出的時間時刻由垂直線標記。在執行AES-128加密操作時,從同一智能卡捕獲了4000條記錄道。每個軌跡觀察到不同的、隨機的、純文本的加密。每次都使用相同的隨機已知密鑰。圖4顯示了在圖3中標記的時間,4000條記錄道中的功率測量分布。使用了一個8位A/D轉換器,因此點的可能范圍為0到255。觀測到的分布接近高斯分布,平均值為120個單位,標準偏差為10.66。圖4顯示,在以下情況下,記錄道之間的功耗測量值存在顯著變化:
圖4第一次S盒輸出計算時的功耗分布
????????這是計算過程中的一個關鍵點。這種變化結合了一系列影響,包括密碼處理中的數據相關變化、設備中的其他活動、測量不準確度、干擾、環境因素等。
????????圖5證實了與數據相關的功耗會導致在功率跟蹤中觀察到的變化。該圖顯示了兩種功率測量分布。左側的分布僅使用第一個S盒輸出的最低有效位(LSB)為1的記錄道生成。向右的分布僅使用LSB為0的記錄道生成。在這種情況下,密鑰和明文是已知的,因此可以從明文計算S-box輸出。
????????對于LSB為1的記錄道,功耗近似為高斯分布,平均值為116.9,標準偏差為10.7。當LSB為0時,分布近似為高斯分布,平均值為121.9,標準偏差為9.7。通過邏輯綜合工具和其他設計細節布置逆變器,使得任何一個值都可能消耗更多功率。重要的是,這兩種分布顯著不同,表明功耗與S盒輸出的LSB具有統計相關性。圖5中的分布顯著重疊,因此單個測量將不足以確定S盒輸出比特的值,但是如果測量集足夠大,則可以可靠地區分這些分布。
????????圖5所示的子集并不是劃分數據的唯一方法,如圖4所示。例如,如果根據第一個S盒的任何其他輸出位的值將數據劃分為兩個子集,則所得分布也可以清楚區分。這重申了所選時間點的功耗取決于第一個S盒輸出的所有位。????????
圖5第一個S盒輸出的LSB為1(左)和0(右)的記錄道功耗測量分布
總結
以上是生活随笔為你收集整理的差分能量分析介绍(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++(二)——命名空间(上)
- 下一篇: 差分能量分析介绍(二)