專利名稱:抗邊信道攻擊的模冪方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及密碼學(xué)(cryptography),并且更具體地涉及抗一定邊信道(side channel)攻擊的模幕(modular exponentiation)算法。
背景技術(shù):
本部分旨在向讀者介紹可能與以下描述和/或要求保護(hù)的本發(fā)明的各個(gè)方面有關(guān)的技術(shù)的各個(gè)方面。相信本討論有助于向讀者提供背景信息以促進(jìn)對(duì)本發(fā)明各個(gè)方面的更好理解。相應(yīng)地,應(yīng)該理解要鑒于此地閱讀這些陳述,而不視為對(duì)現(xiàn)有技術(shù)的承認(rèn)。公鑰(public-key)密碼學(xué)中的基本運(yùn)算是模冪。對(duì)于輸入N, X和d,計(jì)算y=xd modN。自然地存在主要現(xiàn)有技術(shù)模冪算法,以下給出其中兩個(gè)示例。 算法I _從左至丨丨右二元方法(binary method)輸入iV,JC€ 2/ffZ以及d = d,€ I輸出y=xdmod N1:R
— 1;R[1] — X2: for j=l-l down to 0 do3:R
— R
2mod N4: if (dj ^ 0) then R
— R
· R[l]mod N5: end for6: return R
算法2-從右到左二元方法輸入··N’ X 務(wù) 1/#1 以及= (O1U …e 麗輸出y= xd mod N1:R
— 1;R[1] — X2: for j=0 to 1-1 do3: if (dj ^ 0) then R
— R
· R[l]mod N4:R[1] — R[l]2mod N5: end for
6: return R
雖然兩種方法都高效,技術(shù)人員將認(rèn)識(shí)到它們可能經(jīng)歷邊信道,尤其簡單能量分析(SPA)攻擊。見 “Paul Kocherj Joshua Jaffej and Benjamin Jun;Differential PowerAnalysis;在 M. Wiener, editor,Advances in CryptoIOgy-CRYPTO^ 99,Lecture Notesin Computer Science 第 1666 卷,388 - 397 頁,Springer-Verlag,1999,,;和 “PaulC. Kocher;Timing Attacks on Implementations of Diffie-Hellmanj RSAj DSSj and OtherSystems;在 N. Koblitz,editor,Advances in Cryptology-CRYPTO’ 96,Lecture Notes inComputer Science 卷 1109,第 104 - 113 頁,Springer-Verlag, 1996,,。主要問題存在于條件轉(zhuǎn)移(conditional branch)的出現(xiàn)中,即,該“if ”語句。
克服這個(gè)問題的一種方式是在一輪(round)的每個(gè)循環(huán)執(zhí)行乘法,換言之,只要 dj=0 執(zhí)行偽乘法(fake multiplication)。見 “ Jean_S6bastien Coron; ResistanceAgainst Differential Power Analysis for Elliptic Curve Cryptosystems;在 ¢. Κ. K09 和 C. Paar,editors,Cryptographic Hardware and EmbeddedSystems-CHES^ 99,Lecture Notes in Computer Science 第 1717 卷,第 292 - 302 頁,Springer-Verlag, 1999”。然而作為結(jié)果的實(shí)現(xiàn)方式更慢;成本從每比特大約I. 5個(gè)乘法增加到每比特2個(gè)乘法。增加的缺點(diǎn)在于該實(shí)現(xiàn)方式變得易受安全錯(cuò)誤(safe error)攻擊;見“Sung-Ming Yen and Marc Joye;Checking before output may not be enough againstfault-based cryptanalysis; IEEE Transactions on Computers,49 (9) : 967-970,2000,,;和“Sung-Ming Yen, Seung-Joo Kimj Seon-Gan Limj and Sang-Jae Moon;A CountermeasureAgainst One Physical Cryptanalysis May Benefit Another Attack;在K.Kimj editor, Information Security and Cryptology-ICISC 2001,Lecture Notes inComputer Science 第 2288 卷,417-427 頁· Springer-Verlag, 2002,,。一種更好的防止SPA類型攻擊的方式是使用所謂邊信道原子性(atomicity); 見“Benoit Chevallier-Mames, Mathieu Cietj and Marc Joye;Low-Cost Solutionsfor Preventing Simple Side—channel Analysis:Side-Channel Atomicity;IEEETransactions on Computers,53 (6) : 760 - 768,2004,,。對(duì)應(yīng)的算法是算法3-從左到右二元方法(原子化(atomic))輸入漢X € 2/ΛΖ以及d =do), € 麗輸出y=xdmod N1:R
— 1;R[1] — x2: j — l_l;b — 03:while (j ^ 0) do4:R
— R
· R[b]mod N5b^h Θ dj; j — j - ]b6:end while7:return R
算法4-從右到左二元方法(原子化)輸入··N,X 在、2/^2 以及 畫P,^ 麗輸出y=xdmod N1:R
— 1;R[1] — x2: j — 0 ; b — I3:while (j ^ 1-1) doi h <— b Φ dj5:R[b] — R[b] · R[l]mod N ; j — j+b6:end while7:return R
在算法3和4中,φ表示XOR(異或)算子,并且■!表示否算子(negation operator)(即,如果b=o,則Hd=I,并且如果b=l,則^b=OX將要認(rèn)識(shí)到成本沒有增加,而保持在大約每比特I. 5個(gè)乘法。進(jìn)一步將要認(rèn)識(shí)到邊信道原子性不限于二元求冪(binary exponentiation)方法。在以上提及的Chevallier-Mames, Ciet和Joye的論文中還可以發(fā)現(xiàn)其他算法。雖然邊信道原子性導(dǎo)致非常好的算法,但是應(yīng)該強(qiáng)調(diào)該方法假定乘法運(yùn)算是原子化的。更明確地,其假定不可能通過觀察適合邊信道來在模平方(modular squaring)和模乘(modular multiplication)之間做出區(qū)分。該假定不總是滿足。在 “Fr6d6ric Amiel, Benoit Feix1Michael Tunstall, ClaireWhelan, and William P. Marnane;Distinguishing Multiplications from SquaringOperations;In R. Avanzi, L. Keliher, and F.Sica, editors, Selected Areas inCryptography-SAC2008, Lecture Notes in Computer Science 第 5394 卷,346 - 360 頁,Springer-Verlag, 2009” 中報(bào)道了具體(concrete)攻擊。因此將要認(rèn)識(shí)到需要以下解決方案,其中從邊信道的觀點(diǎn),模乘表現(xiàn)得(behave) 類似模平方。本發(fā)明提供了這種解決方案。
發(fā)明內(nèi)容
在第一方面,本發(fā)明針對(duì)一種執(zhí)行模冪的方法,包括迭代模乘步驟并且采用第一模數(shù)N,秘密指數(shù)d和底X作為輸入。在針對(duì)從兩個(gè)值a,b和第一模數(shù)N計(jì)算結(jié)果c使得c = a*b mod N的至少一個(gè)模乘步驟期間,處理器采用該兩個(gè)值a,b和第一模數(shù)N作為輸入;從該兩個(gè)值a,b和第一模數(shù)N獲得兩個(gè)運(yùn)算數(shù)a’,b’和第二模數(shù)N’,使得該兩個(gè)運(yùn)算數(shù)a’,b’中的至少一個(gè)與所述兩個(gè)值a,b不同,并且當(dāng)a等于b時(shí),所述兩個(gè)運(yùn)算數(shù)a’,b’不同,使得從邊信道的觀點(diǎn)模乘c = a *b mod N表現(xiàn)得類似模平方,除了當(dāng)a’等于b’時(shí);其中,使用具有至多線性復(fù)雜度(at most linear complexity)的運(yùn)算從值a獲得運(yùn)算數(shù)a’,從值b獲得運(yùn)算數(shù)b’,并且從第一模數(shù)N獲得第二模數(shù)N’;計(jì)算中間結(jié)果c'=a' mod N';從所述中間結(jié)果c’推導(dǎo)結(jié)果c,其中使用具有至多線性復(fù)雜度的運(yùn)算從c’獲得c ;并且將結(jié)果c用于模冪。在第一優(yōu)選實(shí)施例中,a' =2a, b' =b+N并且N' =2N,并且c' = c/2。在第二優(yōu)選實(shí)施例中,a' = N-a, b' =b并且N' =N,并且c' = N_c。第一模數(shù)N是奇數(shù)是有利的。在第二方面,本發(fā)明針對(duì)一種執(zhí)行模冪的處理器,所述模冪包括迭代模乘步驟并且采用第一模數(shù)N,秘密指數(shù)d和底X作為輸入。所述處理器包括以下部件,在針對(duì)從兩個(gè)值
a,b和第一模數(shù)N計(jì)算結(jié)果c使得c = a *b mod N的至少一個(gè)模乘期間,用于采用該兩個(gè)值a,b和第一模數(shù)N作為輸入;從該兩個(gè)值a,b和第一模數(shù)N獲得兩個(gè)運(yùn)算數(shù)a’,b’和第二模數(shù)N’,使得該兩個(gè)運(yùn)算數(shù)a’,b’中的至少一個(gè)與所述兩個(gè)值a,b不同,并且當(dāng)a等于b時(shí),所述兩個(gè)運(yùn)算數(shù)a’,b’不同,使得從邊信道的觀點(diǎn)模乘c = a · b mod N表現(xiàn)得類似模平方,除了當(dāng)a’等于b’時(shí);其中,使用具有至多線性復(fù)雜度的運(yùn)算從值a獲得運(yùn)算數(shù)a’,從值b獲得運(yùn)算數(shù)b’,并且從第一模數(shù)N獲得第二模數(shù)N’ ;計(jì)算中間結(jié)果c' =a' modN';從所述中間結(jié)果c’推導(dǎo)結(jié)果c,其中使用具有至多線性復(fù)雜度的運(yùn)算從c’獲得c;其中所述處理器還包括用于將結(jié)果c用于模冪的部件。
在第一優(yōu)選實(shí)施例中,a' =2a, b' =b+N并且N' =2N,并且c' = c/2。在第二優(yōu)選實(shí)施例中,a' =N_a,b' =b并且N' =N,并且c' = N_c。第一模數(shù)N是奇數(shù)是有利的。在第三方面,本發(fā)明針對(duì)一種其上存儲(chǔ)有指令的計(jì)算機(jī)程序產(chǎn)品,當(dāng)處理器執(zhí)行所述指令時(shí),執(zhí)行第一方面的方法。
現(xiàn)在將參照附圖,通過非限定性示例來描述本發(fā)明的優(yōu)選特征,在附圖中圖I圖示了根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于執(zhí)行抵抗(resistant against)某些邊信道攻擊的求冪(exponentiation)的裝置。
具體實(shí)施例方式本發(fā)明的主要發(fā)明性構(gòu)思在于(如已經(jīng)提及的)使得從邊信道的觀點(diǎn),模乘表現(xiàn)得類似模平方,這可以用于提供抵抗某些邊信道攻擊的模冪算法。這可以通過以下來實(shí)現(xiàn)對(duì)a和b以N為模的模乘進(jìn)行求值,使得當(dāng)a=b時(shí),在模乘中出現(xiàn)的兩個(gè)運(yùn)算數(shù)(operand)的值不同。第一優(yōu)選實(shí)施例基于對(duì)于任何元素a,b €1/#1'的觀察a · b mod N= [ (a+a) · (b+N) mod 2N] /2證明定義整數(shù)T= (a+a) · (b+N)和 S=T/2。得到rmod 2\ = T- \ (1Ν)\1Ν=2(S-[SiN\N) = 2{S mod 因此,得到(T mod 2N) /2 = S = ab (mod N)。注意到(T mod2Ν)/2在{0,...,Ν-1}中,現(xiàn)在結(jié)果如下。值得注意當(dāng)a=b 時(shí),(a+a) · (b+N) = (2a) · (a+N)和 2a Φ a+N,這是由于 a=N 是不可能的,因?yàn)閍在2/#2中(g卩,在集合{0,1,中)。換言之,當(dāng)a=b時(shí),在模乘(a+a) · (b+N)mod 2N中出現(xiàn)的兩個(gè)運(yùn)算數(shù)的值不同。第二優(yōu)選實(shí)施例依賴于恒等式a · b mod N=N - [ (N - a) · b mod N]證明定義整數(shù)S=N- [ (N-a) *b mod N]。由于(_1)2=1,顯然地得到S三a *b (modN)。另外 Se {0,· · ·,N-1}。此外,如果N是奇數(shù),值得注意當(dāng)a=b時(shí),在模乘(N_a) *b mod N中出現(xiàn)的兩個(gè)運(yùn)算數(shù)的值不同。實(shí)際上,當(dāng)a=b時(shí),得到(N-a) · b=(N-a) · a并且當(dāng)N是奇數(shù)時(shí)總是滿足(N-a) Φ a。如果a’和b’是運(yùn)算數(shù)并且N’是修改的模乘中的模數(shù),并且c’是需要被調(diào)整以獲得正確輸出c的修改的模乘的結(jié)果,那么將認(rèn)識(shí)到運(yùn)算數(shù)a’和b’以及模數(shù)N’是使用具有至多線性復(fù)雜度的運(yùn)算獲得的-技術(shù)人員將認(rèn)識(shí)到N’=2N正常地實(shí)現(xiàn)為加法或位移(bitshift)-如對(duì)于用于從c’獲得c使用的操作的情況-“除法”實(shí)現(xiàn)為位移。任一實(shí)施例都可用于在背景部分中描述的算法3和4,以引起以下算法。算法3’ -實(shí)現(xiàn)第一實(shí)施例的從左到右二元方法(原子化)輸入··N’ X 忘 Z/JV2以及 = (βι-i,…,e If輸出y=xdmod N
1:R
— 1;R[1] — X2: j — 1-1 ;b — 03:while (j ≥0) do4:R
— ((R
+R
) · (R[b]+N)mod 2N)/25: b·^ b df,j — j -6:end while7:return R
算法4’ -實(shí)現(xiàn)第二實(shí)施例的從右到左二元方法(原子化)輸入··N, X e S/i¥Z以及d *= (dl.g,... dp)2 e 麗輸出y=xdmod N 1:R
— 1;R[1] — X2:j — 0;b — I3:while (j ^ 1-1) do4 b <— b dj5: R[b] — N - [ (N - R[b]) · R[l]mod N] ; j — j+b6:end while7:return R
應(yīng)該注意到存在其中重寫公式(formula)產(chǎn)生模平方的例子。這樣的一個(gè)示例是使用第一實(shí)施例的公式的以N=120的70和20的模乘((70 + 70) · (20 + 120)mod 240) /2=(140 · 140mod 240) /2= (19600mod240)/2=160/2=80。使用第二實(shí)施例的公式的這樣的一個(gè)示例是以N=121的70和51的模乘121 - ((121-70) · 5Imod 121)=121 - (51 · 5Imod 121)=121 - (2601modl21)=61。然而將要認(rèn)識(shí)到這些出現(xiàn)相比于原始原子化方案中的平方要罕見得多,雖然這些出現(xiàn)比不出現(xiàn)更經(jīng)常。另外,當(dāng)與某些隨機(jī)化技術(shù)組合時(shí),可能難以產(chǎn)生這樣的沖突值(colliding value)。這例如,當(dāng)模幕 y=xd mod N 被計(jì)算為 y=[ (x+r · N)d mod t · N]mod N時(shí)發(fā)生,其中t是對(duì)于一些安全性參數(shù)k的隨機(jī)k比特整數(shù)并且r是{0,中的隨機(jī)整數(shù)。圖I圖示了根據(jù)本發(fā)明優(yōu)選實(shí)施例的設(shè)備。設(shè)備100包括至少一個(gè)接口單元110,被適配用于與其它設(shè)備(未示出)通信;至少一個(gè)處理器120,以及至少一個(gè)存儲(chǔ)器130,被適配用于存儲(chǔ)數(shù)據(jù),諸如累加量(accumulator)和中間計(jì)算結(jié)果(intermediarycalculation result)。處理器120被適配為根據(jù)發(fā)明性方法的任何實(shí)施例計(jì)算模乘,并且還執(zhí)行實(shí)施這個(gè)乘法的模冪算法,如先前在此描述的。一種計(jì)算機(jī)程序產(chǎn)品140 (諸如CD-ROM或DVD)包括所存儲(chǔ)的指令,當(dāng)通過處理器120執(zhí)行所述指令時(shí)執(zhí)行根據(jù)本發(fā)明任何實(shí)施例的方法。將要認(rèn)識(shí)到本乘法方法可以提供模冪算法,該模冪算法提供對(duì)抗邊信道攻擊增加的保護(hù)。在描述以及(適當(dāng)處的)權(quán)利要求和附圖中公開的每個(gè)特征可以單獨(dú)提供或者以任何合適的組合提供。描述為以硬件實(shí)施的特征還可以以軟件實(shí)施,反之亦然。權(quán)利要求中出現(xiàn)的參考數(shù)字僅是例示的方式并且將不對(duì)權(quán)利要求的范 圍有限制影響。
權(quán)利要求
1.一種執(zhí)行模冪的方法,包括迭代模乘步驟并且采用第一模數(shù)N,秘密指數(shù)d和底X作為輸入,所述方法在處理器(100)中執(zhí)行并且在針對(duì)從兩個(gè)值a、b和第一模數(shù)N計(jì)算結(jié)果c使得c=a · b mod N的至少一個(gè)模乘步驟期間包括以下步驟 -米用該兩個(gè)值a, b和第一模數(shù)N作為輸入; -從該兩個(gè)值a,b和第一模數(shù)N獲得兩個(gè)運(yùn)算數(shù)a’,b’和第二模數(shù)N’,使得該兩個(gè)運(yùn)算數(shù)a’,b’中的至少一個(gè)與所述兩個(gè)值a,b不同,并且當(dāng)a等于b時(shí),所述兩個(gè)運(yùn)算數(shù)a’,b’不同,使得從邊信道的觀點(diǎn)模乘c=a*b mod N表現(xiàn)得類似模平方,除了當(dāng)a’等于b’時(shí);其中,使用具有至多線性復(fù)雜度的運(yùn)算從值a獲得運(yùn)算數(shù)a’,從值b獲得運(yùn)算數(shù)b’,并且從第一模數(shù)N獲得第二模數(shù)N’ ; _計(jì)算中間結(jié)果c' =a' · b' mod N'; -從所述中間結(jié)果C’推導(dǎo)結(jié)果C,其中使用具有至多線性復(fù)雜度的運(yùn)算從C’獲得C ;以及 -將結(jié)果C用于模冪。
2.如權(quán)利要求I所述的方法,其中,a,=2a,b' = b+N并且K =2N,并且其中V=c/2。
3.如權(quán)利要求I所述的方法,其中,a'= N-a, b' =b并且N' =N,并且其中c'=N-C0
4.如權(quán)利要求3所述的方法,其中,第一模數(shù)N是奇數(shù)
5.一種執(zhí)行模冪的處理器(100),所述模冪包括迭代模乘步驟并且采用第一模數(shù)N,秘密指數(shù)d和底X作為輸入,所述處理器包括在針對(duì)從兩個(gè)值a,b和第一模數(shù)N計(jì)算結(jié)果c使得c = a · b mod N的至少一個(gè)模乘期間用于以下的部件(120) -米用該兩個(gè)值a, b和第一模數(shù)N作為輸入; -從該兩個(gè)值a,b和第一模數(shù)N獲得兩個(gè)運(yùn)算數(shù)a’,b’和第二模數(shù)N’,使得該兩個(gè)運(yùn)算數(shù)a’,b’中的至少一個(gè)與所述兩個(gè)值a,b不同,并且當(dāng)a等于b時(shí),所述兩個(gè)運(yùn)算數(shù)a’,b’不同,使得從邊信道的觀點(diǎn)模乘c = a*b mod N表現(xiàn)得類似模平方,除了當(dāng)a’等于b’時(shí);其中,使用具有至多線性復(fù)雜度的運(yùn)算從值a獲得運(yùn)算數(shù)a’,從值b獲得運(yùn)算數(shù)b’,并且從第一模數(shù)N獲得第二模數(shù)N’ ; -計(jì)算中間結(jié)果c' = a' · b' mod N';以及 -從所述中間結(jié)果c’推導(dǎo)結(jié)果C,其中使用具有至多線性復(fù)雜度的運(yùn)算從c’獲得c ; 其中所述處理器還包括用于將結(jié)果c用于模冪的部件(120)。
6.如權(quán)利要求5所述的處理器,其中a'=2a,b' =b+N并且N' =2N,并且其中c'=c/2。
7.如權(quán)利要求5所述的處理器,其中,a'=N-a, b/ =b并且N' =N,并且其中c'=N-C0
8.如權(quán)利要求7所述的處理器,其中,第一模數(shù)N是奇數(shù)
9.一種具有在其上存儲(chǔ)的指令的計(jì)算機(jī)程序產(chǎn)品(140),當(dāng)通過處理器執(zhí)行所述指令時(shí),執(zhí)行根據(jù)權(quán)利要求I到4中任何一項(xiàng)的方法。
全文摘要
一種抗邊信道攻擊的模冪和設(shè)備,模冪包括迭代模乘步驟并且采用第一模數(shù)N,秘密指數(shù)d和底x作為輸入。在針對(duì)從兩個(gè)值a,b和第一模數(shù)N計(jì)算結(jié)果c使得c=a·bmod N的至少一個(gè)模乘步驟期間,處理器(120)采用該兩個(gè)值a,b和第一模數(shù)N作為輸入,使用具有至多線性復(fù)雜度的運(yùn)算從其獲得兩個(gè)運(yùn)算數(shù)a’,b’和第二模數(shù)N’-兩個(gè)運(yùn)算數(shù)a’,b’中的至少一個(gè)與兩個(gè)值a,b不同,并且當(dāng)a等于b時(shí),所述兩個(gè)運(yùn)算數(shù)a’,b’不同-使得從邊信道的觀點(diǎn)模乘c=a·bmod N表現(xiàn)得類似模平方,除了當(dāng)a’等于b’時(shí)。計(jì)算中間結(jié)果c′=a′·b′mod N′;使用具有至多線性復(fù)雜度的運(yùn)算從所述中間結(jié)果c’推導(dǎo)結(jié)果c;并且將結(jié)果c用于模冪。
文檔編號(hào)G06F7/72GK102779022SQ20121014559
公開日2012年11月14日 申請(qǐng)日期2012年5月11日 優(yōu)先權(quán)日2011年5月11日
發(fā)明者M.喬伊 申請(qǐng)人:湯姆森特許公司