專利名稱:防止隱蔽信道攻擊的整數(shù)除法方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種防止隱蔽信道類型攻擊的整數(shù)除法方法。本發(fā)明對采用更通常的加密方法來執(zhí)行除法操作特別有益,例如是秘密或公開密鑰加密方法。這樣的加密方法可以在諸如芯片卡之類的電子設(shè)備中實現(xiàn)。
加密方法的安全性在于它們能夠讓機密數(shù)據(jù)或者利用機密數(shù)據(jù)導(dǎo)出的數(shù)據(jù)保持隱密。
惡意用戶可能采取攻擊,旨在發(fā)現(xiàn)特別是在處理操作中包含和操作的機密數(shù)據(jù),所述處理操作由執(zhí)行加密方法的計算設(shè)備來完成。
在眾所周知的攻擊中,可以列舉簡單或差分隱蔽信道攻擊。隱蔽信道攻擊是指基于可從設(shè)備外部測量的物理量的攻擊,并且直接分析(簡單攻擊)或依照統(tǒng)計法(差分攻擊)分析所述物理量使發(fā)現(xiàn)在設(shè)備里執(zhí)行的處理操作中包含和操作的數(shù)據(jù)成為可能。這些攻擊已經(jīng)特別地由Paul Kocher公開(Advances in Cryptology-CRYPTO′99,計算機科學(xué)講課筆記第1666卷,第388-397頁,Springer-Verlag,1999年)。
在可以用于上述目的的物理量當(dāng)中,可以列舉執(zhí)行時間、電流消耗、由用于執(zhí)行計算的組件部分輻射出來的電磁場等。這些攻擊基于這樣的事實,在執(zhí)行一個方法期間,一個位的操作,即由特定的指令對其處理,依照該位的值和/或依照所述指令在上述物理量上留下特定的印記。
在過去的幾年里,使用模取冪操作類型Y=XD作為基本運算的加密方法已經(jīng)被廣泛地研究,其中X、Y和D是整數(shù)。以舉例形式,可以列舉依照Diffie-Hellman密鑰交換的RSA方法,或DSA簽名方法。在保護這些方法免遭隱蔽信道攻擊上已經(jīng)作了顯著的改進。
另一方面,沒有研究使用整數(shù)除法類型q=a div b和r=a mod b作為基本操作來產(chǎn)生安全加密方法,其中a和b是兩個操作數(shù),q和r分別是整數(shù)除法a除以b的商和余數(shù)。a和/或b是秘密數(shù)據(jù),例如方法的密鑰的元素。例如,Barrett的方法(P.Barret,“Implementingthe RSA public key encryption algorithm on a standard digital signalprocessing”,計算機科學(xué)講課筆記第263卷,第311-323頁,SpringerVerlag,1987年)、Quisquater的方法(美國專利5,166,978,92年11月)或依照中國余數(shù)定理實現(xiàn)的RSA方法(J J Quisquater和CCouvreur,“Fast decipherment algorithm for RSA public keycryptosystem”,Electronics Letter,第18卷,第905-907頁,1982年10月)是使用整數(shù)除法作為基本操作的加密方法。
用于實現(xiàn)整數(shù)除法的已知方法是所謂的“紙/筆”方法。在實踐中該方法重復(fù)在用手執(zhí)行這種操作時所使用的方法。下面陳述這種方法。
給定兩個數(shù)據(jù)項m位的a=(am-1,...,a0)和n位的b=(bn-1,...,b0),n小于或等于m并且bn-1γ0,所謂的“紙/筆”除法方法計算商q=a div b和余數(shù)r=a div b。為此,所述方法連續(xù)執(zhí)行n+1位的整數(shù)A除以n位整數(shù)b的幾次運算。在實踐中有必要使0[A/b<2,這是每當(dāng)bn-1γ0的情況。
由于r<b,所以余數(shù)r是一個不超過n位的數(shù)。由于q=a div b[a div(bn-1*2n-1)=a div 2n-1=(am-1,...,an-1),bμbn-1*2n-1和(am-1,...,an-1)是m-n+1位的數(shù),所以其商q的部分是一個不超過m-n+1位的數(shù)。在所述除法最后,把商q存儲在最初包含數(shù)a的寄存器的m-n+1最低有效位中。把余數(shù)r的最高有效位存儲在1位寄存器中用作在計算期間的進位,而把所述余數(shù)r的n-1最低有效位存儲在最初包含數(shù)a的寄存器的n-1最高有效位中。
因為該工作以2為底進行,所以整數(shù)除法A div b的商位只有兩個可能的值0或1。從而執(zhí)行操作A div b的簡單方式由下述步驟組成,從A中減去b,繼而測試結(jié)果如果A-b的結(jié)果是正的,那么A div b=1,而如果A-b的結(jié)果是嚴(yán)格負(fù)的,那么A div b=0。
然后可以依照下列方法寫出完整的除法輸入a=(0,am-1,...,a0)b=(bn-1,...,b0)輸出q=a div b并且r=a mod b
A=(0,am-1,...,am-n+1)For j=1 to(m-n+1),doa<-SHLm-1(a,1);σ<-carryA<-SUBn(A,b);σ<-σOR carryif(﹁σ=TRUE)then A<-ADDn(A,b)if not lsb(a)=1End for方法1在該方法中,并且遍及以下方法,使用下列記號。
使用符號“<-”和記號y<-x來表明把包含數(shù)據(jù)項x的寄存器的內(nèi)容加載到其內(nèi)容被稱作y的寄存器中。
A是一個n位的字,對應(yīng)于最初包含數(shù)據(jù)項a的寄存器的n個最高有效位的內(nèi)容。當(dāng)然在每次迭代中修改A。
σ表明是否已經(jīng)錯誤地執(zhí)行了減法(即商位必須等于0還是1)。
﹁σ是變量σ的對于1的補(也被稱為求反)。TRUE是恒定值,在一個例子中等于1。
lsb(a)是數(shù)a的最低權(quán)位,也被稱為a的最低有效位。
SHLm+1(a,1)是在包含數(shù)據(jù)項a的m+1位寄存器中左移1位的操作,把留在寄存器的位存儲在變量進位中,而把等于0的位作為最初包含數(shù)據(jù)a的寄存器的最低有效位輸入。
ADDn(A,b)是把數(shù)b的n位加到字A的n位上的操作。應(yīng)當(dāng)注意,操作SHLn(a,1)等價于操作ADDn(a,a)。當(dāng)然通過在適當(dāng)?shù)募拇嫫鲀?nèi)容加法電路中相加分別包含A和b的兩個寄存器的內(nèi)容,來執(zhí)行加法ADDn(a,b)。
SUBn(A,b)是從字A中減去數(shù)b的操作。當(dāng)然通過在適當(dāng)?shù)碾娐分袕陌諥的寄存器的內(nèi)容中減去包含數(shù)據(jù)項b的寄存器的內(nèi)容,來執(zhí)行減法SUBn(A,b)。
最后,不恰當(dāng)?shù)卣f,但是為了清楚起見,相同的名稱將要用于談及寄存器及其內(nèi)容。從而寄存器A實際上指的是包含數(shù)據(jù)項A的寄存器。
總之,方法1執(zhí)行下列步驟-如果a<-SHLm+1(a,1)產(chǎn)生進位(σ=carry=1),那么這意味著am=1(在移位之前)并且因此必須從A中減去b。
-如果am+1=0(在移位之前)并且如果A<-SUBn(A,b)產(chǎn)生進位(carry=1),那么這意味著在減法之前A-bμ0并且因此必須從A中減去b。
-如果a<-SHLm+1(a,1)沒有產(chǎn)生進位并且如果A<-SUBn(A,b)也沒有產(chǎn)生進位(即如果在更新σ之后,σ為假(或﹁σ為TRUE)),那么這意味著在減法之前A-b<0,并且因此將不必從A中減去b。在這種情況下,所述方法執(zhí)行加法運算A<-ADDn(A,b)以便還原值A(chǔ)。
方法1易遭受隱蔽信道攻擊。這是因為,注意方法1在每次迭代中,依照值σ,即依照將要在當(dāng)前迭代期間獲得的商位值,來執(zhí)行或不執(zhí)行加法ADDn(A,b)。因此在迭代期間執(zhí)行操作的數(shù)目依照在所述迭代期間獲得的結(jié)果位而改變。然而,在每次迭代期間的電流消耗和/或每次迭代的持續(xù)時間依照執(zhí)行的操作數(shù)目而改變。通過測量并研究例如當(dāng)執(zhí)行方法時由組件留下的痕跡,那么可能逐位地確定結(jié)果位的值。
同樣已知用來執(zhí)行整數(shù)除法的另一方法是“紙/筆”方法的變式,被稱為“不復(fù)原”(不復(fù)原二進制除法算法,特別在J.J.F.Cavanagh,數(shù)字計算機算法中描述,McGraw-Hill公司,1984年)。
輸入a=(0,am-1,...,a0)b=(bn-1,...,b0)輸出q=a div b并且r=a mod bσ′<-1;A=(0,am-1,...,am-n+1)for j=1 to(m-n+1),doa<-SHLm+1(a,1);σ<-carryif(σ′=TRUE)then A<-SUBn(A,b)σ<-σOR carryif not A<-ADDn(A,b)σ<-σAND carryif(σ=TRUE)then lsb(a)=1σ′<-σ
End Forif(﹁σ=TRUE)then A<-ADDn(A,b)方法2與方法1相比較,所述方法使用新變量σ′來保存在先前迭代中獲得的值σ。這里,依照值σ,執(zhí)行加法或減法。換句話說,如果在迭代期間錯誤地從A中減去b,那么在后面的迭代期間,而不是像方法1一樣在當(dāng)前迭代的最后,來復(fù)原值A(chǔ)。
不管在迭代期間σ的值是多少,所述方法在每個迭代期間執(zhí)行相同數(shù)目的操作。然而該預(yù)防措施不足以保護所述方法免受隱蔽信道攻擊。這是因為,在每次迭代中,執(zhí)行移位運算a<-SHLm+1(a,1),繼而取決于值σ,進行加法A<-ADDn(A,b)或減法A<-SUBn(A,b)。
然而,減法的執(zhí)行比加法操作花費更久并且消耗更多的能量。這是因為,通常用于實現(xiàn)所述方法的計算裝置并不包括減法電路。通過首先計算b的2n的補,表示為b,然后把b加到A,加法的任何進位被存儲在變量進位中,來執(zhí)行減法操作。執(zhí)行減法的方法由下列事實證明根據(jù)b的定義,b+b=2n。因此,給出A-b=A+b-2n=A+bmod(2n),mod(2n)是模2n的簡寫。兩個操作,一個對2n求補的操作和一個加法操作,對執(zhí)行減法來說在實踐中是必需的。
由于已知的整數(shù)除法方法不能防止隱蔽信道攻擊,因此任何使用已知整數(shù)除法的加密方法不再能防止這種隱蔽信道攻擊。
另外,據(jù)統(tǒng)計,50%的由除法獲得的商位等于0,這意味著統(tǒng)計上所述方法補償減法兩個中就有一個執(zhí)行錯了。因此據(jù)統(tǒng)計,方法1的執(zhí)行時間是方法2的執(zhí)行時間的1.5倍。
鑒于當(dāng)前加密方法的問題,本發(fā)明的首要目的是一種新穎的執(zhí)行整數(shù)除法的方法,該方法受到免受隱蔽信道攻擊的保護。
本發(fā)明的附加目的是實行一種執(zhí)行時間非常短的整數(shù)除法的方法。
本發(fā)明的附加目的還是執(zhí)行整數(shù)除法的方法,在執(zhí)行期間只有包含原始數(shù)據(jù)項a的寄存器被修改,由商和結(jié)果代替,存儲器的任何其它寄存器(并且特別地是最初包含數(shù)據(jù)項b的寄存器)在所述方法執(zhí)行最后保持不變。
考慮該主要目標(biāo)和這些輔助目標(biāo),本發(fā)明提出一種加密方法,在所述加密方法期間執(zhí)行整數(shù)除法類型,q=a div b并且r=a mod b,a為m位的數(shù),b為n位的數(shù),n小于或等于m,并且bn-1不為零,bn-1是b的最高有效位,在該方法期間的每次迭代中,循環(huán)下標(biāo)i在1和m-n+1之間改變,執(zhí)行數(shù)a的n位字a除以數(shù)b的部分除法,以便獲得商位q。
依照本發(fā)明,在每次迭代中執(zhí)行相同的操作,而不管獲得的商位值是什么。
從而,采用依照本發(fā)明的方法,不再可能根據(jù)在執(zhí)行本發(fā)明方法期間留下的痕跡來確定結(jié)果位。
依照本發(fā)明方法的第一實施例,在每次迭代中,執(zhí)行向字A加上數(shù)b以及從字A中減去數(shù)b的操作。
照此第一實施例,優(yōu)選地是,所述方法包括所有下列步驟輸入a=(0,am-1,...,a0)b=(bn-1,...,b0)輸出q=a div b并且r=a mod bσ′<-1;A=(0,am-1,...,am-n+1)For j=1 to(m-n+1),doa<-SHLm1(a,1);σ<-carryA<-(σ′)SUBm+1(a,1)+(﹁σ′)ADDn(A,b)σ<-(σAND σ′)/(σAND carry)/(σ′AND carry)lsb(a)<-σσ′<-σEnd Forif (﹁σ)=TRUE) then A<-ADDn(A,b)在該實施例中,當(dāng)σ′等于1時上述變量進位指定由操作SUBn(A,b)產(chǎn)生的進位,而當(dāng)σ′等于0時指定由操作ADDn(A,b)產(chǎn)生的進位。
依照本發(fā)明方法的第二實施例,在每次迭代中,執(zhí)行把數(shù)b或所述數(shù)b的補數(shù)b與字A相加的操作。
優(yōu)選地是,在每次迭代期間,還依照所生成的商位來執(zhí)行更新第一變量(σ′),所述第一變量(σ′)表明在下列迭代期間,必須把數(shù)b還是數(shù)b加到字A上。
照此實施例,同樣優(yōu)選地是,所述方法包括所有下列步驟輸入a=(0,am-1,...,a0)b=(bn-1,...,b0)輸出q=a div b并且r=a mod bA=(0,am-1,...,am-n+1);σ′<-1;b<-CPL2n(b)For j=1 to(m-n+1),doa<-SHLm+1(a,1);σ<-carrydaddr<-baddr+σ′(baddr-baddr)A<-ADDn(A,d)σ′<-(σ′ANDσ′)/(σ′AND carry)/(σ′AND carry)lsb(a)<-σ′σ′<-σ′End Forif (﹁σ)=TRUE) then A<-ADDn(A,b)依照本發(fā)明方法的第三實施例,在每次迭代中,執(zhí)行更新的數(shù)據(jù)項(b或b)或概念數(shù)據(jù)項(c或c)對于2n的補的操作,繼而執(zhí)行把所述更新的數(shù)據(jù)項與字A相加的操作。
優(yōu)選地是,在每次迭代期間,還在每次迭代中進行依照所生成的商位來更新第二變量(δ),所述第二變量(δ)表明在下列迭代期間必須對所述更新的數(shù)據(jù)項還是對概念數(shù)據(jù)項執(zhí)行對于2n的補的操作。
同樣優(yōu)選地是,在每次迭代期間,還執(zhí)行更新第三變量(β),所述第三變量(β)表明所述更新的數(shù)據(jù)項是等于數(shù)b還是等于補數(shù)b。
照此實施例,同樣優(yōu)選地是,所述方法包括所有下列步驟輸入a=(0,am-1,...,a0)b=(bn-1,...,b0)輸出q=a div b并且r=a mod bσ′<-1;β<-1,γ<-1;A=(0,am-1,...,am-n+1)
for j=1 to(m-n+1),doa<-SHLm+1(a,1);σ<-carryδ′<-σ′/βdaddr<-baddr+δ′(caddr-baddr)d<-CPL2n(d)A<-ADDn(A,b)σ′<-(σ′AND σ′)/(σ′AND carry)/(σ′ANDcarry)β<-﹁σ;γ<-γ/δ′;σ′<-σ′lsb(a)=σ′end forif(﹁β=TRUE)then b<-CPL2n(b)if(﹁γ=TRUE)then c<-CPL2n(c)if(﹁σ=TRUE)then A<-ADDn(A,b)本發(fā)明還涉及一種包括計算裝置的電子組件,所述計算裝置被編程來實現(xiàn)如上所述的方法,所述計算裝置特別包括與存儲器相關(guān)聯(lián)的中央單元,所述存儲器包括用于存儲數(shù)據(jù)a和b的幾個寄存器。
最后,本發(fā)明還涉及一種包括上述集成電路的芯片卡。
通過閱讀依照本發(fā)明整數(shù)除法方法的示例性實施例的下列描述,將能更好地理解本發(fā)明并且其它特性和優(yōu)點將顯而易見。
在本發(fā)明實施方式的第一例子中,通過消除方法2的測試操作(如果(if)...那么(then)...否則(otherwise)...類型)并且因此消除它們存在的結(jié)果,來實現(xiàn)防止隱蔽信道攻擊。
依照本發(fā)明,在方法2中,由下列三個步驟來代替步驟如果...那么...否則A<-σ′SUBn(A,b)+(﹁σ′(ADDn(A,b)σ<-(σANDσ′)/σAND carry)/σ′AND carry)lsb(a)<-σ采用這種方法獲得依照本發(fā)明的下列方法輸入a=(0,am-1,...,a0)b=(bn-1,...,b0)
輸出q=a div b并且r=a mod bA=(0,am-1,...,am-n+1);σ′<-1For j=1 to(m-n+1),doa<-SHLm+1(a,1);σ<-carryA<-(σ′)SUBn(A,b)+(﹁σ′)ADDn(A,b)σ<-(σ′ANDσ′)/(σ′AND carry)/(σ′AND carry)lsb(a)<-σ′σ′<-σEnd forif(﹁σ=TRUE)then A<-ADDn(A,b)方法3由于方法3根據(jù)相同的輸入數(shù)據(jù)a和b會生成相同的結(jié)果,所以其等價于方法2。這是因為在方法2中,當(dāng)σ′=1時,執(zhí)行操作A<-SUBn(A,b),而當(dāng)σ′=0時,執(zhí)行操作A<-ADDn(A,b)。由于σ=﹁(﹁σ′),所以同樣應(yīng)用于方法3。此外在方法2中,當(dāng)σ′=1時,執(zhí)行操作σ<-σ OR carry,而當(dāng)σ′=0時,執(zhí)行操作σ<-σAND carry。這可以按下列形式寫成σ<-(σ′)(σOR carry)+(﹁σ′)(σAND carry),其在邏輯上等價于σ<-(σ AND σ′)/(σ AND carry)/(σ′ AND carry)最后,在方法2中,通過執(zhí)行操作a<-SHLm+1(a,1),把a的最低有效位固定為0(換句話說lsb(a)=0),繼而在當(dāng)前迭代最后,如果σ=1,那么執(zhí)行操作lsb(a)=1,否則,如果σ=0,那么不修改lsb(a)。因此可以由操作lsb(a)=σ來容易地替換操作{if σ=1,then lsb(a)+1},而不管σ的值是什么。
方法3不等同于方法2,但是對于隱蔽信道攻擊還比較安全。這是因為所述方法不包含類型為如果...那么...否則的測試操作,并且在每次迭代中執(zhí)行相同的操作,而不管在迭代期間所使用的輸入數(shù)據(jù)位和/或所獲得的結(jié)果位。因此,不可能根據(jù)由組件留下的痕跡來分離各個迭代,并且確定輸入數(shù)據(jù)位和/或輸出數(shù)據(jù)位。
在本發(fā)明的實施方式的第二例子中,通過另外限制所述方法的執(zhí)行時間來修改依照本發(fā)明的方法3。
正如先前所看到那樣,為了執(zhí)行減法操作A<-SUBn(A,b),在實踐中執(zhí)行數(shù)b對于2n的補的操作b=CPL2n(b),繼而執(zhí)行類型A<-ADDn(A,b)的加法操作。
這意味著對于方法3,在每次迭代中除加法操作A<-ADDn(A,b)或A<-ADDn(A,b)之外,執(zhí)行對于2n的補的操作。
為了減少執(zhí)行時間,對2n的補b<-CPL2n(b)的操作次數(shù)進行了限制,輔助存儲空間在所述方法開始時用來存儲值b。那么足以把b加到A以便實現(xiàn)A<-SUBn(A,b),或者把b加到A以便實現(xiàn)A<-ADDn(A,b)。這還使按照迭代執(zhí)行單個加法操作成為可能,以便執(zhí)行速度得到進一步提高。
這里兩個寄存器b和b是用來分別存儲數(shù)據(jù)b和b,并且具有地址baddr和baddr。在給定的迭代期間,其內(nèi)容被加到寄存器A的內(nèi)容的那個寄存器稱作d,并且其地址稱作daddr。在實踐中,在每次迭代中,寄存器d是包含b的寄存器或是包含b的寄存器。如在方法3中,使用變量σ′來保存在給定迭代期間發(fā)生的痕跡,并且用來確定在下列迭代中必須執(zhí)行加法還是減法。通過把全部組合到一起,最后獲得下列方法4輸入a=(0,am-1,...,a0)b=(bn-1,...,b0)輸出q=a div b并且r=a mod bA=(0,am-1,...,am-n+1);σ′<-1;b <-CPL2N(b)For j=1 to(m-n+1),doa<-SHLm+1(a,1);σ<-carrydaddr<-baddr+σ′(baddr-baddr)A<-ADDn(A,d)σ<-(σ′ANDσ′)/(σ′AND carry)/(σ′AND carry)lsb(a)<-σσ′<-σEnd Forif(﹁σ=TRUE)then A<-ADDn(A,b)
方法4在本發(fā)明的實施方式的第三例子中,通過限制用于實現(xiàn)所述方法的存儲空間,來修改依照本發(fā)明的方法4。
為此,代替初始值b,把b的補值b,操作CPL2n(b)的結(jié)果存儲在相同的寄存器中。從而通過在相同的寄存器中用b的補b來替換b,繼而將其加到所述寄存器的內(nèi)容A來執(zhí)行減法操作。
另外,避免不必要的值b的計算(這是當(dāng)兩個連續(xù)的迭代j和j+1都使用了相同加法時的情況,如A<-A+b或A<-A+b)。為此,當(dāng)不必替換最初包含b的寄存器的內(nèi)容時(即當(dāng)兩個連續(xù)的迭代使用b或b時),使用另一寄存器c,由其對于2n的補來代替其無關(guān)的或概念的內(nèi)容。在實踐中,寄存器c是存儲器的任一寄存器,具有與包含b的寄存器相同的大小,但是不同于最初包含a或b的寄存器。還可以使用寄存器c來執(zhí)行其它操作。在本發(fā)明方法的最后,寄存器c包含其初始值,即在執(zhí)行本方法之前所具有的值。寄存器c的內(nèi)容的初始值是完全無關(guān)的,這是由于該值實際上并未用于依照本發(fā)明方法的上下文。
把項daddr給予包含下述值的寄存器的地址,所述值在當(dāng)前迭代期間將要由其對于2n的補代替如果最初包含b的寄存器的內(nèi)容必須對于2n求補,那么daddr是baddr,否則的話就是caddr,把項d給予其地址是daddr的寄存器的內(nèi)容。
還使用變量β和γ來保存在位于地址baddr和caddr的寄存器中包含的值狀態(tài)的痕跡。該狀態(tài)是原始值或是原始值對于2n的補。當(dāng)位于地址baddr(或相應(yīng)地caddr)的值是原始值時,選擇β=1(或相應(yīng)地γ=1),而當(dāng)位于地址baddr(或相應(yīng)地caddr)的值是所述原始值對于2n的補時,選擇β=0(或相應(yīng)地γ=0)。使用變量σ′來保存在先前迭代中變量σ值的痕跡。如前所述,σ′=0意味著在先前迭代中執(zhí)行了不必要的減法(A<-SUBn(A,b)=ADDn(A,b)),而在當(dāng)前迭代期間必須執(zhí)行加法操作A<-ADDn(A,b)以便補償。反之,σ′=1意味著在先前迭代期間錯誤地沒有執(zhí)行減法,而且在當(dāng)前迭代期間必須執(zhí)行減法。
獲得下列真值表
先前值更新值σ′ β γβ γ00 0 1 000 1 1 101 0 1 101 1 1 010 0 0 110 1 0 011 0 0 011 1 0 1據(jù)此導(dǎo)出下式β<-﹁σ′γ<-γ/σ′/β通過把全部組合到一起,最后獲得下列方法5輸入a=(0,am-1,...,a0)b=(bn-1,...,b0)輸出q=a div b并且r=a mod bσ′<-1;β<-1,γ<-1;A=(0,am-1,...,am-n+1)for j=1 to(m-n+1),doa<-SHLm+1(a,1);σ<-carryδ<-σ′/βdaddr<-baddr+δ(caddr-baddr)d<-CPL2n(d)A<-ADDn(A,b)σ<-(σAND σ′)/(σAND carry)/(σ′AND carry)β<-﹁σ′;γ<-γ/δ;σ′<-σlsb(a)=σend forif(﹁β=TRUE)then b<-CPL2n(b)if(﹁γ=TRUE)then c<-CPL2n(c)if(﹁σ=TRUE)then A<-ADDn(A,b)
方法5概括地說,與執(zhí)行相同操作的其它已知方法相比較,本發(fā)明的實質(zhì)優(yōu)點是它對于隱蔽信道攻擊是安全的,并且特別是SPA類型的攻擊。另外,為了實現(xiàn)它,依照本發(fā)明的方法與已知的無保護的整數(shù)除法方法相比不要求更多資源(特別是就執(zhí)行時間和存儲空間而言)。
權(quán)利要求
1.一種加密方法,在所述加密方法期間執(zhí)行類型為q=a div b和r=a mod b的整數(shù)除法,其中q為商,a為m位的數(shù),b為n位的數(shù),n小于或等于m,并且bn-1不為零,bn-1是b的最高有效位,在該方法期間的每次迭代中,循環(huán)下標(biāo)i在1和m-n+1之間改變,執(zhí)行數(shù)a的n位字A除以數(shù)b的部分除法,以便獲得商q的位,所述方法其特征在于在每次迭代中執(zhí)行相同的操作,而不管獲得的商位值是多少。
2.如權(quán)利要求1所述的方法,在所述方法期間的每次迭代中,執(zhí)行了把數(shù)b加到字A的一個加法以及從字A減去數(shù)b的一個減法。
3.如權(quán)利要求1到2之一所述的方法,在所述方法期間執(zhí)行所有下列步驟輸入a=(0,am-1,...,a0)b=(bn-1,...,b0)輸出q=a div b并且r=a mod bA=(0,am-1,...,am-n+1);σ′<-1For j=1 to (m-n+1),doa<-SHLm+1(a,1);σ<-carryA<-(σ′)SUBn(A,b)+(σ′)ADDn(A,b)σ<-(σ′ANDσ′)/(σ′AND carry)/(σ′AND carry)lsb(a)σ′σ′<-σEnd Forif (σ=TRUE)then A<-ADDn(A,b)
4.如權(quán)利要求1所述的方法,在所述方法期間的每次迭代中,執(zhí)行把數(shù)b或所述數(shù)b的補數(shù)b與字A相加的操作。
5.如權(quán)利要求4所述的方法,在所述方法期間的每次迭代中,還進行更新第一變量(σ′),其表明在以下迭代期間,依照生成的商位(lsb(a))必須是把數(shù)b還是把數(shù)b加到字A上。
6.如權(quán)利要求4或5所述的方法,在所述方法期間執(zhí)行所有以下步驟輸入a=(0,am-1,...,a0)b=(bn-1,...,b0)輸出q=a div b并且r=a mod bA=(0,am-1,...,am-n+1);σ′<-1;b<-CPL2N(b)For j=1 to(m-n+1),doa<-SHLm+1(a,1);σ<-carrydaddr<-baddr+σ′(baddr-baddr)A<-ADDn(A,d)σ<-(σ′ANDσ′)/(σ′AND carry)/(σ′AND carry)lsb(a)<-σ′σ′<-σEnd Forif(σ=TRUE)then A<-ADDn(A,b)
7.如權(quán)利要求1所述的方法,在所述方法期間的每次迭代中,執(zhí)行更新的數(shù)據(jù)項(b或b)或概念數(shù)據(jù)項(c或c)對于2n的補的操作,繼而執(zhí)行將所述更新的數(shù)據(jù)項加到字A的操作。
8.如權(quán)利要求7所述的方法,在所述方法期間的每次迭代中,還執(zhí)行更新第二變量(δ)的操作,所述第二變量(δ)表明在以下迭代期間是對于更新的數(shù)據(jù)項還是概念數(shù)據(jù)項執(zhí)行對于2n的補的操作。
9.如權(quán)利要求7或8之一所述的方法,其中在每次迭代中,還執(zhí)行更新第三變量(β),其表明所述更新的數(shù)據(jù)項是等于數(shù)據(jù)項b還是等于b對于2n的補。
10.如權(quán)利要求7到9之一所述的方法,在所述方法期間,還執(zhí)行所有以下步驟輸入a=(0,am-1,...,a0)b=(bn-1,...,b0)輸出q=a div b并且r=a mod bσ′<-1;β<-1,γ<-1;A=(0,am-1,....,am-n+1)for j=1 to(m-n+1),doa<-SHLm+1(a,1);σ<-carryδ<-σ′/βdaddr<-baddr+δ(caddr-baddr)d<-CPL2n(d)A<-ADDn(A,b)σ<-(σANDσ′)/(σAND carry)/(σ′AND carry)β<-σ′;γ<-γ/δ;σ′<-σlsb(a)=σend forif (σ=TRUE)then A<-ADDn(A,b)
11.如權(quán)利要求10所述的方法,在所述方法期間,最后執(zhí)行以下操作if(β=TRUE)then b<-CPL2n(b)if(γ=TRUE)then c<-CPL2n(c)
12.一種包括計算裝置的電子組件,所述計算裝置被編程來實現(xiàn)如權(quán)利要求1到11之一所述的方法,所述計算裝置特別包括與存儲器相關(guān)聯(lián)的中央單元,所述存儲器包括用于存儲數(shù)據(jù)a和b的幾個寄存器。
13.一種包括如權(quán)利要求12所述的集成電路的芯片卡。
全文摘要
本發(fā)明涉及一種加密方法,包括類型為q=a div b和r=a mod b的整數(shù)除法,其中q為商,a為m位的數(shù),b為n位的數(shù),n小于或等于m,并且b
文檔編號H04L9/30GK1739094SQ200380108764
公開日2006年2月22日 申請日期2003年11月13日 優(yōu)先權(quán)日2002年11月15日
發(fā)明者M·若耶, K·比列加斯 申請人:格姆普拉斯公司