專利名稱:在給定時(shí)間間隔內(nèi)產(chǎn)生隨機(jī)數(shù)的方法和相應(yīng)裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及從發(fā)生器獲取一個(gè)在A和B之間隨機(jī)數(shù)的方法,該發(fā)生器產(chǎn)生的隨機(jī)數(shù)在0和W-1之間,所產(chǎn)生數(shù)的大小為N,產(chǎn)生的隨機(jī)數(shù)所取的最大值為W-1,其W為,比如W=2N,而A和B是小于或大于數(shù)W的任意整數(shù)。
這種情況發(fā)生在,比如適合進(jìn)行密碼計(jì)算的電子元件中,它包括一種N-位的隨機(jī)數(shù)發(fā)生器,比如N=8。這樣,當(dāng)期望隨機(jī)數(shù)在,比如,0和100之間或者300和1000之間的時(shí)候,能夠在0和W-1=255之間產(chǎn)生隨機(jī)數(shù)。應(yīng)該注意,為了最后得到在300和10000之間的數(shù),可以先確定0和9700之間的數(shù),然后再把所得的數(shù)加上300。
這種情況大多數(shù)發(fā)生在實(shí)際應(yīng)用密碼時(shí),比如DSA簽字,E1 Gamal簽字或者編碼,應(yīng)付各種攻擊對(duì)策的開(kāi)發(fā),等等。
已經(jīng)知道有幾種方法可以從0和W-1之間的數(shù)當(dāng)中在0和K之間產(chǎn)生隨機(jī)數(shù)R。這些方法通常通過(guò)軟件手段來(lái)實(shí)現(xiàn),一方面用來(lái)控制產(chǎn)生大小為N的隨機(jī)數(shù)的硬件發(fā)生器,另一方面用來(lái)控制進(jìn)行特殊乘法、加法等運(yùn)算的計(jì)算裝置。
第一種已知方法包括如下步驟a)確定最小整數(shù)p,使得K≤WP-1,b)產(chǎn)生p個(gè)隨機(jī)數(shù)S0,S,...,SP-1,并形成變量S=Σi=0p-1Si*Wi]]>c)如果S>K,則返回到步驟b),否則令R=SR是要尋找的在0和K之間的隨機(jī)數(shù)。方程S=Σi=0p-1Si*Wi]]>是變量S在基數(shù)(Wp-1,...,W1,W0)內(nèi)分解/重組的表示。也可以用一種常用記號(hào)記作S=Sp-1Sp-2...S1S0。
第二種已知方法包括如下步驟a)確定最小整數(shù)p,使得K≤WP-1,b)產(chǎn)生p個(gè)隨機(jī)數(shù)S0,S,...,SP-1,并形成變量T=Σi=0p-2Si*Wi]]>而且S=T+SP-1*WP-1c)如果S>K,則令R=T,否則令R=S第三種已知方法包括如下步驟a)確定最小整數(shù)p,使得K≤WP-1,b)產(chǎn)生p個(gè)隨機(jī)數(shù)S0,S,...,SP-1,并形成變量S=Σi=0p-1Si*Wi]]>c)令R=S mod(K+1),也就是S被K+1整除的余數(shù),也稱為用K+1對(duì)S作模數(shù)約簡(jiǎn)(modular reduction)。
這三種方法可歸納為如下步驟a)產(chǎn)生p個(gè)隨機(jī)數(shù)S0,S,...,SP-1,p是最小整數(shù),K≤WP-1,并形成變量S=Σi=0p-1Si*Wi]]>b)從變量S確定隨機(jī)數(shù)R。
根據(jù)具體情況,在步驟b期間,要從S得到R可以通過(guò)重復(fù)步驟b(第一種方法),考慮或不考慮增加的隨機(jī)數(shù)Sp-1(第二種方法),或者進(jìn)行模數(shù)約簡(jiǎn)(第三種方法)。
應(yīng)該注意,在這三個(gè)方法中,如果所要求的是一個(gè)在A和K+A之間的數(shù),那么給在0和K之間得到的數(shù)R加上A可滿足要求。
第一個(gè)方法的主要缺點(diǎn)是計(jì)算時(shí)間特別長(zhǎng),尤其是它不可預(yù)計(jì)計(jì)算時(shí)間產(chǎn)生p個(gè)隨機(jī)數(shù)的步驟可能要被重復(fù)多次,而且還不可能在開(kāi)始時(shí)就預(yù)計(jì)出重復(fù)該步驟的次數(shù)。
第二和第三個(gè)方法的主要缺點(diǎn)是產(chǎn)生的隨機(jī)數(shù)有偏向即在
區(qū)間產(chǎn)生的數(shù)R當(dāng)中,某些值比其它值更為可幾。換句話說(shuō),產(chǎn)生的數(shù)R不是完全隨機(jī)的(非-均勻分布)。這種偏向可能會(huì)對(duì)實(shí)施這些方法的密碼系統(tǒng)的安全性能有重大影響。事實(shí)上,密碼系統(tǒng)的安全性能假定了它們所采用的隨機(jī)數(shù)在
或[A,K+A]區(qū)間希望是均勻分布的(或者至少接近均勻分布)。
最后,這三個(gè)方法總體上都慢,因?yàn)樗鼈兪菍?duì)大量的數(shù)作運(yùn)算,其大小N(就位數(shù)的意義來(lái)說(shuō))大于為實(shí)施而采用電路的大小。這尤其是因?yàn)閿?shù)K是任意一個(gè)數(shù),可以比W大,所以其大小可大于N。變量S也可能大??傊瑢?duì)大量的數(shù)進(jìn)行運(yùn)算需要的方法既復(fù)雜,而且還耗費(fèi)計(jì)算時(shí)間。
本發(fā)明的基本目的是提議一種能特別迅速構(gòu)建隨機(jī)數(shù)R的方法。
所以,本發(fā)明提出一種加密方法,在實(shí)施該方法的過(guò)程中,為了在0和一個(gè)預(yù)先確定的限制數(shù)值K之間產(chǎn)生一個(gè)隨機(jī)數(shù)R,采用一種隨機(jī)數(shù)發(fā)生器,該發(fā)生器可產(chǎn)生大小N固定在0和W-1之間的多個(gè)隨機(jī)數(shù)Si,其中,比如但不一定必須,W=2N。
按照本發(fā)明方法的基本步驟如下E31在0和W-1之間產(chǎn)生一個(gè)隨機(jī)變量Si,E32如果該隨機(jī)變量Si嚴(yán)格小于基數(shù)W中限制數(shù)值K的系數(shù)Ki,則隨機(jī)數(shù)R的i階系數(shù)Ri等于隨機(jī)數(shù)Si,然后對(duì)任何一個(gè)小于i的階J,在0-W-1之間產(chǎn)生一個(gè)隨機(jī)變量Sj,并且Rj=Sj,E33否則,如果所述變量大于基數(shù)W中限制數(shù)值K的i階系數(shù)Ki,則所述系數(shù)Ri按照一個(gè)預(yù)先確定的函數(shù)從i階的隨機(jī)變量Si來(lái)確定,并接著為i-1階的隨機(jī)數(shù)R確定系數(shù)Ri-1,重復(fù)步驟E31-E33后立即降低階數(shù)。
這樣,本發(fā)明方法是從最有意義的系數(shù)RP-1開(kāi)始,一個(gè)接一個(gè)地尋找所要求的隨機(jī)數(shù)R的系數(shù)Ri-1。所以,所采用的隨機(jī)數(shù)發(fā)生器實(shí)體一個(gè)接一個(gè)地產(chǎn)生隨機(jī)變量Si,每重復(fù)一次產(chǎn)生一個(gè)變量。
此外,由于執(zhí)行步驟E33的次數(shù)少,故而本方法快捷。這是因?yàn)橹灰l(fā)生器實(shí)體產(chǎn)生的變量Si中有一個(gè)比限制數(shù)值K的相應(yīng)系數(shù)Ki小,本方法就不再要求對(duì)階數(shù)低于i的變量Sj進(jìn)行處理從而常常只要計(jì)算數(shù)R最有意義的少量系數(shù)。
最后,和已知的那些方法相比,本發(fā)明方法的優(yōu)點(diǎn)是只處理那些不大于N位的數(shù),N是寄存器以及用于實(shí)施的裝置的其它計(jì)算電路的大小。比如,如果W等于SN,從基數(shù)(Wp-1,...,W1,W0)中K的分解產(chǎn)生的Ki必須小于W,因而其大小不會(huì)大于N位。類似,由隨機(jī)數(shù)發(fā)生器實(shí)體產(chǎn)生的隨機(jī)變量Si也具有N位。
通過(guò)在基本步驟中增加一個(gè)設(shè)定初值的步驟以及一個(gè)重組隨機(jī)數(shù)R的步驟,得到E1在基數(shù)(Wp-1,Wp-2,...,W0)中分解限制數(shù)值K(K=Σi=0p-1Ki*Wi]]>或者K=Kp-2...K1K0),i是循環(huán)指數(shù)(loop index),Ki是0和W-1之間限制數(shù)值K的i階系數(shù),p是限制數(shù)值K的次數(shù)(degree),E2設(shè)置布爾變量f的初值為T(mén)RUE,E3在指數(shù)為i的循環(huán)內(nèi)進(jìn)行下列運(yùn)算,i是在p-1和0之間變化的整數(shù)E31在0和W0-1之間產(chǎn)生一個(gè)隨機(jī)變量Si,E32如果該隨機(jī)變量Si嚴(yán)格小于i階系數(shù)Ki,則將布爾變量f設(shè)置為FALSE,E33_1如果該隨機(jī)變量Si嚴(yán)格大于i階系數(shù)Ki,而且布爾變量f為T(mén)RUE,則i階系數(shù)Ri按照一個(gè)預(yù)先確定的函數(shù)從i階隨機(jī)變量Si來(lái)確定,E33_2否則Ri=SiE34減少循環(huán)指數(shù)i,E4通過(guò)重組基數(shù)W中隨機(jī)系數(shù)Ri(R=Σi=0p-1Ri*Wi]]>或者Rp-1...R1R0)確定隨機(jī)數(shù)R。
具體地說(shuō),一旦布爾變量f被定位為FALSE,除非實(shí)施本方法初始化步驟E2,它就會(huì)一直保持這個(gè)值,因?yàn)闆](méi)有準(zhǔn)備將它重新定位為T(mén)RUE。只有當(dāng)變量f為T(mén)RUE時(shí),才執(zhí)行步驟E32;所以,一旦變量f被定位為值FALSE,就不再執(zhí)行步驟E33_1,從而按照本發(fā)明的方法可迅速結(jié)束。
本發(fā)明的第二個(gè)目標(biāo)是提出一種方法,利用該方法可構(gòu)建一種分布均勻的隨機(jī)數(shù),或者可構(gòu)建盡量接近所期望均勻分布的隨機(jī)數(shù)。為達(dá)到這個(gè)目標(biāo),要選擇一個(gè)合適的函數(shù)來(lái)從隨機(jī)變量Si中確定系數(shù)Ri。
按照本發(fā)明方法的第一實(shí)施方案,為了從i階隨機(jī)變量Si確定i階系數(shù)Ri(步驟E33_1),要執(zhí)行以下子步驟E33_11如果隨機(jī)變量Si嚴(yán)格大于限制數(shù)值K的系數(shù)Ki,則產(chǎn)生一個(gè)新的隨機(jī)變量Si,E33_12重復(fù)步驟E33_11直到隨機(jī)變量Si小于限制數(shù)值K的系數(shù)Ki,然后使系數(shù)Ri等于隨機(jī)變量Si。
在這樣一個(gè)實(shí)施方案中,所得到的全部系數(shù)Ri都是直接由硬件隨機(jī)數(shù)發(fā)生器產(chǎn)生的數(shù);所以這些系數(shù)正確完善,由此產(chǎn)生的數(shù)R也是正確完善的。換句話說(shuō),得到的數(shù)R在區(qū)間
內(nèi)是均勻分布的。
按照第二實(shí)施方案,在步驟E33過(guò)程中,要這樣來(lái)選擇i階系數(shù)Ri,使它等于部分的隨機(jī)變量Si,即這一部分小于系數(shù)Ki。所說(shuō)的部分,在一個(gè)例子中,與變量Si的限制位數(shù)相應(yīng)。
按照第三實(shí)施方案,在步驟E33過(guò)程中,隨機(jī)變量Si對(duì)Ki+1約簡(jiǎn)取模,約簡(jiǎn)的結(jié)果是找到的系數(shù)Ri。
這后兩種實(shí)施方案都比所知道的方法迅速,基本上是因?yàn)樗龅墓ぷ髦魂P(guān)系到少量的數(shù)。只是所得到的隨機(jī)數(shù)的分布不均勻簡(jiǎn)單的把變量Si截短或者對(duì)Ki+1進(jìn)行約簡(jiǎn)取模都必然會(huì)引進(jìn)一種偏向。但是與現(xiàn)有技術(shù)方法相比,這種偏向要小。
另外,下面將會(huì)看到,按照所提出的第二和第三實(shí)施方案,有可能使本方法的偏向降低。
按照上面描述本發(fā)明的一個(gè)方法,構(gòu)建的隨機(jī)數(shù)R小于從完全隨機(jī)數(shù)發(fā)生器實(shí)體產(chǎn)生的大小為N的變量Si所得到的K。所得的數(shù)R是有偏向的,不過(guò)這個(gè)偏向比已知方法的小。
為此,在第二或第三實(shí)施方案中,特別是在步驟E33_1的過(guò)程中,從大小為N的變量Si中使構(gòu)建的系數(shù)Ri≤Ki。為了降低涉及系數(shù)Ri所引進(jìn)的偏向,建議象構(gòu)建數(shù)R一樣,采取同樣的E1-E3步驟來(lái)構(gòu)建系數(shù)Ri。在某種意義上兩種類似的方法是”交錯(cuò)“的。這樣有可能進(jìn)一步減少要處理的數(shù)的多少,也進(jìn)一步降低了涉及R的系數(shù)的偏向,以及涉及最后的數(shù)R的偏向。
具體地說(shuō),為了從i階隨機(jī)變量Si確定出i階系數(shù)Ri(步驟E33_1),利用基數(shù)(βq-1,...,β0)作為計(jì)算基數(shù)執(zhí)行步驟E1-E4,β是一個(gè)嚴(yán)格小于W的整數(shù),q是基數(shù)β中Ki的次數(shù)。
這樣,步驟E33被分解成下面的子步驟E33_41基數(shù)(βq-1,...,β0)中限制數(shù)值K的i階系數(shù)Ki(K1=Σj=0q-1(Ki)j*βj]]>或者Ki=(Ki)q-1...(Ki)1(Ki)0)被分解,其中j是循環(huán)指數(shù),(Ki)j是0和β-1之間的一個(gè)數(shù),q是系數(shù)Ki的次數(shù),E33_42將第二布爾變量g的初值設(shè)置為T(mén)RUE,
E33_43在從q-1到0之間變化的指數(shù)j的一個(gè)循環(huán)內(nèi)進(jìn)行下列運(yùn)算E33_431在0和β-1之間產(chǎn)生一個(gè)隨機(jī)變量(Si)j,E33_432如果該隨機(jī)變量(Si)j嚴(yán)格小于系數(shù)(Ki)j,則將第二布爾變量g設(shè)置為FALSE,E33_4331如果隨機(jī)變量(Si)j嚴(yán)格大于系數(shù)(Ki)j,而且第二布爾變量g為T(mén)RUE,則按照預(yù)先確定的一個(gè)函數(shù)從隨機(jī)變量(Si)j確定系數(shù)(Ri)j,E33_4332否則,(Ri)j=(Si)jE33_434減少循環(huán)指數(shù)j,E33_44通過(guò)重組基數(shù)β中的隨機(jī)系數(shù)(Ri)j(R1=Σj=0q-1(Ri)j*βj]]>或者Ri=(Ri)q-1...(Ri)1(Ri)0)來(lái)確定隨機(jī)數(shù)Ri。
正如上面剛剛看到的,通過(guò)”交錯(cuò)“兩種方法,在保持綜合方法迅速的同時(shí),降低了由這種綜合方法產(chǎn)生隨機(jī)數(shù)R的偏向。當(dāng)然還可以想象”交錯(cuò)“兩個(gè)以上的方法,比方3個(gè)或4個(gè),在步驟E33_43中通過(guò)分解基數(shù)γ<β中的數(shù),并在類似E33_41-E33_43的相繼步驟中分解步驟E33_43進(jìn)行“交錯(cuò)”。
總之,”交錯(cuò)“的方法越多,要處理的數(shù)越少降低了每個(gè)步驟的持續(xù)時(shí)間,而且還降低了由這個(gè)綜合方法產(chǎn)生的數(shù)的偏向。
本發(fā)明的另外一個(gè)目標(biāo)是適于實(shí)施上面所描述方法的一種電子元件。這種元件特別包括一種可產(chǎn)生大小為N的隨機(jī)數(shù)的發(fā)生器,以及對(duì)不大于N位的數(shù)進(jìn)行運(yùn)算的多種計(jì)算電路。
按照本方法要實(shí)行的實(shí)施方案,這些計(jì)算電路適于進(jìn)行兩個(gè)數(shù)的比較運(yùn)算,數(shù)的截短以及模數(shù)約簡(jiǎn)運(yùn)算。
該隨機(jī)數(shù)發(fā)生器和計(jì)算電路都優(yōu)選由軟件手段控制,這些軟件儲(chǔ)存在為本目的準(zhǔn)備的元件的存儲(chǔ)器中。
本發(fā)明還涉及一種包括如上描述的電子元件的芯片卡。
權(quán)利要求
1.一種加密方法,其中,為了在0和一個(gè)預(yù)先確定的限制數(shù)值K之間產(chǎn)生一個(gè)隨機(jī)數(shù)R,利用一種隨機(jī)數(shù)發(fā)生器產(chǎn)生大小N固定在0到W-1之間的多個(gè)隨機(jī)數(shù)Si,該方法的特征在于E31在0和W-1之間產(chǎn)生一個(gè)隨機(jī)變量Si,E32如果該隨機(jī)變量Si嚴(yán)格小于基數(shù)W中限制數(shù)值K的系數(shù)Ki,則隨機(jī)數(shù)R的i階系數(shù)Ri等于隨機(jī)數(shù)Si,然后,對(duì)所有低于i的各個(gè)階j產(chǎn)生一個(gè)在0和W-1之間的隨機(jī)變量Sj,并Rj=Sj,E33否則,如果所述隨機(jī)變量大于基數(shù)W中限制數(shù)值K的i階系數(shù)Ki,則所述系數(shù)Ri按照一個(gè)預(yù)先確定的函數(shù)從i階隨機(jī)變量Si確定,然后為i-1階的隨機(jī)數(shù)R確定系數(shù)Ri-1,并通過(guò)重復(fù)步驟E31-E33后立即降低階數(shù)。
2.按照權(quán)利要求2的方法,其中所執(zhí)行的步驟如下E1在基數(shù)(Wp-1,Wp-2,...,W0)中以形式K=Σi=0p-1Ki*Wi]]>對(duì)限制數(shù)值K進(jìn)行分解,這里,i是循環(huán)指數(shù),Ki是在0和W-1之間限制數(shù)值K的i階系數(shù),p是限制數(shù)值K的次數(shù),E2設(shè)置布爾變量f的初值為T(mén)RUE,E3在指數(shù)為i的循環(huán)內(nèi)進(jìn)行下列運(yùn)算,i是在p-1和0之間變化的一個(gè)整數(shù)E31在0和W0-1之間產(chǎn)生一個(gè)隨機(jī)變量Si,E32如果該隨機(jī)變量Si嚴(yán)格小于i階系數(shù)Ki,則布爾變量f被設(shè)置為FALSE,E33_1如果該隨機(jī)變量Si嚴(yán)格大于i階系數(shù)Ki,且布爾變量f為T(mén)RUE,則i階系數(shù)Ri可按照一個(gè)預(yù)先確定的函數(shù)從i階隨機(jī)變量Si來(lái)確定,E33_2否則Ri=SiE34減少循環(huán)指數(shù)i,E4按照方程R=Σi=0p-1Ri*Wi,]]>重組基數(shù)W中的隨機(jī)系數(shù)Ri確定隨機(jī)數(shù)R。
3.按照權(quán)利要求2的方法,其中,為了從i階隨機(jī)變量Si確定i階系數(shù)Ri(步驟E33_1和E33_2),執(zhí)行以下子步驟E33_11如果隨機(jī)變量Si嚴(yán)格大于限制數(shù)值K的系數(shù)Ki,則產(chǎn)生一個(gè)新的隨機(jī)變量Si,E33_12重復(fù)步驟E33_11直到隨機(jī)變量Si小于限制數(shù)值K的系數(shù)Ki,然后使系數(shù)Ri等于隨機(jī)變量Si。
4.按照權(quán)利要求2的方法,其中,選擇i階系數(shù)Ri(步驟E33_1和E33_2)等于部分的隨機(jī)變量Si,這部分小于系數(shù)Ki,所說(shuō)的部分與變量Si的限制位數(shù)相應(yīng)。
5.按照權(quán)利要求2的方法,其中,為了從i階隨機(jī)變量Si確定i階系數(shù)Ri(步驟E33),隨機(jī)變量Si對(duì)Ki+1約簡(jiǎn)取模,約簡(jiǎn)的結(jié)果是找到的系數(shù)。
6.按照權(quán)利要求1-5其中之一的方法,其中,為了從i階隨機(jī)變量Si確定i階系數(shù)Ri(步驟E33),利用基數(shù)(βq-1,...,β0)作為計(jì)算基數(shù)執(zhí)行步驟E1-E4,這里β是一個(gè)嚴(yán)格小于W的整數(shù),q是在β情況下k的次數(shù)。
7.按照權(quán)利要求6的方法,其中步驟E33被分解為下列子步驟E33_41基數(shù)(βq-1,...,β0)中限制數(shù)值K的i階系數(shù)Ki以K1=Σj=0q-1(Ki)j*βj]]>形式被分解,其中j是循環(huán)指數(shù),(Ki)j是0和β-1之間的一個(gè)數(shù),q是系數(shù)Ki的次數(shù),E33_42將第二布爾變量g的初值設(shè)置為T(mén)RUE,E33_43在從q-1到0之間變化的指數(shù)j的一個(gè)循環(huán)內(nèi)進(jìn)行下列運(yùn)算E33_431在0和β-1之間產(chǎn)生一個(gè)隨機(jī)變量(Si)j,E33_432如果該隨機(jī)變量(Si)j嚴(yán)格小于系數(shù)(Ki)j,則將第二布爾變量g設(shè)置為FALSE,E33_4331如果該隨機(jī)變量(Si)j嚴(yán)格大于系數(shù)(Ki)j,而且第二布爾變量g為T(mén)RUE,則按照一個(gè)預(yù)先確定的函數(shù)從隨機(jī)變量(Si)j確定系數(shù)(Ri)j,E33_4332否則,(Ri)j=(Si)jE33_434減少循環(huán)指數(shù)j,E33_44按照方程R1=Σj=0q-1(Ri)j*βj]]>重組基數(shù)β中的隨機(jī)系數(shù)(Ri)j來(lái)確定隨機(jī)數(shù)Ri。
8.一種電子元件,該元件包括一種隨機(jī)數(shù)大小為N的發(fā)生器,特別實(shí)施對(duì)不大于N位的數(shù)的比較、截短和/或模數(shù)約簡(jiǎn)的多個(gè)計(jì)算電路,以及一種控制該隨機(jī)數(shù)發(fā)生器和計(jì)算電路的裝置,所述控制裝置適于實(shí)施按照權(quán)利要求1-7其中之一的方法。
9.一種包含按照前述權(quán)利要求的電子元件的芯片卡。
全文摘要
本發(fā)明涉及一種加密方法,其中,產(chǎn)生大小N固定在0到W-1之間多個(gè)隨機(jī)數(shù)S
文檔編號(hào)G06F7/58GK1871579SQ200480031082
公開(kāi)日2006年11月29日 申請(qǐng)日期2004年10月18日 優(yōu)先權(quán)日2003年10月24日
發(fā)明者M·諾耶 申請(qǐng)人:格姆普拉斯公司