生 器I,15-低頻信號發(fā)生器I,16-D觸發(fā)器I,17-高頻信號發(fā)生器II,18-低頻信號發(fā)生器 II,19-D觸發(fā)器II,20-噪聲電阻,21-放大器,22-壓控振蕩器,23-噪聲電阻,24-放大 器,25-施密特觸發(fā)器,26-反相器。
【具體實施方式】
[0028] 本發(fā)明提供了一種混合式隨機(jī)數(shù)發(fā)生器及其產(chǎn)生隨機(jī)數(shù)的方法,解決了現(xiàn)有的 隨機(jī)數(shù)發(fā)生器及其產(chǎn)生隨機(jī)數(shù)的方法存在生成序列質(zhì)量較低,及成本較高的技術(shù)問題,實 現(xiàn)了混合式隨機(jī)數(shù)發(fā)生器及其產(chǎn)生隨機(jī)數(shù)的方法生成序列質(zhì)量較高,及成本較低的技術(shù)效 果。
[0029] 為了更好的理解上述技術(shù)方案,下面將結(jié)合說明書附圖以及具體的實施方式對上 述技術(shù)方案進(jìn)行詳細(xì)的說明。
[0030] 下面結(jié)合實施例及附圖,對本發(fā)明作進(jìn)一步地的詳細(xì)說明,但本發(fā)明的實施方式 不限于此。
[0031] 如圖1所示,一種混合式隨機(jī)數(shù)發(fā)生器,其包括:物理隨機(jī)數(shù)源模塊1、脫相關(guān)組合 處理模塊2、計算模塊3和綜合處理模塊4。如圖2所示,物理隨機(jī)數(shù)源模塊1輸出端與脫 相關(guān)組合處理模塊2輸入端相連接,脫相關(guān)組合處理模塊2輸出端同時與計算模塊3和綜 合處理模塊4輸入端相連接,計算模塊3輸出端也與綜合處理模塊4輸入端相連接,綜合處 理模塊4輸出端為隨機(jī)數(shù)發(fā)生器輸出端。脫相關(guān)組合處理模塊2包括接收寄存器5、處理計 算模塊6與發(fā)送寄存器7,其中接收寄存器5輸出端連接處理計算模塊6輸入端,發(fā)送寄存 器7輸入端與處理計算模塊6輸出端連接,計算模塊3包括種子寄存器8、主計算模塊9、從 計算模塊10和亂序干擾模塊11,其中種子寄存器8輸出端同時與主計算模塊9輸入端和從 計算模塊10輸入端相連接,主計算模塊9輸出端和從計算模塊10輸出端同時與亂序干擾 模塊11輸入端相連接;
[0032] 如圖3所示,物理隨機(jī)數(shù)源模塊1由兩個結(jié)構(gòu)大致相同獨立并行輸出的子模塊I 12和子模塊II13構(gòu)成,子模塊I12包含高頻信號發(fā)生器I14、低頻信號發(fā)生器I15和D 觸發(fā)器I16,高頻信號發(fā)生器I14輸出端與D觸發(fā)器I16數(shù)據(jù)輸入端口相連接,低頻信號 發(fā)生器I15輸出端與D觸發(fā)器I16的時鐘端口相連接,D觸發(fā)器I16輸出端口為物理隨 機(jī)數(shù)源模塊1的一個輸出端口,子模塊II13包含高頻信號發(fā)生器II17、低頻信號發(fā)生器 II18和D觸發(fā)器II19;高頻信號發(fā)生器II17輸出端與D觸發(fā)器II18數(shù)據(jù)輸入端口相 連接,低頻信號發(fā)生器II18輸出端與D觸發(fā)器II19的時鐘端口相連接,D觸發(fā)器II19 輸出端口為物理隨機(jī)數(shù)源模塊1輸出端口的一個輸出端口。上述的高頻信號發(fā)生器I14 與高頻信號發(fā)生器II17頻率不同,低頻信號發(fā)生器I15與低頻信號發(fā)生器II18頻率不 同。物理隨機(jī)數(shù)源模塊(1)中高頻信號發(fā)生器I14和高頻信號發(fā)生器II17結(jié)構(gòu)相同,如 圖4所示,高頻信號發(fā)生器I14和高頻信號發(fā)生器II17均為通過噪聲電阻20連接放大 器21,放大的熱噪聲通過壓控振蕩器22產(chǎn)生高頻信號。為了提高信號的獨立性,本發(fā)明中 輸入D觸發(fā)器I16和D觸發(fā)器II18的時鐘端口的兩組高頻振蕩信號的頻率不同。如圖 5所示,物理隨機(jī)數(shù)源模塊1中低頻信號發(fā)生器I15和低頻信號發(fā)生器II18結(jié)構(gòu)相同, 通過放大器24對噪聲電阻23的噪聲進(jìn)行放大,然后將放大后的噪聲送入施密特觸發(fā)器25 中,最后通過反相器26采樣并產(chǎn)生低頻時鐘信號輸出低頻信號。
[0033] 如圖6所示,一種混合式隨機(jī)數(shù)發(fā)生器產(chǎn)生隨機(jī)數(shù)的方法,其包括以下步驟:
[0034]S1:物理隨機(jī)數(shù)源模塊1不間斷的隨機(jī)輸出的采樣數(shù)據(jù)a和采樣數(shù)據(jù)b,并不間斷 的并行輸送至脫相關(guān)組合處理模塊2 ;
[0035]S2 :如圖7所示,接收寄存器5接受數(shù)據(jù),脫相關(guān)組合處理模塊2分別提取1024bit 的定長數(shù)據(jù)A和1024bit的定長數(shù)據(jù)B,并將數(shù)據(jù)A前512bit和數(shù)據(jù)后512bit交換后與數(shù) 據(jù)B做異或運算,得到數(shù)據(jù)C并依次發(fā)送至發(fā)送寄存器7進(jìn)行存儲;
[0036]S3 :計算模塊3向脫相關(guān)處理模塊2周期性地請求發(fā)送數(shù)據(jù),脫相關(guān)處理模塊2接 受請求并一次從發(fā)送寄存器7中提取3組定長數(shù)據(jù)發(fā)送至計算模塊3,計算模塊3接收3組 數(shù)據(jù)并將第一組數(shù)據(jù)的前兩位作為數(shù)組序號提取其中一組數(shù)據(jù)D作為種子并存儲到種子 寄存器8 ;
[0037]S4 :種子寄存器8將數(shù)據(jù)D的前半段作為種子送入主計算模塊9進(jìn)行超素數(shù)計算 運算產(chǎn)生一個512bit隨機(jī)序列E,同時將數(shù)據(jù)的后半段作為增量送入從計算模塊10進(jìn)行滿 周期線性同余算法運算產(chǎn)生滿周期序列F,并發(fā)送序列E、序列F到亂序干擾模塊11,亂序干 擾模塊11根據(jù)滿周期序列F,對隨機(jī)序列E進(jìn)行排列得到隨機(jī)序列G,并對隨機(jī)序列G作哈 希算法得到隨機(jī)序列H,同時觸發(fā)計算模塊3向脫相關(guān)處理模塊2繼續(xù)請求發(fā)送數(shù)據(jù);
[0038]S5 :綜合處理模塊4根據(jù)用戶預(yù)設(shè)定狀態(tài)和時鐘進(jìn)行判定根據(jù)用戶的需求來決定 采取哪種輸出方式。當(dāng)狀態(tài)為對于安全性能要求高C1狀態(tài)時,由脫相關(guān)組合處理模塊2直 接輸出隨機(jī)數(shù),當(dāng)狀態(tài)為對于能耗要求較低的C2狀態(tài)時,由計算模塊3輸出隨機(jī)數(shù),當(dāng)狀態(tài) 為對于速度要求高、數(shù)量大的輸出的狀態(tài)C3時判斷時鐘是否到期,如時鐘到期輸出脫相關(guān) 組合處理模塊2中發(fā)送寄存器7所存儲的所有隨機(jī)數(shù),如未到期輸出計算模塊輸出端口的 數(shù)據(jù)。
[0039] 所述S4中,主計算模塊9從種子寄存器8中提取種子,種子為8組隨機(jī)數(shù)即數(shù)據(jù) D的前半段,每組前兩位作為優(yōu)選乘子在數(shù)組中的編號,選擇乘子后,運行一次主計算,再通 過奇偶校驗輸出,每組循環(huán)64次,得到64bit的數(shù)據(jù),共計生成512bit隨機(jī)序列送入亂序 干擾模塊11中并重新提取種子進(jìn)行下一輪計算。
[0040] 本發(fā)明的主計算采用的是優(yōu)選乘子的超素數(shù)算法,得到一組均勻性好的隨機(jī)序 列,生成序列算法的基本步驟為:
[0041] (1)生成初始種子,選定發(fā)生器的乘子入;
[0042] (2)令i= 0,數(shù)組S[i] =X〇mod2,i++;
[0043] (3)令Xi=入X(jmodM;
[0044] (4)令S[i] =Ximod〗,i++,之后另X〇=X1;
[0045](5)重復(fù)步驟(3)-(4),不斷產(chǎn)生序列。
[0046] 在優(yōu)選乘子的超素數(shù)發(fā)生器中共包括兩個參數(shù):乘子和模。本發(fā)明中模M取超素 數(shù)定值1048571,根據(jù)乘子優(yōu)選的原則A是超素數(shù),且滿足M〈Z#A2,考慮到對稱性的問 題一般取^ < _W),符合乘子條件的超素數(shù)有 1033、1081、1097、1193、1217、1223、1259、 1301、1303、1381、1531、 1543、1567、1621、1663、1697、1709、1777、1783、1789、186U2017 共 22個,本發(fā)明中用這22個符合條件的乘子建立了一個數(shù)組,乘子只有22個,如果計數(shù)值大 于22,則會出現(xiàn)空選現(xiàn)象,所以需要將數(shù)據(jù)對22求余運算,生成一個介于0到21之間的整 數(shù),并將該整數(shù)作為乘子在數(shù)組中的地址,對應(yīng)地址選取乘子,這樣選擇乘子在滿足乘子優(yōu) 選原則的同時,也使發(fā)生器本身具有了不確定性,進(jìn)一步增加了預(yù)測生成隨機(jī)序列的難度。
[0047] 從計算模塊10從種子寄存器8中得到增量參數(shù),運行一次滿周期同余算法,得到 一組滿周期的序列送入亂序干擾模塊中并重新提取增量參數(shù)進(jìn)行下一輪計算;
[0048] 為了提高生成序列的周期,增強(qiáng)數(shù)據(jù)干擾的不確定性,從計算將增量參數(shù)設(shè)置成 了動態(tài)變量,在完成對滿周期數(shù)據(jù)的一次輸出后,增量參數(shù)要進(jìn)行重新賦值。增量參數(shù)的改 變不僅會影響隨機(jī)數(shù)在列中的前后順序,還會改變生成序列的整體排序。
[0049] 要保證從計算模塊輸出的數(shù)據(jù)達(dá)到滿周期T=M其參數(shù)必須滿足如下原則:
[0050]
[0051] 本發(fā)明針對主計算產(chǎn)生的512bit序列,將從計算發(fā)設(shè)置為周期為512的滿周期輸 出,Xn