專(zhuān)利名稱:間隙直方圖在線隨機(jī)性測(cè)試的制作方法
背景技術(shù):
發(fā)明領(lǐng)域 本發(fā)明屬于隨機(jī)數(shù)發(fā)生器領(lǐng)域,而更具體的,本發(fā)明用于測(cè)試由隨機(jī)數(shù)發(fā)生器產(chǎn)生的隨機(jī)數(shù)是否足夠隨機(jī)。
相關(guān)技術(shù)描述 在現(xiàn)實(shí)應(yīng)用中,產(chǎn)生一個(gè)真正的隨機(jī)序列是困難的。例如,典型地,當(dāng)隨機(jī)數(shù)發(fā)生器產(chǎn)生一串1和0超過(guò)一定的時(shí)間,隨機(jī)數(shù)發(fā)生器的硬件元件就會(huì)發(fā)熱。在某些情況下產(chǎn)生一個(gè)數(shù)位1比產(chǎn)生一個(gè)數(shù)位0要消耗更多的功率。當(dāng)產(chǎn)生一長(zhǎng)串的數(shù)位1時(shí),隨機(jī)數(shù)發(fā)生器的電路將會(huì)變熱。因此,如果在電路熱的時(shí)候產(chǎn)生一個(gè)數(shù)位1,電路將會(huì)“閉鎖”。結(jié)果,電路將大量產(chǎn)生數(shù)位1而很少產(chǎn)生數(shù)位0。如果隨機(jī)數(shù)被用在安全性很關(guān)鍵的應(yīng)用中,上述有偏差的0/1頻率錯(cuò)誤將會(huì)帶來(lái)災(zāi)難性后果。
因此,當(dāng)進(jìn)行隨機(jī)性測(cè)試時(shí)對(duì)硬件溫度和元件故障的檢測(cè)都是必需的。常規(guī)的隨機(jī)性測(cè)試是在產(chǎn)生的一個(gè)隨機(jī)數(shù)流上進(jìn)行廣泛的統(tǒng)計(jì)測(cè)試,比如卡方測(cè)試(chi-squared test)、delta測(cè)試等等來(lái)進(jìn)行的。然而,由于需要大量的計(jì)算處理能力,這些測(cè)試在實(shí)時(shí)執(zhí)行中都很昂貴。
發(fā)明概要 本發(fā)明解決了上述問(wèn)題,并通過(guò)提供一種用于在線隨機(jī)性測(cè)試以確保產(chǎn)生的隨機(jī)數(shù)足夠隨機(jī)的方法和裝置來(lái)提供另外的優(yōu)點(diǎn)。按照本發(fā)明的一個(gè)方面,一種用于測(cè)試一個(gè)隨機(jī)數(shù)流的隨機(jī)性的方法包括以下步驟產(chǎn)生一個(gè)隨機(jī)二進(jìn)制位的連續(xù)流;將隨機(jī)二進(jìn)制位分割成預(yù)先定義的位塊;對(duì)每一個(gè)預(yù)先定義的位塊進(jìn)行指數(shù)間隙頻率計(jì)算(A)以計(jì)算和更新至少兩個(gè)同樣位塊之間的間隙頻率值;以及,通過(guò)將指數(shù)間隙頻率計(jì)算的輸出和預(yù)先確定的可接受范圍進(jìn)行比較來(lái)確定產(chǎn)生的隨機(jī)位是否足夠隨機(jī)。該方法還包括以下步驟當(dāng)至少一個(gè)間隙頻率值重復(fù)落在預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),判定產(chǎn)生的隨機(jī)位是不夠隨機(jī)的;當(dāng)至少一個(gè)間隙頻率值重復(fù)落在預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),報(bào)告產(chǎn)生的隨機(jī)位是不夠隨機(jī)的;以及,當(dāng)至少一個(gè)間隙頻率值重復(fù)落在預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),產(chǎn)生一組新的隨機(jī)位。
按照本發(fā)明的另一方面,一種用于測(cè)試由隨機(jī)數(shù)發(fā)生器產(chǎn)生的一個(gè)隨機(jī)數(shù)流的方法包括以下步驟將隨機(jī)二進(jìn)制位分割為預(yù)先定義的位塊;對(duì)分割開(kāi)的隨機(jī)位進(jìn)行間隙長(zhǎng)度計(jì)算;對(duì)間隙長(zhǎng)度計(jì)算的輸出進(jìn)行指數(shù)平均計(jì)算,以得到和更新至少兩個(gè)同樣位塊之間的間隙頻率值;將間隙頻率值和預(yù)先確定的可接受范圍進(jìn)行比較;以及,當(dāng)任一間隙頻率值落在預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),判定產(chǎn)生的隨機(jī)位是不夠隨機(jī)的。
按照本發(fā)明的又一方面,一個(gè)用于測(cè)試隨機(jī)性的系統(tǒng)包括用于產(chǎn)生包含二進(jìn)制位的隨機(jī)序列的隨機(jī)數(shù)發(fā)生器;用于根據(jù)指數(shù)間隙頻率運(yùn)算檢測(cè)產(chǎn)生的隨機(jī)序列是否足夠隨機(jī)的檢測(cè)器;以及,用于根據(jù)指數(shù)間隙頻率運(yùn)算結(jié)果控制產(chǎn)生的隨機(jī)序列的流動(dòng)以用于后續(xù)應(yīng)用的開(kāi)關(guān),其中,隨機(jī)序列被分割成預(yù)先定義的位塊以進(jìn)行指數(shù)間隙頻率運(yùn)算以便得到和更新至少兩個(gè)同樣位塊之間的間隙頻率值,以及,其中如果至少一個(gè)間隙頻率值重復(fù)落在預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù),則判定產(chǎn)生的隨機(jī)序列是不夠隨機(jī)的。該系統(tǒng)還包括當(dāng)至少一個(gè)間隙頻率值重復(fù)落在預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),用于發(fā)送表示產(chǎn)生的隨機(jī)序列是不夠隨機(jī)的報(bào)警信號(hào)的裝置,以及當(dāng)至少一個(gè)間隙頻率值重復(fù)落在預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),用于產(chǎn)生一組新的隨機(jī)位的裝置。
還有一個(gè)方面是,根據(jù)具體應(yīng)用的需要,本發(fā)明可以用硬件、軟件或者軟硬件的組合實(shí)現(xiàn)。
而且,本發(fā)明可以實(shí)現(xiàn)得簡(jiǎn)單、可靠和便宜。
對(duì)本領(lǐng)域技術(shù)人員而言,通過(guò)閱讀下面的的詳細(xì)說(shuō)明并結(jié)合附圖,這些和其它優(yōu)點(diǎn)將變得顯而易見(jiàn)。
附圖的簡(jiǎn)要說(shuō)明
圖1是依據(jù)本發(fā)明一個(gè)實(shí)施例的隨機(jī)數(shù)產(chǎn)生模塊的簡(jiǎn)化框圖; 圖2是顯示依據(jù)本發(fā)明的一個(gè)實(shí)施例的對(duì)一個(gè)隨機(jī)數(shù)流執(zhí)行隨機(jī)性測(cè)試的圖表; 圖3是顯示依據(jù)本發(fā)明的一個(gè)實(shí)施例對(duì)產(chǎn)生的隨機(jī)數(shù)進(jìn)行統(tǒng)計(jì)測(cè)試的操作步驟流程圖。
實(shí)施例詳細(xì)說(shuō)明 在下面的描述中,為了解釋而不是限制的目的,闡明了具體的細(xì)節(jié),比如提出了具體的結(jié)構(gòu)、接口、工藝等,以便提供對(duì)本發(fā)明的透徹理解。然而,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō),本發(fā)明顯然可以用不同于這些具體細(xì)節(jié)的其它實(shí)施例實(shí)現(xiàn)。為了簡(jiǎn)單和清楚起見(jiàn),公知的設(shè)備、電路和方法的詳細(xì)描述被省略,以免不必要的細(xì)節(jié)混淆本發(fā)明的描述。
圖1顯示了依據(jù)本發(fā)明典型實(shí)施例的隨機(jī)數(shù)發(fā)生系統(tǒng)10的簡(jiǎn)化框圖。系統(tǒng)10包括用于產(chǎn)生一個(gè)隨機(jī)數(shù)流的隨機(jī)數(shù)發(fā)生器(RG)12、檢測(cè)器14以及開(kāi)關(guān)16。本公開(kāi)內(nèi)容中的RG12指任何產(chǎn)生能被轉(zhuǎn)換為二進(jìn)制位序列或任何其它形式、以常規(guī)或非常規(guī)方式含有期望的隨即性的信號(hào)的設(shè)備。檢測(cè)器14按照預(yù)先確定的標(biāo)準(zhǔn)(在后面解釋)檢測(cè)產(chǎn)生的隨機(jī)數(shù)是否是真正的隨機(jī)序列。開(kāi)關(guān)16可以代表一個(gè)到加密系統(tǒng)、音頻或視頻噪聲發(fā)生器、計(jì)算機(jī)程序或者其它設(shè)備和處理程序的輸入。
在操作中,當(dāng)隨機(jī)數(shù)由隨機(jī)數(shù)發(fā)生器12產(chǎn)生時(shí),檢測(cè)器14檢測(cè)產(chǎn)生的隨機(jī)數(shù)是否形成真正的隨機(jī)序列。如果它們被判定在可接受的范圍內(nèi)是足夠隨機(jī)的,開(kāi)關(guān)16允許產(chǎn)生的隨機(jī)數(shù)被轉(zhuǎn)送到任何合適的后續(xù)應(yīng)用,例如任何電路、系統(tǒng)、處理程序、賭博應(yīng)用、仿真、統(tǒng)計(jì)采樣、Diffie-Hellman密鑰交換,或類(lèi)似的使用RG12提供的隨機(jī)數(shù)的其它應(yīng)用。因此,當(dāng)產(chǎn)生的隨機(jī)數(shù)被檢測(cè)器14判定為不夠隨機(jī)時(shí),開(kāi)關(guān)16可以停止產(chǎn)生的隨機(jī)數(shù)流。在可替換的實(shí)施例中,如果產(chǎn)生的隨機(jī)序列被判定為是不夠隨機(jī)的,一組新的隨機(jī)數(shù)就可以由隨機(jī)數(shù)發(fā)生器12產(chǎn)生。
現(xiàn)在,參考圖2和3,對(duì)判定產(chǎn)生的隨機(jī)數(shù)是否足夠隨機(jī)進(jìn)行詳細(xì)的說(shuō)明。
參照?qǐng)D2,當(dāng)一個(gè)隨機(jī)數(shù)流由RG12產(chǎn)生,產(chǎn)生的隨機(jī)數(shù)被分割成預(yù)先確定的k位塊。每次當(dāng)一個(gè)新的隨機(jī)位產(chǎn)生,該新的位就被附加到先前位的序列中直到積累到k位。注意為了解釋的目的,6位組作為k位的一個(gè)單位;然而,應(yīng)當(dāng)理解,本發(fā)明支持任何正整數(shù)的k位。因此,圖中的6位一組不應(yīng)帶來(lái)對(duì)本發(fā)明范圍的限制。
在實(shí)施例中,對(duì)所有的分割塊,檢測(cè)器14分析每一個(gè)k位的分割塊,以判定與先前出現(xiàn)的同樣k位塊的距離,稱為間隙。本發(fā)明的一個(gè)關(guān)鍵原理是,相同k位模式之間某一間隙長(zhǎng)度出現(xiàn)的平均次數(shù)是已知的。如果所有可能間隙長(zhǎng)度的范圍被分成適當(dāng)?shù)拈g隔,計(jì)算的間隙長(zhǎng)度落入每個(gè)間隔的次數(shù)一定近似相等。為每一個(gè)可能的k位塊和每一個(gè)間隙長(zhǎng)度間隔提供一個(gè)累加器(A),這樣每次當(dāng)一個(gè)新的k位塊被產(chǎn)生以及與先前出現(xiàn)的同樣的k位塊的間隙被計(jì)算時(shí),塊中k位的二進(jìn)制表示以及間隙落入的間隔數(shù)就被用來(lái)索引各自的累加器。例如,如圖2所示,因?yàn)槟J健?00000”出現(xiàn)在第一塊和第四塊,所以與該模式相對(duì)應(yīng)的間隙為3。因?yàn)槟J健?00010”出現(xiàn)在第三塊和第五塊,所以與該模式相應(yīng)的間隙為2。累加器跟蹤具體位塊的某一間隙落入預(yù)先確定的間隙長(zhǎng)度間隔的平均次數(shù)(頻率),然后通過(guò)分析每個(gè)塊的間隙落入預(yù)先確定的范圍的次數(shù)來(lái)判定產(chǎn)生的隨機(jī)數(shù)是否足夠隨機(jī),對(duì)于所有可能的k位塊和間隙范圍該次數(shù)必須大約相同。
注意,本發(fā)明是適用于實(shí)時(shí)測(cè)試隨機(jī)序列的,所有累加器必須被更新。這樣,舊的頻率值的作用應(yīng)該逐漸減少或不起作用。也就是,由于評(píng)估隨機(jī)序列統(tǒng)計(jì)質(zhì)量的測(cè)試要連續(xù)運(yùn)行,因此累加器必須周期性地清除以避免溢出。根據(jù)本發(fā)明的技術(shù),有多種計(jì)數(shù)方法可以用;然而,如下文所述,指數(shù)平均被優(yōu)先用在頻率計(jì)數(shù)操作中。
如果累加器A被用來(lái)獲取某一間隙范圍的發(fā)生平均數(shù)或頻率,每次當(dāng)k隨機(jī)位產(chǎn)生時(shí),取值在0到1之間的因子α(0<α<1),與累加器(Aold)相乘,并且隨后加上指示器值bAnew=α·Aold+b。在此,如果k位塊與間隙所屬的范圍對(duì)應(yīng)與使用的累加器則b為1,否則b為0。注意,指數(shù)平均累加器A首先對(duì)每一可能的bn模式(0≤n<2k)和每一可能的間隙范圍初始化。初始化值被操作者用預(yù)先指定的值初始化。為了達(dá)到有效平均的效果,α的值被選擇得接近1,α=1-1/n,n>>1。在這種情況下,logα≈-1/n而平均值的半排出期為k≈n·log2≈0.30103·n,在半排出期它們的權(quán)減少到一半。在n步后,最老的平均值的權(quán)變成(1-1/n)n≈1/e≈0.367879。在這里,e是自然對(duì)數(shù)的基(歐拉常數(shù)),因此術(shù)語(yǔ)n變?yōu)槠骄档膲勖?。如果所有的平均值都?,累加器含有1+α+α2+...=1/(1-α)=n,然而如果所有的平均值都為0,累加器的值是0。注意,指數(shù)平均的期望值是每個(gè)值的期望值的指數(shù)平均。如果平均值是均勻分布的二進(jìn)制位,指數(shù)平均的期望值是+α+α2+...=n/2。
如上所述,由于累加器以某一因數(shù)0<α<1而減少,指數(shù)平均起著清除計(jì)數(shù)器的作用;因此,累加器在操作模式中決不會(huì)變得太大。一旦對(duì)每個(gè)累加器執(zhí)行了指數(shù)平均,每個(gè)指數(shù)平均的值就與預(yù)先確定的可接受范圍進(jìn)行比較。如果在指數(shù)平均計(jì)算期間任何累加器的值超出預(yù)先確定的范圍,按照本發(fā)明的實(shí)施例,這就意味著產(chǎn)生的隨機(jī)數(shù)是不夠隨機(jī)的。在這里,當(dāng)測(cè)試多次失敗時(shí),可以設(shè)置門(mén)限值來(lái)通知用戶?;趯?duì)能夠獲得理想間隙分布的已知的好隨機(jī)數(shù)源的廣泛模擬中得到的數(shù)據(jù),可接受的精確界限能夠被選擇性地調(diào)整。這樣的隨機(jī)序列可以從商業(yè)途徑或下載得到,比如,從各種網(wǎng)上資源下載,包括“www.fourmilab.ch/hotbits”以及“l(fā)avarand.sgi.com”。因此,在測(cè)試中使用的實(shí)際范圍由操作者可選擇地設(shè)置,以便對(duì)產(chǎn)生的隨機(jī)序列是否足夠隨機(jī)作出不同敏感度的選擇。在可替換的實(shí)施例中,每個(gè)累加器可以分配以不同的可接受范圍。
圖3是顯示依據(jù)本發(fā)明的用于測(cè)試隨機(jī)序列的統(tǒng)計(jì)質(zhì)量的操作步驟流程圖。矩形框表示計(jì)算機(jī)軟件指令,而菱形框表示影響矩形框所表示軟件指令的執(zhí)行的計(jì)算機(jī)軟件指令??蛇x地,處理和判斷框代表由同等功能的電路,比如數(shù)字信號(hào)處理器或者專(zhuān)用集成電路(ASIC)執(zhí)行的步驟,。應(yīng)該注意,許多常規(guī)程序沒(méi)有被顯示,比如循環(huán)和變量的初始化和臨時(shí)變量的使用。本領(lǐng)域普通技術(shù)人員可以明白,除了這里指出的之外,所述步驟的特定序列僅是說(shuō)明性的,它們能夠在不偏離本發(fā)明的實(shí)質(zhì)的情況下而被改變。
如圖3所示,隨機(jī)性測(cè)試始于步驟100,隨機(jī)數(shù)發(fā)生器12產(chǎn)生一連續(xù)的隨機(jī)二進(jìn)制位流。在步驟120,產(chǎn)生的隨機(jī)數(shù)被分割為一組位塊。然后,對(duì)這組位塊進(jìn)行間隙頻率計(jì)算,其中計(jì)算指定長(zhǎng)度的相同位模式之間的間隙分布。在步驟140,每次得到相同位模式之間的間隙,每個(gè)累加器中的該組指數(shù)間隙頻率值便被更新。這里,所有原先的指數(shù)間隙頻率值被因數(shù)α(0<α<1)所減少,然后與k位塊和間隙落入的范圍相對(duì)應(yīng)的累加器加1,這樣舊間隙頻率值的作用將會(huì)逐漸減小。在進(jìn)行指數(shù)平均操作后,在步驟160將間隙頻率值與預(yù)先確定的一個(gè)可接受范圍或各個(gè)預(yù)先確定的可接受范圍進(jìn)行比較。如果各累加器A中的任何值都位于預(yù)先確定的可接受范圍之外,則在步驟200中,判定非隨機(jī)模式已被檢測(cè)到,而計(jì)數(shù)器加1。否則,計(jì)數(shù)器在步驟180被重置,并且返回到處理隨機(jī)數(shù)的步驟100。在步驟220,如果計(jì)數(shù)器的值大于門(mén)限值,在步驟240發(fā)出一個(gè)通知,即產(chǎn)生的隨機(jī)數(shù)是不夠隨機(jī)的??商鎿Q地,開(kāi)關(guān)16能被停止以中斷后續(xù)應(yīng)用的隨機(jī)數(shù)流。然后,產(chǎn)生的隨機(jī)數(shù)被丟棄,并可開(kāi)始產(chǎn)生新的隨機(jī)數(shù)的整個(gè)過(guò)程。如果在步驟220計(jì)數(shù)器的值沒(méi)有超過(guò)門(mén)限值,就重復(fù)進(jìn)行產(chǎn)生隨機(jī)數(shù)的過(guò)程。
上面描述的不同的步驟能夠通過(guò)將它們編程為應(yīng)用程序的函數(shù)而實(shí)現(xiàn),本領(lǐng)域的普通程序員能夠使用各種語(yǔ)言,比如C、Visual Basic、Java、Perl、C++等等中的常規(guī)編程技術(shù)來(lái)實(shí)現(xiàn)它們。在典型實(shí)施例中,圖3所描述的方法可以如下(使用C編程語(yǔ)言)構(gòu)造。為了簡(jiǎn)化,我們使用浮點(diǎn)算術(shù)實(shí)現(xiàn)該測(cè)試。
附錄MS Visual C代碼 /******************************************************************\*GapHist.c*GapHist<#random words><bit generator type><bit generator param>*Generates test bits*Calculates Histograms of Gaps of 6bit words(non-overlapping)*Cyclic 16-bit counters determine the gaps between occurances of words*Exponential averaging of the histogram values*Prints test statistics**ANOTHER TEST HAS TO VERIFY EQUAL WORD-FREQUENCIES**GapHist le700.5*Min Max of exponential gap histograms of 6-bit words=69.5647 142.51**GapHist le600.49*Too large bias at word 739364 in 6-bit word gap histograms[64.9633 145.289]**GapHist le6260163[all 6 bit words]*Too large bias at word 3968 in 6-bit word gap histograms[94.8608 147.487]**Vers.1.0 04/22/01Creater by Laszlo Hars<!-- SIPO <DP n="6"> --><dp n="d6"/>*/******************************************************************\#include<stdio.h>#include<stdlib.h>//Multiplyer=1-1/2^10#define W 0.9990234375#define W0 100.0#define LO 65.0#define HI 147.0#define WDLEN 6#define WDNUM(1<<WDLEN)#define HISTNUM 10#defineMAX(A,B)((A)>(B)?(A):(B))#define MIN(A,B)(A)<(B)?(A):(B))#define MASK16((1<<16)-1)typedef unsigned_int16 uint16;//帶有循環(huán)差異的16位計(jì)數(shù)器//外部函數(shù)原型void BitGenInit(int argc,char*argv[]);unsigned int NextBit();int main(int argc,char*argv[]){int d,i,j,k,wd,n=(int)atof(argv[1]);uint16 c[WDNUM];double h[WDNUM][HISTNUM],hmin=le9,hmax=0;<!-- SIPO <DP n="7"> --><dp n="d7"/> if(argc<4){printf(“UsageGapHist<#random words><bit generator type><bit generatorparams...>\n”); putchar(‘\a’);//振鈴 exit(1);} BitGenInit(argc,argv); for(i=0;i<WDNUM;++i){ c[i]=0;//重置計(jì)數(shù)器 for(j=0;j<HISTNUM;++j) h[i][j]=W0; //初始化連續(xù)平均 } for(i=0;i<9*WDNUM;++i){ //初始化計(jì)數(shù)器-可被省去 wd=NextBit(); for(k=1;k<WDLEN;++k) wd=(wd<<1)+NextBit(); c[wd]=(i & MASK16); } for(i=9*WDNUM;i<n;++i){ wd=NextBit(); for(k=1;k<WDLEN;++k) wd=(wd<<1)+NextBit(); d=(i & MASK16)-c[wd]; c[wd]=(i & MASK16); if(d<=0)d+=MASK16+1;//循環(huán)校正 k=d<8?0:d<16?1:d<24?2:d<34?3:d<46?4:d<60?5:d<78?6:d<104?7:d<148?8:9;<!-- SIPO <DP n="8"> --><dp n="d8"/> for(j=0;j<HISTNUM;++j){ h[wd][j]*=W; if(j?。絢)hmin=MIN(h[wd][j],hmin); } h[wd][k]+=1.0;//指數(shù)頻率 hmax=MAX(h[wd][k],hmax); if(hmin<LO‖hmax>HI){ printf(“Too large bias at word %d in 6-bit word gap histograms[%g %g]\n”,i,hmin,hmax); exit(2);} } printf(“Min Max of exponential gap histograms of 6-bit words=%g %g\n”,hmin,hmax); } 雖然本發(fā)明的優(yōu)選實(shí)施例已經(jīng)被舉例說(shuō)明和描述,本領(lǐng)域技術(shù)人員能夠明白,可以進(jìn)行各種變化和修改,且可以用各種等效物取代其組件,而不會(huì)偏離本發(fā)明的實(shí)質(zhì)范圍。另外,為了適應(yīng)特殊情況以及本發(fā)明的教導(dǎo),可以進(jìn)行許多修改而不偏離本發(fā)明的中心范圍。因此,本發(fā)明不應(yīng)被限制于作為實(shí)現(xiàn)本發(fā)明的最佳方式而公開(kāi)的特定實(shí)施例,而是本發(fā)明包括落入附加的權(quán)利要求范圍的所有實(shí)施例。
權(quán)利要求
1.一種用于測(cè)試一個(gè)隨機(jī)數(shù)流的隨機(jī)性的方法,該方法包含以下步驟
產(chǎn)生一個(gè)隨機(jī)二進(jìn)制位的連續(xù)流;
將所述隨機(jī)二進(jìn)制位分割為預(yù)先定義的位塊;
將每一個(gè)所述預(yù)先定義的位塊應(yīng)用到指數(shù)間隙頻率計(jì)算(A)中以計(jì)算和更新至少兩個(gè)同樣的位塊之間的間隙頻率值;以及,
通過(guò)將所述指數(shù)間隙頻率計(jì)算的輸出和預(yù)先確定的可接受范圍進(jìn)行比較來(lái)確定產(chǎn)生的隨機(jī)位是否足夠隨機(jī)。
2.如權(quán)利要求1所述的方法,其中用于每個(gè)所述預(yù)先定義的位塊的所述指數(shù)間隙頻率計(jì)算(A)按照下述方程式來(lái)更新Anew=α·Aold+b,
其中α位于0和1之間(0<α<1),并且其中如果所述至少兩個(gè)同樣的位塊出現(xiàn),則b=1,否則b為0。
3.如權(quán)利要求1所述的方法,還包含步驟當(dāng)至少一個(gè)間隙頻率值重復(fù)落在所述預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),確定所述產(chǎn)生的隨機(jī)位是不夠隨機(jī)的。
4.如權(quán)利要求1所述的方法,還包含步驟當(dāng)至少一個(gè)間隙頻率值重復(fù)落在所述預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),通知所述產(chǎn)生的隨機(jī)位是不夠隨機(jī)的。
5.如權(quán)利要求1所述的方法,還包含步驟當(dāng)至少一個(gè)間隙頻率值重復(fù)落在所述預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),產(chǎn)生一組新的隨機(jī)位。
6.如權(quán)利要求1所述的方法,還包含步驟當(dāng)至少一個(gè)間隙頻率值重復(fù)落在所述預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),拒絕將所述產(chǎn)生的隨機(jī)位用于后續(xù)應(yīng)用。
7.一種用于測(cè)試由隨機(jī)數(shù)發(fā)生器(12)產(chǎn)生的一個(gè)隨機(jī)數(shù)流的方法,該方法包含以下步驟
(a)將所述隨機(jī)的二進(jìn)制位分割為預(yù)先定義的位塊;
(b)將所述分割開(kāi)的隨機(jī)位應(yīng)用于間隙長(zhǎng)度計(jì)算;
(c)將所述間隙長(zhǎng)度計(jì)算的輸出應(yīng)用于指數(shù)平均計(jì)數(shù),以得到和更新至少兩個(gè)同樣的位塊之間的間隙頻率值;
(d)將間隙頻率值和預(yù)先確定的可接受范圍進(jìn)行比較;以及
(e)確定是否至少一個(gè)間隙頻率值落在所述預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)。
8.如權(quán)利要求7所述的方法,其中用于每個(gè)所述預(yù)先定義的位塊的所述指數(shù)平均按照下述方程式來(lái)更新Anew=α·Aold+b,
其中α位于0和1之間(0<α<1),并且其中如果所述至少兩個(gè)同樣的位塊出現(xiàn),則b=1,否則b為0。
9.如權(quán)利要求7所述的方法,還包含步驟當(dāng)任何間隙頻率值落在所述預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),確定所述產(chǎn)生的隨機(jī)位是不夠隨機(jī)的。
10.如權(quán)利要求7所述的方法,還包含步驟如果每一個(gè)間隙頻率值落在所述預(yù)先確定的可接受范圍之內(nèi),則重復(fù)所述步驟(a)-(e)直到至少一個(gè)間隙頻率值落在所述預(yù)先確定的可接受范圍之外。
11.如權(quán)利要求10所述的方法,還包含步驟當(dāng)所述步驟(a)-(e)被重復(fù)的次數(shù)多于所述預(yù)先定義的次數(shù)時(shí),通知不夠隨機(jī)的數(shù)被產(chǎn)生。
12.如權(quán)利要求10所述的方法,還包含步驟當(dāng)所述步驟(a)-(e)被重復(fù)的次數(shù)多于所述預(yù)先定義的次數(shù)時(shí),產(chǎn)生一組新的隨機(jī)數(shù)。
13.一種用于測(cè)試隨機(jī)性的系統(tǒng),包含
隨機(jī)數(shù)發(fā)生器(12),用于產(chǎn)生包含二進(jìn)制位的隨機(jī)序列;
檢測(cè)器(14),用于根據(jù)指數(shù)間隙頻率運(yùn)算來(lái)檢測(cè)所述產(chǎn)生的隨機(jī)序列是否足夠隨機(jī);
開(kāi)關(guān)(16),用于根據(jù)所述指數(shù)間隙頻率運(yùn)算的結(jié)果來(lái)控制用于后續(xù)應(yīng)用的所述產(chǎn)生的隨機(jī)序列的流動(dòng),其中所述隨機(jī)序列被分割為預(yù)先定義的位塊以經(jīng)歷所述的指數(shù)間隙頻率運(yùn)算,從而得到和更新位于至少兩個(gè)同樣的位塊之間的間隙頻率值,以及其中,如果至少一個(gè)間隙頻率值重復(fù)地落在預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù),則確定所述產(chǎn)生的隨機(jī)序列是不夠隨機(jī)的。
14.如權(quán)利要求13所述的裝置,還包含當(dāng)至少一個(gè)間隙頻率值重復(fù)地落在所述預(yù)先確定的可接受范圍之外的次數(shù)多于所述預(yù)先定義的次數(shù)時(shí),發(fā)送所述產(chǎn)生的隨機(jī)序列是不夠隨機(jī)的報(bào)警信號(hào)的裝置。
15.如權(quán)利要求13所述的方法,還包含當(dāng)至少一個(gè)間隙頻率值重復(fù)地落在所述預(yù)先確定的可接受范圍之外的次數(shù)多于所述預(yù)先定義的次數(shù)時(shí),用于產(chǎn)生一組新的隨機(jī)位的裝置。
16.一種機(jī)器可讀媒體,其上存儲(chǔ)有代表指令序列的數(shù)據(jù),當(dāng)該指令序列被處理器執(zhí)行時(shí),導(dǎo)致處理器
產(chǎn)生一個(gè)隨機(jī)二進(jìn)制位的連續(xù)流;
將所述的隨機(jī)二進(jìn)制位分割為預(yù)先定義的位塊;
將每一個(gè)所述預(yù)先定義的位塊應(yīng)用到指數(shù)間隙頻率計(jì)算中以計(jì)算和更新至少兩個(gè)同樣位塊之間的間隙頻率值;以及,
通過(guò)將所述指數(shù)間隙頻率計(jì)算的輸出和預(yù)先確定的可接受范圍進(jìn)行比較來(lái)確定所述產(chǎn)生的隨機(jī)位是否足夠隨機(jī)。
17.如權(quán)利要求16所述的存儲(chǔ)媒體,其中當(dāng)至少一個(gè)間隙頻率值落在所述預(yù)先確定的可接受范圍之外時(shí),所述產(chǎn)生的隨機(jī)數(shù)被確定為不夠隨機(jī)。
18.如權(quán)利要求16所述的存儲(chǔ)媒體,其中當(dāng)至少一個(gè)間隙頻率值落在所述預(yù)先確定的可接受范圍之外時(shí),所述處理器進(jìn)一步可操作來(lái)處理一組新的隨機(jī)位。
19.如權(quán)利要求16所述的存儲(chǔ)媒體,其中當(dāng)至少一個(gè)間隙頻率值重復(fù)地落在所述預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù)時(shí),所述處理器進(jìn)一步可操作來(lái)拒絕將所述產(chǎn)生的隨機(jī)位用于后續(xù)應(yīng)用。
全文摘要
本發(fā)明涉及一種用于實(shí)時(shí)測(cè)試由隨機(jī)數(shù)發(fā)生器產(chǎn)生的隨機(jī)數(shù)的方法和裝置。由隨機(jī)數(shù)發(fā)生器產(chǎn)生的一連串隨機(jī)位被分割為預(yù)先定義的位塊,然后對(duì)這些位塊執(zhí)行間隙長(zhǎng)度計(jì)算操作,在其中確定間隙所屬的具體范圍,然后這些間隙長(zhǎng)度值被用于指數(shù)計(jì)算操作以得到和更新不同位模式和間隙范圍的間隙頻率值。其后,更新了的間隙頻率值與至少一個(gè)預(yù)先確定的可接受范圍進(jìn)行比較,以便如果至少一個(gè)間隙頻率值重復(fù)落在預(yù)先確定的可接受范圍之外的次數(shù)多于預(yù)先定義的次數(shù),判定產(chǎn)生的隨機(jī)位是不夠隨機(jī)的。
文檔編號(hào)G06F17/18GK1647028SQ0380890
公開(kāi)日2005年7月27日 申請(qǐng)日期2003年4月4日 優(yōu)先權(quán)日2002年4月22日
發(fā)明者L·哈斯 申請(qǐng)人:皇家飛利浦電子股份有限公司