專利名稱:哈達(dá)瑪特變換在線隨機(jī)性測(cè)試的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及隨機(jī)數(shù)發(fā)生器領(lǐng)域,以及更具體的說(shuō),涉及評(píng)價(jià)隨機(jī)數(shù)發(fā)生器產(chǎn)生的隨機(jī)數(shù)是否足夠隨機(jī)。
在實(shí)際應(yīng)用中很難產(chǎn)生真正隨機(jī)的序列。例如,當(dāng)隨機(jī)數(shù)發(fā)生器在一個(gè)時(shí)間周期內(nèi)產(chǎn)生一系列的1和0時(shí),隨機(jī)數(shù)發(fā)生器的硬件組件中一般會(huì)產(chǎn)生熱量。在一些情況下,產(chǎn)生一個(gè)1位會(huì)比產(chǎn)生一個(gè)0位消耗更多的能量。當(dāng)產(chǎn)生一個(gè)1位的長(zhǎng)序列時(shí),隨機(jī)發(fā)生器的電路易于變熱。因此,如果當(dāng)電路熱時(shí)產(chǎn)生一個(gè)1位,電路將“鎖存”。結(jié)果,電路將主要產(chǎn)生1位而很少產(chǎn)生0位。如果隨機(jī)數(shù)是在安全性敏感的應(yīng)用中使用,則上述結(jié)果偏倚的0/1頻率錯(cuò)誤會(huì)產(chǎn)生災(zāi)難性的后果。
因此,在進(jìn)行隨機(jī)性測(cè)試時(shí),硬件篡改(tamper)和組件故障的檢測(cè)都是必要的。常規(guī)的隨機(jī)性測(cè)試是通過對(duì)一系列所產(chǎn)生的隨機(jī)數(shù)的大量統(tǒng)計(jì)測(cè)試來(lái)執(zhí)行的,例如,卡方(chi-squared)測(cè)試,delta測(cè)試等等。然而,因?yàn)檫@些測(cè)試需要大量的計(jì)算處理能力,所以實(shí)時(shí)執(zhí)行是很昂貴的。
本發(fā)明克服了上述問題,并通過提供一種方法和設(shè)備提供另外的優(yōu)點(diǎn),該方法和設(shè)備用于提供在線隨機(jī)性測(cè)試以確保所產(chǎn)生的隨機(jī)數(shù)足夠隨機(jī)。
根據(jù)本發(fā)明的一個(gè)方面,提供一種測(cè)試隨機(jī)數(shù)流的隨機(jī)性的方法。該方法包括以下步驟提供連續(xù)的隨機(jī)二進(jìn)制位流;將隨機(jī)二進(jìn)制位的預(yù)定義塊應(yīng)用于哈達(dá)瑪特變換運(yùn)算;將哈達(dá)瑪特變換運(yùn)算的輸出應(yīng)用于指數(shù)頻率運(yùn)算(Z)以計(jì)算和更新哈達(dá)瑪特變換輸出在預(yù)定時(shí)間周期落入預(yù)定值范圍的平均次數(shù);并且,通過比較指數(shù)頻率運(yùn)算(Z)的輸出與預(yù)定可接受范圍來(lái)確定所產(chǎn)生的隨機(jī)二進(jìn)制位是否足夠隨機(jī),其中指數(shù)頻率運(yùn)算(Z)按照以下步驟執(zhí)行分配一組具有預(yù)定值范圍的累加器到哈達(dá)瑪特變換運(yùn)算的輸出;并且,計(jì)算每個(gè)哈達(dá)瑪特變換輸出在預(yù)定時(shí)間周期落入相應(yīng)預(yù)定值范圍的次數(shù)。
根據(jù)本發(fā)明的另一方面,一種測(cè)試隨機(jī)數(shù)流的隨機(jī)性方法包括步驟(a)產(chǎn)生連續(xù)的隨機(jī)二進(jìn)制位流;(b)將隨機(jī)二進(jìn)制位的預(yù)定義塊應(yīng)用于哈達(dá)瑪特變換運(yùn)算;(c)分配一組具有預(yù)定值范圍的累加器到哈達(dá)瑪特變換運(yùn)算的每個(gè)輸出以計(jì)算哈達(dá)瑪特變換運(yùn)算的每個(gè)輸出落入各自累加器的預(yù)定值范圍之一的次數(shù);(d)將該組累加器的值應(yīng)用于指數(shù)頻率運(yùn)算(Z)以更新哈達(dá)瑪特變換運(yùn)算的每個(gè)輸出在預(yù)定時(shí)間周期落入各自累加器的預(yù)定值范圍之一的平均次數(shù);以及(e)比較指數(shù)頻率運(yùn)算(Z)的輸出與預(yù)定可接受范圍。
在實(shí)施例中,指數(shù)頻率運(yùn)算(Z)按照下列等式更新Znew=α·Zold+h(t),其中α在0和1之間(0<α<1),Zold最初由操作員分配;以及h(t)表示在預(yù)定時(shí)間周期期間哈達(dá)瑪特變換的輸出落入相應(yīng)預(yù)定值范圍的次數(shù)。此外,預(yù)定可接受范圍通過模擬獲得。
根據(jù)本發(fā)明的另一方面,當(dāng)指數(shù)頻率運(yùn)算的任何輸出重復(fù)落于預(yù)定可接受范圍之外超過預(yù)定義次數(shù)時(shí),所產(chǎn)生的隨機(jī)位被認(rèn)為是不夠隨機(jī)的。在這種情況下,產(chǎn)生新的一組隨機(jī)位,或者在后續(xù)的應(yīng)用中拒絕該已產(chǎn)生的隨機(jī)位。
根據(jù)本發(fā)明的另一方面,提供了測(cè)試隨機(jī)性的系統(tǒng)。該系統(tǒng)包括產(chǎn)生包括二進(jìn)制位的隨機(jī)序列的隨機(jī)數(shù)發(fā)生器;根據(jù)指數(shù)頻率操作檢測(cè)所產(chǎn)生的隨機(jī)序列是否足夠隨機(jī)的檢測(cè)器;以及,根據(jù)指數(shù)頻率操作的輸出為后續(xù)應(yīng)用控制所產(chǎn)生的隨機(jī)序列流的開關(guān),其中隨機(jī)二進(jìn)制位的預(yù)定義塊經(jīng)歷一個(gè)哈達(dá)瑪特變換運(yùn)算,之后經(jīng)歷一個(gè)指數(shù)頻率運(yùn)算(Z)以更新哈達(dá)瑪特變換運(yùn)算的每個(gè)輸出在預(yù)定時(shí)間周期落入預(yù)定值范圍之一的平均次數(shù),并且其中,如果指數(shù)頻率運(yùn)算輸出的任何輸出重復(fù)落于預(yù)定可接受范圍之外超過預(yù)定義次數(shù),則確定所產(chǎn)生的隨機(jī)序列是不夠隨機(jī)的。該設(shè)備還包括當(dāng)指數(shù)頻率運(yùn)算輸出的任何輸出重復(fù)落于預(yù)定可接受范圍之外超過預(yù)定義次數(shù)時(shí),傳送一個(gè)所產(chǎn)生隨機(jī)序列不夠隨機(jī)的警報(bào)信號(hào)的裝置,以及當(dāng)指數(shù)頻率運(yùn)算輸出的任何輸出重復(fù)落于預(yù)定可接受范圍外超過預(yù)定義次數(shù)時(shí),產(chǎn)生新的一組隨機(jī)位的裝置。
然而另一方面是,如特定應(yīng)用需要,本發(fā)明可以以硬件、軟件、或硬件和軟件的組合來(lái)實(shí)施。
而且,本發(fā)明可以以簡(jiǎn)單、可靠以及便宜的設(shè)備實(shí)現(xiàn)。
結(jié)合附圖,閱讀以下詳細(xì)描述后,這些和其它優(yōu)點(diǎn)對(duì)于本領(lǐng)域的技術(shù)人員將變得明顯。
圖1示出了根據(jù)本發(fā)明實(shí)施例的隨機(jī)數(shù)產(chǎn)生模塊的簡(jiǎn)化框圖;圖2示出了根據(jù)本發(fā)明實(shí)施例的哈達(dá)瑪特變換如何在隨機(jī)數(shù)序列上執(zhí)行的框圖;以及圖3是描述根據(jù)本發(fā)明實(shí)施例測(cè)試所產(chǎn)生的隨機(jī)數(shù)統(tǒng)計(jì)量操作步驟的流程圖。
在以下的描述,出于解釋而不是限制的目的,為了提供本發(fā)明的全面理解,提出了特定細(xì)節(jié),例如具體的結(jié)構(gòu)、接口、技術(shù)等。然而,對(duì)于本領(lǐng)域技術(shù)人員明顯的是,本發(fā)明可以以脫離這些特定細(xì)節(jié)的其它實(shí)施例實(shí)施。為了簡(jiǎn)單和清楚,省略了已知設(shè)備、電路和方法的詳細(xì)描述,以避免用不必要的細(xì)節(jié)模糊本發(fā)明的描述。
圖1示出了根據(jù)本發(fā)明示例性實(shí)施例的隨機(jī)數(shù)產(chǎn)生系統(tǒng)10的簡(jiǎn)化框圖。系統(tǒng)10包括產(chǎn)生一系列隨機(jī)數(shù)的隨機(jī)數(shù)發(fā)生器(RG)12、檢測(cè)器14和開關(guān)16。在此公開內(nèi)容中,RG12指產(chǎn)生信號(hào)的任何設(shè)備,該信號(hào)可以以任何常規(guī)或非常規(guī)的方式轉(zhuǎn)換為二進(jìn)制位序列或包括所需隨機(jī)性的任何其它形式。檢測(cè)器14根據(jù)預(yù)定準(zhǔn)則(稍后解釋)檢測(cè)所產(chǎn)生的隨機(jī)數(shù)是否是真正隨機(jī)的序列。開關(guān)16表示一個(gè)到密碼系統(tǒng)、音頻或視頻噪聲發(fā)生器、計(jì)算機(jī)程序或其他設(shè)備和過程的輸入。
操作中,當(dāng)隨機(jī)數(shù)發(fā)生器12產(chǎn)生隨機(jī)數(shù)時(shí),檢測(cè)器14檢測(cè)所產(chǎn)生的隨機(jī)數(shù)是否形成足夠隨機(jī)的序列。如果確定它們?cè)谔囟山邮芊秶鷥?nèi)為足夠隨機(jī)的,開關(guān)16允許所產(chǎn)生的隨機(jī)數(shù)轉(zhuǎn)發(fā)到任何合適的后續(xù)應(yīng)用中,例如使用RG12提供的隨機(jī)數(shù)的任何電路、系統(tǒng)、過程、投機(jī)應(yīng)用、模擬、統(tǒng)計(jì)取樣,Diffie-Hellman(迪菲-赫爾曼)密鑰交換等等。如果根據(jù)預(yù)定準(zhǔn)則(稍后解釋)認(rèn)為所產(chǎn)生的隨機(jī)數(shù)不夠隨機(jī),則當(dāng)檢測(cè)器14認(rèn)為所產(chǎn)生的隨機(jī)數(shù)不夠隨機(jī)時(shí),開關(guān)16可停止所產(chǎn)生的隨機(jī)數(shù)流。換句話說(shuō),如果確定所產(chǎn)生的隨機(jī)序列不夠隨機(jī),則隨機(jī)數(shù)發(fā)生器12產(chǎn)生新的一組隨機(jī)數(shù)。
現(xiàn)在,參考圖2和3來(lái)就確定所產(chǎn)生的隨機(jī)數(shù)是否足夠隨機(jī)進(jìn)行詳細(xì)描述。
作為背景信息,在本領(lǐng)域已知的是,對(duì)于任何2的乘方,可以構(gòu)造一組每一個(gè)長(zhǎng)度為n的n個(gè)正交二進(jìn)制序列。實(shí)際上,對(duì)于大多數(shù)長(zhǎng)度而言正交二進(jìn)制序列組是已知的,所述長(zhǎng)度是四的倍數(shù)并小于兩百。一類這樣的正交二進(jìn)制序列稱為Walsh(沃爾什)函數(shù),其對(duì)正交代碼是有用的,并且也是相對(duì)容易產(chǎn)生的。Walsh函數(shù)來(lái)自Walsh函數(shù)矩陣,也稱為哈達(dá)瑪特矩陣。哈達(dá)瑪特矩陣的行可以看作是正弦波的±1近似值;因此,與哈達(dá)瑪特矩陣的乘法(有時(shí)被稱為Walsh變換)是離散傅立葉變換的二進(jìn)制變體。
參見圖2,當(dāng)RG12產(chǎn)生隨機(jī)數(shù)流時(shí),所產(chǎn)生的隨機(jī)數(shù)首先轉(zhuǎn)化為二進(jìn)制±1位,然后分段為預(yù)定大小的塊n,以形成矢量序列v。n位的每個(gè)矢量v連續(xù)地與大小為(n×n)的哈達(dá)瑪特矩陣相乘,以計(jì)算其行與矢量的相關(guān)性。應(yīng)該注意,為了直觀,描述了用n=16位作為矢量v長(zhǎng)度的塊;然而,應(yīng)該理解本發(fā)明可支持任何2的乘方的矢量長(zhǎng)度,其也是哈達(dá)瑪特矩陣行的長(zhǎng)度。因此,在附圖中的將16位分組到單個(gè)矢量中并不應(yīng)限制本發(fā)明的范圍。
大小為2n的(標(biāo)準(zhǔn)化的)哈達(dá)瑪特矩陣Hn以下面的遞歸方式定義H0=[1],Hn+1=HnHnHn-Hn,]]>其中每個(gè)Hn的第一行都是1,所有其它行包括相等數(shù)量的+1和-1項(xiàng)。哈達(dá)瑪矩陣是正交的,也就是說(shuō),Hn×Hn’=Hn’×Hn=2n·I2n,其中I2n表示大小為2n的單位矩陣。這里,行和列是成對(duì)(pair-wise)正交的。從標(biāo)準(zhǔn)化哈達(dá)瑪特矩陣的定義,我們可以得到下列遞歸Hn+1·(v1v2···v2n-1,v2n-1+1···v2n)T=Hn·(v1v2···v2n-1,)T+Hn·(v2n-1+1···v2n)THn·(v1v2···v2n-1,)T-Hn·(v2n-1+1···v2n)T.]]>如圖2所示,哈達(dá)瑪特矩陣與v的轉(zhuǎn)置相乘,以獲得哈達(dá)瑪特變換序列的值w。換一種表述是w=(h1,h2,...h2n)T=Hn×V。如果v的所有項(xiàng)是+1,則h1=2n以及所有其它hi=0。如果v的一個(gè)項(xiàng)翻轉(zhuǎn)為-1,則所有hi被2改變。因此,所有hi≡2mod4或所有hi≡0mod4,這依賴于v是否有奇數(shù)數(shù)量或偶數(shù)數(shù)量的-1項(xiàng)。
在執(zhí)行哈達(dá)瑪特變換后,在w中的哈達(dá)瑪特變換項(xiàng)的可能值的次數(shù)在一組累加器中被計(jì)數(shù),以獲得在一個(gè)時(shí)間周期內(nèi)在向量w中的每一個(gè)可能值出現(xiàn)的平均次數(shù)。為了減少使用的累加器數(shù),在單個(gè)累加器中可以計(jì)數(shù)多個(gè)可能值。也就是說(shuō),為矢量w各項(xiàng)的每個(gè)可能值提供一累加器,以每次產(chǎn)生一個(gè)新的位塊,并應(yīng)用于哈達(dá)瑪特變換,計(jì)數(shù)哈達(dá)瑪特變換輸出落入每個(gè)累加器范圍的次數(shù)。因此,累加器用于提供一個(gè)直方圖h(t),其表示在給定時(shí)間期間每個(gè)可能矢量w出現(xiàn)的平均次數(shù)。
值得注意的是,由于可應(yīng)用本發(fā)明實(shí)時(shí)測(cè)試隨機(jī)序列,所以累加器必須持續(xù)更新。這樣,舊的頻率值必須有遞減的影響或沒有影響。也就是說(shuō),評(píng)價(jià)隨機(jī)序列統(tǒng)計(jì)質(zhì)量的測(cè)試是連續(xù)進(jìn)行的,這樣,必須定期清除累加器以避免溢出。有各種計(jì)數(shù)方法可以根據(jù)本發(fā)明的技術(shù)實(shí)施;然而,如下所述,在頻率計(jì)算操作期間優(yōu)選使用指數(shù)平均。
在指數(shù)平均操作期間,當(dāng)累加器更新w中每個(gè)變換值范圍的平均發(fā)生次數(shù)或頻率時(shí),每次產(chǎn)生n個(gè)隨機(jī)位,在0和1之間的因子α(0<α<1)與累加器相乘,然后加到累加器中的當(dāng)前值h(t)上Znew=α·Zold+h(t),其中最初的指數(shù)平均值Zold首先由操作員初始化。為獲得有用的平均效果,選擇接近1的α值,α=1-1/N,N>>1。在這種情況下,logα≈-1/N,并且被平均值的半衰期(half-life)是k≈N·log2≈0.30103·N。經(jīng)過N步之后,最早的被平均值的權(quán)重成為(1-1/N)N≈1/e≈0.367879。這里,e是自然對(duì)數(shù)的底(Euler歐拉常量),所以項(xiàng)N成為一個(gè)位的自然壽命(natural life)。如果所有的被平均值都是1,那么累加器的值就是1+α+α2+..=1/(1-α)=N,但是如果所有的被平均值是0,那么累加器的值就是0。注意指數(shù)平均的期望值是各個(gè)值的期望值的指數(shù)平均。如果平均值是均勻分布的二進(jìn)制位,則指數(shù)平均的期望值就是1/2+1/2α+1/2α2+...=N/2。
如上所述,當(dāng)累加器以一定的0<α<1因子減少時(shí),指數(shù)平均用于清除計(jì)數(shù)器;因此,在操作模式期間累加器決不會(huì)變得太大。一旦為每個(gè)累加器執(zhí)行指數(shù)平均,每個(gè)指數(shù)平均的值就與預(yù)定可接受范圍進(jìn)行比較。如果任何累加器的值在指數(shù)平均計(jì)算期間落于預(yù)定范圍之外,根據(jù)本發(fā)明實(shí)施例便可以推斷所產(chǎn)生的隨機(jī)數(shù)不夠隨機(jī)。這里,可設(shè)置閾值以在該測(cè)試多次失敗時(shí)通知用戶。
可以根據(jù)從利用已知的、好的隨機(jī)數(shù)源的廣泛模擬而獲得的數(shù)據(jù),有選擇地調(diào)整可接受范圍的確切界限,其中可以獲得理想的直方圖分布。這樣的隨機(jī)序列是商業(yè)上可獲得的,并可以例如從包括“www.fourmilab.ch/hotbits”和“l(fā)avarand.sgi.com”的各種網(wǎng)站下載。因此,操作員有選擇性地設(shè)置測(cè)試中使用的實(shí)際范圍,以便在有關(guān)所產(chǎn)生的隨機(jī)序列是否被認(rèn)為是足夠隨機(jī)的不同敏感度中做出選擇。在另一實(shí)施例中,可以為每個(gè)累加器分配不同的可接受范圍。
圖3是根據(jù)本發(fā)明描述測(cè)試隨機(jī)序列統(tǒng)計(jì)質(zhì)量的操作步驟的流程圖。矩形單元表示計(jì)算機(jī)軟件指令,而菱形單元表示影響矩形框表示的計(jì)算機(jī)軟件指令執(zhí)行的計(jì)算機(jī)軟件指令。換句話說(shuō),處理和決定框代表由功能等同電路(例如數(shù)字信號(hào)處理器電路或?qū)S眉呻娐?ASIC))執(zhí)行的步驟。應(yīng)該注意,沒有標(biāo)出很多例行程序單元,例如,循環(huán)和變量的初始化以及臨時(shí)變量的使用。本領(lǐng)域的普通技術(shù)人員會(huì)認(rèn)識(shí)到,除非在此另外表明,所描述的步驟的特定序列僅是示例性的,并可以在不脫離本發(fā)明精神的情況下變化。
如圖3所示,在步驟100,一通過隨機(jī)數(shù)發(fā)生器12產(chǎn)生連續(xù)隨機(jī)二進(jìn)制位流,就啟動(dòng)隨機(jī)性測(cè)試。同時(shí),復(fù)位計(jì)數(shù)器。在步驟120,所產(chǎn)生的隨機(jī)數(shù)被分段為一組帶符號(hào)位的矢量并與哈達(dá)瑪特矩陣相乘以獲得哈達(dá)瑪特變換系數(shù)矢量w。然后,將一組預(yù)初始化累加器應(yīng)用于直方圖矢量h(t),以執(zhí)行頻率測(cè)試,其中,在步驟130,計(jì)算矢量w中每個(gè)值范圍的頻率以產(chǎn)生平均直方圖矢量。然后,在步驟140,使用指數(shù)平均操作在每個(gè)累加器中更新直方圖矢量。在更新模式期間,所有以前的指數(shù)頻率值以因子α減少(0<α<1),以致舊的頻率值有遞減的影響。在經(jīng)歷指數(shù)平均操作之后,在步驟160,所更新的頻率值與預(yù)定可接受范圍或各自的預(yù)定可接受范圍比較。如果在各個(gè)累加器A中的任何值在預(yù)定可接受范圍之外,則確定在步驟200已檢測(cè)到非隨機(jī)型式(pattern),并且計(jì)數(shù)器加1。否則,在步驟180復(fù)位計(jì)數(shù)器,并返回處理隨機(jī)數(shù)的步驟100。在步驟220,如果計(jì)數(shù)器的值大于閾值,則在步驟240傳送所產(chǎn)生的隨機(jī)數(shù)不夠隨機(jī)的通知。換句話說(shuō),可以使開關(guān)16去活以停止用于以后應(yīng)用的隨機(jī)數(shù)流。然后,丟棄所產(chǎn)生的隨機(jī)數(shù),并可啟動(dòng)產(chǎn)生新隨機(jī)數(shù)的整個(gè)過程。如果在步驟220,計(jì)數(shù)器的值沒有超過閾值,則重復(fù)產(chǎn)生隨機(jī)數(shù)的過程。
上述各步驟可以通過將其編程為應(yīng)用程序所包含的函數(shù)來(lái)加以實(shí)現(xiàn),具有本領(lǐng)域普通技術(shù)的編程人員也可以使用例如C,Visual Basic,Java,Perl,C++等語(yǔ)言的一般編程技術(shù)實(shí)現(xiàn)它們。在示范性的實(shí)施例中,圖4描述的方法可以構(gòu)造如下(使用C程序語(yǔ)言)。為簡(jiǎn)單化,我們使用浮點(diǎn)算法實(shí)現(xiàn)測(cè)試。
附件MS Visual C代碼<pre listing-type="program-listing"><![CDATA[/*******************************************************************\*Hadamard.c* Hadmard<#transformations><but generator type><bit generator param>* Generate test bits * Calculate Fast Hadamard Transform of Length 256 * Check coefficients * Prints test statistics * *Hadamard 1e500.5 *Hadamard test passed * *Hadamard 1e500.499 *#Hadamard coeffs=8 is out of range at trafo 58425(11803.4[11283.6,11803.4]) * *Hadamard 1e42801255[all 8 bit words] *#Hadamard coeffs=0 is out of range at trafo 2(6889.31[6313.6,6744.1]) * *Hadamard 1e4260163 *#Hadamard coeffs=2 is out of range at trafo 8(13253.3[12695.9,13232.6]) * *Vers.1.0 04/25/01Created by Laszlo Hars * \******************************************************************/ #include<stdio.h> #include<stdlib.h> #define HN16 #define HDLOG 8 #define HDLEN(1<<HDLOG) ∥乘法器=1-1/2^8 #define W0.99609375 ∥向上移動(dòng)MSL位1個(gè)位置。硬件實(shí)現(xiàn)剛通過總線線路切換 #define MAP(L,x)(((MS[L]&x)<<1)+(LS[L]&x)) #define ABS(A) ((A)<0?-(A)(A))∥外部函數(shù)原型 void BitGenInit(int argc,char*argv[]); unsigned int NextBit(); int main(int argc,char*argv[]) { int i,j,k,L,n=(int)atof(argv[1]),s,tr, H[HN],LS[HDLOG],MS[HDLOG],t[HDLEN]; double Z[HN]={6525.0,12961.0,12656.0,12163.0,11540.0,10758.0,9825.0,8927.9,7933.7,6949.4,5980.4,5079.3,4249.0,3504.1,2827.2,5192.0}, Y[HN]={6313.6,12695.9,12373.5,11865.0,11283.6,10475.4,9530.6,8680.5,7702.1,6720.3,5763.1,4881.1,4072.0,3348.1,2682.0,5065.9}, X[HN]={6744.1,13232.6,12945.1,12468.8,11803.4,11049.9,10128.6,9182.5,8172.4,7186.4,6206.1,5285.7,4433.8,3667.5,2980.4,5321.3); if(argc<4){ printf(“UsageHadamard<#transformations><bit generator type><bit generator params..>\n″); putchar(′\a′); ∥振鈴 exit(1);} BitGenInit(argc,argv); for(k=0;k<HDLOG;++k){∥初始化重映射掩膜 MS[k]=-1<<k; LS[k]=~MS[k];} for(tr=0;tr<n;++tr){∥重復(fù)變換步驟 for(k=0;k<HDLEN;++k) t[k]=2*NextBit()-1;∥隨機(jī)位->+/-1 for(L=0;L<HDLOG;++L){∥快速哈達(dá)瑪特變換 for(i=0;i<HDLEN/2;++i){ j=MAP(L,i); k=j(luò)+(1<<L); s=t[k]; t[k]=t[j]-s; t[j]=t[j]+s; } } ∥結(jié)束快速哈達(dá)瑪特變換for(k=0;k<HN;++k) H[k]=0;∥清除直方圖倉(cāng) for(k=0;k<HDLEN;++k){ s=ABS(t[k])>>1; if(s>=HN)s=HN-1; H[s]++; ∥計(jì)算直方圖 } s=(t
&3)|=0;∥非零的哈達(dá)瑪特項(xiàng)0,4,8...或2,6,10... for(k=s;k<HN;k+=2){ Z[k]=Z[k]*W+H[k]; ∥項(xiàng)的指數(shù)平均=2*k if(Z[k]<Y[k]‖Z[k]>X[k]){ printf(″#Hadamard coeffs=%d is ont of range at trafo %d(%g[%g,%g])\n″, 2*k,tr+1,Z[k],Y[k],X[k]); exit(2);} } } printf(″Hadamard test passed\n″);}]]></pre>雖然解釋和描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域的技術(shù)人員會(huì)理解,在不脫離本發(fā)明的真實(shí)范圍的情況下,可以作出各種變化和修改,并用對(duì)等物取代其中的組件。此外,在不脫離核心范圍的情況下可以作出許多改變以適合特定的情況以及本發(fā)明的教義。因此,本發(fā)明并不被作為實(shí)現(xiàn)本發(fā)明所設(shè)想的最好模式公開的特定實(shí)施例中所限制,而是,本發(fā)明包括所有落入所附的權(quán)利要求范圍的所有實(shí)施例。
權(quán)利要求
1.一種用于測(cè)試隨機(jī)數(shù)流的隨機(jī)性的方法,該方法包括步驟提供連續(xù)的隨機(jī)二進(jìn)制位流;將所述隨機(jī)二進(jìn)制位的預(yù)定義塊應(yīng)用于哈達(dá)瑪特變換運(yùn)算;將所述哈達(dá)瑪特變換運(yùn)算的輸出應(yīng)用于指數(shù)頻率運(yùn)算(Z)以計(jì)算和更新所述哈達(dá)瑪特變換的輸出在預(yù)定時(shí)間周期上落入預(yù)定值范圍的平均次數(shù);以及,通過比較所述指數(shù)頻率運(yùn)算(Z)的輸出和預(yù)定可接受范圍,來(lái)確定所述產(chǎn)生的隨機(jī)二進(jìn)制位是否足夠隨機(jī)。
2.如權(quán)利要求1的方法,其中所述的指數(shù)頻率運(yùn)算(Z)按照以下步驟執(zhí)行向所述哈達(dá)瑪特變換運(yùn)算的輸出分配一組具有所述預(yù)定值范圍的累加器;以及計(jì)數(shù)每個(gè)所述哈達(dá)瑪特變換輸出在所述預(yù)定時(shí)間周期落入相應(yīng)的所述預(yù)定值范圍的次數(shù)。
3.如權(quán)利要求2的方法,其中所述的指數(shù)頻率運(yùn)算(Z)根據(jù)以下等式計(jì)數(shù)Znew=α·Zold+h(t),其中,α在0和1之間(0<α<1),Zold最初由操作員分配;以及,h(t)代表所述哈達(dá)瑪特變換的輸出在所述預(yù)定時(shí)間周期期間落入相應(yīng)的所述預(yù)定值范圍的次數(shù)。
4.如權(quán)利要求1的方法,其中所述的預(yù)定可接受范圍通過模擬來(lái)獲得。
5.如權(quán)利要求1的方法,還包括當(dāng)所述指數(shù)頻率運(yùn)算的任何輸出重復(fù)落于所述預(yù)定可接受范圍之外超過預(yù)定義次數(shù)時(shí),確定所述產(chǎn)生的隨機(jī)位不夠隨機(jī)的步驟。
6.如權(quán)利要求1的方法,還包括當(dāng)所述指數(shù)頻率運(yùn)算的任何輸出重復(fù)落于所述預(yù)定可接受范圍之外超過預(yù)定義次數(shù)時(shí),通知所述產(chǎn)生的隨機(jī)位不夠隨機(jī)的步驟。
7.如權(quán)利要求1的方法,還包括當(dāng)所述指數(shù)頻率運(yùn)算的任何輸出重復(fù)落于所述預(yù)定可接受范圍之外超過預(yù)定義次數(shù)時(shí),產(chǎn)生新的一組隨機(jī)位的步驟。
8.如權(quán)利要求1的方法,還包括當(dāng)所述指數(shù)頻率運(yùn)算的任何輸出重復(fù)落于所述預(yù)定可接受范圍之外超過預(yù)定義次數(shù)時(shí),為后續(xù)應(yīng)用拒絕所述產(chǎn)生的隨機(jī)位的步驟。
9.一種測(cè)試隨機(jī)數(shù)流的隨機(jī)性的方法,該方法包括步驟(a)產(chǎn)生連續(xù)的隨機(jī)二進(jìn)制位流;(b)將所述隨機(jī)二進(jìn)制位的預(yù)定義塊應(yīng)用于哈達(dá)瑪特變換運(yùn)算;(c)為所述哈達(dá)瑪特變換運(yùn)算的每個(gè)輸出分配一組具有預(yù)定值范圍的累加器,以計(jì)數(shù)所述哈達(dá)瑪特變換運(yùn)算的每個(gè)輸出落入各自所述累加器的所述預(yù)定值范圍之一的次數(shù);(d)將所述累加器組的值應(yīng)用于指數(shù)頻率運(yùn)算(Z)以更新所述哈達(dá)瑪特變換運(yùn)算的每個(gè)輸出在預(yù)定時(shí)間周期落入各自所述累加器中的所述預(yù)定值范圍之一的平均次數(shù);以及,(e)比較所述指數(shù)頻率運(yùn)算(Z)的輸出與預(yù)定可接受范圍。
10.如權(quán)利要求9的方法,其中所述的指數(shù)頻率運(yùn)算(Z)根據(jù)以下等式更新Znew=α·Zold+h(t),其中,α在0和1之間(0<α<1),Zold最初由操作員分配;以及,h(t)代表所述哈達(dá)瑪特變換運(yùn)算的每個(gè)輸出落入各自所述累加器中的所述預(yù)定值范圍之一的次數(shù)。
11.如權(quán)利要求9的方法,其中所述的預(yù)定可接受范圍通過模擬獲得。
12.如權(quán)利要求9的方法,還包括當(dāng)所述指數(shù)頻率運(yùn)算的任何輸出重復(fù)落于所述預(yù)定可接受范圍之外超過預(yù)定義次數(shù)時(shí),確定所述產(chǎn)生的隨機(jī)位不夠隨機(jī)的步驟。
13.如權(quán)利要求9的方法,還包括步驟如果每個(gè)所述指數(shù)頻率運(yùn)算落入所述預(yù)定可接受范圍內(nèi),則重復(fù)所述步驟(a)-(e),直到至少一個(gè)所述指數(shù)頻率運(yùn)算輸出落于所述預(yù)定可接受范圍之外。
14.如權(quán)利要求13的方法,還包括當(dāng)重復(fù)所述步驟(a)-(e)超過預(yù)定義次數(shù)時(shí),通知產(chǎn)生不夠隨機(jī)的數(shù)的步驟。
15.如權(quán)利要求13的方法,還包括當(dāng)重復(fù)所述步驟(a)-(e)超過預(yù)定義次數(shù)時(shí),產(chǎn)生新的一組隨機(jī)數(shù)的步驟。
16.一種測(cè)試隨機(jī)性的系統(tǒng),包括隨機(jī)數(shù)發(fā)生器(12),用于產(chǎn)生包括二進(jìn)制位的隨機(jī)序列;檢測(cè)器(14),用于根據(jù)指數(shù)頻率操作來(lái)檢測(cè)所述產(chǎn)生的隨機(jī)序列是否足夠隨機(jī);以及,開關(guān)(16),用于根據(jù)所述指數(shù)頻率操作的輸出為后續(xù)應(yīng)用控制所述產(chǎn)生的隨機(jī)序列的流,其中,所述隨機(jī)二進(jìn)制位的預(yù)定義塊經(jīng)歷一個(gè)哈達(dá)瑪特變換運(yùn)算,然后經(jīng)歷一個(gè)指數(shù)頻率運(yùn)算(Z)以更新所述哈達(dá)瑪特變換運(yùn)算的每個(gè)輸出在預(yù)定時(shí)間周期落入預(yù)定值范圍之一的平均次數(shù),并且其中,如果所述指數(shù)頻率運(yùn)算輸出的任何輸出重復(fù)落于預(yù)定可接受范圍之外超過預(yù)定義次數(shù)外,則確定所述產(chǎn)生的隨機(jī)序列是不夠隨機(jī)的。
17.如權(quán)利要求16的設(shè)備,還包括當(dāng)所述指數(shù)頻率運(yùn)算輸出的任何輸出重復(fù)落于所述預(yù)定可接受范圍之外超過所述預(yù)定義次數(shù)時(shí),傳送所述產(chǎn)生的隨機(jī)序列是不夠隨機(jī)的警報(bào)信號(hào)的裝置。
18.如權(quán)利要求16的方法,還包括當(dāng)所述指數(shù)頻率運(yùn)算輸出的任何輸出重復(fù)落于所述預(yù)定可接受范圍之外超過所述預(yù)定義次數(shù)時(shí),產(chǎn)生新的一組隨機(jī)位的裝置。
19.一種機(jī)器可讀介質(zhì),其上存儲(chǔ)有代表指令序列的數(shù)據(jù),并且當(dāng)由處理器執(zhí)行時(shí),指令序列引起該處理器處理連續(xù)的隨機(jī)二進(jìn)制位流;將所述隨機(jī)二進(jìn)制位的預(yù)定義塊應(yīng)用于哈達(dá)瑪特變換運(yùn)算;對(duì)所述哈達(dá)瑪特變換運(yùn)算的輸出執(zhí)行指數(shù)頻率運(yùn)算(Z),以更新每個(gè)所述哈達(dá)瑪特變換輸出在預(yù)定時(shí)間周期上落入預(yù)定值范圍之一的平均次數(shù);以及,通過比較所述指數(shù)頻率運(yùn)算與預(yù)定可接受范圍,來(lái)確定所述產(chǎn)生的隨機(jī)二進(jìn)制位是否足夠隨機(jī)。
20.如權(quán)利要求19的機(jī)器可讀介質(zhì),其中所述指數(shù)頻率運(yùn)算(Z)根據(jù)以下等式更新Znew=α·Zold+h(t),其中,α在0和1之間(0<α<1),Zold最初由操作員分配;以及,h(t)代表所述哈達(dá)瑪特變換的每個(gè)輸出在所述預(yù)定時(shí)間周期期間落入相應(yīng)值范圍的次數(shù)。
21.如權(quán)利要求19的機(jī)器可讀介質(zhì),其中所述預(yù)定可接受范圍通過模擬獲得。
22.如權(quán)利要求19的機(jī)器可讀介質(zhì),其中當(dāng)所述指數(shù)頻率運(yùn)算的任何輸出重復(fù)落于所述預(yù)定可接受范圍之外時(shí),所述處理器還可操作來(lái)確定所述產(chǎn)生的隨機(jī)位不夠隨機(jī)。
23.如權(quán)利要求19的機(jī)器可讀介質(zhì),其中當(dāng)所述指數(shù)頻率運(yùn)算的任何輸出重復(fù)落于所述預(yù)定可接受范圍之外時(shí),所述處理器還可操作來(lái)通知所述產(chǎn)生的隨機(jī)位不夠隨機(jī)。
24.如權(quán)利要求19的機(jī)器可讀介質(zhì),其中當(dāng)所述指數(shù)頻率運(yùn)算的任何輸出重復(fù)落于所述預(yù)定可接受范圍之外超過預(yù)定義次數(shù)時(shí),所述處理器還可操作來(lái)處理新的一組隨機(jī)位。
25.如權(quán)利要求19的機(jī)器可讀介質(zhì),其中當(dāng)所述指數(shù)頻率運(yùn)算的任何輸出重復(fù)落于所述預(yù)定可接受范圍之外時(shí),所述處理器還可操作來(lái)為隨后的應(yīng)用拒絕所述產(chǎn)生的隨機(jī)位。
全文摘要
本發(fā)明是實(shí)時(shí)測(cè)試隨機(jī)數(shù)發(fā)生器產(chǎn)生的隨機(jī)數(shù)的方法和設(shè)備。隨機(jī)數(shù)發(fā)生器產(chǎn)生的隨機(jī)位流被轉(zhuǎn)換為±1二進(jìn)制位,并被分段為矢量位的預(yù)定義塊,然后這些矢量經(jīng)歷一個(gè)哈達(dá)瑪特變換運(yùn)算。在每個(gè)預(yù)定值范圍中對(duì)哈達(dá)瑪特變換輸出值進(jìn)行計(jì)數(shù),并將其應(yīng)用于指數(shù)頻率運(yùn)算,以計(jì)算和更新哈達(dá)瑪特變換運(yùn)算的每個(gè)輸出在預(yù)定時(shí)間周期落入相應(yīng)預(yù)定值范圍的平均次數(shù)。所更新的頻率值與至少一個(gè)預(yù)定可接受范圍比較,以便如果至少一個(gè)更新的頻率值重復(fù)落于預(yù)定可接受范圍之外超過預(yù)定義次數(shù),則確定所產(chǎn)生的隨機(jī)位不夠隨機(jī)。
文檔編號(hào)G06F17/14GK1647027SQ03808451
公開日2005年7月27日 申請(qǐng)日期2003年4月4日 優(yōu)先權(quán)日2002年4月17日
發(fā)明者L·哈爾斯 申請(qǐng)人:皇家飛利浦電子股份有限公司