專利名稱:防止邊信道攻擊的素?cái)?shù)生成保護(hù)的制作方法
防止邊信道攻擊的素?cái)?shù)生成保護(hù)技術(shù)領(lǐng)域
本發(fā)明通常涉及電子電路,尤其涉及產(chǎn)生素?cái)?shù)的電路,本發(fā)明尤其涉及在電子 電路中保護(hù)素?cái)?shù)的產(chǎn)生以防止邊信道攻擊,例如,對(duì)電路功率消耗6PA——簡單功率分 析)或其電磁簽名的統(tǒng)計(jì)分析。
本發(fā)明尤其適用于執(zhí)行RSA型非對(duì)稱加密算法的電路,尤其是利用質(zhì)因數(shù)分解 算法的電路。
背景技術(shù):
RSA算法是最常用的非對(duì)稱加密算法(具有公鑰)之一。該算法用于加密/解 密數(shù)據(jù)或者簽名數(shù)據(jù)并認(rèn)證。這基于使用包括一個(gè)公鑰和一個(gè)私鑰的密鑰對(duì)。在加密/ 解密模式中,發(fā)送器使用該公鑰來加密與接收器秘密通信的數(shù)據(jù),后者使用其私有(或 秘密)密鑰來解密該數(shù)據(jù)。對(duì)于認(rèn)證,發(fā)送器使用私鑰來簽名數(shù)據(jù),而接收器使用公鑰 來認(rèn)證該簽名。
公鑰使加密數(shù)據(jù)的發(fā)送器或簽名數(shù)據(jù)的接收器能提取這些數(shù)據(jù),相對(duì)來說是普 遍的。但是,私鑰被預(yù)留給具有所創(chuàng)建的密鑰對(duì)的電路。密鑰對(duì)的持有者可以直接將公 鑰傳送給其它方使其能夠處理數(shù)據(jù)。
公鑰及私鑰對(duì)的產(chǎn)生需要使用兩個(gè)不同的、相對(duì)大的大小(通常為IOM或2048 比特)的素?cái)?shù)“P”和“q”。這些素?cái)?shù)的乘積提供加密模數(shù)“η”。選擇數(shù)P和q使 得數(shù)P-I和q-Ι與量(quantity) “e”互質(zhì),稱為公共指數(shù),該公共指數(shù)與乘積η ( Φ (η) =(p-1) (q-1))的歐拉指示符(Euler indicator) “ Φ (η) ”互質(zhì)。作為結(jié)果,存在一個(gè)整 數(shù)“d”使得eXd的乘積與1模Φ (η) —致。n,e對(duì)組成公鑰,n,d對(duì)組成私鑰。私 有指數(shù)d是指數(shù)e模(p-1) (q-Ι)的倒數(shù)。素?cái)?shù)ρ和q電路中唯一包含私鑰的。
RSA算法的魯棒性依賴于素?cái)?shù)ρ和q。要基于公鑰“破壞” RSA算法,需要能 夠分解數(shù)n,以獲得素?cái)?shù)ρ和q。一旦知道了該因式分解,私有指數(shù)d就可以由公有指數(shù) e(通過計(jì)算e模(p-1) (q-Ι)的倒數(shù)計(jì)算得到d)計(jì)算得出。目前已認(rèn)識(shí)到,通過使用足 夠大小的模數(shù)η (通常為近似1,500比特),當(dāng)前的算法在合理的時(shí)間內(nèi)不能分解數(shù)η。
但是,在電子電路中引入數(shù)ρ和q或它們通過電路運(yùn)算的結(jié)果在安全方面特別關(guān) 鍵,因?yàn)樵陔娐穳勖臅r(shí)間中黑客的發(fā)現(xiàn)給他提供了數(shù)字η的因式分解。
生成RSA密鑰的第一種技術(shù)包括在電子電路外生成這些密鑰。量ρ和q在定制 階段被引入電子電路。由于密鑰不是由實(shí)際電子電路產(chǎn)生,因此這一技術(shù)不響應(yīng)邊信道 攻擊。
第二種已知技術(shù)包括使實(shí)際電子電路在安全的環(huán)境(實(shí)際在一個(gè)具有預(yù)定訪問 的保護(hù)裝置)中生成素?cái)?shù)。采用這種技術(shù),在素?cái)?shù)產(chǎn)生過程中攻擊也不成問題。
但是,更為常見的是,電子電路需要能夠在這樣的安全環(huán)境外生成它們的RSA 密鑰。例如,這使得當(dāng)之前的密鑰被否定時(shí)(假定密鑰被攻擊)能夠重新生成新的密鑰。 例如在一個(gè)不安全的環(huán)境中定制電子電路的過程中或初次使用過程中執(zhí)行該生成。根據(jù)一個(gè)申請(qǐng)電子護(hù)照的例子,一旦護(hù)照在持有者手中,要求密鑰由包含在護(hù)照中的電子芯 片生成。這樣,該密鑰在護(hù)照認(rèn)證期間不能提前使用。
公共指數(shù)e可以是公鑰基礎(chǔ)設(shè)施(PKI)的參數(shù)并且對(duì)所有密鑰都是相同的。例 如在電子電路的制造過程(在ROM中)或定制過程(在EEPROM中)中引入公鑰。
公共指數(shù)e可以由電子電路生成,例如,通過選擇一個(gè)隨機(jī)數(shù),并發(fā)送給電子電 路必定會(huì)與其通信的元件。
這樣公鑰(公共指數(shù)和加密模數(shù))要么被接收器(簽名)得知,要么被發(fā)送器 (加密)得知,或者被與其通信的(用于每次業(yè)務(wù)或最后一次)持有該私鑰的電子電路得 知。公鑰進(jìn)一步通常需要驗(yàn)證。
以時(shí)間和計(jì)算來講,大素?cái)?shù)的產(chǎn)生是昂貴的。尤其是,使得能夠驗(yàn)證與否 一個(gè)數(shù)字的素性的所謂素性檢驗(yàn),通常執(zhí)行需要相當(dāng)數(shù)量計(jì)算(例如,米勒-拉賓 (Miller-Rabin)素性檢驗(yàn))的模數(shù)乘方。這就是為何要求僅對(duì)已經(jīng)成功通過關(guān)于相對(duì)小的 素?cái)?shù)的檢驗(yàn)的備選數(shù)字執(zhí)行這類檢驗(yàn)。這類檢驗(yàn)當(dāng)于通過相對(duì)小的素?cái)?shù)的除法或者相當(dāng) 于關(guān)于素?cái)?shù)表的比較。例如,米勒-拉賓檢驗(yàn)可用一個(gè)小的基數(shù)(例如,2)來執(zhí)行,或 者可執(zhí)行一個(gè)最大通用除法器計(jì)算(例如,增加以255為模的字節(jié)以獲取一個(gè)小于255的 結(jié)果,隨后用255對(duì)該結(jié)果計(jì)算最大通用除法器。如果不為1,一個(gè)單獨(dú)的檢驗(yàn)?zāi)軌蚋嬷?該數(shù)字不能被255的三個(gè)因數(shù),即3、5、17,除盡)。
當(dāng)用電子電路在不安全的環(huán)境中生成素?cái)?shù)時(shí),電路很可能受到邊信道攻擊6PA 或電磁分析)。尤其是,此類攻擊可能發(fā)生在素性檢驗(yàn)執(zhí)行除法或用素?cái)?shù)表比較的過程 中。發(fā)明內(nèi)容
當(dāng)通過電子電路利用這些密鑰生成這些數(shù)字時(shí),需要保護(hù)素?cái)?shù)的產(chǎn)生并且進(jìn)而 保護(hù)使用質(zhì)因數(shù)分解算法的密鑰的生成。
本發(fā)明一個(gè)實(shí)施例的一個(gè)目標(biāo)是保護(hù)素性檢驗(yàn),尤其是那些執(zhí)行除法或用表的 比較、抵抗邊信道攻擊的。
為了達(dá)到所有的或部分目標(biāo)及其它的,本發(fā)明至少一個(gè)實(shí)施例提供了一種保護(hù) 由電子電路通過測試連續(xù)的備選數(shù)字的素性來生成至少一個(gè)素?cái)?shù)的方法,包括對(duì)每個(gè)備 選數(shù)字的關(guān)于至少一個(gè)連續(xù)素?cái)?shù)的集合中的素?cái)?shù)的素性檢驗(yàn),其中所述測試的應(yīng)用順序 被至少從一個(gè)素?cái)?shù)的生成修改為另一個(gè)素?cái)?shù)的生成。
根據(jù)本發(fā)明的實(shí)施例,為每個(gè)備選數(shù)字修改所述順序。
根據(jù)本發(fā)明的實(shí)施例,所述順序是順次的。
根據(jù)本發(fā)明的實(shí)施例,所述順序是非順次的。
根據(jù)本發(fā)明的實(shí)施例,所述順序是隨機(jī)選擇的。
根據(jù)本發(fā)明的實(shí)施例,所述集合包括在第一臨界值與第二臨界值之間取值的素 數(shù)。
根據(jù)本發(fā)明的實(shí)施例,每個(gè)素性檢驗(yàn)是備選數(shù)字被所述集合中的素?cái)?shù)整除的檢 驗(yàn)。
根據(jù)本發(fā)明的實(shí)施例,素性檢驗(yàn)基于篩選表和初始備選數(shù)字進(jìn)行,所述篩選表4包括與所述集合中的素?cái)?shù)一樣多的元素,所述初始備選數(shù)字由小于第一臨界值的素?cái)?shù)的 乘積乘以任意數(shù)得到。
本發(fā)明的實(shí)施例還提供了一種由電子電路通過測試連續(xù)的備選數(shù)字的素性來生 成至少一個(gè)素?cái)?shù)的方法。
本發(fā)明的實(shí)施例還提供了一種包括能夠執(zhí)行這些方法的模塊的電子電路。
前述的目標(biāo)、特征及本發(fā)明的優(yōu)點(diǎn)將聯(lián)系附圖在以下具體實(shí)施例的非限制性說 明中詳細(xì)討論。
圖1是本發(fā)明作為一個(gè)例子適用類型的集成電路實(shí)施例的框圖2A概要性地示出了用RSA算法加密;
圖2B概要性地示出了用RSA算法解密;
圖3是加密數(shù)據(jù)傳送系統(tǒng)的框圖4是在執(zhí)行RSA型算法的電子電路中生成素?cái)?shù)的常用步驟的流程圖5是提交備選數(shù)據(jù)做除法檢驗(yàn)的常用步驟的流程圖6是使用圖5的檢驗(yàn)的用于保護(hù)素?cái)?shù)產(chǎn)生的方法的實(shí)施例的步驟流程圖;以及
圖7是采用圖4中例子生成素?cái)?shù)的方法的另一實(shí)施例的步驟的流程圖。
具體實(shí)施方式
為了清楚起見,給不同附圖中相同的元件指定了相同的參考標(biāo)記。進(jìn)一步的, 僅示出并描述那些有助于理解本發(fā)明的步驟和元件。特別地,使用基于素?cái)?shù)的密鑰的算 法的電子電路所用的沒有被詳述,本發(fā)明與任何通常的生成素?cái)?shù)的利用(加密、簽名計(jì)算)相一致。
下文將結(jié)合在加密/解密中使用的RSA算法的應(yīng)用實(shí)例詳細(xì)描述本發(fā)明。但 是,應(yīng)注意本發(fā)明適用于基于所生成的素?cái)?shù)的RSA算法的任何用途,本發(fā)明尤其適用于 RSA簽名。更一般地,本發(fā)明適用于任何依賴于一個(gè)質(zhì)因數(shù)分解而具有自己的密鑰的算 法,例如,所謂的拉賓加密系統(tǒng)。
圖1以框圖的形式結(jié)構(gòu)化地示出了本發(fā)明所適用的電子電路1(例如,智能卡) 的實(shí)例。這樣電路包括具有越過一個(gè)或幾個(gè)數(shù)據(jù)、地址通信功能的處理單元11 (PU), 以及控制總線12,不同元件間的一個(gè)或幾個(gè)非易失性存儲(chǔ)器13(NVM),通常為包含全 部或部分程序的ROM及要包含RSA密鑰的EEPROM,一個(gè)或幾個(gè)易失性存儲(chǔ)器14 (典 型地為RAMS),以及使得電路1能夠與外界通信的輸入/輸出接口電路15(1/0)。在 本發(fā)明特別致力于達(dá)到的應(yīng)用中,電路1還包括與單元11相一致的加密或簽名計(jì)算處理 器16 (CP-加密處理器)。電路1可能通過由虛線標(biāo)出的硬件和/或軟件元件(塊17和 18-FCT和PN GEN)執(zhí)行不同的功能。這些功能之一(塊18)是生成RSA型算法中用作 密鑰的素?cái)?shù)的。其它元件和電路按照目標(biāo)配備給電子電路1。更進(jìn)一步,會(huì)提供電路子 集之間的用于交換數(shù)據(jù)、地址,和/或控制信號(hào)的直線(未示出)。
圖2A和2B示出了 RSA型算法的執(zhí)行。RSA計(jì)算單元在圖2A(加密側(cè))中被 標(biāo)記為塊20,在圖2B (解密側(cè))中被標(biāo)記為塊21。計(jì)算單元實(shí)際上是相同的,為軟件或硬件單元。
表現(xiàn)為整數(shù)的數(shù)據(jù)消息M的加密(圖2A)被引入RSA計(jì)算模塊,該模塊進(jìn)一步 包含或接收加密模數(shù)η和公鑰的加密指數(shù)e。整數(shù)M小于加密模數(shù)η。RSA模塊計(jì)算加 密消息C作為模數(shù)指數(shù)Me模η。
對(duì)于持有私鑰的(n,d)的電路的解密(圖2Β),消息C基于指數(shù)d和模數(shù)η被 提交給模數(shù)乘方,即單元21提供關(guān)于Cd模η的消息Μ。
圖3是示出了關(guān)于任何數(shù)據(jù)內(nèi)容的數(shù)據(jù)DATA(塊24)從發(fā)送器22到接收器23 的傳送實(shí)例的框圖。如果接收器不知道公鑰,接收器23持有RSA密鑰并通過向所述發(fā) 送器傳送它(即因式分解模數(shù)η和公共指數(shù)e)來發(fā)起。這使得發(fā)送器22能夠加密數(shù)據(jù) 并能以加密消息C的形式傳送它們。接收器23使用它的私鑰(n,d)來解密這些消息并 獲取數(shù)據(jù)DATA (塊25)。
傳送過程可能會(huì)受到意在發(fā)現(xiàn)數(shù)字η的因式分解的黑客攻擊。一旦密鑰已經(jīng)生 成,本發(fā)明的實(shí)施例目的不在于這些攻擊,而在于僅發(fā)生一次(或者每次生成新的密鑰 對(duì))的其它可能發(fā)生在素?cái)?shù)生成過程中的攻擊。
一個(gè)素?cái)?shù)的生成包括修改一個(gè)備選數(shù)字直到它變成素?cái)?shù)。如前所述,在將備選 數(shù)字提交給適用于大的數(shù)字的素性檢驗(yàn)之前,用相對(duì)小的數(shù)字來執(zhí)行簡單的檢驗(yàn)來驗(yàn)證 備選數(shù)字是否是素?cái)?shù)。適用于大的數(shù)字的檢驗(yàn)通常基于費(fèi)馬大定理(Fermat theorem),根 據(jù)如果“U”是素?cái)?shù),對(duì)于任意整數(shù)“v”,Vri模u同余于1,S卩,除了 1和u本身, u不可能被其它整數(shù)的因式分解。用于生成素?cái)?shù)的最常用的素性檢驗(yàn)是所謂的米勒-拉 賓檢驗(yàn)。該檢驗(yàn)執(zhí)行模冪運(yùn)算以驗(yàn)證備選數(shù)字不能被除1外的其它數(shù)字整除,并且,例 如,在 A.Menezes、P.van Oorshchot 和 S.Vanstone 所作的,1996 年出版(CRC 出版社)的"Handbook of Applied Cryptograpgy” 的第 4 章 4.2.3 節(jié)第 138-140 頁中有介紹。事實(shí)上, 素性檢驗(yàn)并不完美但出錯(cuò)的機(jī)率對(duì)于確定備選數(shù)字是素?cái)?shù)已經(jīng)足夠低了。
圖4是生成素?cái)?shù)(任意指定為ρ)的常用方法的步驟流程圖,該素?cái)?shù)旨在成為 RSA因式分解模數(shù)的兩個(gè)素?cái)?shù)之一。圖4的方法通常被連續(xù)執(zhí)行兩次以獲得數(shù)字ρ和q。
例如,首先通過隨機(jī)選擇來選取任意數(shù)k(塊31,隨機(jī))。然后,該數(shù)字被修改 以獲得不能被小于第一臨界值Ii1的素?cái)?shù)整除的備選數(shù)字。
根據(jù)一個(gè)實(shí)例,數(shù)字k被乘以(塊32,X)小于臨界值Ii1的素?cái)?shù)Id1 (i在1和In1 間取值,In1是集合[1,Ii1]中素?cái)?shù)的量)的乘積冬。臨界值Ii1被選擇為相當(dāng)小。例如, 如果 Ii1 = 3,A1 = 6(1^ = 3 且!^ = 1,b2 = 2,b3 = 3)。如果 Ii1 = 5,A1 = 30 (Iii1 二斗且!^ = !,b2 = 2, b3 = 3, b4 = 5)。然后,由計(jì)算的乘積加1或減1(塊32,, +/-1),這樣,在111 = 3的實(shí)例中,它既不能被2整除也不能被3整除。獲得與數(shù)字2和 3互質(zhì)的第一備選數(shù)字a = kAi±l。
設(shè)置數(shù)字ρ和q所需的大小。從而,備選數(shù)字a的大小必須與數(shù)字ρ和q所需 的大小一致。這樣數(shù)字k的大小依賴于數(shù)字A1的大小。在上述實(shí)例中,對(duì)于IOM比特 的數(shù)字a和數(shù)字為30的A1,數(shù)字k被選擇為超過1019比特。
根據(jù)另一實(shí)例,數(shù)字k通過執(zhí)行操作k = KkmodA1)被修改使得它能被A1整 除。然后,加上從素?cái)?shù)表中任意選擇一個(gè)與A1互質(zhì)的數(shù)字。就獲得與小于Ii1的素?cái)?shù)互 質(zhì)的備選數(shù)字a。在這一實(shí)例中,數(shù)字k具有與數(shù)字a所需的相同的大小。
在圖4的實(shí)例中,下一步(塊33)包括構(gòu)造一個(gè)篩選表ST,表中的每一項(xiàng)具有 備選數(shù)字a除以包含在第一臨界值Ii1和第二更高臨界值n2之間的素?cái)?shù)之一的結(jié)果。這相 當(dāng)于用a模Id1填充該表,Id1在Ii1和n2之間取值(并且i在In1和m2之間取值)。選擇臨 界值n2以避免該表太大,這樣對(duì)于每個(gè)備選數(shù)字,對(duì)后續(xù)要執(zhí)行的計(jì)算保持比米勒-拉 賓檢驗(yàn)備選數(shù)字更低的能耗(就計(jì)算所需的時(shí)間和功率來說)。例如,臨界值n2等于128 或256。為了簡化標(biāo)記,臨界值Ii1被認(rèn)為既在集合[1,Ii1]中,又在集合[叫,n2]中,但 是實(shí)際中由于第一臨界值Ii1通常對(duì)應(yīng)一個(gè)素?cái)?shù),因此它是分享檢驗(yàn)迭代中的一個(gè)單獨(dú)的 值。
一旦篩選表被初始化,只要備選數(shù)字a與能執(zhí)行RSA算法的素?cái)?shù)不一致,就執(zhí) 行后續(xù)操作。
以驗(yàn)證備選數(shù)字與區(qū)間[叫,n2]中包含的所有數(shù)字互質(zhì)為開始。這相當(dāng)于驗(yàn)證 (塊35,Oe [ST] )該表不包含零值。零值的出現(xiàn)意味著備選數(shù)字a是表中相應(yīng)素?cái)?shù) 的倍數(shù)。
如果檢驗(yàn)塊35證實(shí)(塊35輸出N)備選數(shù)字與區(qū)間[Ii1,n2]中的所有數(shù)字互質(zhì), 驗(yàn)證備選數(shù)字是否適合執(zhí)行RSA算法。為了實(shí)現(xiàn)它,需要驗(yàn)證值a-Ι是否與e互質(zhì)。實(shí) 際中,是檢查值a模e(a除以e的余數(shù))是否等于1。如果不等于(塊37輸出N),備選 數(shù)字與RSA算法相匹配,S卩,其符合指數(shù)e為與歐拉指示符(p-1) (q_l)互質(zhì)的整數(shù)的條 件。
一旦順利通過檢驗(yàn)塊37 (輸出N),備選數(shù)字最終被提交給米勒-拉賓檢驗(yàn)素性 檢驗(yàn)(塊38,MR檢驗(yàn)成功?)的幾個(gè)操作(通常為幾個(gè)到幾十個(gè)操作)。如果成功(塊 38輸出Y),備選數(shù)字a作為素?cái)?shù)ρ(塊39,ρ = a)。
只要檢驗(yàn)塊35、37或38中的一個(gè)表明備選數(shù)字不匹配(塊35和37輸出Y或者 塊38輸出N),就選擇一個(gè)新的備選數(shù)字。為了這一目的,以不合格的備選數(shù)字增加值 A1開始(塊36,a = a+Ai)。然后,更新篩選表[ST]。這相當(dāng)于給表中每個(gè)元素(通過 i來標(biāo)識(shí))增加冬模!^的量(塊34,[ST^AimOdb1),并且該方法返回到步驟35。然后 一個(gè)將被用于檢驗(yàn)塊37的包含a mode的值的變量也被更新,盡管其并未被示出。
—旦獲得第一素?cái)?shù)p,就再次執(zhí)行該方法以生成執(zhí)行RSA算法所需的第二素?cái)?shù) q。那么一個(gè)附加步驟包括確定數(shù)字ρ和q互質(zhì)(圖4未示出該步驟)。因?yàn)樗鼈兪撬?數(shù),檢查它們不相同就足夠了。
素?cái)?shù)生成步驟的成功對(duì)邊信道攻擊特別敏感。尤其是,為不成功的備選數(shù)字執(zhí) 行的檢驗(yàn)塊35的數(shù)字提供關(guān)于該數(shù)字不與備選數(shù)字互質(zhì)的信息(它對(duì)應(yīng)的數(shù)字,為該數(shù) 字當(dāng)前的篩選表包含一個(gè)0)。邊信道攻擊能在備選數(shù)字被拒絕前確定表中執(zhí)行的比較的 數(shù)字(時(shí)間和消耗的功率對(duì)于所有的比較通常相同),并且這是對(duì)于被接受的備選數(shù)字之 前的所有備選數(shù)字(被拒絕的)的。當(dāng)一個(gè)備選數(shù)字順利通過所有檢驗(yàn),每個(gè)先前的備 選數(shù)字得知與先前的備選數(shù)字不互質(zhì)的素?cái)?shù)。通過這樣監(jiān)視數(shù)字ρ和q的生成(并且得 知模數(shù)n),黑客能夠確定數(shù)字ρ和q。
圖5示出了另一素?cái)?shù)生成方法的步驟。這些步驟相當(dāng)于以備選數(shù)字除以取值范 圍在臨界值Ii1和n2之間的素?cái)?shù)的除法檢驗(yàn)的形式執(zhí)行的素性檢驗(yàn)。圖5的步驟可以取代 圖4中步驟33、34、;35和36。
在圖5中檢驗(yàn)的開始,可獲得一個(gè)與In1素?cái)?shù)互質(zhì)的備選數(shù)字a(塊41,a = PRIMEib1^q1, ml])。臨界值In1可能等于1,在這一實(shí)例中,先前的步驟(塊32和32,, 圖4)不被執(zhí)行并且圖5的檢驗(yàn)適用于隨機(jī)選擇的數(shù)字k。
在圖5的實(shí)例中,檢驗(yàn)備選數(shù)字a對(duì)取值范圍在Ii1和112之間的所有素?cái)?shù)的可除 性。為了實(shí)現(xiàn)這點(diǎn),下標(biāo)i被初始化為In1 (塊42)。然后,嘗試將數(shù)字a除以b,(塊43, b, div a ?)。如果(塊43輸出N)備選數(shù)字不能被當(dāng)前的素?cái)?shù)除盡(即,除法的余數(shù)不 為0),只要區(qū)間[η” n2]中的所有素?cái)?shù)沒有被檢驗(yàn),就循環(huán)執(zhí)行可除性檢驗(yàn)(塊45,i < m2 ?,以及塊46,i = i+Ι)。只要備選數(shù)字被相應(yīng)的素?cái)?shù)除盡沒有余數(shù)(塊43輸出 Y),并且除法的結(jié)果是整數(shù),所述備選數(shù)字就不是素?cái)?shù)。然后增加乘積A1 (塊44,a = a+AD并且新的備選數(shù)字再次被提交給素性檢驗(yàn)。如果In1 = 1,塊44的增量(圖4中的 增量34和36)相當(dāng)于為一個(gè)備選數(shù)字到下一個(gè)均加2。當(dāng)一個(gè)備選數(shù)字通過了關(guān)于該范 圍內(nèi)所有素?cái)?shù)的所有可除性檢驗(yàn)(塊45輸出N),在電路的輸出處或者為更進(jìn)一步地檢驗(yàn) (出口 /進(jìn)一步地檢驗(yàn))提供,例如,圖4中的米勒-拉賓或RSA兼容性檢驗(yàn)。
在圖5的實(shí)例中,邊信道攻擊可在備選者被拒絕前確定要執(zhí)行除法的數(shù)字(測 試43的數(shù)字),并且這是對(duì)于一個(gè)可接受的備選數(shù)字之前的所有備選數(shù)字?;谶@一信 息,對(duì)于一個(gè)可接受的備選數(shù)字,能夠得知,對(duì)所有先前的備選數(shù)字(a = a-A” a-2Ai; &-3冬等),能夠被素?cái)?shù)ID1整除。還可得知,該備選數(shù)字不能被更小的素?cái)?shù)整除。已知 pXq(n)的積,為數(shù)字ρ和q收集的這一信息,可以使黑客發(fā)現(xiàn)RSA算法的秘密。
2009 年 9 月初在密碼硬件和嵌入式系統(tǒng)(Cryptographic Hardware and Embedded Systems)研討會(huì)的論文中已經(jīng)公開了該類型的邊信道攻擊(Proceedings CHES 2009,A New Side-Channel Attack on RSA Prime Generation, Thomas Finke,Max Gebhardt,Werner Schindler)。
圖6是用于保護(hù)素?cái)?shù)的生成防止通過連續(xù)除法的素性檢驗(yàn)中邊信道攻擊的方法 的實(shí)施例的流程圖。該圖應(yīng)與圖5比較。
如前所述,它是從備選數(shù)字a(塊41)開始,該備選數(shù)字a與小于臨界值Ii1的素 數(shù)互質(zhì)。
提供屏蔽在區(qū)間[η” n2]中連續(xù)的素?cái)?shù)上執(zhí)行素性檢驗(yàn)的順序。為了實(shí)現(xiàn)它, 在集合[η” n2]的數(shù)字上執(zhí)行的素性檢驗(yàn)的順序至少從一個(gè)素?cái)?shù)產(chǎn)生被修改到另一個(gè)素?cái)?shù) 產(chǎn)生(數(shù)字ρ和q的產(chǎn)生之間)。
例如,選擇一個(gè)范圍在臨界值In1和叫之間的隨機(jī)數(shù)ι (塊51,mi<r<m2) 數(shù) 字r用作掃描素?cái)?shù)集合[η” n2]的一個(gè)初始秩(i = r)。
因此,正如與圖5的實(shí)例相比,圖6中執(zhí)行的備選數(shù)字a的素性檢驗(yàn)(塊43,b, diva ),從秩r開始,關(guān)于素?cái)?shù)bp通過檢查它能否被該數(shù)字整除來執(zhí)行。如果不能, 選擇集合(i = r+l直到m2,然后返回從m= 1開始)中的下一個(gè)素?cái)?shù)(塊46’,下一個(gè) b),只要列表未完成(塊45’結(jié)束?)就繼續(xù)。只要一個(gè)素?cái)?shù)能除盡備選數(shù)字,程序退 出循環(huán)(塊43輸出Y)并且轉(zhuǎn)到下一備選數(shù)字(塊44,a = a+A^。
其優(yōu)點(diǎn)來自于一個(gè)事實(shí),即上述所討論的邊信道攻擊需要知道素?cái)?shù)檢驗(yàn)的順 序。
該順序經(jīng)??梢愿鶕?jù)要求的魯棒性或多或少地被改變。
在圖6實(shí)線示出的實(shí)例中,順序可為每個(gè)新的備選數(shù)字改變。塊44的輸出返回 到塊41和51之間。
作為變形,該順序?qū)τ谒谐ㄋ匦詸z驗(yàn)的備選數(shù)字是相同的。在這種情況 下,塊44的輸出返回到檢驗(yàn)塊43的輸入(圖6中虛線)。但必須確保對(duì)于每個(gè)新的備 選數(shù)字素?cái)?shù)掃描重新從i = r開始。例如,對(duì)每個(gè)新的備選數(shù)字下標(biāo)i被重置為值r (塊 44,)。
根據(jù)另一種變形,該順序只在數(shù)字ρ和數(shù)字q的生成之間改變。這意味著如果 后續(xù)檢驗(yàn)(例如,圖4中37和38)拒絕備選數(shù)字,將繼續(xù)保持?jǐn)?shù)字r。素?cái)?shù)掃描對(duì)于每 個(gè)新的備選數(shù)字也必須重新從i = r開始。只有為新素?cái)?shù)的產(chǎn)生才選擇數(shù)字r。
集合[ηι,n2]中的素?cái)?shù)通常被存儲(chǔ),小的素?cái)?shù)(例如,小于256)表的存儲(chǔ)區(qū)域 相對(duì)于用于每個(gè)檢驗(yàn)的這些素?cái)?shù)的動(dòng)態(tài)計(jì)算所花的時(shí)間是合理的。
可以聯(lián)想任何其它素?cái)?shù)選擇方法(連續(xù)的或不連續(xù)的),該方法對(duì)集合中素?cái)?shù)所 執(zhí)行的檢驗(yàn)的順序至少對(duì)于每個(gè)新的生成是不同的。例如,素?cái)?shù)表中元素的順序可以被 修改。
圖7是適于篩選表(圖4)使用的另一實(shí)施例的流程圖。在該實(shí)例中,隨機(jī)數(shù)的 選擇用于確定將要執(zhí)行的檢驗(yàn)的順序以驗(yàn)證篩選表的元素之一是否包含零值。
例如,隨機(jī)數(shù)r用于選擇篩選表中元素ST1H描的初始位置(秩)。只要發(fā)現(xiàn)非 零元素(塊35,,ST1 = O ),就瀏覽篩選表(塊45,,結(jié)束?以及塊46”,下一個(gè) ST1)。只要發(fā)現(xiàn)零元素,就如前所述通過增加乘積A1轉(zhuǎn)到下一備選數(shù)字(塊36),并隨 后通過增加乘積A1模相關(guān)的素?cái)?shù)到其每個(gè)元素上來更新篩選表(塊34)。當(dāng)發(fā)現(xiàn)一個(gè)正 確的備選數(shù)字(塊45’輸出Y),其被提交到下一個(gè)檢驗(yàn)(37,圖4)。
如圖6中的實(shí)施例,對(duì)于每個(gè)素?cái)?shù)生成,可為每個(gè)備選數(shù)字生成一個(gè)新的隨機(jī)m 絕絕 y-Xi 寸寸ο
前面已經(jīng)介紹了不同變形的不同實(shí)施例,應(yīng)注意到所屬領(lǐng)域技術(shù)人員可以將這 些不同實(shí)施例和變形相結(jié)合。更進(jìn)一步的,基于前述功能性指示,在所屬領(lǐng)域技術(shù)人員 的能力范圍內(nèi)實(shí)際執(zhí)行本發(fā)明,可以為硬件或軟件執(zhí)行。
特別地,對(duì)所使用的臨界值叫和屯的選擇依賴于應(yīng)用以及素?cái)?shù)生成過程中米 勒-拉賓檢驗(yàn)所需的時(shí)間。例如,盡管篩選表最好不基于小于保存計(jì)算的第一臨界值的 素?cái)?shù),這并不是不可缺少的Cm1及Ii1,可等于1)。
更進(jìn)一步的,盡管本發(fā)明已被描述為執(zhí)行單個(gè)篩選表的方法,但可以想象通過 在下一表之前插入每個(gè)表的素性檢驗(yàn)(步驟34和3 來使用幾個(gè)篩選表,每個(gè)表具有驗(yàn) 證備選數(shù)字相對(duì)于相鄰的由連續(xù)的臨界值定義的范圍內(nèi)的素?cái)?shù)的素性的功能。為了最佳 目標(biāo),可以使用這樣的變形,如果基于之前的表的素性檢驗(yàn)是有效的,那么只更新一個(gè) 表。在這種情況下,最好為每個(gè)表改變素?cái)?shù)掃描的順序。
并且,盡管已經(jīng)結(jié)合生成素?cái)?shù)以創(chuàng)建RSA算法的密鑰詳細(xì)描述了本發(fā)明,但它 通常適合于任何需要保密的素?cái)?shù)生成過程。9
權(quán)利要求
1.一種保護(hù)用于RSA型非對(duì)稱加密算法的至少一個(gè)素?cái)?shù)(P)生成的方法,其中至少 一個(gè)素?cái)?shù)(P)由電子電路(1)通過檢驗(yàn)連續(xù)的備選數(shù)字的素性生成,該方法包括,為每個(gè) 備選數(shù)字,檢驗(yàn)連續(xù)素?cái)?shù)的至少一個(gè)集合([Ii1, Ii2])的素?cái)?shù)的素性(35’,43),其中所述 檢驗(yàn)的應(yīng)用順序被至少從一個(gè)素?cái)?shù)的生成修改為另一個(gè)素?cái)?shù)的生成。
2.如權(quán)利要求1所述的方法,其中為每個(gè)備選數(shù)字(a)修改所述順序。
3.如權(quán)利要求1所述的方法,其中所述順序是順次的。
4.如權(quán)利要求1所述的方法,其中所述順序是非順次的。
5.如權(quán)利要求1所述的方法,其中所述順序是隨機(jī)選擇的。
6.如權(quán)利要求1所述的方法,其中所述集合包括在第一臨界值Cn1)與第二臨界值Cn2) 之間取值的素?cái)?shù)。
7.如權(quán)利要求1所述的方法,其中每個(gè)素性檢驗(yàn)是備選數(shù)字(a)被所述集合中的素?cái)?shù) 可整除性的檢驗(yàn)。
8.如權(quán)利要求5所述的方法,其中素性檢驗(yàn)基于篩選表(ST)和初始備選數(shù)字進(jìn)行, 所述篩選表(ST)包括與所述集合中的素?cái)?shù)一樣多的元素,所述初始備選數(shù)字由小于第一 臨界值Cn1)的素?cái)?shù)的乘積乘以一個(gè)任意數(shù)(k)得到。
9.一種由電子電路通過測試連續(xù)的備選數(shù)字(a)的素性來生成至少一個(gè)素?cái)?shù)的方法, 執(zhí)行權(quán)利要求1所述的保護(hù)方法。
10.一種包括能夠執(zhí)行權(quán)利要求1所述方法的模塊的電子電路。
全文摘要
一種保護(hù)由電子電路通過檢驗(yàn)連續(xù)備選數(shù)字素性生成至少一個(gè)素?cái)?shù)的方法,包括對(duì)每個(gè)備選數(shù)字,檢驗(yàn)連續(xù)素?cái)?shù)的至少一個(gè)集合的素?cái)?shù)的素性,其中所述檢驗(yàn)的應(yīng)用順序被至少從一個(gè)素?cái)?shù)的生成修改為另一個(gè)素?cái)?shù)的生成。
文檔編號(hào)H04L9/30GK102025501SQ201010276008
公開日2011年4月20日 申請(qǐng)日期2010年9月7日 優(yōu)先權(quán)日2009年9月9日
發(fā)明者弗蘭克·庫佩斯 申請(qǐng)人:質(zhì)子世界國際公司