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

有效地檢驗素數(shù)的制作方法

文檔序號:6497782閱讀:222來源:國知局
有效地檢驗素數(shù)的制作方法
【專利摘要】在一種用于為了密碼應(yīng)用而檢驗一個值是否是素數(shù)的方法中,進行費馬測試(12,26),該費馬測試包含具有指數(shù)(e)和模(m)的底數(shù)的模冪,其中指數(shù)(e)和模(m)分別取決于待檢驗的值,并且其中所述模冪在使用蒙哥馬利運算的條件下進行。一種裝置和一種計算機程序產(chǎn)品具有相應(yīng)的特征。該方法可以在合適的平臺上有效地實現(xiàn)。
【專利說明】有效地檢驗素數(shù)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明一般地涉及可有效實現(xiàn)的密碼方法的【技術(shù)領(lǐng)域】。更具體地,本發(fā)明涉及一種用于有效檢驗一個值是否是素數(shù)的方法。本發(fā)明特別適合于便攜式數(shù)據(jù)載體中的應(yīng)用。這樣的便攜式數(shù)據(jù)載體例如可以是按照不同的構(gòu)造形式的芯片卡(智能卡)或芯片模塊或類似的資源受限的系統(tǒng)。
【背景技術(shù)】
[0002]用于素數(shù)確定的有效方法對于許多密碼應(yīng)用來說是必須的。因此例如為了產(chǎn)生密鑰,在美國專利4405829描述的RSA方法中必須規(guī)定兩個秘密的素數(shù),其乘積形成公鑰的一部分。該素數(shù)的大小取決于安全性要求并且通常為數(shù)百至數(shù)千位。可預(yù)見的是,所需要的大小在將來還將明顯增加。
[0003]總體上,素數(shù)搜索是在RSA密鑰產(chǎn)生中計算量最大的步驟。從安全性原因出發(fā),通常要求,該密鑰產(chǎn)生通過數(shù)據(jù)載體本身執(zhí)行。根據(jù)數(shù)據(jù)載體的類型的不同,該過程在數(shù)據(jù)載體的生產(chǎn)(例如完成或初始化或個性化)期間導(dǎo)致時間開銷,其可以強烈改變并且可能為數(shù)分鐘。因為生產(chǎn)時間是昂貴的,所以為了產(chǎn)生密鑰而需要的時間表示了極大的成本因素。由此值得期望的是,加速密鑰產(chǎn)生并且由此提高便攜式數(shù)據(jù)載體的生產(chǎn)設(shè)備的可實現(xiàn)的產(chǎn)量。
[0004]用于縮短生產(chǎn)時間的一個重要步驟是,使用用于素數(shù)搜索的有效方法,其還滿足關(guān)于產(chǎn)生的素數(shù)的一些邊界條件。這樣的方法已經(jīng)被建議并且例如從申請公開DE 10 2004044 453 Al 和 EP I 564 649 A2 公知。
[0005]在RSA方法中,在密鑰產(chǎn)生之后進行的加密和解密過程是計算開銷相對大的。特別地對于具有有限的計算能力的便攜式數(shù)據(jù)載體由此通常采用在解密和產(chǎn)生簽名時使用中國剩余定理(CRT = Chinese remainder theorem)并且由此也稱為RSA-CRT方法的實現(xiàn)。通過使用RSA-CRT方法,對于解密和產(chǎn)生簽名所需要的計算開銷大約以4倍減小。
[0006]為了準備RSA-CRT方法,在私鑰的確定時,除了這兩個秘密的RSA質(zhì)因子之外計算另外的值并且作為私鑰的參數(shù)存儲。對此的詳細信息例如在申請公開WO 2004/03241 IAl中獲得。因為另外的RSA-CRT密鑰參數(shù)的計算通常也在便攜式數(shù)據(jù)載體的生產(chǎn)期間被執(zhí)行,所以值得期望的是,為此也使用盡可能有效的方法。
[0007]許多便攜式數(shù)據(jù)載體包含協(xié)處理器,其支持特定的計算過程。特別地公知數(shù)據(jù)載體,其協(xié)處理器支持作為蒙哥馬利乘法公知的運算,其在Peter L.Montgomery的 文 章“Modular multiplication without trial division”, Mathematics ofComputation, Vol.44, n0.170,1985年4月,519-521頁中被描述。值得期望的是,盡可能好地充分利用目前可用的或?qū)沓霈F(xiàn)在市場上的協(xié)處理器的能力。

【發(fā)明內(nèi)容】

[0008]因此,本發(fā)明要解決的技術(shù)問題是,提供一種用于素數(shù)檢驗的有效技術(shù)。[0009]按照本發(fā)明,上述技術(shù)問題完全或部分地通過具有權(quán)利要求1的特征的方法、按照權(quán)利要求14的計算機程序產(chǎn)品和按照權(quán)利要求15的裝置,特別是便攜式數(shù)據(jù)載體解決。從屬權(quán)利要求涉及本發(fā)明一些構(gòu)造的可選特征。該方法按照本發(fā)明用于密碼的目的,也就是例如用于確定用于RSA方法或RSA-CRT方法和另一種密碼方法的至少一個參數(shù)。
[0010]本發(fā)明從如下基本思路出發(fā):對于費馬測試所需的模冪計算(僅)使用蒙哥馬利運算一在此應(yīng)當理解為特別是蒙哥馬利乘法和蒙哥馬利平方一來執(zhí)行。本發(fā)明特別是當使用按照硬件地一例如通過特殊的協(xié)處理器一支持具有對于密碼目的所需的比特長度的蒙哥馬利運算的平臺時得到極大的效率提高。
[0011]在本發(fā)明的許多構(gòu)造中,可以將模冪利用正整數(shù)指數(shù)和作為具有分母中2的冪的分數(shù)值的底數(shù)來表達。例如底數(shù)可以具有值1/2??梢岳斫?,所提到種類的模冪也可以另外表達,例如模冪(1/2)f5Iiiod m等同于2_6 mod m。但是這不應(yīng)當限制保護范圍。模在許多實施方式中等于待檢驗的值。
[0012]在一些構(gòu)造中在多個方法片段中執(zhí)行模冪,其中,在每個片段中分別進行中間結(jié)果的多個一例如八個一蒙哥馬利平方以及中間結(jié)果與取決于模冪的指數(shù)的因子的剛好一個蒙哥馬利乘法。該因子例如可以是2的冪或與模通過合適的運算相關(guān)聯(lián)的2的冪。
[0013]由于在蒙哥馬利運算和“正常的”模運算之間的區(qū)別,在許多實施方式中進行再編碼,其從用于模冪的指數(shù)的通常的二進制表示中產(chǎn)生再編碼的指數(shù)。特別地,再編碼的指數(shù)的位組可以定義在前面段落中提到的2的冪。再編碼例如可以包括從取決于蒙哥馬利參數(shù)的值減去初始指數(shù)。
[0014]在方法權(quán)利要求中的步驟的編號順序不應(yīng)當理解為對保護范圍的限制。而是還可以設(shè)置本發(fā)明的如下構(gòu)造,在這些構(gòu)造中這些步驟完全或部分地按照另外的順序和/或完全或部分地交錯(交織)和/或完全或部分地并行執(zhí)行。
[0015]按照本發(fā)明的計算機程序產(chǎn)品具有程序命令,以實現(xiàn)按照本發(fā)明的方法。這樣的計算機程序產(chǎn)品可以是實體介質(zhì),例如半導(dǎo)體存儲器或磁盤或CD-ROM。然而計算機程序產(chǎn)品在一些實施方式中也可以是非實體介質(zhì),例如經(jīng)過計算機網(wǎng)絡(luò)傳輸?shù)男盘?。特別地,計算機程序產(chǎn)品可以包含在便攜式數(shù)據(jù)載體的生產(chǎn)過程中被引入到數(shù)據(jù)載體中的程序命令。
[0016]按照本發(fā)明的裝置特別地可以是便攜式數(shù)據(jù)載體,例如芯片卡或芯片模塊。這樣的數(shù)據(jù)載體以公知的方式包含至少一個處理器、多個在不同的技術(shù)中構(gòu)造的存儲器和各種輔助組件。在本文件的選詞中,概念“處理器”應(yīng)當既包括主處理器也包括協(xié)處理器。
[0017]在優(yōu)選的擴展中,計算機程序產(chǎn)品和/或裝置具有與在本說明書中提到的和/或在從屬的方法權(quán)利要求中提到的特征相應(yīng)的特征。
【專利附圖】

【附圖說明】
[0018]本發(fā)明的其他特征、任務(wù)和優(yōu)點從以下對多個實施例和實施替選方案的描述得出。參見示意性附圖。
[0019]圖1示出了用于確定兩個素數(shù)以及RSA-CRT密鑰的其他參數(shù)的方法的流程圖,
[0020]圖2示出了用于確定素數(shù)候選的方法的流程圖,
[0021]圖3示出了對于圖1和圖2的方法的實施是合適的便攜式數(shù)據(jù)載體的組件的示意圖,[0022]圖4示出了用于實施費馬測試的方法的流程圖,和
[0023]圖5示出了在使用蒙哥馬利運算的條件下具有底數(shù)1/2和正整數(shù)指數(shù)e的模冪計算的方法的示例流程。
【具體實施方式】
[0024]在本文件中特別地結(jié)合對RSA-CRT密鑰對的一個、多個或所有參數(shù)的確定來描述本發(fā)明。然而本發(fā)明也可以對于其中必須確定相對大和隨機的素數(shù)的其他應(yīng)用目的被采用。這樣的應(yīng)用目的例如可以是沒有CRT參數(shù)的秘密的RSA密鑰的計算或用于其他密碼方法的素數(shù)的計算。
[0025]一般地,RSA-CRT密鑰對的參數(shù)從兩個秘密素數(shù)P和q以及公開指數(shù)e導(dǎo)出。在此公開指數(shù)e是與(p-1).(q-Ι)互素的數(shù),其可以隨機選擇或固定預(yù)先給出。例如在一些實施例中使用第四個費馬(Fermat)素數(shù)F4 = 216+1作為公開指數(shù)e。公鑰包含公開指數(shù)e和公開的模N: =p*q。私有RSA-CRT密鑰除了包含兩個素數(shù)P和q之外還包含模逆pinv:=Pernod q 以及通過 dp: = e_1mod(p-l)及 dq: = e_1mod(q-l)定義的兩個 CRT 指數(shù) dp 和 dq。
[0026]按照圖1的方法示出了在預(yù)先給出的公開指數(shù)e的情況下秘密的RSA-CRT密鑰的所有參數(shù)的計算。該方法由在圖1的左邊和右邊欄中示出的兩部分組成。第一部分(步驟
10、12、16和20)包括一個素數(shù)P和與之相關(guān)的密鑰參數(shù)七的確定,而第二部分(步驟24、26、30、34和38)涉及另一個素數(shù)q和密鑰參數(shù)d,和pinv的確定。
[0027]可以理解,該方法在實施替選方案中可以這樣變化,使得計算剛才提到的參數(shù)的僅一些。為此當一些密鑰參數(shù)被另外計算或根本不需要時,例如可以省略或縮短方法步驟。特別地可以設(shè)置,當僅需要確定唯一一個素數(shù)時,執(zhí)行在圖1中示出的兩個方法部分的一個(也就是或者僅步驟10、12、16和20或者僅步驟24、26、30、34和38)。
[0028]在圖1中和其他附圖中實線箭頭示出了規(guī)則的程序流程,虛線箭頭示出了在一定的條件下一特別是當素數(shù)候選或預(yù)期的素數(shù)證明是合數(shù)時一被執(zhí)行的替換的程序流程。點線箭頭表示了數(shù)據(jù)流。
[0029]在圖1中示出的流程在步驟10以第一素數(shù)候選m的產(chǎn)生開始,其滿足一定的邊界條件(特別是邊界條件m = 3 mod 4)。在此處描述的實施例中在每個素數(shù)候選m的確定時作出預(yù)先選擇,其確保,素數(shù)候選m不會已經(jīng)通過小的素數(shù)(例如2,3,5,7,...)可除。具有預(yù)先選擇的合適的確定方法在圖2中示出并且在以下被詳細描述。
[0030]在步驟12中對素數(shù)候選m進行費馬測試。費馬測試是一種概率性素數(shù)測試,其將合數(shù)以高的概率作為合數(shù)來識別,而絕不會將素數(shù)錯誤地看作為合數(shù)。費馬測試基于費馬小定理,其說明,對于每個素數(shù)P和每個自然數(shù)a,成立關(guān)系:ap = amodp。反過來不一定成立,但是反例如此罕見,使得通過了費馬測試的素數(shù)候選m以幾乎確定的概率是一個素數(shù)。
[0031]如果素數(shù)候選m在步驟12中在費馬測試時被識別為合數(shù),則跳回14到步驟10,在該步驟10中確定新的素數(shù)候選。否則方法繼續(xù),其中素數(shù)候選m被看作為預(yù)期的素數(shù)P。
[0032]在步驟16中計算CRT指數(shù)dp,其通過dp: = e mod (p-1)定義。對此使用本身公知的反演方法。當e和p-1是互素的時,也就是當成立gcd(p_l, e) = I時,CRT指數(shù)dp作為公開指數(shù)e的模逆存在。如果不是這樣,則跳轉(zhuǎn)18到方法的開始。否則在步驟16中確定CRT指數(shù)dp并且方法然后在步驟20以預(yù)期的素數(shù)P的Miller-Rabin測試繼續(xù)。[0033]Miller-Rabin 測試是從在 Journal of Number Theory 12, 1980,第 128-138 頁發(fā)表的 Michael 0.Rabin 的文章 “Probabilistic algorithms for testing primality,,中公知的。在Miller-Rabin測試的每輪測試中將合數(shù)以一定的概率識別為合數(shù),而素數(shù)絕不會被錯誤地看作為合數(shù)。Miller-Rabin測試的錯誤概率取決于測試輪數(shù)并且可以通過執(zhí)行足夠多輪的測試來保持為任意小。
[0034]由于已經(jīng)提到的在步驟12中的費馬測試的高的準確性,預(yù)期的素數(shù)在步驟20中的Miller-Rabin測試中被識別為合數(shù)的概率可以忽略。在步驟16中CRT指數(shù)dp的計算由于gcd(p-l,e)辛I而失敗并且必須執(zhí)行跳轉(zhuǎn)18的概率相反地以數(shù)量級更高。由此更有效的是,在步驟20之前執(zhí)行步驟16,因為由此避免了不需要的Mi 11er-Rabin測試。盡管如此,本發(fā)明還包括如下的實施例,在這些實施例中在Miller-Rabin測試之后才計算或者在另一個時刻計算CRT指數(shù)dp。此外在實施變型中可以建議,CRT指數(shù)dp的計算與在此描述的用于素數(shù)確定的方法分開地執(zhí)行;于是可以省去步驟16。
[0035]在步驟20中執(zhí)行Miller-Rabin測試,以便能夠數(shù)學(xué)地探測例如可以為2_1(1°的期望的最大錯誤概率。在Miller-Rabin測試中執(zhí)行多輪測試,其數(shù)量取決于該錯誤概率。對于預(yù)期的素數(shù)P的一輪測試在于,隨機數(shù)被提高到((P-1)/2)次冪模P,并且在于檢查,結(jié)果是否是± I模P。在此假定邊界條件P = 3 mod 4。
[0036]在最不可能的情況下,即在預(yù)期的素數(shù)P在步驟20中的Miller-Rabin測試的一輪測試中被識別為合數(shù)的情況下,跳轉(zhuǎn)22到方法的開始。在其他情況下將素數(shù)P作為在此描述的方法的結(jié)果輸出。
[0037]在圖1的右邊欄中示出的第二方法部分除了步驟34之外是按照圖1的左邊欄的第一方法部分的重復(fù),其中計算第二素數(shù)q。由此很大程度參見上面的解釋。
[0038]步驟24、26和30類似于步驟10、12和16。當在步驟24中選擇的素數(shù)候選m在步驟26中的費馬測試中被證明是合數(shù)時,跳轉(zhuǎn)28到在步驟24中對新的素數(shù)候選的選擇。否貝1J,在步驟30中計算CRT指數(shù)dq: = e_1mod(q-l)。如果e和q_l不是互素的,貝U進行到步驟24的跳轉(zhuǎn)32。否則,方法以預(yù)期的素數(shù)d,繼續(xù)。與在第一方法部分中類似地在此也進行修改,在所述修改中在另一個時刻結(jié)合在此描述的方法或與之分離地計算CRT指數(shù)d,。
[0039]在步驟34中進行組合的測試和反演方法,其中對于預(yù)期的素數(shù)q的Miller-Rabin測試的第一輪測試與逆Pinv: =P-1Hiodq的計算耦合。因為q是素數(shù),所以逆Pinv可以利用費馬小定理確定為Pinv = P—1 = Ptr2Hiod q。因為P是隨機數(shù),所以在該計算中可以利用小的額外開銷立即執(zhí)行對于預(yù)期的素數(shù)q的第一輪Miller-Rabin測試,其中檢查,P的第((q_l)/2)次冪模q是否等于±1。
[0040]如果預(yù)期的素數(shù)q沒有通過第一輪Miller-Rabin測試,則在步驟34中進行到步驟24的跳轉(zhuǎn)36。否則在步驟38中進行Miller-Rabin測試的另外還需要的測試輪。如果該測試輪失敗,則在步驟24之后進行到新的素數(shù)候選的選擇的跳轉(zhuǎn)40。否則已知第二素數(shù)q,并且方法結(jié)束。
[0041]在一些實施方式中在圖1中示出的方法如下變化,即,替代步驟36而進行在步驟38中的附加一輪的Miller-Rabin測試。逆pinv的計算于是可以作為單獨的步驟-作為在此描述的方法的部分或與其分離地-被執(zhí)行,如果這樣的計算是根本上需要的話。由此例如逆Pinv在RSA-CRT計算時僅用于提高效率。在不使用中國剩余定理的RSA計算中根本不需要逆Pinv。
[0042]圖2示出了素數(shù)候選m的確定,如在圖1的步驟20和24中被執(zhí)行的。在該描述的實施例中在此使用提供多個素數(shù)候選m的候選域。候選域例如可以是打包的位域(bitarray,位數(shù)組)S,其位S [i]說明,具有取決于位位置i的、與基礎(chǔ)值b的偏移的數(shù)字是否是素數(shù)候選m。
[0043]在按照圖2的方法中首先在測試42中檢查,是否存在一個合適的和非空的候選域。如果否,則在步驟44中產(chǎn)生滿足條件b = 3mod4的隨機的基礎(chǔ)值b。
[0044]在步驟46中然后產(chǎn)生候選域。作為用于候選域的數(shù)據(jù)結(jié)構(gòu),在本實施例中使用位域S,其位位置i分別相應(yīng)于與基礎(chǔ)值b相差4的偏移。完成的候選域的每個位S[i]由此顯示,數(shù)字b+4是否能夠作為素數(shù)候選m被使用。
[0045]為了在步驟46中產(chǎn)生候選域,首先將所有的位S[i]初始化到第一值(例如值“I”)。然后按照厄拉多塞篩法的原理將與能夠被小的素數(shù)除盡的數(shù)字b+4相應(yīng)的那些位S[i]改變到第二值(例如值“O”)。候選域的大小和篩遍歷的數(shù)量一根據(jù)可用的存儲容量一這樣選擇,使得總方法的平均運行時間被最小化。這是一個優(yōu)化任務(wù),其解取決于與用于失敗的費馬測試的開銷相比用于預(yù)先選擇的相對開銷。對于具有2048個位的RSA密鑰例如可以執(zhí)行數(shù)千個篩遍歷,其中然后需要大約40個費馬測試用于確定素數(shù)P和q中的一個。
[0046]在步驟48中最后從填滿的候選域中選擇一個素數(shù)候選m。該選擇例如可以隨機地或按照預(yù)先給出的順序進行。在圖2中示出的方法的其他調(diào)用時將步驟48緊接著測試42進行,并且一直從曾經(jīng)占據(jù)的候選域中選擇另外的素數(shù)候選m,直到域為空或低于預(yù)先給出的最小填充量。
[0047]在圖1和圖2中示出的方法在一些實施方式中由便攜式數(shù)據(jù)載體的至少一個處理器執(zhí)行。圖3示出了這樣的數(shù)據(jù)載體50,其例如作為芯片卡或芯片模塊構(gòu)造。數(shù)據(jù)載體50具有微控制器52,其中以公知的方式將主處理器54、協(xié)處理器56、通信接口 58和存儲器組件60集成在唯一一個半導(dǎo)體芯片上并且通過總線62互相連接。
[0048]存儲器組件60具有多個按照不同的技術(shù)構(gòu)造的存儲器陣列,其例如包括只讀存儲器64 (掩模編程ROM)、非易失性可覆蓋存儲器66(EEPR0M或閃存)和工作存儲器68 (RAM)。在此描述的方法以在只讀存儲器64和部分地也在非易失性可覆蓋存儲器66中包含的程序命令70的形式實現(xiàn)。
[0049]數(shù)據(jù)載體50的協(xié)處理器56構(gòu)造為用于有效執(zhí)行各種密碼運算。特別地對于在此描述的實施例重要的是,協(xié)處理器56支持具有如對于密碼應(yīng)用所需的位長度的蒙哥馬利乘法。在大多構(gòu)造中協(xié)處理器56不支持“正常的”模乘,從而這樣的乘法必須以極高的開銷通過主處理器54執(zhí)行。
[0050]對于自然數(shù)X,y和奇數(shù)自然數(shù)m (其中X,y<m),以及2的冪R (其中R>m),x和y關(guān)于R的蒙哥馬利乘積模m —般地通過如下來定義:
[0051]x*m’Ry: = X.y.Ir1Iiiodm
[0052]一般地在本文件中在式子“a = z modm”的模關(guān)系的說明中使用等號“=”以及定義符號“:=”,以表達,a是來自于(2 + Z) H [O,…,m[中的清楚定義的元素,對于該元素
成立模關(guān)系。而符號表示“a = Z modm”僅表達,成立等效的模m。
[0053]當蒙哥馬利系數(shù)R從上下文中得出時,在本文件中對于蒙哥馬利乘積通常也使用簡短的符號表示x*my來替代詳細的符號表示x*m,Ry。
[0054]盡管上面定義的蒙哥馬利乘法是模運算,但是其可以沒有除法地被實現(xiàn),如本身公知的并且例如在開頭提到的文章“Modular multiplication without trial division”中描述的那樣。對于蒙哥馬利乘法,需要兩個非模乘,一個事先根據(jù)m和R計算的輔助值,一些加法和從m的終止條件減法。這些計算可以通過協(xié)處理器56有效執(zhí)行。
[0055]在目前商業(yè)上可得的微控制器52中公知協(xié)處理器56'、56"、56"'的構(gòu)造,其不是精確地執(zhí)行上面定義的蒙哥馬利乘法,而是執(zhí)行其修改。對于這些修改的原因主要在于,對于是否應(yīng)該執(zhí)行蒙哥馬利乘法的終止條件減法的判斷,可以按照不同的方式來優(yōu)化。一般地,修改的協(xié)處理器56'、56"、56",在蒙哥馬利乘法的計算中提供如下結(jié)果,該結(jié)果與上面定義的結(jié)果潛在地以模m的小的數(shù)倍而不同。此外這樣擴展對于在修改的協(xié)處理器56'、56"、56",中因子X和y的允許的值域,使得計算的結(jié)果始終又將允許的輸入值表示為蒙哥馬利乘法的因子。
[0056]更具體而言,第一修改的協(xié)處理器56'計算第一修改的蒙哥馬利乘積X*' my,其如下定義:
[0057]X*' my: = (x.y.R_1mod m) +k.m
[0058]在此對于確定的寄存器大小η為R = 2n,n是16的倍數(shù)。用于因子χ和y的值域被擴展到[0,...,1?-1],并且1^是自然數(shù),其這樣小,使得成立^ my〈R。
[0059]而第二修改的協(xié)處理器56〃計算第二修改的蒙哥馬利乘積x*〃my,其如下定義:
[0060]x*"my: = (χ.y.Tri modm) - ε.m
[0061]因子χ和y在此是在范圍_m≤x,y〈m中的整數(shù)。此外成立ε e {0,1},并且指數(shù)n'對于精度P = 1,2或4具有值n' = n+16p、塊尺寸c (其中160≤c≤512),其是32的倍數(shù)、和寄存器大小n = c.p。對于模m成立m〈2n,并且值R定義為R: = 2n'。
[0062]最后,第三修改的協(xié)處理器56",計算第三修改的蒙哥馬利乘積X*" / my,其如下定義:
[0063]χ*" ' my: = (χ.y.2十c mod m) + ε.m
[0064]因子χ和y在此是自然數(shù)(其中眾2卜。并且y〈2*m.)。此外成立ε e {0,1}。塊大小c是固定的并且為c = 128。用于因子χ的寄存器大小為t*c。用于其他變量的寄存器大小利用η表示并且為塊大小c的倍數(shù)。當成立n = t 時,則因子χ不是需要滿足條件χ〈2ι ‘c而是僅需要滿足條件x〈max {2.m, 2n}。
[0065]本方法也可以在其他修改的協(xié)處理器56〃〃中應(yīng)用。
[0066]當如下并不起作用或從前后關(guān)系中得出時,即,涉及的恰好是按照初始給出的定義的協(xié)處理器56的蒙哥馬利乘積x*my還是協(xié)處理器56'、56"、56"'之一的三個修改的蒙哥馬利乘積χ*' my&X*" my&X*" ' my之一,在本文件中兩個因子關(guān)于模m的蒙哥馬利乘積一般地通過χ氣y表示。
[0067]當輸入值X,y首先借助蒙哥馬利變換被變換到其相應(yīng)的蒙哥馬利表達X',1'并且然后結(jié)果值從其蒙哥馬利表達X,被變換回值X時,一般地可以將每個“正常的”模乘χ.y = z mod m通過蒙哥馬利乘法χ' *my/ = z'來代替。蒙哥馬利變換例如可以通過計算χ': =x*Rmodm來進行。在反變換中可以有效地通過具有因子I的蒙哥馬利乘法,也就是通過計算z: =Z'氣1,來確定結(jié)果z: = Z'.R_1mod m0[0068]由于所需的來回變換,通過蒙哥馬利乘法來代替唯一的模乘通常不是有效的。但是當先后要執(zhí)行多個乘法時-例如在模冪中那樣,則可以將這些乘法完全在蒙哥馬利數(shù)字空間中執(zhí)行。于是僅需要在計算序列的開始時的唯一的前向變換和在計算序列結(jié)束時的唯一的反向變換。
[0069]按照剛才描述的原理,在圖1和圖2中示出的方法中可以將唯一的或全部模乘作為蒙哥馬利乘法來實現(xiàn)??梢岳斫?,在此在蒙哥馬利數(shù)字空間中進行的計算片段應(yīng)當盡可能被綜合,以便減少所需的前向和反向轉(zhuǎn)換的數(shù)量。加法和減法可以在“正常的”數(shù)字空間中和在蒙哥馬利數(shù)字空間中沒有區(qū)別地進行。
[0070]當數(shù)據(jù)載體50具有雖然支持蒙哥馬利乘法但是不支持正常的模乘的協(xié)處理器56'、56"、56",時,蒙哥馬利乘法的使用是特別有利的。即使協(xié)處理器56'、56"、56",支持兩種乘法種類,也通常更有效地執(zhí)行蒙哥馬利乘法。根據(jù)所需的變換的數(shù)量-特別是與反向變換相比更麻煩的前向變換的數(shù)量-得到極大的節(jié)省,甚至在蒙哥馬利乘法比正常的模乘僅稍微有效地要被執(zhí)行時。
[0071]在此處描述的實施例中,在圖1和圖2中示出的方法特別地關(guān)于在步驟12和28中執(zhí)行的費馬測試被優(yōu)化。可以理解,有效的費馬測試的在以下描述的構(gòu)造不限于按照圖1和圖2的方法流程,而是其在實施變型中也可以對于其中進行素數(shù)測試的其他應(yīng)用目的而設(shè)置。
[0072]如上所述,在費馬測試中檢驗,對于素數(shù)候選m和自然數(shù)a是否成立am = a mod m。替換地也可以檢驗關(guān)系a01—1) = Imodm,這產(chǎn)生很小的計算開銷。作為其他替換可以檢驗,對于從奇數(shù)的素數(shù)候選m(并且由此偶數(shù)值m-Ι)中通過以一個二進制位數(shù)向右移動而得出的值m'是否成立關(guān)系am, ξ ± Imod m(以及zm' =(m_l)/2)。
[0073]在上述三種情況中必須執(zhí)行具有與m —樣長或比m短一個二進制位數(shù)的正整數(shù)指數(shù)的模m的冪計算。如果在此使用本身公知的平方和乘法方法(quare and multiplymethod),則對于這些冪計算的計算開銷與m的長度的三次冪成比例。
[0074]在按照圖1和圖2的方法的實施例中例如可以如上所述平均需要大約40個費馬測試用于確定對于具有2048個位的RSA密鑰的兩個素數(shù)P和q中的每個素數(shù)。在實踐中這意味著,按照圖1和圖2的方法的總計算時間的大部分被用于在步驟12和26中的費馬測試。該比例在其他RSA密鑰長度的情況下也不改變,因為所需的費馬測試的平均的數(shù)量隨著RSA密鑰的位長度線性增加。
[0075]在此描述的實施例中在使用蒙哥馬利乘法的情況下優(yōu)化費馬測試。在此,在具有正整數(shù)的指數(shù)的取冪表達中,將在分母中具有2的冪的分數(shù)值、例如值(2m+l)/2 = l/2modm用作底數(shù)α。通過該措施,可以將用于費馬測試的計算開銷減小四分之一,并且更確切而言是與其中借助平方-和-乘法方法對于任意底數(shù)α進行費馬測試的冪計算的實現(xiàn)方案相比計算開銷減小四分之一。稍后討論借助蒙哥馬利運算進行取冪的細節(jié)。
[0076]圖4示出了費馬測試的示例性的實現(xiàn)方案,如其在圖1的步驟12和26中的一些擴展方案中實施那樣。如已經(jīng)提及的,在費馬測試中進行具有與保密的素數(shù)候選m相關(guān)的指數(shù)e的冪計算。因此,指數(shù)e也必須保密。特別地,側(cè)信道攻擊(例如其中收集并且在統(tǒng)計學(xué)上評估與多個計算流程有關(guān)的信息的DPA攻擊)變得困難。因此,在圖4中示出的實施例中設(shè)置,借助小的隨機數(shù)r掩蔽指數(shù)e。為此,在步驟72中確定合適的隨機數(shù)r,并且在步驟74中將指數(shù)e作為掩蔽數(shù)r與值(m_l)/2的乘積確定,該值(m_l)/2對應(yīng)于向右移一個二進制位的素數(shù)候選m。
[0077]指數(shù)的掩蔽稍微減小了費馬測試的結(jié)論力,但是其除了提高的窺視保護之外還具有稍后闡述的其它優(yōu)點。
[0078]在步驟76中然后進行具有底數(shù)1/2的冪計算,并且在步驟78中檢驗,結(jié)果是否具有值±1。如果是,則費馬測試成功結(jié)束。否則進行到新的素數(shù)候選的選擇的跳轉(zhuǎn)14及28。
[0079]如在圖4中所示,在使用蒙哥馬利運算一在以下特別地理解為蒙哥馬利乘法和蒙哥馬利平方一的條件下執(zhí)行步驟76中的冪計算。合適的方法的多個變型在以下描述。但是為了更好理解,首先示出比較方法,其使用“正常的”模乘a*Mb: = a.b mod M,如通過數(shù)據(jù)載體50的主處理器54或通過合適的協(xié)處理器執(zhí)行的。在比較方法中借助已經(jīng)提到的平方和乘法技術(shù)執(zhí)行冪運算,在所述平方-和-乘法技術(shù)中對于指數(shù)的每個位進行中間結(jié)果的平方和一根據(jù)指數(shù)位(Exponentenbit)的值一還進行中間結(jié)果與待求冪的底數(shù)的乘法。
[0080]在比較方法中設(shè)置,以底數(shù)a = 2執(zhí)行費馬測試。平方和乘法技術(shù)的乘法于是僅是中間結(jié)果的翻倍并且可以通過中間結(jié)果以一個比特向左移動來實現(xiàn)。為此的開銷可以忽略。對于平方的開銷并不通過底數(shù)2的選擇改變。因為在隨機的指數(shù)的情況下需要的平方次數(shù)是乘法的平均大約兩倍多,所以當使用底數(shù)2時,對于費馬測試的開銷以三分之一下降。
[0081]但是,當通過測量電流消耗或數(shù)據(jù)載體50的其他參數(shù)可以確定在指數(shù)的位的處理中中間結(jié)果是否翻倍一也就是向左移動時,剛才描述的比較方法潛在地容易受到側(cè)信道攻擊。一些協(xié)處理器提 供特別的命令,所述命令防止這樣的攻擊。如果沒有提供合適的命令,則在此建議比較方法的修改,所述修改可以稱為“平方八次-和乘法一次技術(shù)”。
[0082]在剛才提到的修改中分別執(zhí)行八次平方,但是所屬的潛在的乘法分別綜合為唯一一個乘法。對于移動的乘法的指數(shù)位分別被收集在一個字節(jié)^中,并且執(zhí)行的乘法然后以因子2ε?進行??傮w上該方法可以利用以下偽代碼符號標記來描述:
[0083]方法I
[0084]輸入值:指數(shù)e = e0+ei.256+...+en.256n
[0085]寄存器M中的模
[0086]寄存器:M,X,Y
[0087]輸出值:寄存器Y中的冪2e mod M
[0088]方法流程:
[0089]設(shè)置Υ=2β?(1.1)
[0090]對于i = η-l向下計數(shù)到O (1.2)
[0091]執(zhí)行8 次(1.3)
[0092]設(shè)置Y* = Y mod M(1.4)
[0093]結(jié)束(1.5)
[0094]設(shè)置(1.6)
[0095]設(shè)置Y* = X mod M(1.7)
[0096]結(jié)束(1.8)[0097]在上面的偽符號表示中符號A* = B mod M意味著,寄存器A中的內(nèi)容通過A -B modM代替。寄存器M,X和Y分別具有至少256位的大小。值ei對于O < i < η表示具有基礎(chǔ)256的位置值系統(tǒng)中的指數(shù)e的“數(shù)位”;成立O < ei < 255。
[0098]在行(1.1)中進行寄存器Y的初始化。對于指數(shù)e的每個字節(jié)然后執(zhí)行循環(huán)過程,該循環(huán)過程分別包括行(1.3)-(1.7)。在此在行(1.3)和(1.4)中將寄存器Y的內(nèi)容平方八次。在行(1.6)和(1.7)中進行寄存器Y中的中間結(jié)果與因子#的乘法。在行(1.1)和(1.6)中的冪計算可以有效地通過以下來執(zhí)行,即,例如為了計算Α=2Α首先將寄存器A置為零,然后將一從最低位的位開始計算的一第(k+Ι)個位反轉(zhuǎn)到“I”。
[0099]只要具有不同的2的冪的乘法不能通過攻擊來區(qū)分,則上面的比較方法I可以防側(cè)信道攻擊。如果對于具有底數(shù)2的費馬測試采用該方法,則由此與對任意的底數(shù)α進行冪計算的費馬測試相比可以將計算開銷減小四分之一。
[0100]發(fā)明人認識到,剛才描述的比較方法I可以被擴展為使得使用蒙哥馬利乘法并且由此可以在具有合適的協(xié)處理器56,56',56",56",的數(shù)據(jù)載體50上有效地執(zhí)行。令人吃驚地可以通過方法流程的相對小的修改實現(xiàn)這一點。特別地在以下稱為“方法2”的擴展的方法中,計算2的負的冪作為結(jié)果,即F= (1/2)%而不是在方法I中計算的值2%此外在方法2中設(shè)置附加的步驟,在該步驟中將指數(shù)e合適地再編碼,以補償蒙哥馬利運算而不是方法I中的“正常的”模乘和平方。
[0101]與在比較方法I中同樣地,在方法2中使用兩個寄存器X和Y以及用于模m的一個恒定的第三寄存器M。寄存器Y具有與M相同的大小,而寄存器X必要時可以更小。所有三個寄存器具有至少256位,并且模m為至少2255。
[0102]方法2可以對于上面提到的所有協(xié)處理器56,56',56",56"'使用。該通用性通過如下實現(xiàn),即,方法2使用僅兩個在所有常用的平臺上可用的普通的蒙哥馬利命令。這些命令首先是寄存器Y的蒙哥馬利平方并且其次是寄存器X和Y的蒙哥馬利乘法。在蒙哥馬利平方中將寄存器Y的值通過Y*m,K Y來代替。該蒙哥馬利平方在以下通過偽代碼命令“設(shè)置Y* = Y*R_1mod Μ”表達。其中將寄存器Y的值通過X*m,K Y代替的蒙哥馬利乘法在以下通過偽代碼命令“設(shè)置Y* = X*R_1mod Μ”表達。
[0103]此外,在方法2中將寬度r的寄存器(X或Y)以2的冪2k(其中O≤k〈r)來初始化。該過程通過偽代碼命令“設(shè)置Z = 2k”來表達。方法2于是可以被如下描述:
[0104]方法2
[0105]輸入值:指數(shù)e = e0+ei.256+...+en.256n
[0106]寄存器M中的模
[0107]寄存器:M,X,Y
[0108]輸出值:寄存器Y中的冪2_e mod M
[0109]方法流程:
[0110]執(zhí)行“方法3”(2.0)
[0111](從指數(shù)e產(chǎn)生具有f= Vf1.256+…+fn.256n的再編碼的指數(shù)f)
[0112]設(shè)置Y = ^(2.1)
[0113]對于i = η-l向下計數(shù)到O(2.2)[0114]執(zhí)行8 次(2.3)
[0115]設(shè)置Y* = Y*R_1mod M(2.4)
[0116]結(jié)束(2.5)
[0117]設(shè)置Χ.Λ(2.6)
[0118]設(shè)置Y* = X*R_1mod M(2.7)
[0119]結(jié)束(2.8)
[0120]除了在行(2.0)中的準備步驟之外,方法2的結(jié)構(gòu)精確地相應(yīng)于方法I的結(jié)構(gòu)。在行(2.1)中對寄存器Y初始化之后又執(zhí)行具有作為循環(huán)體的行(2.3)-(2.7)的循環(huán)。在行(2.3)和(2.4)中對寄存器Y中的中間結(jié)果執(zhí)行八次蒙哥馬利平方,并且在行(2.6)和(2.7)中進行寄存器Y與因子2fi的蒙哥馬利乘法。也就是方法I和2僅通過步驟(2.0)中的指數(shù)的再編碼并且通過如下,即,使用蒙哥馬利乘法和平方而不是正常的模乘和平方而相區(qū)別。
[0121]在上面描述的方法2的修改中可以將兩個行(2.6)和(2.7)綜合為唯個命令,在該命令中將寄存器Y的值通過乘積Y.2fi_n, modM來代替;在此n'是蒙哥馬利參數(shù)R的二進制對數(shù),從而成立R = 2n,。在此處使用的偽符號表示中可以將該綜合的命令利用“設(shè)置 Y* = 2fi*2— mod Μ” 來表達。
[0122]方法2的結(jié)果可以對于在此處理的協(xié)處理器56,56' ,56" ,56"'中的一些協(xié)處理器在必要時以模M的 小的倍數(shù)與期望的最終結(jié)果2_e mod M不同。由此可以需要,作為終止校正步驟執(zhí)行寄存器Y模M的模約簡。
[0123]在這里描述的實施例中按照如下方法執(zhí)行在行(2.0)中指數(shù)e的再編碼:
[0124]方法3
[0125]輸入值:指數(shù)e = e0+ei.256+...+en.256n
[0126]蒙哥馬利參數(shù)R對底數(shù)2的對數(shù)n'(由此成立R = )
[0127]輸出值:具有f = f。+^.256+…+4.2561^^再編碼的指數(shù)f,用于在方法2中的應(yīng)用
[0128]方法流程:
[0129]設(shè)置f = n'.(256+2562+2563+...+256n)-e (3.1)
[0130]存儲f。,,…,fn(3.2)
[0131]其中f = fo+A.256+...+fn.256n (3.3)
[0132]并且0 ≤ 4〈256 對于 0 ≤ i〈n(3.4)
[0133]通過以下討論可以解釋,具有按照方法3對指數(shù)e的再編碼的方法2提供正確的結(jié)果:首先要注意,在方法流程期間寄存器X和Y中的所有值始終是2的模冪(具有模M),因為寄存器利用2的冪被初始化,并且因為蒙哥馬利運算可以寫成具有作為因子的2的(必要時負的)冪的模乘。執(zhí)行的計算由此可以更清楚地寫做關(guān)于模M的相對于底數(shù)2的其對數(shù)的形式。
[0134]對于Y = 2>^PR = 2n,,在行(2.4)中的蒙哥馬利平方可以寫成翻倍和減法,其中y通過2*y-n'來代替(運算“S”)??梢栽诩拇嫫髌矫嫔蠈懗伞霸O(shè)置Y* = 2k*2_n, mod Μ”的、行(2.7)和(2.8)的組合的運算,在對數(shù)表達中將y通過y+k-n'來代替(運算“Mk”)。
[0135]在方法2中分別執(zhí)行八次運算S并且然后執(zhí)行一次組合的運算Mk。在對數(shù)表達中該方法流程可以如下表示:
[0136]y — S 2 ?y-n/ —S4*y-3*n, —S8.y-7.η, —S......— S 256.y-255.η,
—Mk 256.(y-n/ )+k
[0137]為了顯示指數(shù)e的合適的再編碼,再編碼的指數(shù)f的字節(jié)fn,fn_1;..., fο必須具有特征,即,在以下定義的序列yn,Yn^1, -,y0中得出結(jié)果I, = -e ;函數(shù)的級聯(lián)通過符號“ ο ”表達:
[0138]yn: = fn
[0139]Y1: = Mfi o S8(yi+1) = 256.(yi+1-n/ Hfi 對于 i = n_l,...,0
[0140]可以通過關(guān)于n的歸納顯示,在方法3中定義的再編碼具有剛才提到的特征并且由此得到方法2的正確結(jié)果。
[0141]圖5示出了剛才描述的方法2和3的示例流程。在步驟80中按照方法3進行指數(shù)e的再編碼,以從具有其位組82 —在此是字節(jié)en,—的原始的指數(shù)e中獲得具有其位組84 —在此是字節(jié)fn,fn_1;..., fο 一的再編碼的指數(shù)f。
[0142]在步驟80中的再編碼之后的方法流程可以劃分為初始化86和η個片段88。在初
始化86的過程中在步驟90中執(zhí)行按照方法2的行(2.1)的命令“設(shè)置Y = 2/#,,。η個片
段88的每一個分別相應(yīng)于方法2的一個循環(huán)過程并且分別對應(yīng)于再編碼的指數(shù)f的位組84的一個。
[0143]每個片段88具有三個主要步驟92、94和96。在步驟92中按照方法2的行(2.3)和(2.4)對在寄存器Y中包含的中間結(jié)果執(zhí)行八次蒙哥馬利平方。在與行(2.6)相應(yīng)的步驟94中,在寄存器X中存儲具有指數(shù)的2的冪,該指數(shù)通過再編碼的指數(shù)f的對應(yīng)的位組84形成。該步驟94可以有效地通過如下實現(xiàn),即,寄存器X首先被刪除并且然后將其位位置通過對應(yīng)的位組84說明的位設(shè)為值“I”。步驟96相應(yīng)于方法2的行(2.7)并且包含寄存器Y和X的蒙哥馬利乘法。
[0144]在總共執(zhí)行了 η個片段88之后,在寄存器Y中-在必要時還需要的通過步驟98中的模約簡進行的校正之后-呈現(xiàn)期望的結(jié)果2_emodM。該結(jié)果在圖4所示的費馬測試中在步驟78中被進一步使用。
[0145]以下示出至此描述的方法的一些可選的簡化和擴展。在不同的實施變型中可以利用這些簡化和擴展的不同組合,以便例如將采用的方法特別好地匹配到確定的蒙哥馬利協(xié)處理器56,56',56",56" /或者以便進一步提高窺探安全性。
[0146]首先討論按照方法3的指數(shù)再編碼中的潛在困難,即,對于fn可能出現(xiàn)大于255
的值。對于小的%于是可能在方法2的步驟(2.1)中確定的值^大于模m并且由此對于
作為初始值存儲在寄存器Y中來說太大了。然而對于所有在此處理的蒙哥馬利協(xié)處理器56,56' ,56" ,56"'可以這樣選擇用于模m的寄存器大小,使得對于各自的蒙哥馬利系
數(shù)n'滿足不等式2(4/5W <m〈2n,。條件2^-</?于是可以對于非常小的ε >0如下被放大:
[0147] fn = n'.(256/255).(1- ε )-en e [0, (4/5).n']
[0148]剛才提到的條件當在以下利用㈩表示的不等式1/4.n' <en〈n'成立時總是滿足。
[0149]如果方法3得到對于fn的過大的值,則該值可以在圖5的步驟90之前利用模m來模約簡,從而然后在步驟90中將寄存器Y置為得到的余數(shù)。對于非常小的en(en〈n' /256)也可以將第η個片段82容納到第(η-l)個片段82中。在該情況下將η減小1,并且將eiri提高θη.256。此外在一些構(gòu)造中可以設(shè)置,為了掩蔽素數(shù)候選m這樣選擇在圖4的步驟74中使用的隨機數(shù)r,使得滿足不等式(* )。
[0150]對于最后提到的變形例如可以當在圖4的步驟72中確定合適的隨機數(shù)r時首先這樣確定一個值s,使得對于正整數(shù)k成立關(guān)系s.((m-l)/2) ^ (1/3).n'.256k。這可以通過短的一在一些構(gòu)造中也僅近似執(zhí)行的一除法來進行。于是對于在s和2.s之間的每個數(shù)r通過定義e: = r.(m-l)/2得到一個指數(shù)e,其滿足不等式(*)。這樣的數(shù)r被隨機地選擇并且作為掩蔽參數(shù)在圖4的步驟72中被使用。
[0151]在圖5的步驟94或方法2的行(2.6)中采用的2的冪具有僅一個被置為值“ I”的位。在圖5的步驟96或方法2的行(2.7)中該2的冪用作每個蒙哥馬利乘法的因子。在一些配置中在此可能存在對于側(cè)信道攻擊一例如SPA攻擊或模板攻擊一的起點,通過所述起點可能試圖確定“ I ”位的位置。
[0152]為了提高該方法相對于剛才提到的攻擊可能性的安全性,由此在一些構(gòu)造中設(shè)置,作為蒙哥馬利乘法的因子不使用值2Λ,而是使用值w - 2/.?也就是方法2的行(2.6)
可以通過偽代碼命令“設(shè)置X = M- 來代替。由于模計算,由此僅改變在寄存器Y中
在行(2.7)的蒙哥馬利乘法 之后獲得的中間結(jié)果的符號。對于具有i = n-1,...,I的循環(huán)過程,但是該-1的附加的因子在各個隨后的循環(huán)過程的行(2.4)中平方時被校正。僅在最后的循環(huán)過程(i = O)中不進行這樣的校正;但是在此符號變換由此不起作用,因為在圖4的步驟78中總是要測試,寄存器Y是否具有內(nèi)容±1。
[0153]為了在剛才描述的構(gòu)造中簡化值m_2fi的計算,在可選的擴展中設(shè)置,在圖1的步驟10和24中選擇素數(shù)候選m時要求附加的約束條件,即,沒有一個素數(shù)候選m允許包含具
有值“O”的八個或更多個先后跟隨的字節(jié)。該約束條件確保,進位位(tibenragsbit)在減
法中只能以最高8字節(jié)傳播,從而對于該減法可以使用具有恒定的運行時間的方法。剛才提到的約束條件還提高相對于潛在的側(cè)信道攻擊的安全性,在所述側(cè)信道攻擊中可能試圖窺探關(guān)于具有數(shù)據(jù)塊的加載或乘法過程的信息,所述數(shù)據(jù)塊具有值O。
[0154]在另一個變型中設(shè)置,作為圖5的步驟96中或方法2的行(2.7)中的蒙哥馬
利乘法的因子不是使用值2/:,而是使用值TM ? 2fly其中符號“ ? ”表示異或運算。出于
上述原因,該修改也提供正確的結(jié)果,因為值W或者等于2fi或者等于-2fi。但
是,通過對于蒙哥馬利乘法的輸入值的限制,該構(gòu)造不能兼容于所有的蒙哥馬利協(xié)處理器56,56' ,56" ,56"'。
[0155]另一個實施變型特別地涉及上面描述的蒙哥馬利協(xié)處理器56"',其對于蒙哥馬利乘法的兩個因子中的一個允許與模的長度不同的長度。當提到的蒙哥馬利因子被置為256比特時,特別有效地執(zhí)行圖5的步驟96中的蒙哥馬利乘法。但是存在如下問題,即,如
何可以有效掩蔽每個值26的唯一的“I”位。在一些構(gòu)造中設(shè)置,該問題通過如下來解決,
SP,將模寫入到協(xié)處理器56"'的寄存器中。當模具有奇數(shù)數(shù)量的128位塊時,最高位的128位塊被附上。
[0156]作為圖5的步驟96中的蒙哥馬利乘法的因子X,在該構(gòu)造中分別使用兩個128位塊,以最高位的塊開始,其中與值相應(yīng)的位被反轉(zhuǎn)。在每個另外的循環(huán)過程中使用接下來的兩個塊,其中在最低位的塊之后又以最高位的塊開始。
[0157]當模的字節(jié)長度不是模的128位塊的兩倍數(shù)量的倍數(shù)時,必須額外地處理最后執(zhí)行的蒙哥馬利乘法。例如可以設(shè)置,沒有掩蔽地處理模的最低位字節(jié)。作為替換,可以執(zhí)行唯一一個附加的平方和乘法過程,但是這引起附加的計算開銷。但是將提高程序代碼的復(fù)雜性的另一個替換在于,將模的多個副本重疊。在該情況中對于“平均的”乘法將模的最高位的塊或多個最高位的塊加到模的最低位的塊或多個最低位的塊。
[0158]應(yīng)當理解,在此描述的實施方式和實施變型僅作為例子看待。在此描述的特征的其他修改和組合對于專業(yè)人員來說是明顯的。
【權(quán)利要求】
1.一種為了密碼應(yīng)用而檢驗一個值是否是素數(shù)的方法,其中進行費馬測試(12,16),該費馬測試包含具有指數(shù)(e)和模(m)的底數(shù)的模冪,其中指數(shù)(e)和模(m)分別取決于待檢驗的值, 其特征在于,所述模冪在使用蒙哥馬利運算的條件下進行。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述模冪能夠作為具有正整數(shù)指數(shù)和是具有分母中2的冪的分數(shù)值的底數(shù)的模冪來表達。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述模冪能夠作為具有正整數(shù)指數(shù)和底數(shù)1/2的模冪來表達。
4.根據(jù)權(quán)利要求1至3中任一項所述的方法,其特征在于,所述模(m)與待檢驗的值相同。
5.根據(jù)權(quán)利要求1至4中任一項所述的方法,其特征在于,所述模冪具有多個方法片段(88),其中在每個片段(88)中以取決于所述模冪的指數(shù)(e)的因子(X)分別對中間結(jié)果(Y )進行多個蒙哥馬利平方(92)和對該中間結(jié)果(Y )執(zhí)行恰好一個蒙哥馬利乘法(96)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在每個片段(88)中對所述中間結(jié)果(Y)執(zhí)行八次蒙哥馬利平方(92)。
7.根據(jù)權(quán)利要求5或權(quán)利要求6所述的方法,其特征在于,所述蒙哥馬利乘法(96)的因子(X)根據(jù)2的冪來確定,其指數(shù)通過再編碼的指數(shù)(f)的位組(84)來形成,其中,通過對所述模冪的指數(shù)(e)再編碼(80)得到的所述再編碼的指數(shù)(f)被匹配到蒙哥馬利運算的使用。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述蒙哥馬利乘法(96)的因子(X)與所提到的2的冪相同,或者所述蒙哥馬利乘法(96)的因子(X)通過在其中引入模(m)的運算而從所提到的2的冪中獲得。
9.根據(jù)權(quán)利要求1至6中任一項所述的方法,其特征在于,所述模冪的指數(shù)(e)被再編碼,以便獲得再編碼的指數(shù)(f),其匹配到在所述模冪情況下蒙哥馬利運算的運用。
10.根據(jù)權(quán)利要求7至9中任一項所述的方法,其特征在于,所述再編碼的指數(shù)(f)是取決于蒙哥馬利參數(shù)(R)的值和所述模冪的指數(shù)(e)之差。
11.根據(jù)權(quán)利要求1至10中任一項所述的方法,其特征在于,所述模冪的指數(shù)(e)從待檢驗的值中通過將該待檢驗的值向右移動和掩蔽來獲得。
12.根據(jù)權(quán)利要求1至11中任一項所述的方法,其特征在于,所述方法通過至少一個處理器(54,56,56',56",56"')、特別是便攜式數(shù)據(jù)載體(50)的至少一個處理器(54,56,56',56",56"')執(zhí)行。
13.根據(jù)權(quán)利要求1至12中任一項所述的方法,其特征在于,所述方法用于確定RSA密鑰或RSA-CRT密鑰的至少一個參數(shù)。
14.一種計算機程序產(chǎn)品,具有多個程序命令,所述程序命令允許至少一個處理器(54,56, 56' , 56",56"')執(zhí)行按照權(quán)利要求1至13中任一項所述的方法。
15.一種裝置,特別是便攜式數(shù)據(jù)載體(50),具有至少一個處理器(54 ,56,56',56〃,56"')和至少一個存儲器(60,64,66,68),其中,所述裝置構(gòu)造為執(zhí)行按照權(quán)利要求1至13中任 一項所述的方法。
【文檔編號】G06F7/72GK104025018SQ201280064258
【公開日】2014年9月3日 申請日期:2012年10月25日 優(yōu)先權(quán)日:2011年10月28日
【發(fā)明者】J.普爾庫斯 申請人:德國捷德有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
沂南县| 宜州市| 疏勒县| 庆安县| 隆林| 苍梧县| 西昌市| 盐源县| 惠水县| 菏泽市| 库尔勒市| 剑川县| 宁波市| 连平县| 雅江县| 西丰县| 屏山县| 沂南县| 阳东县| 庄河市| 苏尼特左旗| 沁阳市| 同心县| 永年县| 托克托县| 崇仁县| 莱芜市| 长岭县| 宁都县| 池州市| 蓝山县| 广东省| 余江县| 西贡区| 堆龙德庆县| 沿河| 望江县| 龙口市| 桃江县| 彭泽县| 钟祥市|