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