欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

包括求冪運算的加密方法

文檔序號:7889880閱讀:317來源:國知局
專利名稱:包括求冪運算的加密方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種在電子設(shè)備上實現(xiàn)的按照指數(shù)d來對數(shù)據(jù)m求冪的結(jié)果的迭代計
算方法。
背景技術(shù)
各種已知的加密方法是基于 模冪運算,其數(shù)學(xué)表示如下md modulo (η),其中m是輸入數(shù)據(jù),d是指數(shù),η是模。模冪函數(shù)用于計算基數(shù)(potency)為d的m被η相除的余數(shù)。這樣的函數(shù)由諸如算法RSA( “Rivest, Shamir et Adleman”)、算法DSA( “數(shù)字簽名算法”)、El Gamal等的各種加密算法來使用。數(shù)據(jù)m通常是要解密或簽名的消息,而指數(shù)d是私鑰。已知通過下面的“平方&乘法”算法Al或Al’來執(zhí)行模冪計算。算法Al “平方&乘法”求幕,從左到右輸入整數(shù)“m” 和 “η”,例如 m < ηV個比特的指數(shù)“ d”,例如d = (“· ..(I0)2輸出a= md modulo η步驟I :a = I步驟2 :對于在v-1和O之間的s進行(步驟2A)a= (aXa)mod n(平方)(步驟2B)如果 ds = I,則 a = (aXm)mod η (乘法)步驟3:輸出結(jié)果a算法Al’ “平方&乘法”求幕,從右到左輸入整數(shù)“m”和“η”,例如 m < ηV個比特的指數(shù)“d”,例如d = (“· ..(I0)2輸出a= md modulo η步驟I :a = I ;b = m步驟2 :對于在0和v-1之間的s進行(步驟2A’ )如果 ds = I,則 a = (aXb)mod η (乘法)(步驟2Β’ )b = (bXb)mod n(平方)步驟3:輸出結(jié)果a算法Al稱為“從左到右”是因為計算循環(huán)的第一步驟從指數(shù)的最高有效位開始朝著最低有效位行迸。算法Al’稱為“從右到左”是因為計算循環(huán)的第一步驟從指數(shù)的最低有效位開始朝著最高有效位行迸。
這些算法包括使兩個相同的大尺寸變量相乘以及使兩個不同的大尺寸變量相乘。這通常涉及不同的函數(shù)來執(zhí)行這些運算中的每個運算,使兩個相同的大尺寸變量相乘是通過平方函數(shù)或“SQUARE”函數(shù)來執(zhí)行的,而使兩個不同的大尺寸變量相乘是通過乘法函數(shù)或“MULT”函數(shù)來執(zhí)行的。該區(qū)別是由于以下事實當(dāng)X = y時,相比于相反的情況,通過SQUARE函數(shù)可更快地計算XX y。SQUARE函數(shù)的執(zhí)行時間和MULT函數(shù)的執(zhí)行時間之間的比值通常大約為O. 8,但是根據(jù)以下情況可以在O. 5和I之間變化所考慮的數(shù)的尺寸、執(zhí)行乘法的方式,等等。在芯片卡類型的電子設(shè)備中,加密計算通常由專用處理器(諸如算木協(xié)處理器或加密處理器)來執(zhí)行。計算“md modulo η”(并且尤其是執(zhí)行乘法)相比于簽名或加密或解密運算的總計算時間來說占用了處理器的大部分計算時間。因 此,根據(jù)將要進行的計算類型來交替使用SQUARE函數(shù)或MULT函數(shù)使得整體加密、簽名或解密計算時間得到優(yōu)化。然而,使用兩個不同的函數(shù)SQUARE和MULT導(dǎo)致信息泄漏,可通過SPA(單功率分祈)(即,通過對卡的電消耗進行分析)而檢測該信息。SQUARE函數(shù)比MULT函數(shù)具有更短的執(zhí)行時間,通過觀測元件的電消耗曲線可以區(qū)分這兩個運算?!半娤摹北硎镜氖侵甘玖藞?zhí)行運算的電子元件的運算的任何可觀察物理量,特別是該元件的電磁輻射或消耗的電流。
圖I示出了執(zhí)行算法Al的元件的電消耗的曲線。可以清楚地看到SQUARE和MULT函數(shù)的消耗分布。SQUARE運算之后是MULT運算(步驟2A之后是步驟2B)掲示了指數(shù)d的那個比特等于1,因為通往步驟2B的條件分支要求驗證條件ds = I。相反地,SQUARE運算之后是另ー個SQUARE運算(步驟2A之后是另ー個步驟2A)掲示了指數(shù)的那個比特等于O。因而,通過簡單地觀察電消耗曲線可以接連地發(fā)現(xiàn)指數(shù)d的比持。為了補償該缺陷,可以僅通過MULT函數(shù)而不使用SQUARE函數(shù)來實施步驟2A和2B(或者步驟2A’和2B’)。然而,對電消耗的更精細的分析使得可以區(qū)分步驟2A與步驟2B (或者步驟2A’與步驟2B’),因為算法Al或Al’不是規(guī)則的。實際上,在該情況中,當(dāng)兩個乘法對應(yīng)于連續(xù)執(zhí)行兩個步驟2A (指數(shù)比特等于O)或者對應(yīng)于執(zhí)行步驟2A和其后的步驟2B(指數(shù)比特等于I)的時候,這兩個連續(xù)的乘法之間的時間是不同的。攻擊者因而可以“放大”在乘法之間分布的消耗曲線部分,并且可以觀察到掲示了條件分支的時間不対稱性以及從而觀察到指數(shù)比特的值。下面的算法A2是算法Al的可補償該缺陷的版本。該算法稱為“平方&總是乘法”,這是因為由于雙條件分支“如果”和“否則”,因此當(dāng)指數(shù)d的比特等于O時,在求平方之后插入了使用假參數(shù)(dummy parameter)b 的假乘法(dummy multiplication)。算法A2— “平方&總是乘法”求冪輸入整數(shù)“m” 和 “η”,例如 m < ηV 個比特的指數(shù) “d”,例如 d = (dv_lClv_2. . . d0)2輸出a= md modulo η步驟I :a = I, b = I步驟2 :對于在v-1和O之間的s進行(步驟2A)a= (aXa)mod n(平方)(步驟2B)如果 dv_s = I,則 a = (aXm)mod η (乘法)
否則b = (aXm) mod n(乘法)步驟3:輸出結(jié)果a圖2示出了由于執(zhí)行算法A2產(chǎn)生的電消耗。觀察到消耗峰值的規(guī)則性,其對應(yīng)于連續(xù)的步驟2A和2B,這針對攻 擊SPA而保護了算法。因此假設(shè)雙條件分支“如果”和“否貝1J”不產(chǎn)生任何可通過SPA分析而檢測到的峰值,這是因為由于總是執(zhí)行乘法,因此無法區(qū)分條件是真還是假。算法A2稱為“規(guī)則的”,因為攻擊者看到的是連續(xù)的相同步驟。然而,其與原子化原則(atomicity principle)并不匹配。由 B. ChevalIier-Mames> M. Ciet 和 Μ· Joye 在題為 “Low-Cost Solutions forPreventing Simple Side-Channel Analysis Side-Channel Atomicity,,(公布于 IEEETransactions on Computers, 2004 年,第 53 卷,第 6 期(2004 年 6 月),第 760-768 頁)中介紹了原子化原則。還在國際申請WO 03 083 645或?qū)@鸘S 7 742 595中描述了原子化原則。對原子化原則的應(yīng)用導(dǎo)致將不規(guī)則循環(huán)(例如由算法Al的步驟2A和2B構(gòu)成的循環(huán),或者由算法Al’的步驟2A’和2B’構(gòu)成的循環(huán))變換成規(guī)則的乘法系列,而不需要為了在執(zhí)行算法時的時間增益來使用任何假乘法。例如,下面稱為“總是乘法”的求冪算法A3是算法Al “平方&乘法”的原子版本。該算法是完全規(guī)則的,因為其僅包括乘法,并且主循環(huán)的每個迭代僅包括一個乘法。算法A3— “總是乘法”,原子版本,從左到右輸入整數(shù)“m” 和 “n”,例如 m< ηV個比特的指數(shù)“d”,例如d = H ..(I0)2輸出mdmodulo η步驟I :R0 = I, R1 = m, s = v_l, k = 0步驟2 :只要s彡0就進行(步驟2A) R0 = R0XRk mod η(步驟2B) k = k 十 ds ;s = s-1+k步驟3:輸出結(jié)果R。圖3示出了算法A3的電消耗曲線并示出了電消耗的峰值的規(guī)則性。在該算法中,一些乘法是不同變量的乘法,而另一些乘法是相同變量的乘法。目前在作者為 F. Amiel> B. Feix、M. Tunstall、C. Whelan 和 ff. Marnane 的文章 “DistinguishingMultiplications from Squaring Operations,, (Selected Areas in Cryptography,Lecture Notes in Computer Science 的第 5381 卷,第 346-360 頁,Springer, 2008)中描述了隱藏的信道分析方法,其使用兩個不同變量的乘法與兩個相同變量的乘法(等效于平方運算)之間的固有差(intrinsic difference),即,與第一個的結(jié)果相比,第二個的結(jié)果就平均來看具有較低的漢明權(quán)重。算法A3 “總是乘法”因此暴露于這種攻擊,因為其含有不同項的乘法和相同項的乘法。算法A2 “平方&總是乘法”對于這種攻擊不敏感,因為在步驟2B執(zhí)行的乘法都是不同變量的乘法,并且步驟2A是利用SQUARE函數(shù)來執(zhí)行的。然而,由于其包括假乘法而具有非優(yōu)化的執(zhí)行時間的缺陷。另外,存在一種稱為“安全錯誤(safe errors)”的攻擊,其允許檢測出算法所包括的假運算。這些攻擊包括在特定時間在加密計算中注入錯誤,以及觀察計算結(jié)果是正確還是錯誤的。這種施加到算法A2的攻擊使得可以獲知乘法是在“如果”之后進行還是在“否則”之后進行。實際上,在第二種情況中,假乘法的結(jié)果并不用于計算最終結(jié)果。因此,在其中條件分支“否則”起作用的循環(huán)中注入錯誤并不影響結(jié)果,并且使得可以獲知已保留條件分支“否則”而不是“如果”分支。因此,可能希望提供一種用于執(zhí)行求冪計算的方法,該方法免受剛才所提及的隱藏信道攻擊,另外在執(zhí)行速度方面也可得到優(yōu)化。

發(fā)明內(nèi)容
因而,本發(fā)明的實施例涉及一種在電子設(shè)備中實現(xiàn)的免 受隱藏信道攻擊的迭代計算方法,用于計算按照指數(shù)d來對數(shù)據(jù)m求冪的結(jié)果,并且所述方法包括通過所述電子設(shè)備的至少一個計算塊來執(zhí)行的大尺寸變量的乘法,其僅包括相同的大尺寸變量的乘法,不同的大尺寸變量X、y的任何乘法均被分解成相同的大尺寸變量的乘法的組合。根據(jù)一個實施例,通過從下面的公式推導(dǎo)出的等效公式或者下面的公式之一,將兩個不同的大尺寸變量x、y的乘法分解成相同的大尺寸變量的乘法的組合xXy = [ (x+y) X (x+y) -χXχ-y Xy]/2xXy = (x+y) X (x+y) /2_xXx/2~y Xy/2xXy = (x+y) X (x+y) /2-[χXx+y Xy]/2xXy = [ (x+y) X (x+y) -χXx]/2-y Xy/2xXy = [ (x+y) X (x+y) -y Xy]/2_xXx/2 xXy = [ (x+y) /2] X [ (x+y) /2]-[ (χ-y) /2] X [ (χ-y) /2]xXy = [ (x+y) X (x+y) ]/4-[ (χ-y) X (χ-y) ]/4xXy = [ (x+y) X (x+y) - (χ-y) X (χ-y) ] /4根據(jù)一個實施例,通過用于計算平方函數(shù)的至少一個計算塊來執(zhí)行相同的大尺寸變量的所有乘法。根據(jù)一個實施例,該方法不包括任何假乘法。根據(jù)一個實施例,該方法包括通過用于計算乘法函數(shù)或平方函數(shù)的兩個計算塊來同時執(zhí)行大尺寸變量的兩個乘法。根據(jù)一個實施例,該方法包括同時執(zhí)行大尺寸變量的假乘法以及大尺寸變量的非假乘法,從而使得一計算塊在另一計算塊起作用時不會是空閑的。本發(fā)明的實施例涉及一種免受隱藏信道攻擊的設(shè)備,其被配置以便計算按照指數(shù)d來對數(shù)據(jù)m求冪的結(jié)果,該設(shè)備包括用于執(zhí)行大尺寸變量的乘法的至少一個計算塊,所述設(shè)備被配置以便通過將不同的大尺寸變量x、y的任何乘法分解成相同的大尺寸變量的乘法的組合,僅執(zhí)行相同的大尺寸變量的乘法。根據(jù)一個實施例,所述設(shè)備被配置以便通過從下面的公式推導(dǎo)出的等效公式或下面的公式之一,將兩個不同的大尺寸變量X、I的乘法分解成相同的大尺寸變量的乘法的組合xXy = [ (x+y) X (x+y) -χXχ-y Xy]/2
xXy = (x+y) X (x+y) /2_xXx/2~y Xy/2xXy = (x+y) X (x+y) /2-[χXx+y Xy]/2xXy = [ (x+y) X (x+y) -χXx]/2-y Xy/2xXy = [ (x+y) X (x+y) -y Xy]/2_xXx/2xXy = [ (x+y) /2] X [ (x+y) /2]-[ (χ-y) /2] X [ (χ-y) /2]xXy = [ (x+y) X (x+y) ]/4-[ (χ-y) X (χ-y) ]/4xXy = [ (x+y) X (x+y) - (χ-y) X (χ-y) ] /4本發(fā)明實施例還涉及 一種根據(jù)上述實施例之一的電子設(shè)備,其被配置以便通過用于計算平方函數(shù)的至少一個計算塊來執(zhí)行相同的大尺寸變量的所有乘法。根據(jù)一個實施例,該電子設(shè)備被配置以便不執(zhí)行假乘法。根據(jù)一個實施例,該電子設(shè)備包括用于計算乘法函數(shù)或平方函數(shù)的兩個計算塊,并且被配置以便通過所述兩個計算塊來同時執(zhí)行大尺寸變量的兩個乘法。根據(jù)一個實施例,該電子設(shè)備被配置以便同時執(zhí)行大尺寸變量的假乘法以及大尺寸變量的非假乘法,從而使得一計算塊在另一計算塊起作用時不會是空閑的。本發(fā)明實施例還涉及一種在半導(dǎo)體芯片上的集成電路,其包括根據(jù)上述實施例之一的集成電路。本發(fā)明的實施例還涉及一種便攜式物體,其包括根據(jù)上述實施例之一的集成電路。


下文將結(jié)合附圖來描述本發(fā)明的實施例,其中圖I如前所述示出了執(zhí)行第一常規(guī)求冪算法的元件的電消耗曲線;圖2如前所述示出了執(zhí)行第二常規(guī)求冪算法的元件的電消耗曲線;圖3如前所述示出了執(zhí)行第三常規(guī)求冪算法的元件的電消耗曲線;圖4示出了執(zhí)行根據(jù)本發(fā)明的算法的元件的電消耗曲線;圖5A、5B示出了實施根據(jù)本發(fā)明的第一求冪算法的電子設(shè)備的兩個變型;以及圖6A、6B示出了實施根據(jù)本發(fā)明的第二求冪算法的電子設(shè)備的兩個變型。
具體實施例方式本發(fā)明涉及一種僅包括相同的大尺寸變量的乘法的加密計算方法。其基于利用以下兩個公式之一將兩個不同的大尺寸變量χ、y的乘法變換為相同的大尺寸變量的乘法的組合(i)xXy = [ (x+y) X (x+y)-χXχ-yXy]/2(ii)xXy = [ (x+y)/2] X [ (x+y)/2]-[ (χ-y)/2] X [ (χ-y)/2]實施公式(i)包括以下內(nèi)容通過三個對函數(shù)MULT (a,b)的調(diào)用來替換一個對函數(shù)MULT(a,b)的調(diào)用,以及執(zhí)行一個加法、兩個減法和一個被2相除的除法。實施公式(ii)包括以下內(nèi)容通過兩個對函數(shù)MULT的調(diào)用來替換一個對函數(shù)MULT (a,b)的調(diào)用,以及執(zhí)行一個加法、兩個減法和兩個被2相除的除法。這些乘法根據(jù)所考慮的應(yīng)用可以是模數(shù)的(modular)或者不是模數(shù)的。該方法可以是求冪計算RSA、在加密方法ECC(橢圓曲線加密)中的標(biāo)量乘法,等等。在實施例變型中,通過對函數(shù)SQUARE (a)的調(diào)用來替換對函數(shù)MULT (a,b)的調(diào)用,因為這些調(diào)用通常在a = b的情況下進行。函數(shù)SQUARE通常被更快地執(zhí)行,其允許優(yōu)化該方法的整體執(zhí)行時間。該方法因而免受上述攻擊,其包括將兩 個不同變量的乘法與兩個相同變量的乘法區(qū)分開來。下面的算法A4是根據(jù)本發(fā)明的求冪算法的示例實施例,在原子版本中從左到右使用公式⑴算法A4輸入消息“m”和模“n”,例如m < ηV 個比特的指數(shù)“d”,例如 d = (dv_lClv_2· ..(I0)2輸出mdmod η步驟I R0 = 1,R1 = m mod n, R2 = 1,R3 = (mXm)/2mod η步驟2:u = 0,s = 2,t = l,i = v_l步驟3 :只要i彡0就進行(步驟3A)RU = RuX Ru mod η(步驟3B) Rs = Rs/2mod η(步驟3C)如果(u 幸 s)則 Rs = Ru+Rt mod η否則Rs = R2-Rt mod η(步驟 3D) s = (u+2)mod 4, u = di*t * s, t = u+(s >> I)(步驟3E) i = i - ((U 十 S) I)步驟3:輸出結(jié)果Rtl在算法A4和在以下描述的算法中- “a b”表示變量a和b的按比特異或;- “a >> b”表示移到變量a的右邊b個比特;-a * b表示小尺寸變量的乘法,在執(zhí)行該乘法時不調(diào)用函數(shù)MULT或函數(shù)SQUARE,即,不調(diào)用乘法或平方塊??梢?,步驟3A僅包括相同項的乘法。此外,該算法不包括假乘法。另外,在該實施例中,有利地提供變量U、s、t和步驟3B至3E來規(guī)則化在每個計算循環(huán)處的乘法之間執(zhí)行的運算,從而使得在執(zhí)行兩個乘法之間不出現(xiàn)會根據(jù)指數(shù)的比特值變化的時間差。實際上,盡管被2相除、加法以及減法的執(zhí)行時間可以忽略,然而攻擊者可以“放大”對應(yīng)于這些運算的電消耗曲線,從而檢測到揭示了過程中的密鑰的比特值的線索。在算法A4中,如下實現(xiàn)公式⑴可觀察到,算法Al中的步驟2B的乘法的第二運算對象是常數(shù)且值為m。該觀察使得可以如通常情況中公式(i)所要求的那樣僅以相同項的兩個而不是三個乘法來替換不同項的該乘法。實際上,考慮下面的公式α’)(i,)xXm= [ (x+m) X (x+m)-χXχ]/2-(mXm)/2該公式使得可以對于所有求冪進行一次計算(mXm),這使得其在計算時間方面的“成本”可忽略。在算法A4中,m被寄存在R1中,而(mXm)/2mod η被寄存在R3中。使用特定的開發(fā)和仿真工具開發(fā)該算法,其運算不能輕易地僅通過對其進行讀取而理解。然而,可通過參考所示出的常規(guī)算法Al并通過考慮在步驟2限定的初始條件中對步驟3A至3E的執(zhí)行來理解該算法的運算??赡艹霈F(xiàn)兩種情況I)指數(shù)的比特Cli的值為O -該算法計算Rtl= Rtl X Rtl (其對應(yīng)于算法Al的步驟2A)。2)比特Cli的值為I,該算法進行三個循環(huán)-R0 = Rtl X Rtl (其對應(yīng) 于算法Al的步驟2A)-R2 = (R0+m) X (R0+m)/2_mXm/2,然后-R0 = R0XR0/2以及Rtl = R2-R0(其對應(yīng)于利用公式(i’)所實施的算法Al的步驟2B)。圖4示出了執(zhí)行算法A4的元件的電消耗分布。電消耗曲線僅具有與對函數(shù)MULT(或SQUARE)的調(diào)用相對應(yīng)的連續(xù)峰值。這樣的消耗曲線不允許推導(dǎo)出秘密指數(shù)的比特值,因此防止了攻擊SPA。另一方面,由于該方法僅包括相同項的乘法,因此無法應(yīng)用包括對兩個不同變量的乘法與兩個相通變量的乘法進行區(qū)分的攻擊。下面的算法A5是根據(jù)本發(fā)明的求冪算法的另一實例,這里在原子版本中從左到右使用公式(ii)算法A5輸入消息“m”和?!皀”,例如m < ηV 個比特的指數(shù)“d”,例如 d = (dv_lClv_2· ..(I0)2輸出mdmod η步驟I :R0 = I, R1 = m mod n, R2 = I步驟2:u = 0,s = 2,w = 2,t = 0,i = v_l步驟3 :只要i彡0就進行(步驟3A)RU = RuX Ru mod η(步驟3B)如果(w = O)貝丨J Rw = Rt-R(t+1)mod3 mod η否則Rw = Rt+R(t+1)mod3 mod n(步驟3C) Rs = Rs/2 mod n(步驟 3D) t = u, u = w · Cli, s = (u+2)mod 4, W = t S
(步驟 3E) i = i- (w > > I)步驟3:輸出結(jié)果Rtl算法A5具有與算法A4相同的電消耗分布,并且因此提供了針對上述攻擊的相同程度的保護??梢酝ㄟ^參考上述常規(guī)算法Al并考慮在步驟2中限定的初始條件中對步驟3A至3E的執(zhí)行來理解算法A5的運算。可能出現(xiàn)兩種情況I)指數(shù)的比特Cli的值為O :-該算法計算Rtl= Rtl X Rtl (其對應(yīng)于算法Al的步驟2A)。2)比特Cli的值為I,該算法進行循環(huán)“只要”的三個迭代-R0 = R0XR0 (其對應(yīng)于算法Al的步驟2A)-R2 = ((R0+m) /2) X ((R0+m) /2)-R0 = ((R0-m)/2) X ((R0_m)/2)以及 R0 = R2-Rtl(其對應(yīng)于利用公式(ii)所實現(xiàn)的算法Al的步驟2B)。圖5A以框圖形式示出了電子設(shè)備DVl,其被配置以便執(zhí)行包括算法A4或A5的加密計算。設(shè)備DVl可以是布置在便攜式支撐體CD (諸如塑料卡)上的半導(dǎo)體芯片上的集成電路,其整體形成芯片卡。設(shè)備DVl包括處理器PR0C、計算塊MBl (其被配置以便執(zhí)行大尺寸變量a、b的函數(shù)MULT (a,b))、存儲器MEMl和通信接口電路1C。接口電路IC可以 是接觸型或無接觸型,例如通過感應(yīng)耦合或電耦合操作的接口電路RF或UHF。計算塊MBl可以是配備有可編程中央單元的協(xié)處理器、狀態(tài)機類型的全硬件協(xié)處理器,或者由處理器來執(zhí)行的乘法子程序。在常規(guī)的方式中,當(dāng)變量的尺寸(比特數(shù))高于處理器PROC的計算寄存器的比特數(shù)時,該變量稱為“大尺寸”。后者在不調(diào)用計算塊MBl的情況下進行小尺寸變量(即,其尺寸小于或等于其計算寄存器的尺寸)的乘法,而對于大尺寸變量的乘法調(diào)用計算塊MB1。例如,如果計算寄存器的尺寸是32比特,則大尺寸變量是超過32比特的變量。存儲器MEMl耦合到處理器PROC并允許設(shè)備存儲密鑰d。處理器PROC通過接口電路IC來接收要被加密或簽名的消息,并發(fā)送被加密的消息或者類型Fd(HI)的簽名,其中F是基于密鑰d的加密函數(shù),包括通過算法A5或A6所執(zhí)行的md modulo (η)類型的求冪計算。在求冪計算期間,處理器PROC通過對計算塊MBl提供總是相等的變量a、b來調(diào)用計算塊MBl,并且計算塊MBl輸出aXb。圖5B以框圖形式示出了電子設(shè)備DV2,其被配置以便執(zhí)行包括算法A4或A5的加密計算。設(shè)備DV2不同于設(shè)備DVl之處僅在于由配置為執(zhí)行函數(shù)SQUARE的計算塊SBl替換了計算塊MB1。如前所述,計算塊SBl可以是配備有可編程中央單元的協(xié)處理器、全硬件協(xié)處理器,或者由處理器來執(zhí)行的平方子程序。根據(jù)本發(fā)明的求冪算法還可以從上述算法Al’導(dǎo)出,其構(gòu)成了算法Al的“從右到左”變型。盡管在該實施例中,在乘法期間沒有運算對象是恒定的,但是公式(i)和公式( )在復(fù)雜性方面保持等同。實際上,公式(i)要求計算三個乘法(a+b) X (a+b)、aXa和bXb而不是兩個乘法,但是對于步驟2B來說計算bXb是必要的。因而,這三個運算允許實施步驟2A和2B。這在使用公式(ii)期間是相同的,其要求三個乘法兩個執(zhí)行步驟2A,而一個執(zhí)行步驟2B?,F(xiàn)在將考慮對公式(ii)的使用作為非限制性示例,公式(ii)在本質(zhì)上更靈活,因為其通常要求兩個乘法而不是三個乘法。下面的算法A6是根據(jù)本發(fā)明的求冪算法的另一示例實施例,其在原子版本中從右到左實現(xiàn)公式(ii)算法A6輸入消息“m”和?!皀”,例如m < ηV 個比特的指數(shù)“d”,例如 d = (dv_lClv_2· ..(I0)2輸出mdmod η步驟I R0 = m mod n, R1 = I, R2 = I步驟2:u = 2,s = 0,w = 0,t = 2,i = 0步驟3 :只要i ( 1-1就進行(步驟 3A)u = 2-So-Si, w = 2t mod 4,
t = (2+2s1)mod 3, s = 2φι- 0(步驟3B) 如果(u = 2)貝丨J Ru = RjR1Iiiod η否則Ru = Rw-R1Iiiod η(步驟3C)Rt = Rt/2mod η(步驟3D) Rs = RsXRs mod η(步驟3Ε) i = i+l_s [O]-s [I]步驟3:輸出結(jié)果R1算法A6具有與算法A4或A5相同的消耗分布,并且因此提供了針對上述攻擊的相同程度的保護??梢酝ㄟ^參考上述常規(guī)算法Al并考慮在步驟2限定的初始條件中對步驟3A至3E的執(zhí)行來理解該算法的運算??赡艹霈F(xiàn)兩種情況I)指數(shù)的比特Cli的值為O :-該算法計算Rtl= Rtl X Rtl (其對應(yīng)于算法Al ’的步驟2B)。2)比特Cli的值為I,該算法進行循環(huán)“只要”的三個迭代-R2 = ((R0+R1) /2) X ((R0+R1) /2)-R1 = ((R0-Rl)/2) X ((R0-Rl)/2)以及 R1 = R2-R1 (其對應(yīng)于利用公式(ii)所實現(xiàn)的算法Al’的步驟2A) -R0 = Rtl X Rtl (其對應(yīng)于算法Al ’的步驟2B)。根據(jù)本發(fā)明的求冪算法還可被設(shè)計為具有涉及兩個不同計算塊的并行架構(gòu),并允許同時進行兩個不同的乘法(或兩個平方運算)。實際上,當(dāng)一個乘法被替換為兩個乘法(從α)導(dǎo)出的公式αυ或公式α’))或三個乘法(公式α))時,這些乘法彼此獨立并且因此可以同時執(zhí)行。在該情況下,可以提供特定的預(yù)防措施來避免造成可被分析SPA檢測到的信息泄漏。特別地,可能希望攻擊者無法區(qū)分出并行執(zhí)行的是一個或兩個乘法。為此,可以提供假運算??梢宰⒁獾?,當(dāng)與用于計算結(jié)果所需的運算同時執(zhí)行假運算時,在平行算法架構(gòu)中提供假運算并不影響算法的執(zhí)行時間。實際上,如果目標(biāo)是例如通過兩個計算塊來對包括三個所需運算01、02、03的序列的算法進行完全并行化,則這樣的并行化要求提供假運算04。在該情況下,該算法包括并行執(zhí)行運算01、02,記為01//02,在此之后并行執(zhí)行運算03、04,記為03//04。這樣的并行化執(zhí)行快于順序執(zhí)行01、02和03,并且也快于執(zhí)行01//02然后單獨地執(zhí)行運算03。因此,這里認為當(dāng)假運算總是與非假運算同時執(zhí)行時遵守了原子化原則。另外,從右到左的算法就并行化而言更加靈活。實際上,可注意到,如果在存儲器中保存中間結(jié)果,算法Al’的步驟2B’可繼續(xù)下去而不用等待步驟2A’的結(jié)果,而算法Al的步驟2A’和2B’必須被順序執(zhí)行。下面的算法A7示出了根據(jù)本發(fā)明的求冪計算的示例實施例,其在原子版本中從右到左實現(xiàn)公式(ii)算法A7輸入
整數(shù)“m” 和 “n”,例如 m < ηV 個比特的指數(shù) “d”,例如 d = (dv—Α—2· · · d0)2輸出mdmod η步驟I :a = I ;b = m ;extra = 0 ; i = 0 ;u = I ;臨時寄存器 S1, S2, S3步驟2 :只要i ( v-1就進行χ = (a-b)mod ηy = (a+b) mod n如果Cli = I 則如果 extra = O如果u = IS1 = xXx mod n//s2 = bXb mod nχ = (a-sJ/4 mod nχ = s2χ = S3x=lu = 0否則a = yXy mod n//s3 = s2Xs2 mod na = (a-sJ/4 mod nb = S2s2 = S3extra = Iu=l否則如果為真S1 = xXx mod n//a = yXy mod na = (a-sJ/4 mod nb = S2χ = S3extra = 0x = 0否則如果 extra = 0如果為真b = bXb mod n//x = yXy mod nχ = (a-s^ /4 mod nχ = S2χ = S3x = 0
x=0如果di+1 = O 以及 extra = 1 b = S2extra = 0i = i+1否則χ = s2x = 0χ = i+1i = i+u步驟3:輸出結(jié)果a符號“//”表示兩個并行化的計算步驟。該算法的原子版本含有用于隱藏(規(guī)則化)在乘法之間的變量處理的假運算。這些假運算被寄存在寄存器X中。只有運算X =(a-b)mod η不是假運算。同樣,假條件分支被用于規(guī)則化由循環(huán)所使用的分支的數(shù)目。下面的算法Α8是算法Α7的等效變型。算法A8輸入整數(shù)“m” 和 “n”,例如 m < ηV個比特的指數(shù)“d”,例如d = H ..(I0)2輸出mdmod η步驟 I u = I ;t0 = O = O ;t2 = 0 ;s0 = I !S1 = m ;s2 = 0 ;s3 = 0 ;s4 = 0 ;s5=0 ;s6= 0步驟2 :只要tQ彡v-1就進行(步驟2A) j = dt0 * (Vi+u+1)(步驟2B) S5 = (R0-R1) /2mod n(步驟2C) S6 = (R0+^) /2mod n(步驟2D) SM1(J,0) = sM1 (J,D X sMiai)mod n//
sMl (j, 2) — SMl(j,3) X SMl(j,3)m0d H(步驟2E) sM1(j,4) = s0-s2mod n(步驟2F) sM1(j,5) = S3(步驟2G) sM1 α 6) = S4(步驟^Dt1 =Ml (j,7)(步驟21)u = Ml (j,8)(步驟2J)k = l-(l_dt(l+1) ^t1(步驟2K) Sm2 05j0) = S3(步驟2L)= 0(少驟2M) tjg (k, 2) — tM2(k,2)+l-(步驟2N) t0 = t0+u步驟3:輸出結(jié)果s。算法A8使用寄存在存儲器中的兩個矩陣Ml和M2,含有常量。
矩陣Ml 1156555010643013112531555002506 01501矩陣M2 110522Ml和M2的各自的行和列的索引分別標(biāo)記為對于行是從O到3以及從O到I,對于列是從O到8以及從O到2。圖6A以框圖的形式示出了電子設(shè)備DV3,其被配置以便執(zhí)行包括算法A7的加密計算。設(shè)備DV3不同于設(shè)備DVl之處僅在于其包括函數(shù)MULT (a,b)的兩個計算塊MB1、MB2而不是一個。算法A7具有完全并行的結(jié)構(gòu),這兩個計算塊總是同時起作用而不存在這樣的計算循環(huán),g卩,在該計算循環(huán)中,一個計算塊起作用而另一個塊處于空閑。圖6B以框圖的形式示出了電子設(shè)備DV4,其被配置以便執(zhí)行包括算法A7的加密計算。設(shè)備DV4不同于設(shè)備DV3之處僅在于其包括函數(shù)SQUARE (a)的兩個計算塊SB1、SB2而不是函數(shù)MULT(a,b)的兩個計算塊。這兩個計算塊總是同時起作用而不存在這樣的計算循環(huán),即,在該計算循環(huán)中,一個計算塊起作用而另一個塊處于空閑。如前所述,計算塊MBl、MB2、SBl、SB2可以是配備有可編程中央單元的協(xié)處理器、全硬件協(xié)處理器或者由處理器執(zhí)行的乘法或平方子程序。對于本領(lǐng)域技術(shù)人員清楚地是,本發(fā)明允許各種實施例和應(yīng)用,尤其是各種其它形式的算法和執(zhí)行該算法的加密設(shè)備。本發(fā)明的實施例可特別地使用等效于上述公式⑴和(ii)的公式,例如等效于⑴的公式示例xXy = (x+y) X (x+y) /2_xXx/2_y Xy/2xXy = (x+y) X (x+y) /2-[χXx+y Xy]/2
xXy = [ (x+y) X (x+y) -χXx]/2-y Xy/2xXy = [ (x+y) X (x+y) -y Xy]/2_xXx/2等效于公式(ii)的公式的示例xXy = [ (x+y) X (x+y) ]/4-[ (χ-y) X (χ-y) ]/4xXy = [ (x+y) X (x+y) - (χ-y) X (χ-y) ] /4,等等。另外,在一些實施例中,通過上述公式之一將兩個不同變量的乘法變換為相同變量的兩個或三個乘法可以包括將乘法變換為相同的大尺寸變量的多個(即,多于兩個或三個)乘法,然而其中,所述大尺寸小于要相乘的兩個不同變量的尺寸。例如在其中使用函數(shù)SQUARE來執(zhí)行相同變量的乘法的情況中,每個平方運算均可被分解為較小尺寸變量的多個平方運算。通過使用例如Karatsuba-Ofman公式,兩個相同變量的乘法可由6個或9個平方運算(其尺寸等于初始變量的尺寸的一半)來替換。另外在根據(jù)本發(fā)明的算法中,雖然上文明確地排除了提供不同的大尺寸變量的乘法,然而,本發(fā)明的一些實施例包括這樣的不同大尺寸變量的乘法,只要這些大尺寸變量是假類型的,或者不易受到隱藏信道攻擊。換句話說,突出這樣的乘法不會提供任何暗示來允許發(fā)現(xiàn)指數(shù)的比特。因此在本發(fā)明的概念中認為這樣的乘法并不存在,因為其獨特地解決了使算法免于隱藏信道攻擊。最后,盡管上述算法被設(shè)計為實現(xiàn)原子化原則并且因而提 供了針對SPA攻擊的最佳安全性同時具有優(yōu)化的計算時間,但是本發(fā)明的范圍并不排除實現(xiàn)了公式(i)或(ii)的這些算法的非原子實施例。
權(quán)利要求
1.一種在電子設(shè)備(DV1,DV2,DV3,DV4)上實現(xiàn)的免受隱藏信道攻擊的迭代計算方法,用于計算按照指數(shù)d來對數(shù)據(jù)m求冪的結(jié)果,所述方法包括通過所述電子設(shè)備的至少一個計算塊(MBl,MB2, SBl,SB2)來執(zhí)行的大尺寸變量的乘法, 僅包括相同的大尺寸變量的乘法,不同的大尺寸變量x、I的任何乘法均被分解成相同的大尺寸變量的乘法的組合。
2.根據(jù)權(quán)利要求I的方法,其中,通過以下公式或者從所述公式導(dǎo)出的等效公式之一,將兩個不同的大尺寸變量x、y的乘法分解成相同的大尺寸變量的乘法的組合xXy = [ (x+y) X (x+y) -xXx-yXy]/2 xXy = (x+y) X (x+y)/2-xXx/2-yXy/2 xXy = (x+y) X (x+y)/2-[xXx+yXy]/2xXy = [ (x+y) X (x+y) -xXx]/2-yXy/2xXy = [ (x+y) X (x+y) -yXy]/2-xXx/2 xXy = [ (x+y) /2] X [ (x+y) /2]-[ (x-y) /2] X [ (x-y) /2]xXy = [ (x+y) X (x+y) ]/4-[ (x-y) X (x-y) ]/4xXy = [ (x+y) X (x+y) - (x-y) X (x_y)]/4。
3.根據(jù)權(quán)利要求I和2之一的方法,其中,通過用于計算平方函數(shù)的至少一個計算塊(SBl,SB2)來執(zhí)行相同的大尺寸變量的所有乘法。
4.根據(jù)權(quán)利要求I至3之一的方法,其不包括任何假乘法。
5.根據(jù)權(quán)利要求I和3之一的方法,其包括通過用于計算乘法函數(shù)或平方函數(shù)的兩個計算塊(MB1,MB2,SBl, SB2)來同時執(zhí)行大尺寸變量的兩個乘法。
6.根據(jù)權(quán)利要求5的方法,其包括同時執(zhí)行大尺寸變量的假乘法以及大尺寸變量的非假乘法,從而使得一計算塊在另一計算塊起作用時不會是空閑的。
7.一種免受隱藏信道攻擊的設(shè)備(DV1,DV2,DV3,DV4),其被配置以便計算按照指數(shù)d來對數(shù)據(jù)m求冪的結(jié)果,所述設(shè)備包括用于執(zhí)行大尺寸變量的乘法的至少一個計算塊(MBl,MB2, SBl,SB2), 所述設(shè)備被配置以便通過將不同的大尺寸變量x、y的任何乘法分解成相同的大尺寸變量的乘法的組合,僅執(zhí)行相同的大尺寸變量的乘法。
8.根據(jù)權(quán)利要求7的設(shè)備,其被配置以便通過以下公式或者從所述公式導(dǎo)出的等效公式之一,將兩個不同的大尺寸變量x、y的乘法分解成相同的大尺寸變量的乘法的組合xXy = [ (x+y) X (x+y) _xXx-y Xy]/2 xXy = (x+y) X (x+y)/2-xXx/2-yXy/2 xXy = (x+y) X (x+y)/2-[xXx+yXy]/2xXy = [ (x+y) X (x+y) _xXx]/2-y Xy/2xXy = [ (x+y) X (x+y) -y Xy]/2_xXx/2 xXy = [ (x+y) /2] X [ (x+y) /2]-[ (x-y) /2] X [ (x-y) /2]xXy = [ (x+y) X (x+y) ]/4-[ (x-y) X (x-y) ]/4xXy = [ (x+y) X (x+y) - (x-y) X (x_y)]/4。
9.根據(jù)權(quán)利要求7和8之一的電子設(shè)備,其被配置以便通過用于計算平方函數(shù)的至少一個計算塊(SB1,SB2)來執(zhí)行相同的大尺寸變量的所有乘法。
10.根據(jù)權(quán)利要求7至9之一的電子設(shè)備,其被配置以便不執(zhí)行假乘法。
11.根據(jù)權(quán)利要求7至9之一的電子設(shè)備,其包括用于計算乘法函數(shù)或平方函數(shù)的兩個計算塊(MB1,MB2, SBl, SB2),并被配置以便通過所述兩個計算塊來同時執(zhí)行大尺寸變量的兩個乘法。
12.根據(jù)權(quán)利要求11的電子設(shè)備,其被配置以便同時執(zhí)行大尺寸變量的假乘法以及大尺寸變量的非假乘法,從而使得一計算塊在另一計算塊起作用時不會是空閑的。
13.—種在半導(dǎo)體芯片上的集成電路,其包括根據(jù)權(quán)利要求7至12之一的集成電路。
14.一種便攜式物體(⑶),其包括根據(jù)權(quán)利要求7至12之一的集成電路。
全文摘要
本發(fā)明涉及一種免受隱藏信道攻擊的方法和設(shè)備DV1,用于計算按照指數(shù)d來對數(shù)據(jù)m求冪的結(jié)果。所述方法和設(shè)備被配置以便通過將不同的大尺寸變量x、y的任何乘法分解成相同的大尺寸變量的乘法的組合,僅執(zhí)行相同的大尺寸變量的乘法。
文檔編號H04L9/32GK102684876SQ20121004069
公開日2012年9月19日 申請日期2012年2月21日 優(yōu)先權(quán)日2011年2月25日
發(fā)明者B·菲克斯, C·克拉維耶, G·加戈納羅特, M·羅瑟萊特, V·韋納伊 申請人:英賽瑟庫爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
龙泉市| 泾川县| 昌黎县| 乳源| 西丰县| 莱芜市| 京山县| 大新县| 十堰市| 道孚县| 仲巴县| 鲁甸县| 得荣县| 乌海市| 陇西县| 恩施市| 南投市| 奉节县| 荃湾区| 伊川县| 中西区| 河东区| 和林格尔县| 克拉玛依市| 东方市| 松滋市| 伊金霍洛旗| 西乌珠穆沁旗| 无为县| 密云县| 衡南县| 隆林| 海晏县| 桦南县| 盐源县| 宁乡县| 天津市| 漾濞| 新蔡县| 全椒县| 资兴市|