侧信道攻击之模板攻击
模板攻擊
- 一、概述
- 二、建模過程
- 2.1 能量跡是如何泄露密鑰關鍵信息的?
- 2.2 多元高斯分布模型
- 三、攻擊過程
- 3.1 構建模板
- 3.1.1 采集能量跡
- 3.1.2 計算能量跡平均值
- 3.1.3 尋找密鑰信息泄露的關鍵點
- 3.1.4 構建模板
- 3.2 實施攻擊
- 3.2.1 攻擊的一般流程
- 3.2.2 剪枝策略
- 四、總結
- 五、參考文獻
一、概述
簡單能量分析(Simple Power Analysis, 即SPA)、差分能量分析(Differential Power Analysis,即DPA)和模板攻擊(Template Attacks)是能量分析攻擊領域最為經典的三大攻擊手段。當然,實際中還有一些其他的攻擊手段,例如相關能量分析(Correlation Power Analysis, 即CPA),將模板攻擊與機器學習的方法結合來進行攻擊。掌握這些基本的經典攻擊方法,為后續的學習能夠打下牢固的基礎。
在這篇文章中還想闡述的一點是:深入理解能量分析攻擊的能量模型對于深入理解能量分析攻擊方法具有十分重要的意義。 知其然,而不知其所以然,會很難靈活運用這些攻擊手段。
具體來說,能量分析攻擊的能量模型建立在這樣的基礎之上:數字電路在執行操作時需要消耗電能,且這種能量消耗以光、熱等形式散發出去。能量分析攻擊則利用了這一個事實,即密碼設備在處理數據和執行操作的過程中,其瞬時能量消耗依賴于這些數據和操作。為此,建立密碼設備的能量消耗模型,分析其能量特征使得在我們了解密碼算法的前提下破解密鑰成為可能(實際上,側信道攻擊方法屬于灰盒攻擊)。因此,我們找到合適的刻畫密碼設備能量消耗的模型就為找到合適的攻擊手段提供了基礎。
本文主要從模型構建和攻擊流程兩個方面對模板攻擊進行總結,最后會對模板攻擊的優缺點進行簡單總結。
二、建模過程
2.1 能量跡是如何泄露密鑰關鍵信息的?
這里忽略從晶體管開始的建模過程,如果讀者希望了解更為具體的內容,可以參考由馮登國、周永彬、劉繼業等翻譯的《能量分析攻擊》這一本經典教材。
對于密碼設備,我們可以總體地對它的能量消耗進行如下描述:
Ptotal=Pop+Pdata+PnoiseP_{total} = P_{op} + P_{data} + P_{noise} Ptotal?=Pop?+Pdata?+Pnoise?
這里 Ptotal 指在具體的某一時刻,密碼設備所消耗的總的能量; Pop 是指由密碼設備操作指令引起的能量消耗,例如“取指”; Pdata 是指由操作數引起的能量消耗; Pnoise 則指因為環境或者設備本身的問題而產生的能量噪聲,這樣的能量噪聲一般被看作是隨機分布,消除它的手段則可以是取多條能量跡然后求取平均值。而 Pop 和 Pdata 刻畫了密碼設備的執行過程,不同的操作指令以及不同的操作數都會引起實際的能量差異,只不過有些能量差異明顯,有些能量差異不明顯,作為攻擊者就是要想方設法地獲取這樣的差異以從中獲取一些有用信息,對于防守方則需要絞盡腦汁地隱藏由操作指令和操作數的差異造成的存在差異的能量消耗。
基于上面的知識,想象這么一個過程:在某個密碼設備上,使用n個不同的密鑰對同一明文(密文)各進行多次加密(解密),抓取獲得的能量跡。首先,完全隨機的噪聲 Pnoise 對于我們的攻擊毫無用處,甚至是一種干擾,應當(求平均)過濾掉。針對去掉毫無用處的噪聲后的信號,我們可以很明顯地判斷,密碼設備在運用不同的密鑰對同一個明文(密文)進行加密(解密)的過程中產生的能量消耗不同。這里,舉幾個簡單的數據以作說明(取360ns時的八組數據舉例說明):
| 00 00 00 01 | 98.23 | -1.66 |
| 00 00 00 02 | 98.05 | -1.84 |
| 00 00 00 03 | 99.30 | -0.59 |
| 00 00 00 04 | 101.21 | 1.32 |
| 00 00 00 05 | 100.56 | 0.67 |
| 00 00 00 06 | 101.73 | 1.84 |
| 00 00 00 07 | 99.98 | -0.09 |
| 00 00 00 08 | 100.06 | 0.17 |
| 能量平均值 | 99.89 |
從上表,我們可以看到由于密鑰值的不同而造成的能量消耗的不同,這被稱為能量跡的單點泄露。在密碼設備實際執行密碼算法的過程中,往往存在多個泄露點。簡單能量分析攻擊和差分能量分析攻擊都關注能量跡中的一個泄露點,因此不能夠充分利用能量跡中所泄露出來的信息,而模板攻擊關注整條能量跡中的多個信息泄露點,能夠充分利用這些信息。另外,我們約定一個關于密鑰信息泄露的關鍵點,記為P。還值得說明的是,這里只是采用了最簡單的方法直觀地展示了什么是密鑰信息泄露的關鍵點,實際在應用的過程中還會有其他的辦法更恰當地尋找這些對于攻擊有用的點。
在實際運用過程中,我們采用的是多元高斯分布模型來描述一條能量跡上多個密鑰信息泄露的關鍵點之間的關系。其運用的實際結果是,能夠充分地描述一條能量跡上多個密鑰信息泄露的關鍵點之間的關系,是最有效的能量分析攻擊手段。
2.2 多元高斯分布模型
其中,C 和 m 的具體表達如下:
關于多元高斯分布模型的具體知識,在這里不作闡述,它是一維高斯分布模型(即一維正態分布)的高階表達,其概率密度函數由(m,C)唯一決定,而(m,C)被稱為模板。在這里C是指相關樣本點的協方差矩陣,而m是指樣本的均值。在這里僅需要理解它的數學形式即可,在攻擊過程中具體如何去應用這個數學模型構建攻擊模板可以在第三部分去理解。
在了解“能量跡是如何泄露密鑰關鍵信息的”之后,我們又建立了描述不同信息泄露點之間關系的數學模型——多元高斯分布模型,接下來就可以進一步去探討模板攻擊的具體實施步驟了。
三、攻擊過程
模板攻擊的過程可以被初略地分為兩步,構建模板和實施攻擊,下面將分別詳細闡述這個過程。
3.1 構建模板
3.1.1 采集能量跡
在構建模板階段,首先要采集用于實施模板攻擊的能量跡。如果一個密碼算法的密鑰長度為8比特,那么就應該針對每一個可能的密鑰值,即256個密鑰可能值,采集相應的能量跡。一般而言,在這個階段會采集大量的能量跡(每個密鑰值對應的能量跡所需的典型數量為1000次左右)。如果密鑰長度過長,例如256比特,那么往往采取將其拆分為幾個部分,逐個部分地進行攻擊,以避免密鑰猜測的數量過大而造成攻擊困難。 在這里進行一個符號約定,針對某個密碼算法,我們一共猜測了n個密鑰值,分別記為 {K1,K2,……,Kn} ,每個密鑰值相應地采集了 L 條能量跡。
3.1.2 計算能量跡平均值
針對每一個密鑰猜測 Ki ,計算其能量跡的平均值,分別記為 M1,M2,……,Mn。
Mi=1L∑i=1LPtotal?iM_i =\frac{1}{L} \sum_{i=1}^L P_{total-i} Mi?=L1?i=1∑L?Ptotal?i?
3.1.3 尋找密鑰信息泄露的關鍵點
在這里,僅僅介紹差值求和的方法,實際過程中還有很多其他的辦法用以尋找密鑰信息泄露的關鍵點。在 3.1.2 中已經得到了針對一個密鑰猜測 Ki 得到的能量跡平均值 Mi 。將這些代表每個密鑰猜測的平均能量跡 M1,M2,……,Mn 兩兩作差,并對差值求和,就會得到一條帶尖峰的曲線,最高處的尖峰則表示該點上密鑰差異所引起的能量跡差異最明顯,為密鑰信息泄露的關鍵點 P。
我們從曲線中選擇最高的 N 個尖峰對應的點作為選擇的密鑰信息泄露關鍵點 P1,P2,……,PN 用以構建多元高斯分布模型的模板 (m,C)。這里需要注意的是在相鄰很近的尖峰上我們需要舍棄一部分尖峰,因為每個時鐘周期可能會被多次采樣,如果兩個點相鄰很近可能會導致這兩個點反映的密鑰相關信息重復。
3.1.4 構建模板
到目前為止,我們已經針對每個密鑰猜測采集了 L 條能量跡,計算出了關于每個密鑰猜測的平均能量跡 M1,M2,……,Mn,并選擇了 N 個密鑰信息泄露的關鍵點 P1,P2,……,PN。現在我們來計算每個密鑰猜測 **Ki**對應的模板(mi,Ci)
模板中 mi 就是每個密鑰猜測的平均能量跡中與密鑰信息泄露關鍵點相對應的平均能量值,記為 mi = (Mi[1],Mi[2],……,Mi[N]) ,Ci 的計算方法如下:
作符號約定如下:對于每個密鑰猜測 Ki,獲得的 L 條能量跡中第i條能量跡表示為 ti,ti[j] 和 ti[k] 表示第i條能量跡上第 j 和 k 個密鑰信息泄露關鍵點,Mki[j] 和 Mki[k] 分別表示第 p 個密鑰猜測下 L 條能量跡均值上對應的第 j 和 k 個密鑰信息泄露關鍵點。那么對于 Ci 中的每個 cj,k,計算如下:
這樣就獲得了密鑰 Ki 相對應的模板(mi,Ci),則可以根據下式計算相應的概率值。密鑰猜測 Ki 信號的構成則可以描述成相應的能量跡均值 Mi 和由多元高斯分布函數給出的噪聲分布。
3.2 實施攻擊
3.2.1 攻擊的一般流程
假設我們從被攻擊的設備上一共采集到 n 條能量跡,并用 xi,j 表示第 i 條能量跡上第 j 個密鑰信息泄露關鍵點,其中 1 <= i <= n,1 <= j <= N。
那么對于第 i 條能量跡,其所有的密鑰信息泄露關鍵點對應的能量值可以表示為向量 x = (xi,1,xi,2,……,xi,N) T
將向量 x 代入每個密鑰猜測值對應的模板之中,計算每個密鑰猜測下的概率密度函數值:pk,i = fk(x),表示第 i 條能量跡在密鑰猜測 k 下的概率值。
將測得的 n 條能量跡在每個密鑰猜測下的概率合并起來,判斷哪個密鑰猜測更可能是最終的答案(一般選擇最大值)。
Pk=∏i=1npk,iP_k = \prod_{i=1}^np_{k,i} Pk?=i=1∏n?pk,i?
采用這種方式進行計算,對于 n 太大,容易出現精度問題,因此可以采用取對數的方式來表示,如:
log?Pk=∑i=1nlog?pk,i\log P_k = \sum_{i=1}^n\log p_{k,i} logPk?=i=1∑n?logpk,i?
3.2.2 剪枝策略
在實際攻擊的過程中往往一個密鑰的長度十分長,因此我們需要把它分成多段來進行猜測。例如針對256位的AES算法,那么我們可以按照8×32進行拆分,每次猜測8位密鑰,最后再根據所有的32輪猜測進行分析選取最可能的密鑰值。在這個過程中,我們就會遇到如何在猜測過程中刪除不可能的密鑰的猜測的問題(即計算所得的概率小于一定值),這就需要我們采取合適的剪枝策略,既保障正確的密鑰猜測不被剪枝掉,又保障盡可能多地剪掉錯誤密鑰猜測值。具體的方法,在這里不進行探究,僅提一句,各位需要注意此點即可。
四、總結
從信息論意義上講,模板攻擊是能量分析攻擊領域最有效的側信道攻擊方式。但是它有兩個比較明顯的缺點,第一點是在實施攻擊之前,必須構建大量的模板,這無疑增加了非常多的工作量;這也決定了它的第二個缺點,即需要敵手能夠獲得與被攻擊設備一致的且可被編程的密碼設備。解決了這兩個問題,模板攻擊的威力則十分巨大,在攻擊階段僅需要極少的能量跡,極端情況下獲取一條能量跡即可高效地實施攻擊。
五、參考文獻
總結
以上是生活随笔為你收集整理的侧信道攻击之模板攻击的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python毕业设计作品基于django
- 下一篇: 倾斜补偿的电子罗盘(1):地磁场,磁传感