差分能量分析攻擊原理及其抵御措施的探討
發(fā)布時間:2007/8/15 0:00:00 訪問次數(shù):550
摘要:介紹了建立在執(zhí)行密碼運算的芯片的能量消耗基礎(chǔ)上的攻擊方式,這些攻擊方式中差分能量分析攻擊是最難被避免的。介紹了差分能量分析的原理以及防御這種類型攻擊的主要思想。
關(guān)鍵詞:能量消耗 差分能量分析 防御
1 差分能量分析
許多信用卡公司計劃在未來幾年內(nèi)部大部分的磁卡轉(zhuǎn)變?yōu)橹悄芸。目前智能卡在運輸、電子貨幣、ID卡等領(lǐng)域內(nèi)的用途不斷增加。智能卡的主要優(yōu)勢是內(nèi)部數(shù)據(jù)例如密鑰能夠在內(nèi)部處理而僅僅公開處理結(jié)果。但是,在使用輸入信息和密鑰所進行的處理過程中智能卡會產(chǎn)生諸如能量消耗或者電磁散射之類的信息泄漏。于是近年來出現(xiàn)了一些新的攻擊手段,攻擊者有可能利用它們獲取保存在智能卡內(nèi)部的數(shù)據(jù)。
在這些攻擊手段中,有一種攻擊主要是通過分析電子設(shè)備執(zhí)行計算過程中的能量消耗來尋找有關(guān)密鑰的信息。通常將這類攻擊劃分為簡單能量分析攻擊SPA(Simple Power Analysis)和差分能量分析攻擊DPA(Differential Power Analysis)。DPA攻擊是通過分析泄漏信息進行攻擊的主要形式。
在SPA攻擊中,目標本質(zhì)上來說是利用能量消耗的值來推測出相關(guān)的秘密信息甚至是密鑰。圖1展示了一個智能卡在DES運算中的能量消耗。從圖1中可以明顯看出智能卡的能量消耗很可能確實提供了有關(guān)芯片工作的信息。
在DPA攻擊中,計算了兩組平均能量消耗的差異,如果出現(xiàn)非常顯著的差異就認為攻擊成功。給人留下深刻印象的是雖然攻擊者不了解而且也不試圖找出該算法特定的執(zhí)行部分的任何信息,DPA攻擊也同樣可以找出密碼算法(例如DES算法)的密鑰。當前存在的算法中,有些能夠防止DPA攻擊,但不能防止SPA攻擊;還有一些算法則相反,能夠防止SPA攻擊,不能防止DPA攻擊;另外還有這兩種攻擊都能抵御的算法以及都不能抵御的算法。
2 DPA攻擊的原理
DES算法(數(shù)據(jù)加密標準)要執(zhí)行十六輪運算。在每一輪運算中,函數(shù)f執(zhí)行在32個比特上。函數(shù)f使用八個從6比特到4比特的非線性變化,每個變換都被編碼在一個被稱為S盒的工作平臺上。下面以DES算法為例說明DPA攻擊的原理。
步驟1:測出1000次DES運算第一輪的能量消耗。用E1,…,E1000來表示1000次運算的輸入值。用C1,…,C1000來表示運算期間測出的1000條能量消耗曲線。計算1000條能量消耗曲線的平均曲線,記為MC。
步驟2:主要關(guān)注第一個S盒中第一輪運算的第一個輸出比特。用b表示這個比特值。很容易發(fā)現(xiàn)b僅僅取決于密鑰中的6個比特。攻擊時可以對相關(guān)的6比特作一個猜測。用這6個比特和Ei來計算b的理論值。這樣就能夠?qū)?000個輸入E1,…,E1000分為兩類:使b=0的輸入以及使b=1的輸入。
步驟3:計算與使b=0輸入有關(guān)的曲線的平均值,記為MC’。如果從MC和MC’的圖像沒有任何可觀察到的不同,那么選擇另外6個比特再重復步驟2。在這一步中,通常對每次選擇的6個比特值,作出相應的代表MC和MC’的差異的曲線,得到64條曲線后選出與其它有明顯差異的一條。
步驟4:使用b在第二、第三…第八個S盒中重復步驟2和3,得到密鑰的48個比特。
步驟5:余下的8比特可以通過窮舉搜索得到。
在實際對智能卡的攻擊中,通常關(guān)注的是選定S盒的4個輸出比特集,而不僅是一個輸出比特。這種情況下,將輸入分為16個集合:使輸出為0000的,使輸出為0001的,…,使輸出為1111的。在步驟3中,可以計算與最后一類輸入(使輸出為1111的)相關(guān)的曲線的平均值MC’。但是這樣得到的平均值MC’是通過1/16的曲線計算得到的,而起初的MC是通過一半的曲線計算得到。這就被迫使用遠遠超過1000次的DES運算,但好處是MC和MC’具有更明顯的差異。
圖2和圖3表示了在智能卡上的一次DES運算中,執(zhí)行步驟2和步驟3得到的結(jié)果。選用“1111”作為第一個S盒的目標輸出,使用2048個不同的輸入。對64條曲線的詳細分析表明,結(jié)果正確時曲線很容易找到,這條曲線比其他曲線包含了更多的波峰。
DPA攻擊不需要任何有關(guān)每個設(shè)備的個體能量消耗的信息。攻擊者一旦知道了算法的輸出以及相應的能量消耗曲線后就可以進行攻擊。DPA攻擊在理論上僅僅依賴于下面的基本假設(shè):在算法運算中存在一個中間變量,知道密鑰的一些比特(小地32比特)可以決定兩個輸入是否給這個變量帶來相同的值。
所有使用S盒的算法,例如DES算法,對DPA攻擊都顯得很脆弱。因此這些算法中的一些執(zhí)行包含在上面提到的假設(shè)中。
3 對DPA攻擊的抵御措施
從Paul Kocher于1995年公開發(fā)表DPA攻擊的原理以來,現(xiàn)在已經(jīng)出現(xiàn)一些相應的解決方案:
(1)引進隨機時間移動。這樣計算方式不再與相同設(shè)施的能量消耗有關(guān)。
(2)替換一些關(guān)鍵設(shè)備,使它們很難被分析。
(3)對
摘要:介紹了建立在執(zhí)行密碼運算的芯片的能量消耗基礎(chǔ)上的攻擊方式,這些攻擊方式中差分能量分析攻擊是最難被避免的。介紹了差分能量分析的原理以及防御這種類型攻擊的主要思想。
關(guān)鍵詞:能量消耗 差分能量分析 防御
1 差分能量分析
許多信用卡公司計劃在未來幾年內(nèi)部大部分的磁卡轉(zhuǎn)變?yōu)橹悄芸。目前智能卡在運輸、電子貨幣、ID卡等領(lǐng)域內(nèi)的用途不斷增加。智能卡的主要優(yōu)勢是內(nèi)部數(shù)據(jù)例如密鑰能夠在內(nèi)部處理而僅僅公開處理結(jié)果。但是,在使用輸入信息和密鑰所進行的處理過程中智能卡會產(chǎn)生諸如能量消耗或者電磁散射之類的信息泄漏。于是近年來出現(xiàn)了一些新的攻擊手段,攻擊者有可能利用它們獲取保存在智能卡內(nèi)部的數(shù)據(jù)。
在這些攻擊手段中,有一種攻擊主要是通過分析電子設(shè)備執(zhí)行計算過程中的能量消耗來尋找有關(guān)密鑰的信息。通常將這類攻擊劃分為簡單能量分析攻擊SPA(Simple Power Analysis)和差分能量分析攻擊DPA(Differential Power Analysis)。DPA攻擊是通過分析泄漏信息進行攻擊的主要形式。
在SPA攻擊中,目標本質(zhì)上來說是利用能量消耗的值來推測出相關(guān)的秘密信息甚至是密鑰。圖1展示了一個智能卡在DES運算中的能量消耗。從圖1中可以明顯看出智能卡的能量消耗很可能確實提供了有關(guān)芯片工作的信息。
在DPA攻擊中,計算了兩組平均能量消耗的差異,如果出現(xiàn)非常顯著的差異就認為攻擊成功。給人留下深刻印象的是雖然攻擊者不了解而且也不試圖找出該算法特定的執(zhí)行部分的任何信息,DPA攻擊也同樣可以找出密碼算法(例如DES算法)的密鑰。當前存在的算法中,有些能夠防止DPA攻擊,但不能防止SPA攻擊;還有一些算法則相反,能夠防止SPA攻擊,不能防止DPA攻擊;另外還有這兩種攻擊都能抵御的算法以及都不能抵御的算法。
2 DPA攻擊的原理
DES算法(數(shù)據(jù)加密標準)要執(zhí)行十六輪運算。在每一輪運算中,函數(shù)f執(zhí)行在32個比特上。函數(shù)f使用八個從6比特到4比特的非線性變化,每個變換都被編碼在一個被稱為S盒的工作平臺上。下面以DES算法為例說明DPA攻擊的原理。
步驟1:測出1000次DES運算第一輪的能量消耗。用E1,…,E1000來表示1000次運算的輸入值。用C1,…,C1000來表示運算期間測出的1000條能量消耗曲線。計算1000條能量消耗曲線的平均曲線,記為MC。
步驟2:主要關(guān)注第一個S盒中第一輪運算的第一個輸出比特。用b表示這個比特值。很容易發(fā)現(xiàn)b僅僅取決于密鑰中的6個比特。攻擊時可以對相關(guān)的6比特作一個猜測。用這6個比特和Ei來計算b的理論值。這樣就能夠?qū)?000個輸入E1,…,E1000分為兩類:使b=0的輸入以及使b=1的輸入。
步驟3:計算與使b=0輸入有關(guān)的曲線的平均值,記為MC’。如果從MC和MC’的圖像沒有任何可觀察到的不同,那么選擇另外6個比特再重復步驟2。在這一步中,通常對每次選擇的6個比特值,作出相應的代表MC和MC’的差異的曲線,得到64條曲線后選出與其它有明顯差異的一條。
步驟4:使用b在第二、第三…第八個S盒中重復步驟2和3,得到密鑰的48個比特。
步驟5:余下的8比特可以通過窮舉搜索得到。
在實際對智能卡的攻擊中,通常關(guān)注的是選定S盒的4個輸出比特集,而不僅是一個輸出比特。這種情況下,將輸入分為16個集合:使輸出為0000的,使輸出為0001的,…,使輸出為1111的。在步驟3中,可以計算與最后一類輸入(使輸出為1111的)相關(guān)的曲線的平均值MC’。但是這樣得到的平均值MC’是通過1/16的曲線計算得到的,而起初的MC是通過一半的曲線計算得到。這就被迫使用遠遠超過1000次的DES運算,但好處是MC和MC’具有更明顯的差異。
圖2和圖3表示了在智能卡上的一次DES運算中,執(zhí)行步驟2和步驟3得到的結(jié)果。選用“1111”作為第一個S盒的目標輸出,使用2048個不同的輸入。對64條曲線的詳細分析表明,結(jié)果正確時曲線很容易找到,這條曲線比其他曲線包含了更多的波峰。
DPA攻擊不需要任何有關(guān)每個設(shè)備的個體能量消耗的信息。攻擊者一旦知道了算法的輸出以及相應的能量消耗曲線后就可以進行攻擊。DPA攻擊在理論上僅僅依賴于下面的基本假設(shè):在算法運算中存在一個中間變量,知道密鑰的一些比特(小地32比特)可以決定兩個輸入是否給這個變量帶來相同的值。
所有使用S盒的算法,例如DES算法,對DPA攻擊都顯得很脆弱。因此這些算法中的一些執(zhí)行包含在上面提到的假設(shè)中。
3 對DPA攻擊的抵御措施
從Paul Kocher于1995年公開發(fā)表DPA攻擊的原理以來,現(xiàn)在已經(jīng)出現(xiàn)一些相應的解決方案:
(1)引進隨機時間移動。這樣計算方式不再與相同設(shè)施的能量消耗有關(guān)。
(2)替換一些關(guān)鍵設(shè)備,使它們很難被分析。
(3)對