專利名稱:一種基于隨機偏移的抗差分功耗分析des加密方法
技術領域:
本發(fā)明涉及一種信息加密方法,特別是需要抗差分功耗分析(DPA)的DES加密方法,尤其涉及一種基于隨機偏移的抗差分功耗分析DES加密方法。
背景技術:
近年來,密碼算法的旁路攻擊越來越受到關注和研究。旁路攻擊(Side Channel Attacks, SCA)利用算法在電路中運行時所泄漏出來的非特意的信息從而分析出算法電路中的秘密數(shù)據(jù)。功耗分析是目前旁路攻擊中最熱門、研究最為廣泛的類型,通過監(jiān)測加密系統(tǒng)泄露的電流和電壓等物理信息來進行攻擊。功耗分析按照攻擊手段主要可分為簡單功耗分析(Simple Power Analysis, SPA)和差分功耗分析(Differential Power Analysis, DPA)兩種,分別針對電路不同的弱點。簡單功耗分析通過觀察算法電路運行時的功耗特征來進行攻擊;差異功耗分析對大量的明文(或密文)和功耗曲線進行統(tǒng)計分析獲取密鑰信肩、ο差異功耗分析的關鍵手段之一就是需要在算法運行時找出一個觀察點,以便根據(jù)該觀察點的值來進行功耗分組。差異功耗分析的基本步驟為首先采集大量的功耗曲線,然后根據(jù)選定的觀察點對這些功耗曲線進行分組,然后必須要將各組的功耗曲線在時域上對齊之后,才能對功耗曲線進行統(tǒng)計分析。由于差異功耗分析處理的是時域信號,因此在時域上精確對齊功耗曲線是十分關鍵的一步。如果沒有對齊的話,不同數(shù)據(jù)的功耗差異就無法在大量樣本中得到累積。因此只有把所有功耗曲線對齊,之后的統(tǒng)計分析才有意義。DES算法為密碼體制中的對稱密碼體制,又被成為美國數(shù)據(jù)加密標準,是1972年美國IBM公司研制的對稱密碼體制加密算法。其密鑰長度為56位,明文按64位進行分組, 將分組后的明文組和56位的密鑰按位替代或交換的方法形成密文組的加密方法。對于硬件實現(xiàn)的DES算法,差異功耗分析是最需要防范的。抵御差異功耗分析的常用方法為盲化方案,但是DES算法由于其本身算法的特點,即存在非線性的Sbox,很難對其進行徹底盲化。本發(fā)明中提出的抗攻擊方法就是使得攻擊者難以在時域上對齊功耗曲線,從而無法對DES加密實施差異功耗分析。
發(fā)明內容
本發(fā)明要解決的技術問題是提供一種基于隨機偏移的抗差分功耗分析DES加密方法,能夠通過將DES運算根據(jù)隨機數(shù)在時域上進行偏移,使得DES運算的功耗曲線無法在時域上對齊,從而使得攻擊者無法對其實施差異功耗分析。為解決上述技術問題,本發(fā)明提供一種基于隨機偏移的抗差分功耗分析DES加密方法,并給出了采用該方法的一個DES加密的實現(xiàn)實例。本發(fā)明基于隨機偏移的抗差分功耗分析DES加密方法如下(1)產(chǎn)生隨機數(shù)r0 ;(幻根據(jù)隨機數(shù)r0的值,將DES運算在時域上進行偏移;C3)在真DES非運算期間,插入假DES運算以掩蓋真實DES運算的位置。步驟2中所述DES運算,包括整個DES加密或者解密運算,包括DES算法中的輪函數(shù)運算,包括DES算法中任何子運算和子函數(shù)。所述DES算法中任何子運算和子函數(shù),包括 Sbox運算。步驟2和步驟3具體為首先將隨機數(shù)rO對η取模得到余數(shù)mO,進行mO次假DES 運算,其中η為任何正整數(shù);然后進行真DES運算,再進行(n-1-mO)次假DES運算。所述假DES運算是以假密鑰進行DES運算。步驟2和步驟3中所述進行真DES運算過程中,產(chǎn)生隨機數(shù)rl,根據(jù)隨機數(shù)rl的值,將DES運算中子運算和子函數(shù)(包括Sbox運算)的運算順序進行改變。將隨機數(shù)rl對χ 取模得到余數(shù)ml,其中每輪函數(shù)中的sbox運算順序如下sbox[ml% 8+1], sbox[ (ml+1) % 8+1], ......, sbox[(ml+7) % 8+1] 步驟2和步驟3中所述進行真DES運算過程中,產(chǎn)生隨機數(shù)數(shù)組r2,根據(jù)隨機數(shù)數(shù)組r2的值,將DES運算中子運算和子函數(shù)(包括Sbox運算)的運算順序進行改變。所生成的隨機數(shù)數(shù)組r2包含8個隨機數(shù)r2 [1]到r2 [8],滿足對于每一個隨機數(shù)r2
r2[n]%8都不相等,將r2[n]對8取模得到余數(shù)m[n];其中每輪函數(shù)中的sbox運算順序如下sbox[m[l]+l],sbox[m[2]+l],......,sbox[m[8]+l]。下面對基于隨機偏移的抗差分功耗分析DES加密方法的原理進行一下說明本發(fā)明的方法就是使得攻擊者難以在時域上對齊功耗曲線。根據(jù)隨機數(shù)對DES運算進行時域上的偏移。偏移的運算包括整個DES加密或解密運算,DES運算中的輪函數(shù)運算,DES運算中的任何子運算和子函數(shù),例如Sbox運算。在真實DES運算的前后,都根據(jù)隨機數(shù)插入相應的假DES運算,并且使得真DES和假DES運算的功耗曲線難以區(qū)分,從而使得攻擊者無法找到真實DES運算的位置,因此也就無法在時域上對齊功耗曲線。另外也可以對DES運算中可以改變時間順序的子運算和子函數(shù)的計算順序進行改變,例如可以不按照順序計算Sboxl-SboxS,而是根據(jù)隨機數(shù)的值來決定計算順序。因此子運算和子函數(shù)每次計算的順序都不同,從而使得攻擊者無法定位子運算和子函數(shù)的運算位置。而差分功耗分析的前提就是必須在時域上精確對齊功耗曲線,否則不同數(shù)據(jù)的功耗差異就無法在大量樣本中得到累積,即使是對應正確密鑰段的差分曲線也不會出現(xiàn)明顯的尖峰。因此使用隨機偏移的DES加密方法可以抵御差分功耗分析。本發(fā)明的有益效果在于DES算法由于其本身算法的特點,很難對算法進行徹底盲化。與標準的DES加密實現(xiàn)方法相比,本發(fā)明中所采用的基于隨機偏移的抗差分功耗分析DES加密方法能夠通過對DES運算在時域上進行偏移,并且加入假的DES運算,使得攻擊者無法從功耗曲線上區(qū)分真假DES來得知真實DES的運行位置,從而無法對齊功耗曲線,而差分功耗攻擊的關鍵就是要對齊功耗曲線,因此該方法能夠抵御差分功耗攻擊。本發(fā)明在DES加密運算中使用隨機偏移的方法,從而使得DES加密運算能夠抵御差分功耗分析。本發(fā)明的其他優(yōu)點,目的和特征將部分地在隨后的描述中闡明,并且對本領域普通技術人員來說,部分內容將在審查下列內容時變得清楚,或者可以由本發(fā)明的實踐而得知。利用在書面描述及其權利要求以及附圖中具體指出的結構,可以實現(xiàn)和達到本發(fā)明的目的和其他優(yōu)點。
下面結合附圖和具體實施方式
對本發(fā)明作進一步詳細的說明
圖1是本發(fā)明實施例1的DES算法中Sbox函數(shù)運算在時域上的隨機偏移示意圖; 圖 1 中,F(xiàn)-sboxl-F-sbox8 指假 Sbox 運算,T-sboxl-T_sbox8 指真 Sbox 運算;圖2是本發(fā)明實施例1的DES算法輪函數(shù)中Sbox函數(shù)隨機運算順序示意圖;圖3是本發(fā)明實施例2的DES算法中Sbox函數(shù)運算在時域上的隨機偏移示意圖; 圖 3 中,F(xiàn)-sboxl-F-sbox8 指假 Sbox 運算,T-sboxl-T_sbox8 指真 Sbox 運算;圖4是本發(fā)明實施例2的DES算法輪函數(shù)中Sbox函數(shù)隨機運算順序示意圖。
具體實施例方式實施例1參見圖1和圖2,本發(fā)明提供了一個基于隨機偏移的抗差分功耗分析DES加密方法實施例。該實施例1中的DES加密運算每8個時鐘周期計算一次輪函數(shù)。輪函數(shù)主要包含置換運算和8個Sbox運算,置換運算在輪函數(shù)第一個和最后一個時鐘周期計算,每個時鐘周期計算一個Sbox運算,Sbox運算的計算順序由隨機數(shù)決定。整個加密或者解密需要計算16輪函數(shù),因此一共需要1 個時鐘周期來完成DES運算。另外又由于需要插入假DES 來掩蓋真實DES的運行位置,因此還需要加上假DES的運算時間。由此攻擊者將無法確定真實Sbox的運算位置以及運算順序,從而無法對齊功耗曲線來實施差異功耗分析。具體的DES加密算法流程如下描述步驟1,產(chǎn)生8位隨機數(shù)rO ;步驟2,將rO對5取模(取余數(shù)運算% )得到余數(shù)mO ;步驟3,計算mO次假輪函數(shù),即以假密鑰進行輪函數(shù)的運算;如圖1所示,當mO = 1時,計算1次假輪函數(shù)(見圖1的r0-0);當mO = 2時,計算2次假輪函數(shù)(見圖1的 rO-Ι);當mO = 3時,計算3次假輪函數(shù)(見圖1的rO-η);步驟4,產(chǎn)生8位隨機數(shù)r 1 ;步驟5,將rl對8取模得到余數(shù)ml ;步驟6,計算16輪真輪函數(shù)(r0undl-r0undl6)運算,其中每輪函數(shù)中的sbox運
算順序如下:sbox[ml % 8+1], sbox[(ml+l) % 8+1], ......,sbox[(ml+7) % 8+1];如圖 2
所示,當ml = 4時,每輪函數(shù)中的sbox運算順序為sbox5,sbox6, sbox7, sbox8, sboxl, sbox2,sbox3,sbox4(見圖2的rl-0);當ml = 3時,每輪函數(shù)中的sbox運算順序為:sbox4, sbox5, sbox6, sbox7, sbox8, sboxl, sbox2, sbox3(見圖 2 的 rl_l);當 ml = 1 時,每輪函數(shù)中的 sbox 運算順序為:sbox2, sbox3, sbox4, sbox5, sbox6, sbox7, sbox8, sboxl (見圖 2 的 rl-n)。步驟7,計算G-mO)次假輪函數(shù),即以假密鑰進行輪函數(shù)的運算;如圖1所示,當 mO = 1時,計算3次假輪函數(shù);當mO = 2時,計算2次假輪函數(shù);當mO = 3時,計算1次假輪函數(shù)。實施例2參見圖3和圖4,本發(fā)明提供了另一個基于隨機偏移的抗差分功耗分析DES加密方法的實施例。該實施例2中的DES加密運算每8個時鐘周期計算一次輪函數(shù)。輪函數(shù)主要包含置換運算和8個Sbox運算,置換運算在輪函數(shù)第一個和最后一個時鐘周期計算,每個時鐘周期計算一個Sbox運算,Sbox運算的計算順序由隨機數(shù)決定。整個加密或者解密需要計算16輪函數(shù),因此一共需要1 個時鐘周期來完成DES運算。另外又由于需要插入假DES 來掩蓋真實DES的運行位置,因此還需要加上假DES的運算時間。由此攻擊者將無法確定真實Sbox的運算位置以及運算順序,從而無法對齊功耗曲線來實施差異功耗分析。具體的DES加密算法流程如下描述步驟1,產(chǎn)生8位隨機數(shù)rO ;步驟2,將rO對7取模(取余數(shù)運算% )得到余數(shù)mO ;步驟3,計算mO次假輪函數(shù),即以假密鑰進行輪函數(shù)的運算;如圖3所示,當mO = 1時,計算4次假輪函數(shù)(見圖3的rO-O);當mO = 2時,計算1次假輪函數(shù)(見圖3的 rO-Ι);當mO = 3時,計算3次假輪函數(shù)(見圖3的rO-n);步驟4,產(chǎn)生一組8位隨機數(shù)數(shù)組r2,其中包含8個隨機數(shù)r2 [1]到r2 [8],滿足對于每一個隨機數(shù)r2 [η],1 < η < 8,r2 [η] % 8都不相等;步驟5,將r2 [η]對8取模得到余數(shù)m[η];步驟6,計算16輪真輪函數(shù)(r0undl-r0undl6)運算,其中每輪函數(shù)中的sbox運算順序如下:sbox[m[l]+l],sbox[m[2]+l],……,sbox [m[8]+1];如圖4所示,當隨機數(shù)數(shù)組 r2不同時,輪函數(shù)中的sbox運算順序都不同;步驟7,計算(6-mO)次假輪函數(shù),即以假密鑰進行輪函數(shù)的運算;如圖3所示,當 mO = 1時,計算2次假輪函數(shù);當mO = 2時,計算5次假輪函數(shù);當mO = 3時,計算3次假輪函數(shù)。
權利要求
1.一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于包括如下步驟步驟1,產(chǎn)生隨機數(shù)rO;步驟2,根據(jù)隨機數(shù)rO的值,將DES運算在時域上進行偏移;步驟3,在真DES非運算期間,插入假DES運算以掩蓋真實DES運算的位置。
2.如權利要求1所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于步驟2中所述DES運算,包括整個DES加密或者解密運算。
3.如權利要求1所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于步驟2中所述DES運算,包括DES算法中的輪函數(shù)運算。
4.如權利要求1所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于步驟2中所述DES運算,包括DES算法中任何子運算和子函數(shù)。
5.如權利要求4所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于所述DES算法中任何子運算和子函數(shù),包括Sbox運算。
6.如權利要求1所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于步驟2和步驟3具體為首先將隨機數(shù)rO對η取模得到余數(shù)mO,進行mO次假DES運算, 其中η為任何正整數(shù);然后進行真DES運算;再進行(n-1-mO)次假DES運算。
7.如權利要求1或6所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于所述假DES運算是以假密鑰進行DES運算。
8.如權利要求6所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于,步驟2和步驟3中所述進行真DES運算過程中,產(chǎn)生隨機數(shù)rl,根據(jù)隨機數(shù)rl的值,將 DES運算中子運算和子函數(shù)的運算順序進行改變。
9.如權利要求8所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于所述DES運算中子運算和子函數(shù),包括Sbox運算。
10.如權利要求9所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于所述根據(jù)隨機數(shù)rl的值,將DES運算中子運算和子函數(shù)的運算順序進行改變具體為 將隨機數(shù)rl對8取模得到余數(shù)ml,其中每輪函數(shù)中的sbox運算順序如下sboX[ml % 8+1], sbox[(ml+l) % 8+1], ......,sbox[(ml+7) % 8+1]。
11.如權利要求6所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于步驟2和步驟3中所述進行真DES運算過程中,產(chǎn)生隨機數(shù)數(shù)組r2,根據(jù)隨機數(shù)數(shù)組 r2的值,將DES運算中子運算和子函數(shù)的運算順序進行改變。
12.如權利要求11所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于所述DES運算中子運算和子函數(shù),包括Sbox運算。
13.如權利要求12所述的一種基于隨機偏移的抗差分功耗分析DES加密方法,其特征在于所述根據(jù)隨機數(shù)數(shù)組r2的值,將DES運算中子運算和子函數(shù)的運算順序進行改變具體為所生成的隨機數(shù)數(shù)組r2包含8個隨機數(shù)r2[l]到r2 [8],滿足對于每一個隨機數(shù) r2[n],l^n^8,r2[n]%8都不相等,將r2 [η]對8取模得到余數(shù)m[n];其中每輪函數(shù)中的 sbox 運算順序如下sbox[m[l]+l],sbox[m[2]+1],......,sbox[m[8]+1]。
全文摘要
本發(fā)明公開了一種基于隨機偏移的抗差分功耗分析DES加密方法,該方法如下將DES運算根據(jù)隨機數(shù)在時域上進行偏移,同時插入假DES運算,并使得真DES和假DES的功耗曲線難以區(qū)分,從而使得攻擊者無法找到真DES運行的位置。另外也可以對DES運算中子運算和子函數(shù)的運算順序進行改變,使得攻擊者無法確定運算的位置。在進行差分功耗分析時,攻擊者將無法在時域上對齊需要統(tǒng)計分析的DES功耗曲線,從而無法累計大量樣本的功耗差異來進行最終的統(tǒng)計分析。因此本發(fā)明中的方法能夠抵抗差分功耗分析。
文檔編號H04L9/06GK102447556SQ20101050601
公開日2012年5月9日 申請日期2010年10月14日 優(yōu)先權日2010年10月14日
發(fā)明者柴佳晶 申請人:上海華虹集成電路有限責任公司