《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 差分能量分析攻擊原理及其抵御措施的探討

差分能量分析攻擊原理及其抵御措施的探討

2008-10-09
作者:謝雨 范明鈺 王光衛(wèi)

  摘 要: 介紹了建立在執(zhí)行密碼運(yùn)算的芯片的能量消耗" title="能量消耗">能量消耗基礎(chǔ)上的攻擊方式,這些攻擊方式中差分" title="差分">差分能量分析攻擊是最難被避免的。介紹了差分能量分析的原理以及防御這種類型攻擊的主要思想。
  關(guān)鍵詞: 能量消耗 差分能量分析 防御


1 差分能量分析
  許多信用卡公司計(jì)劃在未來(lái)幾年內(nèi)將大部分的磁卡轉(zhuǎn)變?yōu)橹悄芸āD壳爸悄?a class="cblue" href="http://ihrv.cn/search/?q=卡在" title="卡在">卡在運(yùn)輸、電子貨幣、ID卡等領(lǐng)域內(nèi)的用途不斷增加。智能卡的主要優(yōu)勢(shì)是內(nèi)部數(shù)據(jù)例如密鑰能夠在內(nèi)部處理而僅僅公開處理結(jié)果。但是,在使用輸入信息和密鑰所進(jìn)行的處理過(guò)程中智能卡會(huì)產(chǎn)生諸如能量消耗或者電磁散射之類的信息泄漏。于是近年來(lái)出現(xiàn)了一些新的攻擊手段,攻擊者有可能利用它們獲取保存在智能卡內(nèi)部的數(shù)據(jù)[5]。
  在這些攻擊手段中,有一種攻擊主要是通過(guò)分析電子設(shè)備執(zhí)行計(jì)算過(guò)程中的能量消耗來(lái)尋找有關(guān)密鑰的信息。通常將這類攻擊劃分為簡(jiǎn)單能量分析攻擊SPA(Simple Power Analysis)和差分能量分析攻擊DPA(Differential Power Analysis)[1]。DPA攻擊是通過(guò)分析泄漏信息進(jìn)行攻擊的主要形式。
  在SPA攻擊中,目標(biāo)本質(zhì)上來(lái)說(shuō)是利用能量消耗的值來(lái)推測(cè)出相關(guān)的秘密信息甚至是密鑰。圖1展示了一個(gè)智能卡在DES運(yùn)算中的能量消耗。從圖1中可以明顯看出智能卡的能量消耗很可能確實(shí)提供了有關(guān)芯片工作的信息。


  在DPA攻擊中,計(jì)算了兩組平均能量消耗的差異,如果出現(xiàn)非常顯著的差異就認(rèn)為攻擊成功[2]。給人留下深刻印象的是雖然攻擊者不了解而且也不試圖找出該算法特定的執(zhí)行部分的任何信息,DPA攻擊也同樣可以找出密碼算法" title="密碼算法">密碼算法(例如DES算法)的密鑰。當(dāng)前存在的算法中,有些能夠防止DPA攻擊,但不能防止SPA攻擊;還有一些算法則相反,能夠防止SPA攻擊,不能防止DPA攻擊;另外還有這兩種攻擊都能抵御的算法以及都不能抵御的算法。
2 DPA攻擊的原理
  DES算法(數(shù)據(jù)加密標(biāo)準(zhǔn))要執(zhí)行十六輪運(yùn)算。在每一輪運(yùn)算中,函數(shù)f執(zhí)行在32個(gè)比特上。函數(shù)f使用八個(gè)從6比特到4比特的非線性變換,每個(gè)變換都被編碼在一個(gè)被稱為S盒的工作平臺(tái)上。下面以DES算法為例說(shuō)明DPA攻擊的原理。
  步驟1:測(cè)出1000次DES運(yùn)算第一輪的能量消耗。用E1,…,E1000來(lái)表示1000次運(yùn)算的輸入值。用C1,…,C1000來(lái)表示運(yùn)算期間測(cè)出的1000條能量消耗曲線。計(jì)算1000條能量消耗曲線的平均曲線,記為MC。
  步驟2: 主要關(guān)注第一個(gè)" title="第一個(gè)">第一個(gè)S盒中第一輪運(yùn)算的第一個(gè)輸出比特。用b表示這個(gè)比特值。很容易發(fā)現(xiàn)b僅僅取決于密鑰中的6個(gè)比特。攻擊時(shí)可以對(duì)相關(guān)的6比特作一個(gè)猜測(cè)。用這6個(gè)比特和Ei來(lái)計(jì)算b的理論值。這樣就能夠?qū)?000個(gè)輸入E1,…,E1000分為兩類:使b=0的輸入以及使b=1的輸入。
  步驟3:計(jì)算與使b=0輸入有關(guān)的曲線的平均值,記為MC′。如果從MC和MC′的圖像可觀察到不同,就認(rèn)為選定密鑰的6個(gè)比特的值是正確的。如果MC和MC′的圖像沒有任何可觀察到的不同,那么選擇另外6個(gè)比特值再重復(fù)步驟2。在這一步中,通常對(duì)每次選擇的6個(gè)比特值,作出相應(yīng)的代表MC和MC′的差異的曲線,得到64條曲線后選出與其它有明顯差異的一條。
  步驟4:使用b在第二、第三…第八個(gè)S盒中重復(fù)步驟2和3,得到密鑰的48個(gè)比特。
  步驟5:余下的8比特可以通過(guò)窮舉搜索得到。
  在實(shí)際對(duì)智能卡的攻擊中,通常關(guān)注的是選定S盒的4個(gè)輸出比特集,而不僅是一個(gè)輸出比特。這種情況下,將輸入分為16個(gè)集合:使輸出為0000的,使輸出為0001的,…,使輸出為1111的。在步驟3中,可以計(jì)算與最后一類輸入(使輸出為1111的)相關(guān)的曲線的平均值MC′。但是這樣得到的平均值MC′是通過(guò)1/16的曲線計(jì)算得到的,而起初的MC是通過(guò)一半的曲線計(jì)算得到。這就被迫使用遠(yuǎn)遠(yuǎn)超過(guò)1000次的DES運(yùn)算,但好處是MC和MC′具有更明顯的差異。
  圖2和圖3表示了在智能卡上的一次DES運(yùn)算中,執(zhí)行步驟2和步驟3得到的結(jié)果。選用“1111”作為第一個(gè)S盒的目標(biāo)輸出,使用2048個(gè)不同的輸入。對(duì)64條曲線的詳細(xì)分析表明,結(jié)果正確時(shí)曲線很容易找到,這條曲線比其他曲線包含了更多的波峰。


  DPA攻擊不需要任何有關(guān)每個(gè)設(shè)備的個(gè)體能量消耗的信息。攻擊者一旦知道了算法的輸出以及相應(yīng)的能量消耗曲線后就可以進(jìn)行攻擊。DPA攻擊在理論上僅僅依賴于下面的基本假設(shè):在算法運(yùn)算中存在一個(gè)中間變量,知道密鑰的一些比特(小于32比特)可以決定兩個(gè)輸入是否給這個(gè)變量帶來(lái)相同的值。
  所有使用S盒的算法,例如DES算法,對(duì)DPA攻擊都顯得很脆弱。因?yàn)檫@些算法中的一些執(zhí)行包含在上面提到的假設(shè)中。
3 對(duì)DPA攻擊的抵御措施
  從Paul Kocher 于1995年公開發(fā)表DPA攻擊的原理以來(lái),現(xiàn)在已經(jīng)出現(xiàn)一些相應(yīng)的解決方案[3][6]
  (1)引進(jìn)隨機(jī)時(shí)間移動(dòng)。這樣計(jì)算方式不再與相同設(shè)施的能量消耗有關(guān)。
  (2)替換一些關(guān)鍵設(shè)備,使它們很難被分析。
  (3)對(duì)一個(gè)指定的算法提供一種明確的計(jì)算方式,以使DPA攻擊對(duì)得到的執(zhí)行可能無(wú)效。
  在這些方案中,更廣泛地研究了第三種,因?yàn)樗枰浅>_的數(shù)學(xué)分析。下面給出了避免DPA攻擊的具體措施。其基本原則是使前面介紹過(guò)的基本假設(shè)不再成立,也就是使中間變量絕對(duì)不依賴能夠輕易獲得的密鑰子集。
  這種方案的主要思想為:用k個(gè)變量V1,... ,Vk替換每一個(gè)依賴于輸入或者輸出的中間變量V,通過(guò)這k個(gè)變量可以重新得到V。更明確地說(shuō),為了保證這個(gè)算法新形式的安全性,選擇一個(gè)函數(shù)f滿足恒等式V=f(V1 ,...,Vk),并且滿足下面兩個(gè)條件:
  條件1:通過(guò)v和一些固定值i(1≤i≤k)推論出vi的信息是不可行的,因而存在一個(gè)k-1個(gè)元素的數(shù)組(v1,...,vi-1,vi,...,vk),滿足等式f(v1,...,vk)=v。
  條件2:函數(shù)f不需要計(jì)算V即可執(zhí)行。
  條件1的第一個(gè)例子:選擇函數(shù)f(v1,...,vk)=v1⊕v2⊕...⊕vk,“⊕”代表異或運(yùn)算。很明顯函數(shù)f滿足條件1,因?yàn)閷?duì)任何固定的i(1≤i≤k),vi包括所有可能的值,因此不依賴v。
  條件1的第二個(gè)例子: 選擇變量V,它的值存在于乘法集Z/nZ中。選擇函數(shù)f(v1,...,vk)=v1·v2·...·vk mod n,新變量v1,v2,...,vk的值也存在于乘法集Z/nZ中。這個(gè)函數(shù)也滿足條件1。
  然后用變量V1,...,Vk替換依賴于輸入的中間變量V來(lái)轉(zhuǎn)換初始算法。
  本文介紹了攻擊者通過(guò)對(duì)電子設(shè)備的能量消耗進(jìn)行分析得到有關(guān)密碼算法密鑰的信息。這種攻擊方法被稱之為差分能量分析攻擊。它主要利用統(tǒng)計(jì)學(xué)對(duì)測(cè)出的密碼算法的許多不同輸入的能量消耗曲線進(jìn)行分析。為了保護(hù)密碼算法的安全,還介紹了防御的主要思想:將中間變量分為兩個(gè)或更多的變量,這些新變量不會(huì)輕易地被預(yù)測(cè)。這種方式被證明可以抵御本地的DPA攻擊,在這種攻擊中攻擊者僅僅嘗試從平均值曲線的差異中尋找明顯的異化。不過(guò)對(duì)另外一些也使用能量消耗分析的攻擊來(lái)說(shuō),這種方式卻不一定安全,因此相關(guān)的理論研究還將繼續(xù)下去。
參考文獻(xiàn)
1 Paul Kocher, Joshua Jaffe, Benjamin Jun. Differential Power Analysis [C]. Proceeding of Advances in Cryptography (CRYPT099),1999;386~397
2 Paul Kocher, Joshua Jaffe, Benjamin Jun. Introduction to Differential Power Analysis and Related Attacks. 1998.
3 Hasan, M. A. Power analysis attacks and algorithmic approaches to their countermeasures for Koblitz curve cryptosys-tems. Computers. IEEE Transactions on, Issue:2001;50(10)1071~1083
4 Messerges, T. S., Dabbish, E. A, Sloan, R. H. Examining smart-card security under the threat of power analysis attacks.Computers. IEEE Transactions on, 2002;51(5):541~552
5 T. Messerges, E. Dabbish, R. Sloan. Investigation of Power Analysis Attacks on Smartcards[C]. Proceedings of USENIX Workshop Smartcard Technology,1999;151~161
6 K. ITOH, M. TAKENAKA, N. TORII. DPA Countermeasure Based on the Masking Method, International Conference on Information, Communications and Signal Processing-ICICS 2001. LNCS 2288, Springer-Verlag, 2002

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。