一種基于寄存器掩碼的面向des算法的抗功耗攻擊方法
【專利摘要】本發(fā)明公開了一種基于寄存器掩碼的面向DES算法的抗功耗攻擊方法,在DES算法中添加隨機數(shù)發(fā)生器、左寄存器保護模塊和右寄存器保護模塊,左寄存器保護模塊包括第一左異或單元、第二左異或單元和左寄存器,右寄存器保護模塊包括第一右異或單元、第二右異或單元和右寄存器。更新寄存器中的中間結(jié)果時,將需要保存的中間結(jié)果與隨機數(shù)異或之后保存到寄存器中,同時保存該隨機數(shù);讀取寄存器中的中間結(jié)果時,在將寄存器中的值讀取并與保存的隨機數(shù)進行異或。該方法保證寄存器中的存儲值具有隨機性,有效的隱藏了DES密碼算法中的漢明距離泄露,可以有效的抵抗基于漢明距離模型的功耗攻擊。
【專利說明】
一種基于寄存器掩碼的面向DES算法的抗功耗攻擊方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及集成電路硬件實現(xiàn)和信息安全技術(shù)領(lǐng)域,特別是涉及一種基于寄存器 掩碼的面向DES算法的抗功耗攻擊方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)技術(shù)與信息科技的快速發(fā)展,信息加密技術(shù)在很多領(lǐng)域都有非常重要 的應(yīng)用。密碼產(chǎn)品可以采用軟件或硬件實現(xiàn),但由于硬件實現(xiàn)比軟件實現(xiàn)具有速度更快,功 耗更低的優(yōu)勢,基于硬件實現(xiàn)的密碼設(shè)備已成為研究熱點。各種基于DES(Data Encryption Standard,數(shù)據(jù)加密標(biāo)準(zhǔn))算法的密碼芯片得到了廣泛的研究和開發(fā)。
[0003] 密碼芯片也面臨著各種各樣的安全風(fēng)險,近年來以差分功耗攻為代表的旁路攻 擊,對密碼設(shè)備的安全性提出了嚴(yán)峻的挑戰(zhàn)。功耗攻擊是一種非入侵式攻擊,攻擊者首先大 量獲取密碼設(shè)備在加解密操作時泄露的功耗信息,然后根據(jù)明文或者密文建立功耗的數(shù)學(xué) 模型,得到大量中間值,將中間值和實際功耗進行對比分析,采用統(tǒng)計處理方法計算出相關(guān) 系數(shù),從而分析出關(guān)鍵的密鑰信息。如何抵抗功耗分析攻擊保護算法安全是學(xué)術(shù)界一個重 要的研究點。
[0004] 在采集到大量實際功耗后,功耗攻擊得以成功的關(guān)鍵在于建立準(zhǔn)確的功耗數(shù)學(xué)模 型。漢明距離模型的基本思想是計算數(shù)字電路在某個特定時段內(nèi)電路中0-1轉(zhuǎn)換和1-0轉(zhuǎn) 換的總數(shù),然后利用轉(zhuǎn)換的總數(shù)來刻畫電路在該時間段內(nèi)的功耗。
[0005] 對于數(shù)字電路,功耗主要來自于電路的狀態(tài)轉(zhuǎn)換,而并不依賴于數(shù)據(jù)本身,并且翻 轉(zhuǎn)的器件越多,其功耗越大。因此使用漢明距離模型能夠較好的刻畫數(shù)字電路的能量消耗。 在某一時刻,如果能夠計算得到電路翻轉(zhuǎn)前的數(shù)據(jù)D0和翻轉(zhuǎn)后的數(shù)據(jù)D1,得到數(shù)據(jù)翻轉(zhuǎn)的 比特個數(shù),從而算出數(shù)據(jù)的漢明距離,就可以和真實的功耗值建立聯(lián)系。建立漢明距離模型 時,需要知道寄存器中數(shù)據(jù)變化前后的數(shù)值。漢明距離模型一般用于對寄存器的功耗進行 描述。
[0006] 攻擊者一般選取中間數(shù)據(jù)存儲的寄存器為攻擊點。攻擊者首先猜測密鑰,進一步 猜測相鄰兩輪的中間值,計算漢明距離作為寄存器變化所產(chǎn)生的功耗模型;然后采集實際 功耗,將功耗模型與實際功耗進行相關(guān)性分析得到正確的密鑰。
[0007] 對于現(xiàn)有的抗功耗攻擊的方法,從實現(xiàn)代價方面看,大多存在硬件資源開銷大、性 能開銷大、可擴展性弱等缺點,從實現(xiàn)效果方面看,有些僅僅削弱中間結(jié)果數(shù)據(jù)漢明距離與 功耗之間的相關(guān)性,而未能完全消除二者直接的相關(guān)性,因此無法完全抵御基于漢明距離 的功耗攻擊。
【發(fā)明內(nèi)容】
[0008] 發(fā)明目的:本發(fā)明的目的是提供一種能夠解決現(xiàn)有技術(shù)存在的不足的基于寄存器 掩碼的面向DES算法的抗功耗攻擊方法。
[0009] 技術(shù)方案:為達到此目的,本發(fā)明采用以下技術(shù)方案:
[0010]本發(fā)明所述的基于寄存器掩碼的面向DES算法的抗功耗攻擊方法,在DES算法中添 加隨機數(shù)發(fā)生器、左寄存器保護模塊和右寄存器保護模塊,左寄存器保護模塊包括第一左 異或單元、第二左異或單元和左寄存器,右寄存器保護模塊包括第一右異或單元、第二右異 或單元和右寄存器;DES算法的初始階段中,明文經(jīng)過初始置換操作,初始置換操作輸出的Μ 位中間數(shù)據(jù)的左半部分和右半部分分別作為獨立的左半部分f位數(shù)據(jù)Lo和右半部分f位數(shù) 據(jù)Ro,左半部分f位數(shù)據(jù)Lo和右半部分f位數(shù)據(jù)Ro分別送入第一左異或單元和第一右異或單 元,隨機數(shù)發(fā)生器產(chǎn)生初始階段隨機數(shù),初始階段隨機數(shù)分別送入第一左異或單元、第二左 異或單元、第一右異或單元和第二右異或單元,左半部分位數(shù)據(jù)Lo和初始階段隨機數(shù)通過 第一左異或單元進行異或操作,第一左異或單元將左異或操作結(jié)果送入左寄存器中,右半 部分¥位數(shù)據(jù)Ro和初始階段隨機數(shù)通過第一右異或單元進行異或操作,第一右異或單元將 右異或操作結(jié)果送入右寄存器中,第1輪輪操作開始時,左寄存器將左異或操作結(jié)果送入第 二左異或單元,左異或操作結(jié)果和初始階段隨機數(shù)通過第二左異或單元進行異或操作,得 到被還原的左半部分^位數(shù)據(jù)L〇,作為第1輪輪操作的第一輸入數(shù)據(jù),右寄存器將右異或操 作結(jié)果送入第二右異或單元,右異或操作結(jié)果和初始階段隨機數(shù)通過第二右異或單元進行 異或操作,得到被還原的右半部分f位數(shù)據(jù)Ro,作為第1輪輪操作的第二輸入數(shù)據(jù);第i輪輪 操作中,i <N,N為DES算法輪操作的總次數(shù),輪操作模塊計算得到第i輪的左中間值Li和 右中間值&,輪操作模塊將第i輪左中間值U送入第一左異或單元,輪操作模塊將第i輪右中 間值h送入第一右異或單元,隨機數(shù)發(fā)生器產(chǎn)生第i+Ι輪隨機數(shù),第i+Ι輪隨機數(shù)分別送入 第一左異或單元、第二左異或單元、第一右異或單元和第二右異或單元,第i輪左中間值U 和第i輪隨機數(shù)通過第一左異或單元進行異或操作,第一左異或單元將左異或操作結(jié)果送 入左寄存器中,第i輪右中間值h和第i輪隨機數(shù)通過第一右異或單元進行異或操作,第一 右異或單元將右異或操作結(jié)果送入右寄存器中,第i+Ι輪輪操作開始時,左寄存器將左異或 操作結(jié)果送入第二左異或單元中,左異或操作結(jié)果和第i+Ι輪隨機數(shù)通過第二左異或單元 進行異或操作,得到被還原的第i輪左中間值Li,作為第i+Ι輪輪操作的第一輸入數(shù)據(jù),右寄 存器將右異或操作結(jié)果送入第二右異或單元中,右異或操作結(jié)果和第i+Ι輪隨機數(shù)通過第 二右異或單元進行異或操作,得到被還原的第i輪右中間值h,作為第i+Ι輪輪操作的第二 輸入數(shù)據(jù);第N輪輪操作得到的第N輪左中間值Ln和第N輪右中間值R N合成Μ位數(shù)據(jù)并進行逆 初始置換后得到密文。
[0011 ]進一步,所述DES算法的第j輪輪操作中,1 < j <Ν,輪操作模塊對第j-1輪中間值 Rh依次進行擴展、異或操作、字節(jié)替換和置換操作,然后將置換操作結(jié)果與Lh進行異或操 作,得到第j輪右中間值心,并將Rh作為第j輪左中間值Lj。
[0012] 有益效果:與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
[0013] 1)本發(fā)明硬件資源開銷低;只需要增加少量異或單元和隨機數(shù)發(fā)生器,相比整個 DES密碼電路僅占很小比例;
[0014] 2)本發(fā)明性能開銷低;對于電路關(guān)鍵路徑僅增加少量異或單元的延遲,相比整個 DES電路中的擴展、異或操作、字節(jié)替換和置換操作等模塊的延遲,僅占很小的比例,因此不 會導(dǎo)致工作主頻有明顯降低;
[0015] 3)本發(fā)明具有很強的擴展性和通用性,通過對寄存器進行保護,可以很方便的移 植到其他DES密碼算法實現(xiàn)電路中;
[0016] 4)本發(fā)明保證寄存器中的存儲值具有隨機性,有效的隱藏了 DES密碼算法中的漢 明距離泄露,消除了中間結(jié)果數(shù)據(jù)漢明距離與功耗之間的相關(guān)性,能夠有效抵抗基于漢明 距離模型功耗攻擊。
【附圖說明】
[0017] 圖1為傳統(tǒng)的DES算法的流程圖;
[0018] 圖2為采用了本發(fā)明方法的DES算法的流程圖;
[0019] 圖3為對傳統(tǒng)DES算法進行功耗攻擊第一個6比特所得到的相關(guān)性系數(shù)矩陣結(jié)果;
[0020] 圖4為對使用本發(fā)明方法后的DES算法進行功耗攻擊第一個6比特所得到的相關(guān)性 系數(shù)矩陣結(jié)果。
【具體實施方式】
[0021] 下面結(jié)合【具體實施方式】對本發(fā)明的技術(shù)方案作進一步的介紹。
[0022] 傳統(tǒng)DES算法如圖1所示,一共由3部分組成,分別是初始置換、16輪相同的輪操作 和逆初始置換變換。每一輪均需要一個輪密鑰來完成密鑰加操作,一共十六個子密鑰,記為 Κη(η = 0,···,16)。子密鑰由初始密鑰經(jīng)過初始置換、循環(huán)左移和置換選擇后得到。DES算法 中間16次循環(huán)的輪操作包括擴展、異或操作、字節(jié)替換、置換和異或操作五個操作。DES每輪 結(jié)束都會產(chǎn)生兩個32位中間值數(shù)據(jù),可以記為Ln(n = 0,-_,16),Rn(n = 0,…,16)存儲在寄 存器L和R中,其中L16和R16合并為一個64位數(shù)據(jù),進行逆初始置換操作結(jié)果即為密文輸出。
[0023] 以一級流水的DES算法硬件實現(xiàn)為例,在攻擊者可以獲得輸入的明文以及硬件的 功耗軌跡的情況下,攻擊者可以針對第一輪的輸出值進行攻擊。通過對密鑰進行猜測,攻擊 者可以從明文推導(dǎo)出第一輪的輸出值,由于寄存器在某一時刻其值從明文的逆初始置換的 輸出變?yōu)榈谝惠喌妮敵?,因此可以建立漢明距離模型。由于第一輪密鑰長度為8個6比特,因 此可以逐個6比特攻破,具體的步驟如下:
[0024] 1.根據(jù)Ro可以推導(dǎo)出第一輪擴展操作之后的48比特中間值的值。
[0025] 2.根據(jù)擴展操作之后中間值的第N個6比特的值和假設(shè)密鑰K1的第N個6比特,可以 推導(dǎo)出密鑰加之后的數(shù)據(jù)第N個字節(jié)的值。
[0026] 3.通過密鑰加之后的第N個6比特的值經(jīng)過字節(jié)變換可以推導(dǎo)出字節(jié)替換操作輸 出的第N個6比特的值。
[0027] 4.通過第一輪字節(jié)替換的輸出中第N個6比特的值可以推導(dǎo)出置換操作之后的第N 個4比特的值。
[0028] 5.通過置換操作之后的第N個4比特的值和L0的第N個4比特的值經(jīng)過異或操作可 以推導(dǎo)出第一輪輸出的第N個4比特的值。
[0029] 6.通過第一輪的輸出中第N個4比特的值和Ro第N個4比特的值之間可以建立一個4 比特的漢明距離模型。
[0030]針對上述的基于漢明距離模型的攻擊,本發(fā)明公開了一種基于寄存器掩碼的面向 DES算法的抗功耗攻擊方法,如圖2所示,在DES算法中添加隨機數(shù)發(fā)生器1、左寄存器保護模 塊2和右寄存器保護模塊3,左寄存器保護模塊2包括第一左異或單元21、第二左異或單元23 和左寄存器22,右寄存器保護模塊3包括第一右異或單元31、第二右異或單元33和右寄存器 32AES算法的初始階段中,明文經(jīng)過初始置換操作,初始置換操作輸出的64位中間數(shù)據(jù)的 左半部分和右半部分分別作為獨立的左半部分32位數(shù)據(jù)L〇和右半部分32位數(shù)據(jù)R〇,左半部 分32位數(shù)據(jù)L〇和右半部分32位數(shù)據(jù)R〇分別送入第一左異或單元21和第一右異或單元31,隨 機數(shù)發(fā)生器1產(chǎn)生初始階段隨機數(shù),初始階段隨機數(shù)分別送入第一左異或單元21、第二左異 或單元23、第一右異或單元31和第二右異或單元33,左半部分32位數(shù)據(jù)L〇和初始階段隨機 數(shù)通過第一左異或單元21進行異或操作,第一左異或單元21將左異或操作結(jié)果送入左寄存 器22中,右半部分32位數(shù)據(jù)R〇和初始階段隨機數(shù)通過第一右異或單元31進行異或操作,第 一右異或單元31將右異或操作結(jié)果送入右寄存器32中,第1輪輪操作開始時,左寄存器22將 左異或操作結(jié)果送入第二左異或單元23,左異或操作結(jié)果和初始階段隨機數(shù)通過第二左異 或單元23進行異或操作,得到被還原的左半部分32位數(shù)據(jù)L〇,作為第1輪輪操作的第一輸入 數(shù)據(jù),右寄存器32將右異或操作結(jié)果送入第二右異或單元(33),右異或操作結(jié)果和初始階 段隨機數(shù)通過第二右異或單元(33)進行異或操作,得到被還原的右半部分f位數(shù)據(jù)R〇,作為 第1輪輪操作的第二輸入數(shù)據(jù)。第i輪輪操作中,l<i<16,輪操作模塊計算得到第i輪的左 中間值U和右中間值心,輪操作模塊將第i輪左中間值U送入第一左異或單元21,輪操作模 塊將第i輪右中間值心送入第一右異或單元31,隨機數(shù)發(fā)生器1產(chǎn)生第i+Ι輪隨機數(shù),第i+1 輪隨機數(shù)分別送入第一左異或單元21、第二左異或單元23、第一右異或單元31和第二右異 或單元33,第i輪左中間值U和第i輪隨機數(shù)通過第一左異或單元21進行異或操作,第一左 異或單元21將左異或操作結(jié)果送入左寄存器22中,第i輪右中間值心和第i輪隨機數(shù)通過第 一右異或單元31進行異或操作,第一右異或單元31將右異或操作結(jié)果送入右寄存器32中, 第i+Ι輪輪操作開始時,左寄存器22將左異或操作結(jié)果送入第二左異或單元23中,左異或操 作結(jié)果和第i+Ι輪隨機數(shù)通過第二左異或單元23進行異或操作,得到被還原的第i輪左中間 值1^,作為第i+Ι輪輪操作的第一輸入數(shù)據(jù),右寄存器32將右異或操作結(jié)果送入第二右異或 單元33中,右異或操作結(jié)果和第i+Ι輪隨機數(shù)通過第二右異或單元33進行異或操作,得到被 還原的第i輪右中間值Ri,作為第i+Ι輪輪操作的第二輸入數(shù)據(jù);第16輪輪操作得到的第16 輪左中間值L 16和第16輪右中間值R16合成64位數(shù)據(jù)并進行逆初始置換后得到密文。
[0031]采用本發(fā)明方法后,整個DES密碼算法電路所需的硬件資源增加了 14%,關(guān)鍵路徑 延遲增長了 17%,和其他基于掩碼的抗?jié)h明距離功耗攻擊方法相比,對面積開銷和性能開 銷影響有限。
[0032]本【具體實施方式】對基于FPGA平臺實現(xiàn)的DES算法電路進行了基于漢明距離模型的 功耗攻擊。設(shè)置初始密鑰為' 0102030405060708',其中第一輪的64比特的子密鑰為' 000004320a02'。本實驗使用示波器采集了 FPGA進行DES加密運算時的功耗軌跡共5000條, 每條功耗軌跡的點數(shù)為N,同時獲得5000組相對應(yīng)的明文數(shù)據(jù)。5000條功耗軌跡可以合成一 個5000行N列的實際功耗軌跡矩陣。同時通過這5000組明文數(shù)據(jù)可以計算得到5000次基于 明文初始置換和第一輪輸出的漢明距離,由于將密鑰分為8個6比特逐個攻破,因此針對每 一個字節(jié)共有64種假設(shè)值,因此可以得到一個64列5000行的假設(shè)功耗矩陣。通過向假設(shè)功 耗矩陣的每一列和實際的功耗軌跡的每一列進行相關(guān)性計算,可以得到一個64行N列的相 關(guān)性矩陣,每一行對應(yīng)一個密鑰假設(shè)。將該相關(guān)性矩陣?yán)L制成64條曲線,如圖3所示,為針對 第一個6比特攻擊所得到的相關(guān)性矩陣圖,可以發(fā)現(xiàn)正確密鑰假設(shè)所對應(yīng)的曲線中出現(xiàn)了 明顯的尖峰,即通過該相關(guān)性矩陣可以推測出正確的6比特密鑰值。經(jīng)過實驗發(fā)現(xiàn),5000條 功耗軌跡可以攻破密鑰所有比特,并獲得正確的初始密鑰。
[0033]接著使用本發(fā)明提出的一種針對寄存器保護的方法改進了 DES算法。并將改進后 的DES算法用FPGA實現(xiàn),并嘗試進行功耗攻擊。本實驗中使用示波器采集FPGA運行改進后的 DES算法實現(xiàn)的功耗軌跡,并將功耗軌跡條數(shù)從5000條增加到10萬條。然后使用10萬條功耗 軌跡針對改進后的DES算法實現(xiàn)進行基于漢明距離的功耗攻擊,得到相關(guān)性系數(shù)矩陣,如圖 4所示。
[0034]從圖4中可以看出正確密鑰對應(yīng)曲線淹沒在了其他63條曲線之中,改進后的DES算 法實現(xiàn),功耗軌跡條數(shù)從5000條增加到10萬條后,正確密鑰依然沒有出現(xiàn)尖峰,并且相關(guān)系 數(shù)出現(xiàn)了明顯的減小??梢园l(fā)現(xiàn)改進后的DES算法有效的抵抗了基于漢明距離的功耗攻擊, 證明了本發(fā)明方法的有效性。
【主權(quán)項】
1. 一種基于寄存器掩碼的面向DES算法的抗功耗攻擊方法,其特征在于:在DES算法中 添加隨機數(shù)發(fā)生器(1)、左寄存器保護模塊(2)和右寄存器保護模塊(3),左寄存器保護模塊 (2) 包括第一左異或單元(21)、第二左異或單元(23)和左寄存器(22),右寄存器保護模塊 (3) 包括第一右異或單元(31)、第二右異或單元(33)和右寄存器(32) ;DES算法的初始階段 中,明文經(jīng)過初始置換操作,初始置換操作輸出的M位中間數(shù)據(jù)的左半部分和右半部分分別 作為獨立的左半部分f位數(shù)據(jù)U和右半部分f位數(shù)據(jù)R〇,左半部分f位數(shù)據(jù)Lo和右半部分$ 位數(shù)據(jù)Ro分別送入第一左異或單元(21)和第一右異或單元(31),隨機數(shù)發(fā)生器(1)產(chǎn)生初 始階段隨機數(shù),初始階段隨機數(shù)分別送入第一左異或單元(21)、第二左異或單元(23)、第一 右異或單元(31)和第二右異或單元(33),左半部分f位數(shù)據(jù)Lo和初始階段隨機數(shù)通過第一 左異或單元(21)進行異或操作,第一左異或單元(21)將左異或操作結(jié)果送入左寄存器(22) 中,右半部分f位數(shù)據(jù)Ro和初始階段隨機數(shù)通過第一右異或單元(31)進行異或操作,第一右 異或單元(31)將右異或操作結(jié)果送入右寄存器(32)中,第1輪輪操作開始時,左寄存器(22) 將左異或操作結(jié)果送入第二左異或單元(23),左異或操作結(jié)果和初始階段隨機數(shù)通過第二 左異或單元(23)進行異或操作,得到被還原的左半部分$位數(shù)據(jù)L〇,作為第1輪輪操作的第 一輸入數(shù)據(jù),右寄存器(32)將右異或操作結(jié)果送入第二右異或單元(33),右異或操作結(jié)果 和初始階段隨機數(shù)通過第二右異或單元(33)進行異或操作,得到被還原的右半部分f位數(shù) 據(jù)R〇,作為第1輪輪操作的第二輸入數(shù)據(jù);第i輪輪操作中,l<i<N,N為DES算法輪操作的總 次數(shù),輪操作模塊計算得到第i輪的左中間值L1和右中間值R1,輪操作模塊將第i輪左中間值 L1送入第一左異或單元(21 ),輪操作模塊將第i輪右中間值R1送入第一右異或單元(31 ),隨 機數(shù)發(fā)生器(1)產(chǎn)生第i+Ι輪隨機數(shù),第i+Ι輪隨機數(shù)分別送入第一左異或單元(21)、第二左 異或單元(23)、第一右異或單元(31)和第二右異或單元(33),第i輪左中間值Li和第i輪隨 機數(shù)通過第一左異或單元(21)進行異或操作,第一左異或單元(21)將左異或操作結(jié)果送入 左寄存器(22)中,第i輪右中間值R 1和第i輪隨機數(shù)通過第一右異或單元(31)進行異或操 作,第一右異或單元(31)將右異或操作結(jié)果送入右寄存器(32)中,第i + Ι輪輪操作開始時, 左寄存器(22)將左異或操作結(jié)果送入第二左異或單元(23)中,左異或操作結(jié)果和第i + Ι輪 隨機數(shù)通過第二左異或單元(23)進行異或操作,得到被還原的第i輪左中間值U,作為第i+ 1輪輪操作的第一輸入數(shù)據(jù),右寄存器(32)將右異或操作結(jié)果送入第二右異或單元(33)中, 右異或操作結(jié)果和第i+Ι輪隨機數(shù)通過第二右異或單元(33)進行異或操作,得到被還原的 第i輪右中間值Ri,作為第i+Ι輪輪操作的第二輸入數(shù)據(jù);第N輪輪操作得到的第N輪左中間 值Ln和第N輪右中間值Rn合成M位數(shù)據(jù)并進行逆初始置換后得到密文。2. 根據(jù)權(quán)利要求1所述的基于寄存器掩碼的面向DES算法的抗功耗攻擊方法,其特征在 于:所述DES算法的第j輪輪操作中,I < j SN,輪操作模塊對第j-Ι輪中間值R^1依次進行擴 展、異或操作、字節(jié)替換和置換操作,然后將置換操作結(jié)果與Lh進行異或操作,得到第j輪 右中間值Rj,并將Rj-i作為第j輪左中間值L j。
【文檔編號】H04L9/06GK105897399SQ201610412868
【公開日】2016年8月24日
【申請日】2016年6月14日
【發(fā)明人】曹鵬, 申艾麟, 陸啟樂, 陳圣華, 劉波, 楊錦江
【申請人】東南大學(xué)