專利名稱:用于執(zhí)行有效率的抗側(cè)信道攻擊的簡化的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
此公開涉及公共密鑰密碼術(shù),具體來說涉及抗側(cè)信道(Side-channel)攻擊的公 共密鑰密碼術(shù)中使用的模簡化(modularreduction)。
背景技術(shù):
公共密鑰密碼術(shù)通常應(yīng)用于因特網(wǎng)上的保密通信,例如以分布密碼算法中使用的 秘密密鑰。公共密鑰密碼術(shù)還應(yīng)用于數(shù)字簽名以對數(shù)據(jù)的來源進(jìn)行認(rèn)證并保護(hù)該數(shù)據(jù)的完 整性。常用的公共密鑰算法包括Rivert、Shamir、Aldeman (RSA)和Diffie-Hellman密鑰交 換(DH)。公共密鑰算法可以用于對用于加密算法的密鑰進(jìn)行認(rèn)證,這些算法例如數(shù)據(jù)加密 標(biāo)準(zhǔn)(DES)和高級加密標(biāo)準(zhǔn)(AES)。RSA和DH提供基于數(shù)論的使用的安全性。RSA基于對兩個大質(zhì)數(shù)的積進(jìn)行因式分 解。DH基于用于有限群的離散對數(shù)。通常,公共密鑰系統(tǒng)為RSA和DH使用1024位參數(shù)。通常,處理器包括公共密鑰加密(PKE)單元,其執(zhí)行具有非常高性能的密碼計算。 PKE單元將大的模取冪(modular exponentiation)問題加速,并經(jīng)優(yōu)化以與512至4096位 的范圍中的操作數(shù)一起來工作。為了提供高性能,使用可變數(shù)量的運(yùn)算來執(zhí)行這些運(yùn)算。側(cè)信道攻擊是一種基于 從密碼系統(tǒng)的物理實現(xiàn)來獲得的能用于學(xué)習(xí)機(jī)密密鑰的信息的攻擊。例如,該信息可以是 時序信息或功耗。功率監(jiān)視攻擊是一種使用計算期間裝置的變化的功耗的攻擊。時序攻擊 是一種基于測量處理不同輸入(例如,由于性能優(yōu)化以繞過非必需的運(yùn)算、分支、高速緩存 存儲器和在非固定時間中運(yùn)行的運(yùn)算(例如相乘和相除))要花費(fèi)多長時間的攻擊。而且, 通過觀察到/自存儲器或到/自處理器的數(shù)據(jù)移動并測量傳輸與密鑰關(guān)聯(lián)的信息花費(fèi)多久 來確定密鑰也是可能的。一種防止側(cè)信道時序攻擊的已知方法是將程序設(shè)計成使得它是等時的,即因此它 在常量的時間量中運(yùn)行,而獨(dú)立于機(jī)密密鑰值。但是,這導(dǎo)致性能上的顯著損失。
發(fā)明內(nèi)容
本發(fā)明提供一種方法,包括存儲由折疊運(yùn)算的結(jié)果產(chǎn)生的折疊進(jìn)位位的狀態(tài),所 述折疊運(yùn)算將a位數(shù)A簡化到b位數(shù)B ;以及使用所述折疊進(jìn)位位的所存儲的狀態(tài)來檢索預(yù) 先計算的常數(shù),所述預(yù)先計算的常數(shù)與相對于A的所述折疊進(jìn)位位的位置和所述折疊進(jìn)位 位的狀態(tài)對應(yīng),所述預(yù)先計算的常數(shù)用于以時間不變方式將所述b位數(shù)B模m簡化到r位 結(jié)果R。本發(fā)明還提供一種設(shè)備,包括存儲器,存儲由折疊運(yùn)算的結(jié)果產(chǎn)生的進(jìn)位位的狀 態(tài),所述折疊運(yùn)算將a位數(shù)A簡化到b位數(shù)B ;查詢表,存儲預(yù)先計算的常數(shù),所述預(yù)先計算 的常數(shù)對應(yīng)于相對于A的所述進(jìn)位位的位置和所述進(jìn)位位的狀態(tài);以及執(zhí)行以下操作的邏 輯使用所述進(jìn)位位的所存儲的狀態(tài)從所述查詢表檢索所述預(yù)先計算的常數(shù),并使用所檢 索的預(yù)先計算的常數(shù)以時間不變方式將b位數(shù)B模m簡化到r位結(jié)果R。
本發(fā)明還提供一種其上存儲有指令的計算機(jī)可讀存儲媒體,其中所述指令在被訪 問時導(dǎo)致執(zhí)行存儲由折疊運(yùn)算的結(jié)果產(chǎn)生的進(jìn)位位的狀態(tài),所述折疊運(yùn)算將a位數(shù)A簡化 到b位數(shù)B ;以及使用所述進(jìn)位位的所存儲的狀態(tài)來檢索預(yù)先計算的常數(shù),所述預(yù)先計算的 常數(shù)與相對于A的所述進(jìn)位位的位置和所述進(jìn)位位的狀態(tài)相對應(yīng),所述預(yù)先計算的常數(shù)用 于以時間不變方式將所述b位數(shù)B模m簡化到r位結(jié)果R。
隨著下文的詳細(xì)描述進(jìn)行以及通過參考附圖,要求權(quán)利的發(fā)明主題的實施例的特 征將變得顯而易見,附圖中,相似的數(shù)字示出相似的部分,其中圖1是包括抗側(cè)信道攻擊的公共密鑰加密模塊的一實施例的系統(tǒng)的框圖;圖2是示出圖1中所示的公共密鑰加密模塊中的模塊的框圖;圖3示出一種通過將數(shù)X折疊(fold)成更小的數(shù)X2來減少模簡化的計算成本的 方法;圖4示出一種根據(jù)本發(fā)明的原理的用于執(zhí)行側(cè)信道安全的Barrett簡化的方法的 一實施例;圖5示出一種根據(jù)本發(fā)明的原理的用于執(zhí)行側(cè)信道安全的修改的Montgomery簡 化的方法的一實施例;圖6是基于進(jìn)位標(biāo)志的值的用于在時間不變的軟件例程(其是側(cè)信道安全的)中 使用的常量時間掩碼的減法(constant time maskedsubtract)的流程圖。圖7是示出如何將查詢表中存儲的數(shù)據(jù)存儲在數(shù)據(jù)高速緩存中以避免基于高速 緩存的攻擊的一實施例的框圖;以及圖8示出一種用于訪問表中的值以避免泄漏基于高速緩存的側(cè)信道信息的方法 的一實施例。雖然下文具體實施方式
將參考要求權(quán)利的主題的說明性實施例來繼續(xù),但是本領(lǐng) 域技術(shù)人員將明白這些實施例的許多備選方案、修改和變化。因此,要求權(quán)利的主題旨在從 廣義地來看待,并且僅由所附的權(quán)利要求中所陳述的來定義。
具體實施例方式程序可能將至關(guān)重要信息泄漏給對事件定時序的間諜進(jìn)程。這些定時序的事件包 括分支誤預(yù)測和高速緩存行(cache line)未命中。如果這些定時序的事件是數(shù)據(jù)依賴的, 并且更確切來說依賴于密碼算法中使用的密鑰的值,則通過觀察程序的時序中的變化,間 諜進(jìn)程能復(fù)原有關(guān)密鑰的部分或甚至全部信息。在例如RSA或DH的協(xié)議中,主要運(yùn)算是用范圍在512至4096位(對于超安全應(yīng)用 或許更高)的操作數(shù)的大的模取冪。因為許多處理器具有僅32或64位的先天的字大小, 所以使用模算術(shù)來避免與大操作數(shù)一起工作。在模算術(shù)中,運(yùn)算的結(jié)果是0與模(M)之間的范圍中的數(shù)(N)。數(shù)N與X(mod Y) 同余,其中N是X除以Y之后的余數(shù),例如,如果X = 7且Y = 3,N = 7(mod 3) = 1,即當(dāng)7 除以3時余數(shù)是1,因此N= 1與7(mod 3)同余。取冪算術(shù)可以執(zhí)行重復(fù)的模平方(modular squaring)或相乘運(yùn)算,其由其后跟隨模簡化的相乘運(yùn)算來組成。模簡化可以通過多種技術(shù)(例如,Montgomery簡化或Barrett 的簡化)來執(zhí)行。但是,因為這些模簡化技術(shù)不是抗側(cè)信道攻擊的,所以間諜進(jìn)程可以復(fù)原 有關(guān)密鑰的信息。圖1是包括抗側(cè)信道攻擊的公共密鑰加密模塊108的一實施例的系統(tǒng)100的框 圖。系統(tǒng)100包括處理器101、存儲器控制器集線器(Controller Hub) (MCH) 102和輸入/ 輸出(I/O)控制器集線器(ICH) 104。MCH 102包括控制處理器101與存儲器110之間的通 信的存儲器控制器106。處理器101和MCH 102通過系統(tǒng)總線116來通信。處理器101可以是多種處理器中的任何一種,例如單核Intel PentiumIV 處理器、單核Intel Celeron處理器、Intel XScale處理器,或多核處理器,例如 Intel Pentium D、Intel Xeon 處理器或Intel Core Duo處理器或任何其他類 型的處理器。存儲器110可以是動態(tài)隨機(jī)存取存儲器(DRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM)、同 步動態(tài)隨機(jī)存取存儲器(SDRAM)、雙數(shù)據(jù)速率2 (DDR2) RAM或Rambus動態(tài)隨機(jī)存取存儲器 (RDRAM)或任何其他類型的存儲器??梢允褂酶咚傩酒叫酒ミB114(例如直接媒體接口(DMI))將ICH 104耦合到 MCH 102。DMI支持經(jīng)由兩個單向通道(lane)的2吉位/秒的同時傳輸速率。ICH 104可包括存儲輸入/輸出(1/0)控制器,其用于控制與耦合到ICH 104的至 少一個存儲裝置112的通信。存儲裝置可以是例如,磁盤驅(qū)動器、數(shù)字視頻光盤(DVD)驅(qū)動 器、光盤(⑶)驅(qū)動器、獨(dú)立磁盤的冗余陣列(RAID)、磁帶驅(qū)動器或其他存儲裝置。ICH 104 可以使用串行存儲協(xié)議通過存儲協(xié)議互連118與存儲裝置112通信,所述串行存儲協(xié)議例 如串行附連小計算機(jī)系統(tǒng)接口(SAS)或串行高級技術(shù)附連(SATA)??梢詫⒖箓?cè)信道攻擊的公共密鑰加密模塊120存儲在存儲器108中。公共密鑰加 密模塊120包括由CPU 101執(zhí)行以執(zhí)行公共密鑰加密的處理器指令。在一實施例中,CPU 101是包括X86指令集的高性能處理器核。圖2是示出圖1中所示的公共密鑰加密模塊120中的模塊的框圖。公共密鑰加密模塊I08包括執(zhí)行密碼運(yùn)算的指令。如圖所示,公共密鑰加密模塊 108包括模乘(modular multiplication)模塊202和模簡化模塊204。例如,CPU 101可 以向公共密鑰加密模塊108發(fā)出命令以對存儲器206中存儲的g、e和M值執(zhí)行模取冪。在 一實施例中,公共密鑰加密模塊108中的模乘模塊202包括指令,所述指令在被CPU 101執(zhí) 行時執(zhí)行Karatsuba算法所使用的相乘運(yùn)算以產(chǎn)生中間結(jié)果,中間結(jié)果被轉(zhuǎn)發(fā)到模簡化模 塊204。模簡化模塊204包括指令,所述指令在被CPU 101執(zhí)行時對該中間結(jié)果執(zhí)行根據(jù)本 發(fā)明的原理的模簡化技術(shù),其是抗側(cè)信道攻擊的。在一實施例中,對于512位數(shù)A、B和m,計算結(jié)果r = (A*B)modm。由于操作數(shù)大 小上的限制,一次對512位數(shù)的一部分執(zhí)行數(shù)學(xué)運(yùn)算(相乘、相加/相減)。在一實施例中, 操作數(shù)大小是128位。在另一個實施例中,操作數(shù)大小是256位。首先計算X = A*B。在一個實施例中,使用Karatsuba算法來為兩個512位數(shù)(A、 B)計算X(1024位數(shù))。Karatsuba算法是用于將大數(shù)相乘的公知算法。將這些操作數(shù)分 段,并對更小的段執(zhí)行相乘運(yùn)算。例如,能將η-位數(shù)A和B表示為更小大小的段的集合(二 項多項式),A(X) = (alX+a0)和B(x) = (blX+bQ),其中a0b0表示A和B的最低有效位以及表示最高有效位。Karatsuba算法使用三個標(biāo)量相乘將這兩個二項多項式(A(x) = (alX+a0)和B (χ) =(blX+b0))相乘,這兩個二項多項式各具有兩個系數(shù)(( ,%)和O^btl)),如下所示X (χ) = (ap+a。)(V+b。) = B1Id1X2+ ((aja》(Vb1) -B0Va1ID1) +a0b0因此,使用Karatsuba算法,要求四次相加和三次相乘來計算將兩個二項多項式 (Α,Β)相乘的結(jié)果X(x)。Karatsuba算法還可以用于使用六次標(biāo)量相乘而不是九次相乘來 將兩個三項多項式相乘。計算了中間結(jié)果X,執(zhí)行模簡化以根據(jù)本發(fā)明的原理相對于模量m來簡化X。圖3示出一種通過將數(shù)X折疊成更小的數(shù)X2來減少模簡化的計算成本的方法。首 先將數(shù)X折疊成更小的數(shù)XI,使得X mod m與Xlmod m相同(同余)。如先前討論的,如果 將X除以M之后的余數(shù)與將Xl除以M之后的余數(shù)相同,則數(shù)X與數(shù)Xl同余。然后將數(shù)Xl 折疊成更小的數(shù)X2,使得X mod m與Xlmod m相同(同余)。然后對更小的數(shù)X2執(zhí)行模簡 化。參考圖3,數(shù)X具有1024位的寬度。第一“折疊”運(yùn)算從X生成Xl。如所示的,第 一折疊在折疊點(diǎn)π處進(jìn)行,此折疊點(diǎn)將X描繪成XH和XL。在所示的實施例中,對于具有 512位的模量(m),即X具有2*size0f(m)位(1024位),第一折疊點(diǎn)選取成落在模量的長度 (512)和N的長度(1024)的中點(diǎn)(768)。在所示的示例中,其中m具有512位以及X具有1024位。用于第一 “折疊”運(yùn)算 (第一迭代)的折疊點(diǎn)fl是21· 5^fw,即2768,并且用于第二“折疊”運(yùn)算(第二迭代)的 折疊點(diǎn) f2 是 Z1·25^^),即 264°?;诘谝徽郫B點(diǎn),能將Xl確定為Xl = XH*2fl mod m+XL并且基于第二折疊點(diǎn),能將X2確定為X2 = Xlh*2f2mod m+Xll然后能使用由第二折疊運(yùn)算得到的更小的X2數(shù)來執(zhí)行模簡化,例如使用Barrett 簡化或Montgomery簡化。通過以第一折疊點(diǎn)將X(1024位數(shù))分成兩個段來執(zhí)行第一“折疊”運(yùn)算300,選擇 第一折疊點(diǎn)使得X的最高有效256位在高階位段(XH)中而X的最低有效768位在低階位 段(XL)中。接下來,計算Ml( = 2768mod m,已預(yù)先計算的512位數(shù))與XH的乘積。XH*M1 的乘積是768位數(shù)。在一實施例中,使用兩次256位*256位相乘(用256位XH和512位 Ml的低階256位的第一相乘以產(chǎn)生第一 512位部分結(jié)果以及用256位XH和512位Ml的高 階256位的第二相乘以產(chǎn)生第二 512位部分結(jié)果)和一次相加(以提供768位的結(jié)果,其 是按256位移位的第二 512位結(jié)果和第一 512位部分結(jié)果之和)來計算該乘積。接下來,將XH*M1的768位結(jié)果加到XL。因為XL是768位數(shù),所以結(jié)果將最多是 769位,這依賴于是否有進(jìn)位。如果Xl是769位數(shù),則設(shè)置進(jìn)位標(biāo)志并丟棄第769位,這實 質(zhì)上執(zhí)行運(yùn)算Xl =Χ1-2768。對768位Xl執(zhí)行第二折疊運(yùn)算302以提供640位的X2。如所示的,第二折疊在 折疊點(diǎn)f2處進(jìn)行,其將Xl描繪成Xlh(XI的128個最高有效位)和X11(X1的640個最低 有效位)。接下來,計算M2 ( = 2640mod m,已預(yù)先計算的512位數(shù))與Xlh的乘積。Xlh*M2
7的乘積是640位數(shù)。在一實施例中,乘積Xlh*M2用四次128位*128位相乘和一次512位相加來計算, 從而給出640位結(jié)果。Xll也是640位數(shù)。接下來,將Xlh*M2的640位結(jié)果加到XII。因 為Xll是640位數(shù),所以結(jié)果將最多是641位,這依賴于是否有進(jìn)位。如果X2是641位數(shù), 則設(shè)置進(jìn)位標(biāo)志并丟棄第641位,這實質(zhì)上執(zhí)行運(yùn)算X2 = X2-2_。累積的中間值(XI、X2)的大小能夠是奇數(shù)大小的矢量,其要求兩個折疊運(yùn)算的每 個運(yùn)算中的特殊處理。此特殊處理是繁瑣的,并且尤其是在要求分支不變時間時導(dǎo)致性能 損失。例如,在每次“折疊”運(yùn)算之后處理進(jìn)位具有依賴于進(jìn)位的狀態(tài)(‘1’或‘0’)的不 同執(zhí)行時間。為了進(jìn)行進(jìn)位側(cè)信道安全的處理,在一實施例中,通過執(zhí)行進(jìn)位位的惰性評估 來避免進(jìn)位的特殊處理。在第一折疊運(yùn)算期間,計算了 Xl =XH*M1+XL之后,保存最后的進(jìn) 位(2768)并在第二折疊運(yùn)算中使用Xl的768位最低有效位(LSB)。在第二折疊運(yùn)算中,計 算了 X2 = Xlh*M2+Xll之后,保存最后的進(jìn)位(2_)。在一實施例中,能使用單個寄存器來 存儲來自這兩次折疊運(yùn)算的每次運(yùn)算的相應(yīng)進(jìn)位位(2768,264°)。在這兩次折疊運(yùn)算之后,對更小的X2數(shù)(640位)執(zhí)行最后簡化以提供512位數(shù) (結(jié)果)。在一個實施例中,使用Barrett簡化來執(zhí)行最后簡化。在另一個實施例中,使用 Montgomery簡化來執(zhí)行最后簡化。Barrett簡化是一種用于簡化第一數(shù)(具有2k位,例如1024)模第二數(shù)(具有 k位,例如512)的已知方法。已知2k位第一數(shù)的k個最低有效數(shù)字對于計算結(jié)果不是必 需的,使用預(yù)先計算的常數(shù)μ = floor (b2k/m),僅部分多精度相乘(multiple-precision multiplication)是必需的,其中b是基數(shù)。如果b是2,則k是第二數(shù)和第一數(shù)中的位的數(shù)量。一實施例使用修改的Barrett簡化算法,其示出如下R = X2-m*floor (( μ *Χ2Η) /2128)While (R >= m){R = R-m ;}其中μ = floor (2640/m),129 位預(yù)先計算的數(shù)。X2H 是 X2 的高 128 位。執(zhí)行兩次相乘運(yùn)算以計算結(jié)果R。第一相乘運(yùn)算(μ *Χ2Η)將129位數(shù)(μ )與128 位數(shù)(Χ2Η)相乘以提供257位數(shù),將其除以2128以提供129位中間結(jié)果R'。第二相乘運(yùn)算 (m*R')將129位數(shù)(R')乘以512位數(shù)(m)以提供640位數(shù)。當(dāng)從X2減去該640位數(shù) 時,剩余數(shù)小于541位,并能用小次數(shù)的模量m的重復(fù)減法來簡化。在(用于處理具有偶數(shù) 個位的操作數(shù)的)標(biāo)準(zhǔn)處理器上處理129位數(shù)(操作數(shù))中的附加位是繁瑣的。使用Barrett簡化將640位X2簡化到512位剩余數(shù)R。在一實施例中,將129位操 作數(shù)轉(zhuǎn)換成128位操作數(shù)來改進(jìn)相乘運(yùn)算的性能。然后使用128位操作數(shù)來執(zhí)行Barrett 簡化。圖4是一種根據(jù)本發(fā)明的原理用于執(zhí)行是側(cè)信道安全的Barrett簡化的方法的流 程圖。在框400,通過將129位常數(shù)(μ )向右移位一個位并丟棄該129位數(shù)的最低有效位來將該129位數(shù)(μ )轉(zhuǎn)換成128位數(shù)(μ ‘)。例如,將129位數(shù)μ = (floor (2640/m)) 替換為128位μ ‘ = (floor (2640/m) >> 1)。處理通過框402繼續(xù)。在框402,為了補(bǔ)償μ ‘的一個位移位,通過將(m*floor((y ‘ *X2H)/2128))乘以 2來進(jìn)一步修改修改的Barrett的算法,如下所示T2 = 2* (m*floor (( μ,*Χ2Η) /2128))這能重新寫為兩個乘積的組合Τ2 = (2*m) *T其中T = floor (( μ,*Χ2Η) /2128))T = floor ((μ,*X2H)/2128)導(dǎo)致將(μ *X2H)/2128)的結(jié)果向左移位一位以補(bǔ)償早 前的一位向右移位。但是,此移位運(yùn)算不復(fù)原μ的丟掉的最低有效位的狀態(tài),這不影響最 終結(jié)果。T通過將μ乘以128位值來構(gòu)建。忽略μ的LSB僅對T的值影響非常小的量。 例如,作為值T的替代,該值能夠是T-I。在框404,計算Μ3= (2*m)mod 2512。為了計算M3,將512位模量向左移位一位,并 將512個最低有效位(LSB)作為M3來存儲。丟棄最高有效位(MSB),但是未“丟失”該值, 因為模量的MSB的總是設(shè)置為'1'。處理通過框406繼續(xù)。將T乘以(2*m)以提供T2使用偶數(shù)大小的操作數(shù)。首先,將128位T與512位M3 相乘,以提供中間乘積T3。然后,將T3加到(T<<512)。處理通過框408繼續(xù)。在框408,從Χ2減去Τ2以提供當(dāng)前結(jié)果R(R = X2-T2)。處理通過框401繼續(xù)。在框410,在模量的最后減以提供最終結(jié)果R之前,使用進(jìn)位寄存器中存儲的來自 第一折疊運(yùn)算和第二折疊運(yùn)算的進(jìn)位位來檢索下面所示的表I(Tablel)中存儲的預(yù)先計 算的值,表1存儲用于所有進(jìn)位位的預(yù)先計算的值。檢索的預(yù)先計算的值然后與當(dāng)前結(jié)果 R組合。
權(quán)利要求
一種方法,包括存儲由折疊運(yùn)算的結(jié)果產(chǎn)生的折疊進(jìn)位位的狀態(tài),所述折疊運(yùn)算將a位數(shù)A簡化到b位數(shù)B;以及使用所述折疊進(jìn)位位的所存儲的狀態(tài)來檢索預(yù)先計算的常數(shù),所述預(yù)先計算的常數(shù)與相對于A的所述折疊進(jìn)位位的位置和所述折疊進(jìn)位位的狀態(tài)對應(yīng),所述預(yù)先計算的常數(shù)用于以時間不變方式將所述b位數(shù)B模m簡化到r位結(jié)果R。
2.如權(quán)利要求1所述的方法,還包括將預(yù)先計算的常數(shù)分布在高速緩存存儲器中的多個高速緩存行之間,使得讀取存儲預(yù) 先計算的常數(shù)的高速緩存行中的所有高速緩存行以檢索所述預(yù)先計算的常數(shù)。
3.如權(quán)利要求1所述的方法,還包括通過從存儲預(yù)先計算的常數(shù)的高速緩存存儲器中的多個高速緩存行的所有高速緩存 行中的每一個讀取所述預(yù)先計算的常數(shù)的一部分來檢索所述預(yù)先計算的常數(shù)。
4.如權(quán)利要求1所述的方法,其中使用Barrett簡化將所述b位數(shù)B模m簡化到η位 數(shù)R,b等于(t+n)并且t小于η。
5.如權(quán)利要求4所述的方法,還包括執(zhí)行時間不變的Barrett簡化,包括將129位操作數(shù)轉(zhuǎn)換成128位大小的操作數(shù);使用表中存儲的預(yù)先計算的轉(zhuǎn)換常數(shù)來執(zhí)行相加項的二的相乘;以及執(zhí)行固定次數(shù)的減運(yùn)算。
6.如權(quán)利要求5所述的方法,還包括執(zhí)行將另一個表中存儲的預(yù)先計算的常數(shù)加到B的所述b位的最低有效η位,所述預(yù) 先計算的常數(shù)對應(yīng)于t的最低有效位的部分的狀態(tài)。
7.如權(quán)利要求1所述的方法,其中使用Montgomery簡化將所述b位數(shù)B模m簡化到η 位數(shù)R。
8.如權(quán)利要求7所述的方法,其中b是(n+t)以及t小于η。
9.如權(quán)利要求8所述的方法,還包括執(zhí)行時間不變的Montgomery簡化,包括使用表中存儲的預(yù)先計算的轉(zhuǎn)換常數(shù)來執(zhí)行簡化進(jìn)位位的惰性評估;以及執(zhí)行固定次數(shù)的減運(yùn)算。
10.如權(quán)利要求1所述的方法,其中a是1024以及b是640,并且執(zhí)行兩次折疊運(yùn)算以 將A簡化到B。
11.一種設(shè)備,包括存儲器,存儲由折疊運(yùn)算的結(jié)果產(chǎn)生的進(jìn)位位的狀態(tài),所述折疊運(yùn)算將a位數(shù)A簡化到 b位數(shù)B ;查詢表,存儲預(yù)先計算的常數(shù),所述預(yù)先計算的常數(shù)對應(yīng)于相對于A的所述進(jìn)位位的 位置和所述進(jìn)位位的狀態(tài);以及執(zhí)行以下操作的邏輯使用所述進(jìn)位位的所存儲的狀態(tài)從所述查詢表檢索所述預(yù)先計 算的常數(shù),并使用所檢索的預(yù)先計算的常數(shù)以時間不變方式將b位數(shù)B模m簡化到r位結(jié) 果R。
12.如權(quán)利要求11所述的設(shè)備,其中使用Barrett簡化將所述b位數(shù)B模m簡化到η 位數(shù)R,b等于(t+n)并且t小于η。
13.如權(quán)利要求12所述的設(shè)備,還包括另一個查詢表,存儲與t的最低有效位的部分的狀態(tài)對應(yīng)的預(yù)先計算的常數(shù)。
14.如權(quán)利要求13所述的設(shè)備,其中所述邏輯將129位操作數(shù)轉(zhuǎn)換成128位大小的操 作數(shù),使用表中存儲的預(yù)先計算的轉(zhuǎn)換常數(shù)來執(zhí)行相加項的二的相乘,并執(zhí)行固定次數(shù)的 減運(yùn)算。
15.如權(quán)利要求14所述的設(shè)備,其中所述邏輯執(zhí)行將另一個表中存儲的預(yù)先計算的常 數(shù)加到B的所述b位的最低有效η位,所述預(yù)先計算的常數(shù)對應(yīng)于t的最低有效位的部分 的狀態(tài)。
16.如權(quán)利要求11所述的設(shè)備,其中使用Montgomery簡化將所述b位數(shù)B模m簡化到 η位數(shù)R,b等于(t+n)并且t小于η。
17.如權(quán)利要求16所述的設(shè)備,其中所述邏輯使用表中存儲的預(yù)先計算的轉(zhuǎn)換常數(shù)來 執(zhí)行簡化進(jìn)位位的惰性評估并執(zhí)行固定次數(shù)的減運(yùn)算。
18.如權(quán)利要求11所述的設(shè)備,其中a是1024以及b是640,并且執(zhí)行兩次折疊運(yùn)算 以將A簡化到B。
19.一種其上存儲有指令的計算機(jī)可讀存儲媒體,其中所述指令在被訪問時導(dǎo)致執(zhí)行存儲由折疊運(yùn)算的結(jié)果產(chǎn)生的進(jìn)位位的狀態(tài),所述折疊運(yùn)算將a位數(shù)A簡化到b位數(shù) B ;以及使用所述進(jìn)位位的所存儲的狀態(tài)來檢索預(yù)先計算的常數(shù),所述預(yù)先計算的常數(shù)與相對 于A的所述進(jìn)位位的位置和所述進(jìn)位位的狀態(tài)相對應(yīng),所述預(yù)先計算的常數(shù)用于以時間不 變方式將所述b位數(shù)B模m簡化到r位結(jié)果R。
20.如權(quán)利要求19所述的計算機(jī)可讀存儲媒體,還包括通過從存儲預(yù)先計算的常數(shù)的高速緩存存儲器中的多個高速緩存行的所述高速緩存 行的每一個讀取所述預(yù)先計算的常數(shù)的一部分來檢索所述預(yù)先計算的常數(shù)。
全文摘要
本發(fā)明名稱為“用于執(zhí)行有效率的抗側(cè)信道攻擊的簡化的方法和設(shè)備”。提供用于執(zhí)行保護(hù)防止基于高速緩存和基于分支的攻擊的模簡化的時間不變方法和設(shè)備。所述模簡化技術(shù)不添加性能懲罰并且是抗側(cè)信道的。通過使用進(jìn)位位的惰性評估、消除數(shù)據(jù)依賴的分支以及對于所有存儲器引用使用平均高速緩存訪問來提供側(cè)信道抵抗性。
文檔編號H04L9/06GK101938355SQ20101022148
公開日2011年1月5日 申請日期2010年6月25日 優(yōu)先權(quán)日2009年6月26日
發(fā)明者E·奧楚爾克, G·M·沃爾里奇, J·D·吉爾福德, M·G·迪克遜, V·戈帕爾, W·K·費(fèi)哈利 申請人:英特爾公司