專利名稱:抗邊信道攻擊的模冪方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及密碼學(xué)(cryptography),并且更具體地涉及抗一定邊信道(side channel)攻擊的模幕(modular exponentiation)算法。
背景技術(shù):
本部分旨在向讀者介紹可能與以下描述和/或要求保護(hù)的本發(fā)明的各個方面有關(guān)的技術(shù)的各個方面。相信本討論有助于向讀者提供背景信息以促進(jìn)對本發(fā)明各個方面的更好理解。相應(yīng)地,應(yīng)該理解要鑒于此地閱讀這些陳述,而不視為對現(xiàn)有技術(shù)的承認(rèn)。公鑰(public-key)密碼學(xué)中的基本運算是模冪。對于輸入N, X和d,計算y=xd modN。自然地存在主要現(xiàn)有技術(shù)模冪算法,以下給出其中兩個示例。 算法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)識到它們可能經(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 ”語句。
克服這個問題的一種方式是在一輪(round)的每個循環(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é)果的實現(xiàn)方式更慢;成本從每比特大約I. 5個乘法增加到每比特2個乘法。增加的缺點在于該實現(xiàn)方式變得易受安全錯誤(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,,。對應(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)識到成本沒有增加,而保持在大約每比特I. 5個乘法。進(jìn)一步將要認(rèn)識到邊信道原子性不限于二元求冪(binary exponentiation)方法。在以上提及的Chevallier-Mames, Ciet和Joye的論文中還可以發(fā)現(xiàn)其他算法。雖然邊信道原子性導(dǎo)致非常好的算法,但是應(yīng)該強調(diào)該方法假定乘法運算是原子化的。更明確地,其假定不可能通過觀察適合邊信道來在模平方(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” 中報道了具體(concrete)攻擊。因此將要認(rèn)識到需要以下解決方案,其中從邊信道的觀點,模乘表現(xiàn)得(behave) 類似模平方。本發(fā)明提供了這種解決方案。
發(fā)明內(nèi)容
在第一方面,本發(fā)明針對一種執(zhí)行模冪的方法,包括迭代模乘步驟并且采用第一模數(shù)N,秘密指數(shù)d和底X作為輸入。在針對從兩個值a,b和第一模數(shù)N計算結(jié)果c使得c = a*b mod N的至少一個模乘步驟期間,處理器采用該兩個值a,b和第一模數(shù)N作為輸入;從該兩個值a,b和第一模數(shù)N獲得兩個運算數(shù)a’,b’和第二模數(shù)N’,使得該兩個運算數(shù)a’,b’中的至少一個與所述兩個值a,b不同,并且當(dāng)a等于b時,所述兩個運算數(shù)a’,b’不同,使得從邊信道的觀點模乘c = a *b mod N表現(xiàn)得類似模平方,除了當(dāng)a’等于b’時;其中,使用具有至多線性復(fù)雜度(at most linear complexity)的運算從值a獲得運算數(shù)a’,從值b獲得運算數(shù)b’,并且從第一模數(shù)N獲得第二模數(shù)N’;計算中間結(jié)果c'=a' mod N';從所述中間結(jié)果c’推導(dǎo)結(jié)果c,其中使用具有至多線性復(fù)雜度的運算從c’獲得c ;并且將結(jié)果c用于模冪。在第一優(yōu)選實施例中,a' =2a, b' =b+N并且N' =2N,并且c' = c/2。在第二優(yōu)選實施例中,a' = N-a, b' =b并且N' =N,并且c' = N_c。第一模數(shù)N是奇數(shù)是有利的。在第二方面,本發(fā)明針對一種執(zhí)行模冪的處理器,所述模冪包括迭代模乘步驟并且采用第一模數(shù)N,秘密指數(shù)d和底X作為輸入。所述處理器包括以下部件,在針對從兩個值
a,b和第一模數(shù)N計算結(jié)果c使得c = a *b mod N的至少一個模乘期間,用于采用該兩個值a,b和第一模數(shù)N作為輸入;從該兩個值a,b和第一模數(shù)N獲得兩個運算數(shù)a’,b’和第二模數(shù)N’,使得該兩個運算數(shù)a’,b’中的至少一個與所述兩個值a,b不同,并且當(dāng)a等于b時,所述兩個運算數(shù)a’,b’不同,使得從邊信道的觀點模乘c = a · b mod N表現(xiàn)得類似模平方,除了當(dāng)a’等于b’時;其中,使用具有至多線性復(fù)雜度的運算從值a獲得運算數(shù)a’,從值b獲得運算數(shù)b’,并且從第一模數(shù)N獲得第二模數(shù)N’ ;計算中間結(jié)果c' =a' modN';從所述中間結(jié)果c’推導(dǎo)結(jié)果c,其中使用具有至多線性復(fù)雜度的運算從c’獲得c;其中所述處理器還包括用于將結(jié)果c用于模冪的部件。
在第一優(yōu)選實施例中,a' =2a, b' =b+N并且N' =2N,并且c' = c/2。在第二優(yōu)選實施例中,a' =N_a,b' =b并且N' =N,并且c' = N_c。第一模數(shù)N是奇數(shù)是有利的。在第三方面,本發(fā)明針對一種其上存儲有指令的計算機程序產(chǎn)品,當(dāng)處理器執(zhí)行所述指令時,執(zhí)行第一方面的方法。
現(xiàn)在將參照附圖,通過非限定性示例來描述本發(fā)明的優(yōu)選特征,在附圖中圖I圖示了根據(jù)本發(fā)明優(yōu)選實施例的用于執(zhí)行抵抗(resistant against)某些邊信道攻擊的求冪(exponentiation)的裝置。
具體實施例方式本發(fā)明的主要發(fā)明性構(gòu)思在于(如已經(jīng)提及的)使得從邊信道的觀點,模乘表現(xiàn)得類似模平方,這可以用于提供抵抗某些邊信道攻擊的模冪算法。這可以通過以下來實現(xiàn)對a和b以N為模的模乘進(jìn)行求值,使得當(dāng)a=b時,在模乘中出現(xiàn)的兩個運算數(shù)(operand)的值不同。第一優(yōu)選實施例基于對于任何元素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 時,(a+a) · (b+N) = (2a) · (a+N)和 2a Φ a+N,這是由于 a=N 是不可能的,因為a在2/#2中(g卩,在集合{0,1,中)。換言之,當(dāng)a=b時,在模乘(a+a) · (b+N)mod 2N中出現(xiàn)的兩個運算數(shù)的值不同。第二優(yōu)選實施例依賴于恒等式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時,在模乘(N_a) *b mod N中出現(xiàn)的兩個運算數(shù)的值不同。實際上,當(dāng)a=b時,得到(N-a) · b=(N-a) · a并且當(dāng)N是奇數(shù)時總是滿足(N-a) Φ a。如果a’和b’是運算數(shù)并且N’是修改的模乘中的模數(shù),并且c’是需要被調(diào)整以獲得正確輸出c的修改的模乘的結(jié)果,那么將認(rèn)識到運算數(shù)a’和b’以及模數(shù)N’是使用具有至多線性復(fù)雜度的運算獲得的-技術(shù)人員將認(rèn)識到N’=2N正常地實現(xiàn)為加法或位移(bitshift)-如對于用于從c’獲得c使用的操作的情況-“除法”實現(xiàn)為位移。任一實施例都可用于在背景部分中描述的算法3和4,以引起以下算法。算法3’ -實現(xiàn)第一實施例的從左到右二元方法(原子化)輸入··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’ -實現(xiàn)第二實施例的從右到左二元方法(原子化)輸入··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)生模平方的例子。這樣的一個示例是使用第一實施例的公式的以N=120的70和20的模乘((70 + 70) · (20 + 120)mod 240) /2=(140 · 140mod 240) /2= (19600mod240)/2=160/2=80。使用第二實施例的公式的這樣的一個示例是以N=121的70和51的模乘121 - ((121-70) · 5Imod 121)=121 - (51 · 5Imod 121)=121 - (2601modl21)=61。然而將要認(rèn)識到這些出現(xiàn)相比于原始原子化方案中的平方要罕見得多,雖然這些出現(xiàn)比不出現(xiàn)更經(jīng)常。另外,當(dāng)與某些隨機化技術(shù)組合時,可能難以產(chǎn)生這樣的沖突值(colliding value)。這例如,當(dāng)模幕 y=xd mod N 被計算為 y=[ (x+r · N)d mod t · N]mod N時發(fā)生,其中t是對于一些安全性參數(shù)k的隨機k比特整數(shù)并且r是{0,中的隨機整數(shù)。圖I圖示了根據(jù)本發(fā)明優(yōu)選實施例的設(shè)備。設(shè)備100包括至少一個接口單元110,被適配用于與其它設(shè)備(未示出)通信;至少一個處理器120,以及至少一個存儲器130,被適配用于存儲數(shù)據(jù),諸如累加量(accumulator)和中間計算結(jié)果(intermediarycalculation result)。處理器120被適配為根據(jù)發(fā)明性方法的任何實施例計算模乘,并且還執(zhí)行實施這個乘法的模冪算法,如先前在此描述的。一種計算機程序產(chǎn)品140 (諸如CD-ROM或DVD)包括所存儲的指令,當(dāng)通過處理器120執(zhí)行所述指令時執(zhí)行根據(jù)本發(fā)明任何實施例的方法。將要認(rèn)識到本乘法方法可以提供模冪算法,該模冪算法提供對抗邊信道攻擊增加的保護(hù)。在描述以及(適當(dāng)處的)權(quán)利要求和附圖中公開的每個特征可以單獨提供或者以任何合適的組合提供。描述為以硬件實施的特征還可以以軟件實施,反之亦然。權(quán)利要求中出現(xiàn)的參考數(shù)字僅是例示的方式并且將不對權(quán)利要求的范 圍有限制影響。
權(quán)利要求
1.一種執(zhí)行模冪的方法,包括迭代模乘步驟并且采用第一模數(shù)N,秘密指數(shù)d和底X作為輸入,所述方法在處理器(100)中執(zhí)行并且在針對從兩個值a、b和第一模數(shù)N計算結(jié)果c使得c=a · b mod N的至少一個模乘步驟期間包括以下步驟 -米用該兩個值a, b和第一模數(shù)N作為輸入; -從該兩個值a,b和第一模數(shù)N獲得兩個運算數(shù)a’,b’和第二模數(shù)N’,使得該兩個運算數(shù)a’,b’中的至少一個與所述兩個值a,b不同,并且當(dāng)a等于b時,所述兩個運算數(shù)a’,b’不同,使得從邊信道的觀點模乘c=a*b mod N表現(xiàn)得類似模平方,除了當(dāng)a’等于b’時;其中,使用具有至多線性復(fù)雜度的運算從值a獲得運算數(shù)a’,從值b獲得運算數(shù)b’,并且從第一模數(shù)N獲得第二模數(shù)N’ ; _計算中間結(jié)果c' =a' · b' mod N'; -從所述中間結(jié)果C’推導(dǎo)結(jié)果C,其中使用具有至多線性復(fù)雜度的運算從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作為輸入,所述處理器包括在針對從兩個值a,b和第一模數(shù)N計算結(jié)果c使得c = a · b mod N的至少一個模乘期間用于以下的部件(120) -米用該兩個值a, b和第一模數(shù)N作為輸入; -從該兩個值a,b和第一模數(shù)N獲得兩個運算數(shù)a’,b’和第二模數(shù)N’,使得該兩個運算數(shù)a’,b’中的至少一個與所述兩個值a,b不同,并且當(dāng)a等于b時,所述兩個運算數(shù)a’,b’不同,使得從邊信道的觀點模乘c = a*b mod N表現(xiàn)得類似模平方,除了當(dāng)a’等于b’時;其中,使用具有至多線性復(fù)雜度的運算從值a獲得運算數(shù)a’,從值b獲得運算數(shù)b’,并且從第一模數(shù)N獲得第二模數(shù)N’ ; -計算中間結(jié)果c' = a' · b' mod N';以及 -從所述中間結(jié)果c’推導(dǎo)結(jié)果C,其中使用具有至多線性復(fù)雜度的運算從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ǎn)品(140),當(dāng)通過處理器執(zhí)行所述指令時,執(zhí)行根據(jù)權(quán)利要求I到4中任何一項的方法。
全文摘要
一種抗邊信道攻擊的模冪和設(shè)備,模冪包括迭代模乘步驟并且采用第一模數(shù)N,秘密指數(shù)d和底x作為輸入。在針對從兩個值a,b和第一模數(shù)N計算結(jié)果c使得c=a·bmod N的至少一個模乘步驟期間,處理器(120)采用該兩個值a,b和第一模數(shù)N作為輸入,使用具有至多線性復(fù)雜度的運算從其獲得兩個運算數(shù)a’,b’和第二模數(shù)N’-兩個運算數(shù)a’,b’中的至少一個與兩個值a,b不同,并且當(dāng)a等于b時,所述兩個運算數(shù)a’,b’不同-使得從邊信道的觀點模乘c=a·bmod N表現(xiàn)得類似模平方,除了當(dāng)a’等于b’時。計算中間結(jié)果c′=a′·b′mod N′;使用具有至多線性復(fù)雜度的運算從所述中間結(jié)果c’推導(dǎo)結(jié)果c;并且將結(jié)果c用于模冪。
文檔編號G06F7/72GK102779022SQ20121014559
公開日2012年11月14日 申請日期2012年5月11日 優(yōu)先權(quán)日2011年5月11日
發(fā)明者M.喬伊 申請人:湯姆森特許公司