通過至少一個(gè)蒙哥馬利運(yùn)算確定除余數(shù)和對(duì)于密碼應(yīng)用確定素?cái)?shù)候選的制作方法
【專利摘要】在一種用于確定第一值(b)模第二值(p')之后的除余數(shù)的方法中利用第一值(b)作為因子之一和第二值(p')作為模執(zhí)行(74.1)第一蒙哥馬利乘法,確定(74.2)校正因子,以第一蒙哥馬利乘法的結(jié)果作為一個(gè)因子和校正因子作為另一個(gè)因子和第二值(p')作為模,執(zhí)行(74.3)第二蒙哥馬利乘法。在一個(gè)用于確定素?cái)?shù)候選的方法中確定用于篩法的基礎(chǔ)值(b),并且執(zhí)行多個(gè)篩遍歷,在所述篩遍歷中分別確定(72)一個(gè)標(biāo)記值(p')并且將標(biāo)記值(p')的倍數(shù)在篩法中作為合數(shù)標(biāo)記,其中在每個(gè)篩遍歷中利用包括至少一個(gè)蒙哥馬利運(yùn)算的余數(shù)確定方法確定(74)基礎(chǔ)值(b)對(duì)標(biāo)記值(p')取模之后的除余數(shù)。一種裝置和計(jì)算機(jī)程序產(chǎn)品具有相應(yīng)的特征。提到的方法可以在合適的平臺(tái)上有效地實(shí)現(xiàn)。
【專利說明】通過至少一個(gè)蒙哥馬利運(yùn)算確定除余數(shù)和對(duì)于密碼應(yīng)用確定素?cái)?shù)候選
【技術(shù)領(lǐng)域】
[0001]本發(fā)明一般地涉及可有效實(shí)現(xiàn)的密碼方法的【技術(shù)領(lǐng)域】。更具體地,本發(fā)明的第一方面涉及除余數(shù)的確定,而本發(fā)明的第二方面涉及素?cái)?shù)候選的確定一所述素?cái)?shù)候選是利用一定的概率表示素?cái)?shù)的值。本發(fā)明特別適合于在便攜式數(shù)據(jù)載體中的應(yīng)用。這樣的便攜式數(shù)據(jù)載體例如可以是按照不同的構(gòu)造形式的芯片卡(智能卡)或芯片模塊或類似的資源受限的系統(tǒng)。
【背景技術(shù)】
[0002]用于素?cái)?shù)確定的有效方法對(duì)于許多密碼應(yīng)用來說是必須的。因此例如為了產(chǎn)生密鑰,在美國(guó)專利4405829描述的RSA方法中必須規(guī)定兩個(gè)秘密的素?cái)?shù),其乘積形成公鑰的一部分。該素?cái)?shù)的大小取決于安全性要求并且通常為數(shù)百至數(shù)千位??深A(yù)見的是,所需要的大小在將來還將明顯增加。
[0003]總體上,素?cái)?shù)搜索是在RSA密鑰產(chǎn)生中計(jì)算量最大的步驟。從安全性原因出發(fā),通常要求,該密鑰產(chǎn)生通過數(shù)據(jù)載體本身執(zhí)行。根據(jù)數(shù)據(jù)載體的類型的不同,該過程在數(shù)據(jù)載體的生產(chǎn)(例如完成或初始化或個(gè)性化)期間導(dǎo)致時(shí)間開銷,其可以強(qiáng)烈改變并且可能為數(shù)分鐘。因?yàn)樯a(chǎn)時(shí)間是昂貴的,所以為了產(chǎn)生密鑰而需要的時(shí)間表示了極大的成本因素。由此值得期望的是,加速密鑰產(chǎn)生并且由此提高便攜式數(shù)據(jù)載體的生產(chǎn)設(shè)備的可實(shí)現(xiàn)的產(chǎn)量。
[0004]用于縮短生產(chǎn)時(shí)間的一個(gè)重要步驟是,使用用于素?cái)?shù)搜索的有效方法,其還滿足關(guān)于產(chǎn)生的素?cái)?shù)的一些邊界條件。這樣的方法已經(jīng)被建議并且例如從申請(qǐng)公開DE 10 2004044 453 Al 和 EP I 564 649 A2 公知。
[0005]在RSA方法中,在密鑰產(chǎn)生之后進(jìn)行的加密和解密過程是計(jì)算開銷相對(duì)大的。特別地對(duì)于具有有限的計(jì)算能力的便攜式數(shù)據(jù)載體由此通常采用在解密和產(chǎn)生簽名時(shí)使用中國(guó)剩余定理(CRT = Chinese remainder theorem)并且由此也稱為RSA-CRT方法的實(shí)現(xiàn)。通過使用RSA-CRT方法,對(duì)于解密和產(chǎn)生簽名所需要的計(jì)算開銷大約以4倍減小。
[0006]為了準(zhǔn)備RSA-CRT方法,在私鑰的確定時(shí),除了這兩個(gè)秘密的RSA質(zhì)因子之外計(jì)算另外的值并且作為私鑰的參數(shù)存儲(chǔ)。對(duì)此的詳細(xì)信息例如在申請(qǐng)公開W02004/032411A1中獲得。因?yàn)榱硗獾腞SA-CRT密鑰參數(shù)的計(jì)算通常也在便攜式數(shù)據(jù)載體的生產(chǎn)期間被執(zhí)行,所以值得期望的是,為此也使用盡可能有效的方法。
[0007]許多便攜式數(shù)據(jù)載體包含協(xié)處理器,其支持特定的計(jì)算過程。特別地公知數(shù)據(jù)載體,其協(xié)處理器支持作為蒙哥馬利乘法公知的運(yùn)算,其在Peter L.Montgomery的 文 章“Modular multiplication without trial division”, Mathematics ofComputation, Vol.44,n0.170,1985年4月,519-521頁中被描述。蒙哥馬利協(xié)處理器通常不支持具有對(duì)于密碼任務(wù)所需的位長(zhǎng)度的“正常的”非模乘以及模乘。對(duì)于其他協(xié)處理器,可能成立的是,模乘或非模乘雖然被支持,但是不如蒙哥馬利乘法有效地被執(zhí)行。除運(yùn)算也不能或不能有效地或不能以對(duì)于密碼任務(wù)所需的位長(zhǎng)度由許多常用的蒙哥馬利協(xié)處理器支持。值得期望的是,盡可能好地充分利用目前可用的或?qū)沓霈F(xiàn)在市場(chǎng)上的協(xié)處理器的能力。
【發(fā)明內(nèi)容】
[0008]因此,本發(fā)明的任務(wù)是,提供一種有效的技術(shù),用于確定除余數(shù)或用于確定素?cái)?shù)候選。
[0009]按照本發(fā)明,上述任務(wù)完全或部分地通過具有權(quán)利要求1及權(quán)利要求8的特征的方法、按照權(quán)利要求14的計(jì)算機(jī)程序產(chǎn)品和按照權(quán)利要求15的裝置,特別是便攜式數(shù)據(jù)載體解決。從屬權(quán)利要求涉及本發(fā)明一些構(gòu)造的可選特征。
[0010]本發(fā)明的第一方面從如下基本思路出發(fā):為了確定除余數(shù),執(zhí)行蒙哥馬利乘法而不是其他常用的模除。通過蒙哥馬利乘法引起的誤差然后通過另一個(gè)蒙哥馬利乘法來補(bǔ)償,其中合適確定的校正因子作為該另一個(gè)蒙哥馬利乘法的因子之一。該方法可以在許多常用的硬件平臺(tái)上比帶余數(shù)的模除明顯更有效地實(shí)現(xiàn)。
[0011]在一些構(gòu)造中,第一蒙哥馬利乘法是蒙哥馬利約簡(jiǎn),也就是具有I作為兩個(gè)因子之一的乘法。優(yōu)選地,這兩個(gè)蒙哥馬利乘法以不同的蒙哥馬利系數(shù)實(shí)施。
[0012]校正因子在一些實(shí)施方式中作為2的模冪在循環(huán)中計(jì)算,其中每個(gè)循環(huán)過程具有中間結(jié)果的翻倍和條件減。而在其他實(shí)施方式中,校正因子作為具有正整數(shù)的校正因子指數(shù)和底數(shù)1/2的模冪。為此又可以采用蒙哥馬利運(yùn)算。
[0013]本發(fā)明的第二方面從基本思路出發(fā),確定篩法中的素?cái)?shù)候選。從基礎(chǔ)值出發(fā),在此執(zhí)行多個(gè)篩遍歷(Siebdurchlaufe ),其中分別確定一個(gè)標(biāo)記值并且將標(biāo)記值的倍數(shù)在篩法中作為合數(shù)標(biāo)記。此外在每個(gè)篩遍歷中,利用余數(shù)確定方法確定基礎(chǔ)值模標(biāo)記值后的除余數(shù),其在常用的硬件平臺(tái)上可特別有效地實(shí)現(xiàn),因?yàn)槠渲辽侔ㄒ粋€(gè)蒙哥馬利運(yùn)算。
[0014]在優(yōu)選的實(shí)施方式中(至少一個(gè))標(biāo)記值是素?cái)?shù)。有利地,使用多個(gè)素?cái)?shù)作為對(duì)于篩遍歷的標(biāo)記值。篩法例如可以從基礎(chǔ)值出發(fā),僅代表預(yù)定的步幅的數(shù)字。在一些實(shí)施方式中,實(shí)施其他素?cái)?shù)測(cè)試,以從素?cái)?shù)候選中確定可能的素?cái)?shù)。在按照本發(fā)明的第二方面的方法的許多構(gòu)造中使用按照本發(fā)明的第一方面的余數(shù)確定方法。
[0015]在方法權(quán)利要求中的步驟的編號(hào)順序不應(yīng)當(dāng)理解為保護(hù)范圍的限制。而是還可以設(shè)置本發(fā)明的如下構(gòu)造,在這些構(gòu)造中這些步驟完全或部分按照其他順序和/或完全或部分交叉(交織)和/或完全或部分并行實(shí)施。
[0016]按照本發(fā)明的計(jì)算機(jī)程序產(chǎn)品具有程序命令,以實(shí)現(xiàn)按照本發(fā)明的方法。這樣的計(jì)算機(jī)程序產(chǎn)品可以是實(shí)體介質(zhì),例如半導(dǎo)體存儲(chǔ)器或磁盤或CD-ROM。然而計(jì)算機(jī)程序產(chǎn)品在一些實(shí)施方式中也可以是非實(shí)體介質(zhì),例如經(jīng)過計(jì)算機(jī)網(wǎng)絡(luò)傳輸?shù)男盘?hào)。特別地,計(jì)算機(jī)程序產(chǎn)品可以包含在便攜式數(shù)據(jù)載體的生產(chǎn)過程中被引入到數(shù)據(jù)載體中的程序命令。
[0017]按照本發(fā)明的裝置特別地可以是便攜式數(shù)據(jù)載體,例如芯片卡或芯片模塊。這樣的數(shù)據(jù)載體以公知的方式包含至少一個(gè)處理器、多個(gè)在不同的技術(shù)中構(gòu)造的存儲(chǔ)器和各種輔助組件。在本文件的選詞中,概念“處理器”應(yīng)當(dāng)既包括主處理器也包括協(xié)處理器。
[0018]在優(yōu)選的擴(kuò)展中,計(jì)算機(jī)程序產(chǎn)品和/或裝置具有與在本說明書中提到的和/或在從屬的方法權(quán)利要求中提到的特征相應(yīng)的特征。【專利附圖】
【附圖說明】
[0019]本發(fā)明的其他特征、任務(wù)和優(yōu)點(diǎn)從以下對(duì)多個(gè)實(shí)施例和實(shí)施替選方案的描述得出。參見示意性附圖。
[0020]圖1示出了用于確定兩個(gè)素?cái)?shù)以及RSA-CRT密鑰的其他參數(shù)的方法的流程圖,
[0021]圖2示出了用于確定素?cái)?shù)候選的方法的流程圖,
[0022]圖3示出了對(duì)于圖1和圖2的方法的實(shí)施是合適的便攜式數(shù)據(jù)載體的組件的示意圖,
[0023]圖4示出了用于產(chǎn)生候選域的方法的流程圖,和
[0024]圖5示出了在使用蒙哥馬利運(yùn)算的條件下具有底數(shù)1/2和正整數(shù)指數(shù)e的模冪計(jì)算的方法的示例流程。
【具體實(shí)施方式】
[0025]在本文件中特別地結(jié)合對(duì)RSA-CRT密鑰對(duì)的一個(gè)、多個(gè)或所有參數(shù)的確定來描述本發(fā)明。然而本發(fā)明也可以對(duì)于其他應(yīng)用目的被采用,特別地用于如對(duì)于各種密碼方法所需的相對(duì)大的和隨機(jī)的素?cái)?shù)的確定。
[0026]一般地,RSA-CRT密鑰對(duì)的參數(shù)從兩個(gè)秘密素?cái)?shù)P和q以及公開指數(shù)e導(dǎo)出。在此公開指數(shù)e是與(p-1).(q-Ι)互素的數(shù),其可以隨機(jī)選擇或固定預(yù)先給出。例如在一些實(shí)施例中使用第四個(gè)費(fèi)馬(Fermat)素?cái)?shù)F4 = 216+1作為公開指數(shù)e。公鑰包含公開指數(shù)e和公開的模N: =p*q。私有RSA-CRT密鑰除了包含兩個(gè)素?cái)?shù)P和q之外還包含模逆pinv:=Pernod q 以及通過 dp: = e_1mod(p-l)及 dq: = e_1mod(q-l)定義的兩個(gè) CRT 指數(shù) dp 和 dq。
[0027]按照?qǐng)D1的方法示出了在預(yù)先給出的公開指數(shù)e的情況下秘密的RSA-CRT密鑰的所有參數(shù)的計(jì)算。該方法由在圖1的左邊和右邊欄中示出的兩部分組成。第一部分(步驟
10、12、16和20)包括一個(gè)素?cái)?shù)P和與之相關(guān)的密鑰參數(shù)七的確定,而第二部分(步驟24、26、30、34和38)涉及另一個(gè)素?cái)?shù)q和密鑰參數(shù)d,和pinv的確定。
[0028]可以理解,該方法在實(shí)施替選方案中可以這樣變化,使得計(jì)算剛才提到的參數(shù)的僅一些。為此當(dāng)一些密鑰參數(shù)被另外計(jì)算或根本不需要時(shí),例如可以省略或縮短方法步驟。特別地可以設(shè)置,當(dāng)僅需要確定唯一一個(gè)素?cái)?shù)時(shí),執(zhí)行在圖1中示出的兩個(gè)方法部分的一個(gè)(也就是或者僅步驟10、12、16和20或者僅步驟24、26、30、34和38)。
[0029]在圖1中和其他附圖中實(shí)線箭頭示出了規(guī)則的程序流程,虛線箭頭示出了在一定的條件下一特別是當(dāng)素?cái)?shù)候選或預(yù)期的素?cái)?shù)證明是合數(shù)時(shí)一被執(zhí)行的替換的程序流程。點(diǎn)線箭頭表示了數(shù)據(jù)流。
[0030]在圖1中示出的流程在步驟10以第一素?cái)?shù)候選m的產(chǎn)生開始,其滿足一定的邊界條件(特別是邊界條件m = 3mod4)。在此處描述的實(shí)施例中在每個(gè)素?cái)?shù)候選m的確定時(shí)作出預(yù)先選擇,其確保,素?cái)?shù)候選m不會(huì)已經(jīng)通過小的素?cái)?shù)(例如2,3,5,7,...)可除。具有預(yù)先選擇的合適的確定方法在圖2中示出并且在以下被詳細(xì)描述。
[0031]在步驟12中對(duì)素?cái)?shù)候選m進(jìn)行費(fèi)馬測(cè)試。費(fèi)馬測(cè)試是一種概率性素?cái)?shù)測(cè)試,其將合數(shù)以高的概率作為合數(shù)來識(shí)別,而絕不會(huì)將素?cái)?shù)錯(cuò)誤地看作為合數(shù)。費(fèi)馬測(cè)試基于費(fèi)馬小定理,其說明,對(duì)于每個(gè)素?cái)?shù)P和每個(gè)自然數(shù)a,成立關(guān)系:ap = amodp。反過來不一定成立,但是反例如此罕見,使得通過了費(fèi)馬測(cè)試的素?cái)?shù)候選m以幾乎確定的概率是一個(gè)素?cái)?shù)。
[0032]如果素?cái)?shù)候選m在步驟12中在費(fèi)馬測(cè)試時(shí)被識(shí)別為合數(shù),則跳回14到步驟10,在該步驟10中確定新的素?cái)?shù)候選。否則方法繼續(xù),其中素?cái)?shù)候選m被看作為預(yù)期的素?cái)?shù)P。
[0033]在步驟16中計(jì)算CRT指數(shù)dp,其通過dp: = e mod(p-l)定義。對(duì)此使用本身公知的反演方法。當(dāng)e和p-Ι是互素的時(shí),也就是當(dāng)成立gcd(p_l, e) = I時(shí),CRT指數(shù)dp作為公開指數(shù)e的模逆存在。如果不是這樣,則跳轉(zhuǎn)18到方法的開始。否則在步驟16中確定CRT指數(shù)dp并且方法然后在步驟20以預(yù)期的素?cái)?shù)P的Miller-Rabin測(cè)試?yán)^續(xù)。
[0034]Miller-Rabin 測(cè)試是從在 Journal of Number Theory I2, 1980,第 I28-138 頁發(fā)表的 Michael 0.Rabin 的文章 “Probabilistic algorithms for testing primality,,中公知的。在Miller-Rabin測(cè)試的每輪測(cè)試中將合數(shù)以一定的概率識(shí)別為合數(shù),而素?cái)?shù)絕不會(huì)被錯(cuò)誤地看作為合數(shù)。Miller-Rabin測(cè)試的錯(cuò)誤概率取決于測(cè)試輪數(shù)并且可以通過執(zhí)行足夠多輪的測(cè)試來保持為任意小。
[0035]由于已經(jīng)提到的在步驟12中的費(fèi)馬測(cè)試的高的準(zhǔn)確性,預(yù)期的素?cái)?shù)在步驟20中的Miller-Rabin測(cè)試中被識(shí)別為合數(shù)的概率可以忽略。在步驟16中CRT指數(shù)dp的計(jì)算由于gcd(p-l,e)辛I而失敗并且必須執(zhí)行跳轉(zhuǎn)18的概率相反地以數(shù)量級(jí)更高。由此更有效的是,在步驟20之前執(zhí)行步驟16,因?yàn)橛纱吮苊饬瞬恍枰腗iller-Rabin測(cè)試。
[0036]盡管如此,本發(fā)明還包括如下的實(shí)施例,在這些實(shí)施例中在Miller-Rabin測(cè)試之后才計(jì)算或者在另一個(gè)時(shí)刻計(jì)算CRT指數(shù)dp。此外在實(shí)施替選方案中可以建議,CRT指數(shù)dp的計(jì)算與在此描述的用于素?cái)?shù)確定的方法分開地執(zhí)行;于是可以省去步驟16。
[0037]在步驟20中執(zhí)行Miller-Rabin測(cè)試,以便能夠數(shù)學(xué)地探測(cè)例如可以為2_1(1°的期望的最大錯(cuò)誤概率。在Miller-Rabin測(cè)試中執(zhí)行多輪測(cè)試,其數(shù)量取決于該錯(cuò)誤概率。對(duì)于預(yù)期的素?cái)?shù)P的一輪測(cè)試在于,隨機(jī)數(shù)被提高到((P-1)/2)次冪模P,并且在于檢查,結(jié)果是否是± I模P。在此假定邊界條件P = 3mod4。
[0038]在最不可能的情況下,即在預(yù)期的素?cái)?shù)P在步驟20中的Miller-Rabin測(cè)試的一輪測(cè)試中被識(shí)別為合數(shù)的情況下,跳轉(zhuǎn)22到方法的開始。在其他情況下將素?cái)?shù)P作為在此描述的方法的結(jié)果輸出。
[0039]在圖1的右邊欄中示出的第二方法部分除了步驟34之外是按照?qǐng)D1的左邊欄的第一方法部分的重復(fù),其中計(jì)算第二素?cái)?shù)q。由此很大程度參見上面的解釋。
[0040]步驟24、26和30類似于步驟10、12和16。當(dāng)在步驟24中選擇的素?cái)?shù)候選m在步驟26中的費(fèi)馬測(cè)試中被證明是合數(shù)時(shí),跳轉(zhuǎn)28到在步驟24中對(duì)新的素?cái)?shù)候選的選擇。否貝1J,在步驟30中計(jì)算CRT指數(shù)dq: = e_1mod(q-l)。如果e和q_l不是互素的,貝U進(jìn)行到步驟24的跳轉(zhuǎn)32。否則,方法以預(yù)期的素?cái)?shù)d,繼續(xù)。與在第一方法部分中類似地在此也進(jìn)行修改,在所述修改中在另一個(gè)時(shí)刻結(jié)合在此描述的方法或與之分離地計(jì)算CRT指數(shù)d,。[0041 ] 在步驟34中進(jìn)行組合的測(cè)試和反演方法,其中對(duì)于預(yù)期的素?cái)?shù)q的Mi 11 er-Rabin測(cè)試的第一輪測(cè)試與逆Pinv: =P-1Hiodq的計(jì)算耦合。因?yàn)閝是素?cái)?shù),所以逆Pinv可以利用費(fèi)馬小定理確定為Pinv = P—1 = Ptr2Hiod q。因?yàn)镻是隨機(jī)數(shù),所以在該計(jì)算中可以利用小的額外開銷立即執(zhí)行對(duì)于預(yù)期的素?cái)?shù)q的第一輪Miller-Rabin測(cè)試,其中檢查,P的第((q_l)/2)次冪模q是否等于±1。
[0042]如果預(yù)期的素?cái)?shù)q沒有通過第一輪Miller-Rabin測(cè)試,則在步驟34中進(jìn)行到步驟24的跳轉(zhuǎn)36。否則在步驟38中進(jìn)行Miller-Rabin測(cè)試的另外還需要的測(cè)試輪。如果該測(cè)試輪失敗,則在步驟24之后進(jìn)行到新的素?cái)?shù)候選的選擇的跳轉(zhuǎn)40。否則已知第二素?cái)?shù)q,并且方法結(jié)束。
[0043]在一些實(shí)施方式中在圖1中示出的方法如下變化,即,不設(shè)置組合的測(cè)試和反演方法。由此例如可以替代步驟36而進(jìn)行在步驟38中的附加一輪的Miller-Rabin測(cè)試。逆Pinv的計(jì)算于是可以作為單獨(dú)的步驟-作為在此描述的方法的部分或與其分離地-被執(zhí)行,如果這樣的計(jì)算是根本上需要的話。由此例如逆Pinv在RSA-CRT計(jì)算時(shí)僅用于提高效率。在不使用中國(guó)剩余定理的RSA計(jì)算中根本不需要逆pinv。
[0044]圖2示出了素?cái)?shù)候選m的確定,如在圖1的步驟20和24中被執(zhí)行的。在該描述的實(shí)施例中在此使用提供多個(gè)素?cái)?shù)候選m的候選域。候選域例如可以是打包的位域(bitarray,位數(shù)組)S,其位S [i]說明,具有取決于位位置i的、與基礎(chǔ)值b的偏移的數(shù)字是否是素?cái)?shù)候選m。
[0045]在按照?qǐng)D2的方法中首先在測(cè)試42中檢查,是否存在一個(gè)合適的和非空的候選域。如果否,則在步驟44中產(chǎn)生滿足條件b = 3mod4的隨機(jī)的基礎(chǔ)值b。
[0046]在步驟46中然后產(chǎn)生候選域。作為用于候選域的數(shù)據(jù)結(jié)構(gòu),在本實(shí)施例中使用位域S,其位位置i分別相應(yīng)于與基礎(chǔ)值b相差SWi的偏移(以SW作為步幅)。完成的候選域的每個(gè)位S[i]由此顯示,數(shù)字b+SWi是否能夠作為素?cái)?shù)候選m被使用。
[0047]為了在步驟46中產(chǎn)生候選域,首先將所有的位S[i]初始化到第一值(例如值“I”)。然后按照厄拉多塞篩法的原理將與能夠被小的素?cái)?shù)除盡的數(shù)字b+SWi相應(yīng)的那些位s[i]改變到第二值(例如值“O”)。候選域的大小和篩遍歷的數(shù)量一根據(jù)可用的存儲(chǔ)容量一這樣選擇,使得總方法的平均運(yùn)行時(shí)間被最小化。這是一個(gè)優(yōu)化任務(wù),其解取決于與用于失敗的費(fèi)馬測(cè)試的開銷相比用于預(yù)先選擇的相對(duì)開銷。對(duì)于具有2048個(gè)位的RSA密鑰例如可以執(zhí)行數(shù)千個(gè)篩遍歷,其中然后需要大約40個(gè)費(fèi)馬測(cè)試用于確定素?cái)?shù)P和q中的一個(gè)。
[0048]在步驟48中最后從填滿的候選域中選擇一個(gè)素?cái)?shù)候選m。該選擇例如可以隨機(jī)地或按照預(yù)先給出的順序進(jìn)行。在圖2中示出的方法的其他調(diào)用時(shí)將步驟48緊接著測(cè)試42進(jìn)行,并且一直從曾經(jīng)占據(jù)的候選域中選擇另外的素?cái)?shù)候選m,直到域?yàn)榭栈虻陀陬A(yù)先給出的最小填充量。
[0049]在圖1和圖2中示出的方法在一些實(shí)施方式中由便攜式數(shù)據(jù)載體的至少一個(gè)處理器執(zhí)行。圖3示出了這樣的數(shù)據(jù)載體50,其例如作為芯片卡或芯片模塊構(gòu)造。數(shù)據(jù)載體50具有微控制器52,其中以公知的方式將主處理器54、協(xié)處理器56、通信接口 58和存儲(chǔ)器組件60集成在唯一一個(gè)半導(dǎo)體芯片上并且通過總線62互相連接。
[0050]存儲(chǔ)器組件60具有多個(gè)按照不同的技術(shù)構(gòu)造的存儲(chǔ)器陣列,其例如包括只讀存儲(chǔ)器64 (掩模編程ROM)、非易失性可覆蓋存儲(chǔ)器66(EEPR0M或閃存)和工作存儲(chǔ)器68 (RAM)。在此描述的方法以在只讀存儲(chǔ)器64和部分地也在非易失性可覆蓋存儲(chǔ)器66中包含的程序命令70的形式實(shí)現(xiàn)。
[0051]數(shù)據(jù)載體50的協(xié)處理器56構(gòu)造為用于有效執(zhí)行各種密碼運(yùn)算。特別地對(duì)于在此描述的實(shí)施例重要的是,協(xié)處理器56支持具有如對(duì)于密碼應(yīng)用所需的位長(zhǎng)度的蒙哥馬利乘法。在一些構(gòu)造中協(xié)處理器56不支持“正常的”模乘,從而這樣的乘法必須以極高的開銷通過主處理器54執(zhí)行。
[0052]對(duì)于自然數(shù)X,y和奇數(shù)自然數(shù)m(其中X,y<m),以及稱為蒙哥馬利系數(shù)的2的冪R(其中R>m),χ和y關(guān)于R的蒙哥馬利乘積模m —般地通過如下來定義:
[0053]x*m’R y: = χ.y.R_1mod m
[0054]一般地在本文件中在式子“a = z modm”的模關(guān)系的說明中使用等號(hào)“=”以及定義符號(hào)“:=”,以表達(dá),a是來自于(Z + Z) Π [O, W[中的清楚定義的元素,對(duì)于該元素
成立模關(guān)系。而符號(hào)表示“a = z modm”僅表達(dá),成立等效的模m。
[0055]當(dāng)蒙哥馬利系數(shù)R從上下文中得出時(shí),在本文件中對(duì)于蒙哥馬利乘積通常也使用簡(jiǎn)短的符號(hào)表示x*m y來替代詳細(xì)的符號(hào)表示x*m,R I。
[0056]盡管上面定義的蒙哥馬利乘法是模運(yùn)算,但是其可以沒有除法地被實(shí)現(xiàn),如本身公知的并且例如在開頭提到的文章“Modular multiplication without trial division”中描述的那樣。對(duì)于蒙哥馬利乘法,需要兩個(gè)非模乘,一個(gè)事先根據(jù)m和R計(jì)算的輔助值,一些加法和從m的終止條件減法。這些計(jì)算可以通過協(xié)處理器56有效執(zhí)行。
[0057]在目前商業(yè)上可得的微控制器52中公知協(xié)處理器56’、56"、56’ ’ ’的構(gòu)造,其不是精確地執(zhí)行上面定義的蒙哥馬利乘法,而是執(zhí)行其修改。對(duì)于這些修改的原因主要在于,對(duì)于是否應(yīng)該執(zhí)行蒙哥馬利乘法的終止條件減法的判斷,可以按照不同的方式來優(yōu)化。一般地,修改的協(xié)處理 器56’、56"、56’’’在蒙哥馬利乘法的計(jì)算中提供如下結(jié)果,該結(jié)果與上面定義的結(jié)果潛在地以模m的小的數(shù)倍而不同。此外這樣擴(kuò)展對(duì)于在修改的協(xié)處理器56’、56"、56’’’中因子χ和y的允許的值域,使得計(jì)算的結(jié)果始終又將允許的輸入值表示為蒙哥馬利乘法的因子。
[0058]更具體而言,第一修改的協(xié)處理器56’計(jì)算第一修改的蒙哥馬利乘積χ*’ ffl y,其如下定義:
[0059]X*,m y: = (χ.y.Ir1Iiiod m) +k.m
[0060]在此對(duì)于確定的寄存器大小η為R = 2n,n是16的倍數(shù)。用于因子χ和y的值域被擴(kuò)展到[0,...,R-1],并且k是自然數(shù),其這樣小,使得成立χ*’ ffl y〈R。
[0061]而第二修改的協(xié)處理器56〃計(jì)算第二修改的蒙哥馬利乘積x*〃m y,其如下定義:
[0062]x*"m y: = (χ.y.Tri mod m) _ ε.m
[0063]因子χ和y在此是在范圍_m≤x,y〈m中的整數(shù)。此外成立ε e {0,1},并且指數(shù)η’對(duì)于精度P = 1,2或4具有值η’ = η+16ρ、塊尺寸c (其中160≤c≤512),其是32的倍數(shù)、和寄存器大小n = c.p。對(duì)于模m成立m〈2n,并且值R定義為R: = 2n’。
[0064]最后,第三修改的協(xié)處理器56〃’計(jì)算第三修改的蒙哥馬利乘積x*〃’m y,其如下定乂:
[0065]χ*",m y: = (χ.y.2-t.c mod m) + ε.m
[0066]因子χ和y在此是自然數(shù)(其中眾2卜。并且y〈2*m.)。此外成立ε e {0,1}。塊大小c是固定的并且為c = 128。用于因子χ的寄存器大小為t*c。用于其他變量的寄存器大小利用η表示并且為塊大小c的倍數(shù)。當(dāng)成立n = t 時(shí),則因子χ不是需要滿足條件χ〈2ι ‘c而是僅需要滿足條件x〈max {2.m, 2n}。
[0067]當(dāng)如下并不起作用或從前后關(guān)系中得出時(shí),即,涉及的恰好是按照初始給出的定義的協(xié)處理器56的蒙哥馬利乘積x*m y還是協(xié)處理器56’、56"、56’ ’ ’之一的三個(gè)修改的蒙哥馬利乘積X*’ m y及X*〃m y及X*"’ m y之一,在本文件中兩個(gè)因子關(guān)于模m的蒙哥馬利乘積一般地通過X*m I表示。
[0068]當(dāng)輸入值X,y首先借助蒙哥馬利變換被變換到其相應(yīng)的蒙哥馬利表達(dá)X’,?并且然后結(jié)果值從其蒙哥馬利表達(dá)X’被變換回值X時(shí),一般地可以將每個(gè)“正常的”模乘X.y=z mod m通過蒙哥馬利乘法X’ *m y’ = z’來代替。蒙哥馬利變換例如可以通過計(jì)算X’:= x*R mod m來進(jìn)行。在反變換中可以有效地通過具有因子I的蒙哥馬利乘法,也就是通過計(jì)算 z: = z’*ml,來確定結(jié)果 z: = z’.Ir1IIiod m。
[0069]由于所需的來回變換,通過蒙哥馬利乘法來代替唯一的模乘通常不是有效的。但是當(dāng)先后要執(zhí)行多個(gè)乘法時(shí)-例如在模冪中那樣,則可以將這些乘法完全在蒙哥馬利數(shù)字空間中執(zhí)行。于是僅需要在計(jì)算序列的開始時(shí)的唯一的前向變換和在計(jì)算序列結(jié)束時(shí)的唯一的反向變換。
[0070]按照剛才描述的原理,在圖1和圖2中示出的方法中可以將唯一的或全部模乘作為蒙哥馬利乘法來實(shí)現(xiàn)??梢岳斫?,在此在蒙哥馬利數(shù)字空間中進(jìn)行的計(jì)算片段應(yīng)當(dāng)盡可能被綜合,以便減少所需的前向和反向轉(zhuǎn)換的數(shù)量。加法和減法可以在“正常的”數(shù)字空間中和在蒙哥馬利數(shù)字空間中沒有區(qū)別地進(jìn)行。
[0071]當(dāng)數(shù)據(jù)載體50具有雖然支 持蒙哥馬利乘法但是不支持正常的模乘的協(xié)處理器56,、56"、56’’’時(shí),蒙哥馬利乘法的使用是特別有利的。即使協(xié)處理器56’、56"、56’’ ’支持兩種乘法種類,也通常更有效地執(zhí)行蒙哥馬利乘法。根據(jù)所需的變換的數(shù)量-特別是與反向變換相比更麻煩的前向變換的數(shù)量-得到極大的節(jié)省,甚至在蒙哥馬利乘法比正常的模乘僅稍微有效地要被執(zhí)行時(shí)。
[0072]在此處描述的實(shí)施例中,在圖1和圖2中示出的方法特別地關(guān)于步驟46中(圖
2)的候選域的產(chǎn)生被優(yōu)化。如上所述,該描述的解從如下基本思路出發(fā),即,通過按照厄拉多塞篩法原理的篩過程來確定素?cái)?shù)候選。但是在這里描述的實(shí)施例中篩法在一個(gè)隨機(jī)的基礎(chǔ)值b的情況下開始,該基礎(chǔ)值已經(jīng)大約具有待確定的素?cái)?shù)的數(shù)量級(jí),并且其包含(以步幅Sff)分別與值b+SWi相應(yīng)的項(xiàng)目。
[0073]此外在這里描述的實(shí)施例中僅執(zhí)行預(yù)先給出數(shù)量的篩遍歷,分別具有一個(gè)小的素?cái)?shù)P’或者多個(gè)素?cái)?shù)的乘積P’作為標(biāo)記值r,r’。在這些篩遍歷之后在篩法中剩余的值(其稱為素?cái)?shù)候選m)僅以一定的概率表示一個(gè)素?cái)?shù)。如上所述,篩遍歷的數(shù)量在對(duì)于整個(gè)方法的計(jì)算時(shí)間的優(yōu)化過程中被規(guī)定。例如可以執(zhí)行數(shù)千個(gè)篩遍歷,其中然后在篩法中剩余的數(shù)字以大約2.5%的概率是一個(gè)素?cái)?shù)。
[0074]因?yàn)楹Y法不是在零的情況下開始,所以對(duì)于每個(gè)篩遍歷,確定作為篩遍歷的基礎(chǔ)的、基礎(chǔ)值b模標(biāo)記值p’后的余數(shù)。從該余數(shù)中然后確定第一個(gè)要從篩法中刪除的合數(shù)b+Sffk,并且從該數(shù)字b+SWk 出發(fā)將其他倍數(shù)b+SWk+SWp’,b+Sffk+2 *SWp’,b+Sffk+3 *SWp’,..?從篩法中刪除。
[0075]這里描述的實(shí)施例特別地涉及剛才提到的余數(shù)z: = b mod p’的有效確定。該實(shí)施方式的基本思路是,為了確定余數(shù)z,不使用具有余數(shù)的“正常的”模除,而是使用具有至少另一個(gè)校正步驟的蒙哥馬利運(yùn)算。該蒙哥馬利運(yùn)算特別地可以是具有P’作為模的蒙哥馬利約簡(jiǎn)。蒙哥馬利約簡(jiǎn)在此理解為其中因子之一具有值I的蒙哥馬利乘法。
[0076]在第一實(shí)施例中假定,對(duì)于循環(huán)過程采用的標(biāo)記值P’ -例如素?cái)?shù)-具有d位(例如16位)的寬度,并且基礎(chǔ)b具有η.(!位的寬度。然后執(zhí)行蒙哥馬利約簡(jiǎn)b*p,:nl,其按照定義提供值b.UinHiodp^對(duì)于bmodp’的期望結(jié)果,由此得出以因子2_d‘nmodp’的“誤差”,其通過一個(gè)或多個(gè)校正步驟補(bǔ)償。
[0077]所需的校正可以以任意的方式執(zhí)行。但是在本實(shí)施例中設(shè)置,為此又執(zhí)行蒙哥馬利運(yùn)算,也就是關(guān)于蒙哥馬利系數(shù)2d來模p’的蒙哥馬利乘法。
[0078]通過蒙哥馬利乘法,產(chǎn)生與期望結(jié)果的另一個(gè)偏差,也就是以附加的因子2_d modP’的偏差。由此有利的是,在校正時(shí)就考慮該附加的因子,使得該校正作為蒙哥馬利約簡(jiǎn)的結(jié)果與因子2d.ZdImodp' =2d‘(n+1)modp’的蒙哥馬利乘法被執(zhí)行。
[0079]總體上由此如下計(jì)算余數(shù)b mod p’:
[0080](b*p’’2d.nl)*p’’2d2d.(η+1)—ρ’
[0081]在此校正因子2d‘(n+1)m°dp’可以在特別簡(jiǎn)單的方法中通過循環(huán)確定。從起始值I出發(fā)在該循環(huán)中在每個(gè)循環(huán)過程中分別將當(dāng)前值翻倍,并且如果結(jié)果至少為P’,則將P’減去。
[0082]剛才描述的方法的以下表示詳細(xì)地反映了示例性計(jì)算流程。該表示涉及更一般的任務(wù),對(duì)于在寄存器X中一個(gè)b位寬的值X和在寄存器Y中一個(gè)(η.(1)位寬的值Y確定在寄存器Z中的具有Ζ: =YmodX的余數(shù)Ζ。顯然該方法容易地用于在此所需的對(duì)余數(shù)ζ:=b mod p’的確定,其中將標(biāo)記值P’存儲(chǔ)在寄存器X中和將基礎(chǔ)b存儲(chǔ)在寄存器Y中。但是該方法也可以結(jié)合另外的密碼計(jì)算被使用,在所述密碼計(jì)算中必須確定余數(shù):
[0083]方法A
[0084]輸入值:寄存器X中的d位寬的值(例如素?cái)?shù)P’ )
[0085]寄存器Y中的η.d位寬的值(例如基礎(chǔ)b)
[0086]寄存器:B,C,X,Y,Z
[0087]輸出值:寄存器Z中的余數(shù)Y mod X
[0088]方法流程:
[0089]設(shè)置B = Y*2-d.n mod X (A.1)
[0090]設(shè)置C = 2d.(n+1)mod X (A.2)
[0091 ]設(shè)置 Z = B*C*2-d mod X (A.3)
[0092]在行(A.1)中的過程通過蒙哥馬利乘法Y*x,2d‘nl執(zhí)行,其因子Y和I具有不同的長(zhǎng)度。在行(A.3)中的過程通過具有因子B和C的蒙哥馬利乘法B*x,2d C執(zhí)行。
[0093]但是一般的方法A可以被優(yōu)化,如在以下對(duì)于修改的方法A’和A"所示的那樣。
[0094]如果標(biāo)記值是素?cái)?shù)P’,則可以取消第一蒙哥馬利乘法。
[0095]方法A’
[0096]輸入值:寄存器X中的d位寬的值(例如素?cái)?shù)P’ )
[0097]寄存器Y中的η.d位寬的值(例如基礎(chǔ)b)
[0098]寄存器:C,X,Y,Z
[0099]輸出值:寄存器Z中的余數(shù)Y mod X
[0100]方法流程:
[0101]設(shè)置C = 2d.n mod X (A,.2)
[0102]設(shè)置Z = Y*C*2-d.n mod X (A,.3)
[0103]在行(A’.2)中的過程在于,將寄存器C設(shè)置到取決于X的校正值。在行(A’.3)中的過程通過蒙哥馬利乘法Y*x,2d‘n C執(zhí)行,其因子Y和C具有不同的長(zhǎng)度。
[0104]相反如果執(zhí)行同時(shí)具有兩個(gè)(或多個(gè))標(biāo)記值r和r’的標(biāo)記流程,則以下構(gòu)造是有利的。
[0105]方法A"(示例性對(duì)于兩個(gè)素?cái)?shù)r和r’)
[0106]輸入值:寄存器X中的d位寬的值(例如素?cái)?shù)r和r’的乘積p’ = r*r’)
[0107]寄存器Y中的η.d位寬的值(例如基礎(chǔ)b)
[0108]寄存器:B,C,C,,X,X’,Y, Z, Z’
[0109]輸出值:寄存器Z中的余數(shù)Ymodr
[0110]寄存器Z’中的余數(shù)Ymod r’
[0111]方法流程:
[0112]設(shè)置B = Y*2+nmodX (A".1)
[0113]設(shè)置X= r(A".a)
[0114]設(shè)置C = 2d.(n+1)mod X (A".2.a)
[0115]設(shè)置Z = B*C*2 -d mod X (A ".3.a)
[0116]設(shè)置X’ = r(A".b)
[0117]設(shè)置C’ = 2d.(n+1)mod X’ (A".2.b)
[0118]設(shè)置Z’ = B*C’ *2-d mod X’ (A ".3.b)
[0119]在行(A".1)中的過程如在方法A中那樣通過蒙哥馬利乘法Y*x,2d‘nl執(zhí)行,其因子Y和I具有不同的長(zhǎng)度。在行(A".3.a)和(A".3b)中的過程如在方法A中那樣通過具有因子B和C的蒙哥馬利乘法B*x,2d C執(zhí)行。
[0120]相應(yīng)地對(duì)于每個(gè)標(biāo)記值計(jì)算余數(shù)值(b MOD r和b MOD r’),以便能夠?qū)?biāo)記流程中的兩個(gè)標(biāo)記值從篩法中刪除。
[0121]行(A.2), (Α,.2)和(A".2a和2b)中的模冪可以如上所述通過循環(huán)來實(shí)現(xiàn),所述循環(huán)在d.(n+1)個(gè)循環(huán)過程中分別執(zhí)行一個(gè)翻倍(以一個(gè)位位置向左逐位地移動(dòng))和一個(gè)條件減法。在此處使用的偽代碼符號(hào)表示中也就是例如可以將行(A.2)通過以下的行(A.2.1)-(A.2.5)來代替:
[0122]設(shè)置C= I (A.2.1)
[0123]執(zhí)行d.(n+1)次 (A.2.2)
[0124]將C向左移動(dòng)I個(gè)位 (A.2.3)
[0125]如果C ≤ X 則設(shè)置 C = C-X (A.2.4)
[0126]結(jié)束(A.2.5)
[0127]通過如下,即,在此描述的實(shí)施例將具有長(zhǎng)被除數(shù)的除法通過至少一個(gè)蒙哥馬利乘法來代替,其特別好地適用于在不支持或不如蒙哥馬利乘法那樣有效地支持長(zhǎng)除法的數(shù)據(jù)載體50中的使用。該配置在許多通常的數(shù)據(jù)載體50中給出,因?yàn)閷?duì)于長(zhǎng)除法的有效的硬件支持將會(huì)要求高的開銷。
[0128]因此例如具有協(xié)處理器56"的數(shù)據(jù)載體50根本不支持除法運(yùn)算,而協(xié)處理器56’ ’ ’雖然提供除法功能,但是用于執(zhí)行除法需要比用于相同位長(zhǎng)度的蒙哥馬利乘法長(zhǎng)大約128倍。相反在具有協(xié)處理器50’的數(shù)據(jù)載體50的情況下甚至有利的是,不使用在此描述的技術(shù),因?yàn)樵谠摂?shù)據(jù)載體50的主處理器54上可以實(shí)現(xiàn)對(duì)小的素?cái)?shù)取模的快速余數(shù)值計(jì)算。
[0129]可以理解,這些描述的方法步驟可以以不同的程度分布到數(shù)據(jù)載體50的主處理器54和協(xié)處理器56、56’、56"、56’’ ’上。例如在具有協(xié)處理器56"的數(shù)據(jù)載體50的情況下有利的是,行(A.1)-(A.3)的所有的方法步驟可以由主處理器54執(zhí)行,因?yàn)閰f(xié)處理器56"對(duì)于具有不同長(zhǎng)因子的蒙哥馬利乘法工作效率不高并且此外限制于絕對(duì)值比模P’小的因子。相反在具有協(xié)處理器56"的數(shù)據(jù)載體50的情況下主處理器54相對(duì)慢并且不支持除法,而協(xié)處理器56’’’對(duì)于在此描述的方法非常合適。由此有利的是,對(duì)于行(A.1)-(A.3)的所有的方法步驟使用該協(xié)處理器56’ ’ ’。
[0130]圖4示例性示出了在步驟46 (圖2)中的候選域的產(chǎn)生的各個(gè)方法步驟。作為輸入值已經(jīng)呈現(xiàn)在前面的步驟44中確定的基礎(chǔ)值b。方法包括預(yù)定數(shù)量的篩遍歷,在這些篩遍歷中分別執(zhí)行步驟72-78。
[0131]在每個(gè)篩遍歷的開始在步驟72中確定標(biāo)記值P’,其倍數(shù)在篩法中應(yīng)當(dāng)作為合數(shù)被標(biāo)記。在至此描述的構(gòu)造中標(biāo)記值P’是具有例如最大16位長(zhǎng)度的小的素?cái)?shù),而在另外的實(shí)施方式中合數(shù)一例如兩個(gè)或多個(gè)素?cái)?shù)r,r"的乘積一作為對(duì)于素?cái)?shù)r和r"的乘積p’=r*r’可 以作為標(biāo)記值被使用。
[0132]在步驟74中然后確定基礎(chǔ)值b對(duì)標(biāo)記值P’取模后的余數(shù)。為此例如執(zhí)行已經(jīng)描述的方法A或在以下要示出的修改之一。按照?qǐng)D4的步驟74包括三個(gè)子步驟74.1, 74.2和74.3。在與方法A的行(A.1)相應(yīng)的第一子步驟74.1中,執(zhí)行蒙哥馬利約簡(jiǎn)Y*x,2d‘nl。第二子步驟74.2相應(yīng)于行(A.2)或行(A.2.1)-(A.2.5)。在此計(jì)算校正因子C。在與方法A的行(A.3)相應(yīng)的第三子步驟74.3中借助蒙哥馬利乘法B*x,2d(^t子步驟74.1的蒙哥馬利約簡(jiǎn)的結(jié)果執(zhí)行所需校正。
[0133]基于余數(shù)b mod p’,然后在步驟76中執(zhí)行標(biāo)記流程。為此首先確定在位域S中的第一位s[k],其對(duì)應(yīng)的值b+SW*k與標(biāo)記值P’的倍數(shù),也就是與合數(shù)相應(yīng)。該位S[k]被相應(yīng)地標(biāo)記,也就是例如被置為值“O”。從該第k個(gè)位出發(fā),然后按順序?qū)⑵渌cp’間隔的位一也就是位S[k+p’],S[k+2*p’],S[k+3*p’],...一分別置為代表了合數(shù)的值。這些位相應(yīng)于值b+SWk+SWp’,b+Sffk+2.SWp’,b+Sffk+3.SWp’,等等。不需要考慮P’的中間倍數(shù),因?yàn)樵谖挥騍中不表示這些倍數(shù)。
[0134]如在方法A’中已經(jīng)說明的,當(dāng)標(biāo)記值是素?cái)?shù)時(shí),可以取消在步驟74.1中的蒙哥馬利約簡(jiǎn)。
[0135]相反如果一如在方法A中說明的一 P’應(yīng)當(dāng)是(兩個(gè)或多個(gè))素?cái)?shù)的乘積,則對(duì)于作為標(biāo)記值的每個(gè)這些素?cái)?shù)執(zhí)行標(biāo)記流程。跟隨步驟74.1對(duì)于(兩個(gè))標(biāo)記值r,!.’的每一個(gè)進(jìn)行步驟74.2和74.2。從對(duì)于每個(gè)標(biāo)記值分離地確定的余數(shù)(b mod r)出發(fā)也可以對(duì)于每個(gè)標(biāo)記值進(jìn)行步驟76。
[0136]在步驟76的標(biāo)記流程結(jié)束之后在步驟78中檢查,是否應(yīng)當(dāng)進(jìn)行另一個(gè)篩遍歷。如果是,則進(jìn)行到步驟72的跳轉(zhuǎn)。否則終止候選域的產(chǎn)生,并且方法以步驟48 (圖2)繼續(xù)。
[0137]在至此描述的實(shí)施例中在步驟74.2中一相應(yīng)于行(A.2)或者說(A.2.1)-(A.2.5)通過具有底數(shù)2的模冪計(jì)算確定了校正因子。發(fā)明人認(rèn)識(shí)到,當(dāng)計(jì)算1/2的冪而不是2的冪時(shí),在此處處理的硬件平臺(tái)上可以實(shí)現(xiàn)極大的速度提高;使用蒙哥馬利乘法的合適的方法在以下詳細(xì)描述。但是首先說明,如何能夠?qū)⒃谛?A.2)中通過0 = 2<1‘(11+1)1110(1乂說明的、在寄存器C中的校正因子C作為1/2的冪來表達(dá)。
[0138]首先要注意,模X的因式分解是已知的,因?yàn)閄例如是素?cái)?shù)P’或一在實(shí)施替選方案中一是素?cái)?shù)的乘積。由此也已知?dú)W拉f函數(shù)# (I)的值,因?yàn)槔绮⑶覍?duì)于
素?cái)?shù)Pc^B P1有爐(po'pi) =此外對(duì)于與X互素的所有的a成立#w =I modXo
由此對(duì)于合適選擇的k成立2d.(n+1)mod X= 2.(剛部.'))mod X0由此可以將行(A.2)中
的計(jì)算 C = 2d.(n+1)mod X 通過C = (1A) k’m—d.力 modX 來代替。
[0139]以下描述在使用蒙哥馬利運(yùn)算的條件下用于有效確定1/2的正的冪的方法,如對(duì)于剛才提到的計(jì)算C = (V2)晴部+1) mod X可以采用的。但是為了更好理解,首先示出
比較方法(“方法1”),其使用“正常的”模乘a*Mb: =a*bmodM,以計(jì)算2的冪。
[0140]比較方法I從公知的平方-和-乘法技術(shù)出發(fā),在所述平方-和-乘法技術(shù)中對(duì)于指數(shù)的每個(gè)位進(jìn)行中間結(jié)果的平方以及-根據(jù)指數(shù)位的值-還進(jìn)行中間結(jié)果與待求冪的底數(shù)的乘法。但是當(dāng)通過測(cè)量電流消耗或其他參數(shù)可以確定,在指數(shù)的位的處理中中間結(jié)果是否翻倍-也就是向左移動(dòng)時(shí),平方-和-乘法技術(shù)容易潛在地受到側(cè)信道攻擊。由此在比較方法I中使用修改的技術(shù),其可以稱為“平方八次-和乘法一次技術(shù)”。
[0141]在平方八次-和乘法一次技術(shù)”中分別執(zhí)行八次平方,但是所屬的潛在的乘法分別綜合為唯一一個(gè)乘法。對(duì)于移動(dòng)的乘法的指數(shù)位分別被收集在一個(gè)字節(jié)ei中,并且執(zhí)行的乘法然后以因子2ε?進(jìn)行??傮w上該方法可以利用以下偽代碼符號(hào)標(biāo)記來描述:
[0142]方法I
[0143]輸入值:指數(shù)e = e0+ei.256+...+en.256n
[0144]寄存器M中的模
[0145]寄存器:M,X,Y
[0146]輸出值:寄存器Y中的冪2e mod M
[0147]方法流程:
[0148]設(shè)置(U)
[0149]對(duì)于i = η-l向下計(jì)數(shù)到O (1.2)
[0150]執(zhí)行8 次 (1.3)
[0151]設(shè)置Y* = Y mod M (1.4)
[0152]結(jié)束(1.5)
[0153]設(shè)置X =2肖(1.6)
[0154]設(shè)置Y* = X mod M (1.7)
[0155]結(jié)束(I.8)
[0156]在上面的偽符號(hào)表示中符號(hào)A* = B mod M意味著,寄存器A中的內(nèi)容通過A ?B modM代替。寄存器M,X和Y分別具有至少256位的大小。值ei對(duì)于O < i < η表示具有基礎(chǔ)256的位置值系統(tǒng)中的指數(shù)e的“數(shù)位”;成立O < ei < 255。
[0157]在行(1.1)中進(jìn)行寄存器Y的初始化。對(duì)于指數(shù)e的每個(gè)字節(jié)然后執(zhí)行循環(huán)過程,該循環(huán)過程分別包括行(1.3)-(1.7)。在此在行(1.3)和(1.4)中將寄存器Y的內(nèi)容平方八次。在行(1.6)和(1.7)中進(jìn)行寄存器Y中的中間結(jié)果與因子#的乘法。在行(1.1)和(1.6)中的冪計(jì)算可以有效地通過以下來執(zhí)行,即,例如為了計(jì)算A=2ek首先將寄存器A置為零,然后將一從最低位的位開始計(jì)算的一第(k+Ι)個(gè)位反轉(zhuǎn)到“I”。
[0158]只要具有不同的2的冪的乘法不能通過攻擊來區(qū)分,則上面的比較方法I可以防側(cè)信道攻擊。
[0159]發(fā)明人認(rèn)識(shí)到,剛才描述的比較方法I可以被擴(kuò)展為使得使用蒙哥馬利乘法并且由此可以在具有合適的協(xié)處理器56,56’,56〃,56〃’的數(shù)據(jù)載體50上有效地執(zhí)行。令人吃驚地可以通過方法流程的相對(duì)小的修改實(shí)現(xiàn)這一點(diǎn)。特別地在以下稱為“方法2”的擴(kuò)展的方法中,計(jì)算2的負(fù)的冪作為結(jié)果,即2_e= (1/2)%而不是在方法I中計(jì)算的值2%此外在方法2中設(shè)置附加的步驟,在該步驟中將指數(shù)e合適地再編碼,以補(bǔ)償蒙哥馬利運(yùn)算而不是方法I中的“正常的”模乘和平方。
[0160]與在比較方法I中同樣地,在方法2中使用兩個(gè)寄存器X和Y以及用于模m的一個(gè)恒定的第三寄存器M。寄存器Y具有與M相同的大小,而寄存器X必要時(shí)可以更小。所有三個(gè)寄存器具有至少256位,并且模m為至少2255。
[0161]方法2可以對(duì)于上面提到的所有協(xié)處理器56,56’,56〃,56〃’使用。該通用性通過如下實(shí)現(xiàn),即,方法2使用僅兩個(gè)在所有常用的平臺(tái)上可用的普通的蒙哥馬利命令。這些命令首先是寄存器Y的蒙哥馬利平方并且其次是寄存器X和Y的蒙哥馬利乘法。在蒙哥馬利平方中將寄存器Y的值通過Y*m,K Y來代替。該蒙哥馬利平方在以下通過偽代碼命令“設(shè)置Y* = Y*R^mod Μ”表達(dá)。其中將寄存器Y的值通過X*m,K Y代替的蒙哥馬利乘法在以下通過偽代碼命令“設(shè)置 Y* = X*R_1mod Μ”表達(dá)。
[0162]此外,在方法2中將寬度r的寄存器(X或Y)以2的冪2k(其中O≤k〈r)來初始化。該過程通過偽代碼命令“設(shè)置Z = 2k”來表達(dá)。方法2于是可以被如下描述:
[0163]方法2
[0164]輸入值:指數(shù)e = e0+ei.256+...+en.256n
[0165]寄存器M中的模
[0166]寄存器:M,X,Y
[0167]輸出值:寄存器Y中的冪2_e mod M
[0168]方法流程:
[0169]執(zhí)行“方法3” (2.0)
[0170](從指數(shù)e產(chǎn)生具有f= fo+f!.256+...+fn.256n的再編碼的指數(shù)f)
[0171]設(shè)置Y = /?(2.1)
[0172]對(duì)于i = n-Ι向下計(jì)數(shù)到O (2.2)
[0173]執(zhí)行8 次(2.3)
[0174]設(shè)置Y* = Y*R_1mod M (2.4)
[0175]結(jié)束(2.5)
[0176]設(shè)置Χ4Λ(2,6)
[0177]設(shè)置Y* = X*R_1mod M (2.7)
[0178]結(jié)束(2.8)[0179]除了在行(2.0)中的準(zhǔn)備步驟之外,方法2的結(jié)構(gòu)精確地相應(yīng)于方法I的結(jié)構(gòu)。在行(2.1)中對(duì)寄存器Y初始化之后又執(zhí)行具有作為循環(huán)體的行(2.3)-(2.7)的循環(huán)。在行(2.3)和(2.4)中對(duì)寄存器Y中的中間結(jié)果執(zhí)行八次蒙哥馬利平方,并且在行(2.6)和(2.7)中進(jìn)行寄存器Y與因子2fi的蒙哥馬利乘法。也就是方法I和2僅通過步驟(2.0)中的指數(shù)的再編碼并且通過如下,即,使用蒙哥馬利乘法和平方而不是正常的模乘和平方而相區(qū)別。
[0180]在上面描述的方法2的修改中可以將兩個(gè)行(2.6)和(2.7)綜合為唯個(gè)命令,在該命令中將寄存器Y的值通過乘積Y*2fi_nm0dM來代替;在此η’是蒙哥馬利參數(shù)R的二進(jìn)制對(duì)數(shù),從而成立R = 2η’。在此處使用的偽符號(hào)表示中可以將該綜合的命令利用“設(shè)置 Y* = 2fi*2-n mod Μ” 來表達(dá)。
[0181]方法2的結(jié)果可以對(duì)于在此處理的協(xié)處理器56,56’ , 56",56〃’中的一些協(xié)處理器在必要時(shí)以模M的小的倍數(shù)與期望的最終結(jié)果2_ε mod M不同。由此可以需要,作為終止校正步驟執(zhí)行寄存器Y模M的模約簡(jiǎn)。
[0182]在這里描述的實(shí)施例中按照如下方法執(zhí)行在行(2.0)中指數(shù)e的再編碼:
[0183]方法3
[0184]輸入值:指數(shù)e = e0+ei.256+...+en.256n
[0185]蒙哥馬 利參數(shù)R對(duì)底數(shù)2的對(duì)數(shù)η’ (由此成立R = 2η’)
[0186]輸出值:具有f = f。+^.256+…+4.2561^^再編碼的指數(shù)f,用于在方法2中的應(yīng)用
[0187]方法流程:
[0188]設(shè)置f = η,.(256+2562+2563+...+256n)_e (3.1)
[0189]存儲(chǔ)f0,f”...,fn (3.2)
[0190]其中f = fo+A.256+...+fn.256n (3.3)
[0191 ]并且 0 ≤ fi<256 對(duì)于 0 ≤ i〈n (3.4)
[0192]通過以下討論可以解釋,具有按照方法3對(duì)指數(shù)的再編碼的方法2提供正確的結(jié)果:首先要注意,在方法流程期間寄存器X和Y中的所有值始終是2的模冪(具有模M),因?yàn)榧拇嫫骼?的冪被初始化,并且因?yàn)槊筛珩R利運(yùn)算可以寫成具有作為因子的2的(必要時(shí)負(fù)的)冪的模乘。執(zhí)行的計(jì)算由此可以更清楚地寫做關(guān)于模M的相對(duì)于底數(shù)2的其對(duì)數(shù)的形式。
[0193]對(duì)于Y = 2>^PR = 2n’,在行(2.4)中的蒙哥馬利平方可以寫成翻倍和減法,其中y通過2*y-n’來代替(運(yùn)算“S”)??梢栽诩拇嫫髌矫嫔蠈懗伞霸O(shè)置Y* = 2k*2_nm0dM”的、行(2.7)和(2.8)的組合的運(yùn)算,在對(duì)數(shù)表達(dá)中將y通過y+k-n’來代替(運(yùn)算“Mk”)。
[0194]在方法2中分別執(zhí)行八次運(yùn)算S并且然后執(zhí)行一次組合的運(yùn)算Mk。在對(duì)數(shù)表達(dá)中該方法流程可以如下表示:
[0195]y — S 2.y - η' — S4*y_3*n, — S8.y~7.η' — S......—S256.y-255.η’ — Mk256.(y_n,)+k
[0196]為了顯示指數(shù)e的合適的再編碼,再編碼的指數(shù)f的字節(jié)fn,4-!,..., fο必須具有特征,即,在以下定義的序列yn,Yn^1, -,y0中得出結(jié)果I, = -e ;函數(shù)的級(jí)聯(lián)通過符號(hào)“ ο ”表達(dá):[0197]yn: = fn
[0198]Y1: = Mfi o S8(yi+1) = 256.(yi+「n,)+A 對(duì)于 i=n_l,...,0
[0199]可以通過關(guān)于n的歸納顯示,在方法3中定義的再編碼具有剛才提到的特征并且由此得到方法2的正確結(jié)果。
[0200]圖5示出了剛才描述的方法2和3的示例流程。在步驟80中按照方法3進(jìn)行指數(shù)e的再編碼,以從具有其位組82 —在此是字節(jié)en,—的原始的指數(shù)e中獲得具有其位組84 —在此是字節(jié)fn,fn_1;..., fο 一的再編碼的指數(shù)f。
[0201]在步驟80中的再編碼之后的方法流程可以劃分為初始化86和η個(gè)片段88。在初
始化86的過程中在步驟90中執(zhí)行按照方法2的行(2.1)的命令“設(shè)置Y = 2厶”。η個(gè)片
段88的每一個(gè)分別相應(yīng)于方法2的一個(gè)循環(huán)過程并且分別對(duì)應(yīng)于再編碼的指數(shù)f的位組84的一個(gè)。
[0202]每個(gè)片段88具有三個(gè)主要步驟92、94和96。在步驟92中按照方法2的行(2.3)和(2.4)對(duì)在寄存器Y中包含的中間結(jié)果執(zhí)行八次蒙哥馬利平方。在與行(2.6)相應(yīng)的步驟94中,在寄存器X中存儲(chǔ)具有指數(shù)的2的冪,該指數(shù)通過再編碼的指數(shù)f的對(duì)應(yīng)的位組84形成。該步驟94可以有效地通過如下實(shí)現(xiàn),即,寄存器X首先被刪除并且然后將其位位置通過對(duì)應(yīng)的位組84說明的位設(shè)為值“I”。步驟96相應(yīng)于方法2的行(2.7)并且包含寄存器Y和X的蒙哥馬利乘法。
[0203]在總共執(zhí)行了 η個(gè)片段88之后,在寄存器Y中-在必要時(shí)還需要的通過步驟98中的模約簡(jiǎn)進(jìn)行的校正之后-呈現(xiàn)期望的結(jié)果2_emodM。
[0204]以下示出至此描述的方法2和3的一些可選的簡(jiǎn)化和擴(kuò)展。在不同的實(shí)施變型中可以利用這些簡(jiǎn)化和擴(kuò)展的不同組合,以便例如將采用的方法特別好地匹配到確定的蒙哥馬利協(xié)處理器56,56’, 56",56〃’或者以便進(jìn)一步提高窺探安全性。
[0205]首先討論按照方法3的指數(shù)再編碼中的潛在困難,即,對(duì)于fn可能出現(xiàn)大于255
的值。對(duì)于小的%于是可能在方法2的步驟(2.1)中確定的值大于模m并且由此對(duì)于
作為初始值存儲(chǔ)在寄存器Y中來說太大了。然而對(duì)于所有在此處理的蒙哥馬利協(xié)處理器56,56’,56",56〃’可以這樣選擇用于模m的寄存器大小,使得對(duì)于各自的蒙哥馬利系數(shù)η’滿足不等式〗~5).1^!^〗11’。條件2Λ< m于是可以對(duì)于非常小的ε >0如下被放大:
[0206]fn = η,.(256/255).(1- ε ) -en e [0,(4/5).η,]
[0207]剛才提到的條件當(dāng)在以下利用(*)表示的不等式1/4.η’ <en〈n’成立時(shí)總是滿足。
[0208]如果方法3得到對(duì)于fn的過大的值,則該值可以在圖5的步驟90之前利用模m來模約簡(jiǎn),從而然后在步驟90中將寄存器Y置為得到的余數(shù)。對(duì)于非常小的en(en〈n’/256)也可以將第η個(gè)片段82容納到第(η-1)個(gè)片段82中。在該情況下將η減小1,并且將eiri提高en.256。此外在一些構(gòu)造中可以設(shè)置,這樣設(shè)置指數(shù)e的值,使得fn保持足夠小。
[0209]總之也就是可以通過以下方法B來進(jìn)行在步驟74.2(圖4)中的校正因子C的計(jì)算:
[0210]方法B
[0211]輸入值:寄存器X中的d位寬的值(例如素?cái)?shù)p’)
[0212]在寄存器Y中的η.d位寬的值(例如底數(shù)b)[0213]寄存器:B,C,X,Y,Z
[0214]輸出值:寄存器Z中的余數(shù)Y mod X
[0215]方法流程:
[0216]設(shè)置B = Y*2-d.n mod X (B.1)
[0217]設(shè)置C=《丨/2) Α' φ,Λ) - 士 _) mod X
[0218]應(yīng)用方法2和3
[0219]對(duì)于合適選擇的k (B.2)
[0220]設(shè)置Z = B*C*2-d mod X (B.3)
[0221]行(B.1)和(B.3)相應(yīng)于方法A中的行(A.1)和(A.3)并且分別包含一個(gè)蒙哥馬利乘法。在行(B.2)中執(zhí)行用于底數(shù)1/2的模冪計(jì)算的上面描述的方法2和3。在此這樣選擇值k,使得指數(shù)fn+lj是正的,并且滿足不等式(*)。在許多實(shí)施方式中模X和指數(shù)分別具有最高16位的長(zhǎng)度,從而為了行(B.2)中的校正因子的計(jì)算,16個(gè)蒙哥馬利平方和4個(gè)蒙哥馬利乘法足夠。
[0222]以下描述剛才示出的方法B的另一個(gè)優(yōu)化的修改,其特別好地適合于通過協(xié)處理器56〃’的執(zhí)行。在具有協(xié)調(diào)處理器56〃的數(shù)據(jù)載體50中具有微小修改的方法可以通過主處理器54執(zhí)行。
[0223]在以下描述的方法既關(guān)于其實(shí)施速度也關(guān)于其窺探安全性最優(yōu)化。關(guān)于窺探安全性也就是基于如下事實(shí)而存在潛在的攻擊可能性,即,計(jì)算篩法的基礎(chǔ)值b對(duì)非常小的素?cái)?shù)取模后的余數(shù)。攻擊在理論上可以確定該模約簡(jiǎn)的電流曲線(Stromverlaufskurve) —或其他側(cè)信道信息一并且對(duì)于側(cè)信道攻擊進(jìn)行分析,在該側(cè)信道攻擊中建議基礎(chǔ)值b的最高或最低字并且然后關(guān)于每個(gè)約簡(jiǎn)的開始窺探數(shù)據(jù)。
[0224]為了防御這樣的攻擊,在一些實(shí)施例中一例如在以下方法中一建議,蒙哥馬利約簡(jiǎn)不是進(jìn)行對(duì)每個(gè)素?cái)?shù)取模,而是進(jìn)行對(duì)每個(gè)素?cái)?shù)對(duì)取模。作為正面的副作用,由此也加速了篩過程,因?yàn)閮H需要進(jìn)行一半的費(fèi)時(shí)的長(zhǎng)的約簡(jiǎn)。在其他修改中也可以使用多于兩個(gè)素?cái)?shù)的元組。
[0225]對(duì)于以下方法Ptl和P1分別是小的素?cái)?shù),并且m = Ptl -P1是該素?cái)?shù)對(duì)的乘積。首先執(zhí)行基礎(chǔ)值b對(duì)該素?cái)?shù)乘積m取模的蒙哥馬利約簡(jiǎn),如與圖4中的步驟74.1或方法A中的行(A.1)相應(yīng)的那樣。也就是通過蒙哥馬利乘法計(jì)算具有以下特征的值r:
[0226]r = b*ml = b.R_1mod m
[0227]蒙哥馬利系數(shù)R在此為2128‘\其中最小可能的寄存器大小選擇2128‘\其足以容納基礎(chǔ)值b。在此假定,其中存儲(chǔ)了蒙哥馬利約簡(jiǎn)的因子b和I的寄存器分別是128位長(zhǎng)。
[0228]對(duì)于這兩個(gè)素?cái)?shù)Ptl和P1的每一個(gè)現(xiàn)在執(zhí)行以下步驟(方法C),以便從中間結(jié)果r中獲得余數(shù)b mod p’。也就是在方法C的第一執(zhí)行中設(shè)置P’ = P0,并且在第二執(zhí)行中設(shè)置P’ = P1O方法C由此相應(yīng)于圖4中的74.2和74.3或方法A中的行(A.2)和(A.3):
[0229]方法C
[0230]輸入值:d位寬的合數(shù)m
[0231]素?cái)?shù)p’,其中p’〈214,其除以m
[0232]如上面給出的值r = b.2_d‘nmodm[0233]寄存器:A,B,F(xiàn),R,X,Y
[0234]輸出值:寄存器R中的余數(shù)bmodp’
[0235]方法流程:
[0236]設(shè)置X = p’ -1 (C.1)
[0237]將X 翻倍,直到 X ≥(1〈〈15) (C.2)
[0238]設(shè)置Y = ((l〈〈16)-X) + ((n+l)〈〈8) (C.3)
[0239]如果Y ≥(1>>15)則 (C.4)
[0240]設(shè)置y = y-(χ>>I) (C.5)
[0241]設(shè)置F = Y? I (C.6)
[0242]設(shè)置A = 1〈〈(F>>7) (C.7)
[0243]設(shè)置B = I (C.8)
[0244]設(shè)置R = A*B*2-128mod p’ (C.9)
[0245]執(zhí)行7 次 (C.10)
[0246]設(shè)置R = R*R*2-128mod p, (C.11)
[0247]結(jié)束(C.12)
[0248]設(shè)置A = F mod (I〈〈7) (C.13)
[0249]設(shè)置R = A*R*2-128mod p, (C.14)
[0250]設(shè)置A= r(C.15)
[0251]設(shè)置R = A*R*2-128mod p’ (C.16)
[0252]在上面描述的方法中X?n表示將寄存器或常數(shù)X以η個(gè)位位置向右移動(dòng),并且Χ?η表示向左的相應(yīng)移動(dòng)。
[0253]在行(C.1)-(C.6)中計(jì)算寄存器F中的合適的校正因子指數(shù)f,其具有如行(B.2)中的形式,但是附加地如在方法3中那樣被再編碼。在此首先在行(C.1)和(C.2)中將寄存器X中的16位整數(shù)翻倍,直到其是負(fù)的。然后在行(C.3)中將在2和33之間的值加到-X的高字節(jié),其中X是在寄存器X中包含的值。在行(C.4)和(C.5)中將中間結(jié)果校正,如果其太大的話。最后在行(C.6)中通過將寄存器Y中的中間結(jié)果減半來計(jì)算寄存器F中的校正因子指數(shù)f。
[0254]在行(C.7)_(C.14)中利用類似于方法2中的步驟計(jì)算寄存器R中的校正因子。由于前提條件P’〈214,方法2的最大所需的兩個(gè)循環(huán)過程在此“被展開”。更具體來說,行(C.7)-(C.9)相應(yīng)于如方法2的行(2.7)中的第一蒙哥馬利乘法,行(C.10)-(C.12)相應(yīng)于蒙哥馬利平方7次,并且行(C.13)和(C.14)相應(yīng)于如方法2的行(2.7)中的第二蒙哥馬利乘法。當(dāng)在實(shí)施替選方案中可以出現(xiàn)更大的素?cái)?shù)P’時(shí),則可以通過接受方法2的相應(yīng)多個(gè)其他循環(huán)過程來合適地修改方法C。例如可以設(shè)有,實(shí)施另外7個(gè)蒙哥馬利平方和另一蒙哥馬利乘法。
[0255]在行(C.15)和(C.16)中最后將在執(zhí)行(C.14)之后在寄存器R中包含的校正因子應(yīng)用于蒙哥馬利約簡(jiǎn)的結(jié)果r。總體上由此方法C的行(C.1)-(C.15)相應(yīng)于圖4中的子步驟74.2,而行(C.15)和(C.16)相應(yīng)于子步驟74.3。
[0256]應(yīng)當(dāng)理解,在此描述的對(duì)素?cái)?shù)候選的有效計(jì)算和確定的構(gòu)造不限制于按照?qǐng)D1和圖2的方法流程,而是其在實(shí)施替選方案中也可以對(duì)于其他應(yīng)用目的,特別是在用于通過一個(gè)或多個(gè)處理器執(zhí)行密碼的領(lǐng)域而設(shè)計(jì)。此外可以理解,在此描述的實(shí)施方式和實(shí)施變型僅作為例子看待。在此描述的特征的其他修改和組合對(duì)于專業(yè)人員來說是明顯的。
【權(quán)利要求】
1.一種對(duì)于密碼應(yīng)用確定第一值(b)模第二值(P’)之后的除余數(shù)的方法,其中,該方法通過至少一個(gè)處理器(54,56,56’,56〃,56"')執(zhí)行并且包含: -利用第一值(b)作為因子之一和第二值(P’)作為模執(zhí)行(74.1)蒙哥馬利乘法, -確定(74.2)校正因子,其中在校正的蒙哥馬利乘法中使用校正因子作為因子,以獲得第一值(b)模第二值(P’)之后的除余數(shù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,利用第一值(b)作為因子之一和第二值(P’)作為模的蒙哥馬利乘法的執(zhí)行是第一蒙哥馬利乘法,并且通過 -以第一蒙哥馬利乘法的結(jié)果作為一個(gè)因子和校正因子作為另一個(gè)因子和第二值(P’)作為模,執(zhí)行(74.3)第二蒙哥馬利乘法,作為校正的蒙哥馬利乘法,以獲得第一值(b)模第二值(P’)之后的除余數(shù)。
3.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的方法,其特征在于,所述第一蒙哥馬利乘法是蒙哥馬利約簡(jiǎn)。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,在第一蒙哥馬利乘法之后為第二蒙哥馬利乘法確定校正因子。
5.根據(jù)權(quán)利要求2至4中任一項(xiàng)所述的方法,其特征在于,所述校正因子用于補(bǔ)償通過第一和第二蒙哥馬利乘法引起的誤差。
6.根據(jù)權(quán)利要求2至5中任一項(xiàng)所述的方法,其特征在于,以不同的蒙哥馬利系數(shù)執(zhí)行第一和第二蒙哥馬利乘法。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,以第一值(b)作為因子之一和第二值(P’ )作為模的所執(zhí)行的蒙哥馬利乘法是校正的蒙哥馬利乘法,其將校正因子用作另一個(gè)因子。
8.根據(jù)權(quán)利要求4和7所述的方法,其特征在于,如果第二值(P’)是素?cái)?shù)的乘積,則該方法按照權(quán)利要求4構(gòu)造否則該方法按照權(quán)利要求7構(gòu)造。
9.根據(jù)權(quán)利要求1至8中任一項(xiàng)所述的方法,其特征在于,校正因子作為2的模冪在多個(gè)循環(huán)過程中被計(jì)算,其中每個(gè)循環(huán)過程具有中間結(jié)果的翻倍和條件減。
10.根據(jù)權(quán)利要求1至9中任一項(xiàng)所述的方法,其特征在于,所述校正因子作為具有正整數(shù)校正因子指數(shù)和底數(shù)1/2的模冪被計(jì)算。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述校正因子的計(jì)算具有中間結(jié)果的多個(gè)蒙哥馬利平方的系列,按照這些蒙哥馬利平方執(zhí)行中間結(jié)果與取決于校正因子指數(shù)的因子的蒙哥馬利乘法。
12.一種對(duì)于密碼應(yīng)用確定以特定的概率表示素?cái)?shù)的素?cái)?shù)候選的方法,其中,所述方法通過至少一個(gè)處理器(54, 56, 56’, 56",56,,,)執(zhí)行并且包含: -確定(44)用于篩法的基礎(chǔ)值(b),和 -執(zhí)行多個(gè)篩遍歷,在所述篩遍歷中分別確定(72) —個(gè)標(biāo)記值(p’ ;r, r)并且將該標(biāo)記值(P’ ;r, r')的倍數(shù)在篩法中作為合數(shù)標(biāo)記,其中在每個(gè)篩遍歷中利用包括至少一個(gè)蒙哥馬利運(yùn)算的余數(shù)確定方法確定(74)基礎(chǔ)值(b)對(duì)標(biāo)記值(p’ ;r,r’)取模之后的除余數(shù)。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述標(biāo)記值(p’;r, r)是素?cái)?shù)。
14.根據(jù)權(quán)利要求12或13所述的方法,其特征在于,所述篩法通過位域(S)代表,其位(S[i])相應(yīng)于如下的值,所述值從基礎(chǔ)值(b)出發(fā)具有預(yù)定的步幅,該步幅大于等于或大于2。
15.根據(jù)權(quán)利要求12至14中任一項(xiàng)所述的方法,其特征在于,對(duì)每個(gè)確定的素?cái)?shù)候選進(jìn)行至少一個(gè)概率性素?cái)?shù)測(cè)試(12,20, 28,34,38)。
16.根據(jù)權(quán)利要求12至15中任一項(xiàng)所述的方法,其特征在于,作為余數(shù)確定方法使用按照權(quán)利要求1至11中任一項(xiàng)所述的方法。
17.根據(jù)權(quán)利要求16所述的方法,其特征在于,在篩遍歷中的一個(gè)篩遍歷中: -對(duì)于標(biāo)記值(r,r’)的乘積(p’)執(zhí)行第一蒙哥馬利運(yùn)算, -分別對(duì)于標(biāo)記值(r,r’)執(zhí)行第二蒙哥馬利運(yùn)算,并且 -分別標(biāo)記所述標(biāo)記值(r,r’)的倍數(shù)。
18.根據(jù)權(quán)利要求1至17中任一項(xiàng)所述的方法,其特征在于,所述方法用于確定RSA密鑰或RSA-CRT密鑰的至少一個(gè)參數(shù)。
19.一種計(jì)算機(jī)程序產(chǎn)品,具有多個(gè)程序命令,所述程序命令允許至少一個(gè)處理器(54,56,56’,56",56’’’)、特別是便攜式數(shù)據(jù)載體(50)的至少一個(gè)處理器(54,56, 56’, 56",56,,,)執(zhí)行按照權(quán)利要求1至18中任一項(xiàng)所述的方法。
20.一種裝置,特別 是便攜式數(shù)據(jù)載體(50),具有至少一個(gè)處理器(54,56,56’,56",56,,,)和至少一個(gè)存儲(chǔ)器(60,64,66,68),其中所述裝置構(gòu)造為執(zhí)行按照權(quán)利要求1至18中任一項(xiàng)所述的方法。
【文檔編號(hào)】H04L9/08GK104012029SQ201280064238
【公開日】2014年8月27日 申請(qǐng)日期:2012年10月25日 優(yōu)先權(quán)日:2011年10月28日
【發(fā)明者】J.普爾庫斯 申請(qǐng)人:德國(guó)捷德有限公司