一種基于規整元胞自動機的偽隨機數生成方法
【專利摘要】本發明公開了一種基于規整元胞自動機的偽隨機數生成方法包括步驟:首先令規整元胞自動機的長度為256個元胞,并設定演化規則;其次設置密鑰以及所需偽隨機序列長度L;再次將密鑰作為規整元胞自動機的初始全局狀態,規整元胞自動機前向迭代產生不同時刻的全局狀態,取被4除余1的時刻的全局狀態作為二進制序列輸出,直到輸出的二進制序列長度大于或等于L則停止迭代;最后若二進制序列長度等于L則將該二進制序列直接作為偽隨機序列輸出,若二進制序列長度大于L則將長度L之后的比特舍去后作為偽隨機序列輸出。本發明采用規整元胞自動機設計偽隨機序列發生器,不僅能夠獲得高質量的偽隨機序列,而且具有邏輯結構簡單、易于軟硬件實現等優點。
【專利說明】—種基于規整元胞自動機的偽隨機數生成方法
【技術領域】
[0001]本發明涉及一種基于規整元胞自動機的偽隨機數生成方法,屬于信息安全領域中的密碼產生技術。
【背景技術】
[0002]隨機數發生器具有許多用途,比如應用于加密設備、Monte Carlo模擬、內建自測試電路等。在過去的幾十年,元胞自動機已被廣泛應用于隨機數發生器。元胞自動機固有的簡單性、規整性和計算并行性等特點,使其在硬件實現時比其它模型更容易并且更快速。
[0003]元胞自動機可以分為規整元胞自動機和非規整元胞自動機。規整元胞自動機的所有元胞遵循相同的演化規則,而非規整元胞自動機中每個元胞可以擁有不同的演化規則。Wolfram第一個提出了使用規則30的一維規整元胞自動機產生偽隨機序列,但不久就被Miere等人破譯,指出當密鑰長度為300至500比特之間,采用已知明文攻擊可恢復密鑰。隨后,許多研究者采用非規整元胞自動機設計偽隨機序列發生器。例如,Hortensius等人對規則30、45、90和150元胞自動機生成的偽隨機數進行了研究,發現由規則90和150組成的非規整元胞自動機生成偽隨機序列周期最大。Sipper等人提出用遺傳算法來實現非規整元胞自動機規則的搜索,讓計算機自動尋找到最優的元胞自動機組合規則以構造偽隨機數發生器,從而避免了以前手動方法的煩瑣。然而,采用非規整元胞自動機生成偽隨機序列時,規則的組合和鄰居的數量必須謹慎選擇才能獲得良好的隨機性。
【發明內容】
[0004]本發明所要解決的技術問題是提供一種基于規整元胞自動機的偽隨機數生成方法,與非規整元胞自動機相比,規整元胞自動機由于只需要一個演化規則因此在軟硬件實現上更為簡單并且所需的存儲空間更少。
[0005]本發明為解決上述技術問題采用以下技術方案:
[0006]本發明提供一種基于規整元胞自動機的偽隨機數生成方法,具體實施步驟如下:
[0007]步驟1:令規整元胞自動機的長度為256個元胞,該規整元胞自動機的演化規則如下:
[0008]-
=(? ? ? Θ s;+1 ? s.+2 ? 0;—2 -s')? (si,.s.■ sl+1) Θ (s._2 ■(丨.St1.s;+1)
[0009]式中,f (.)為布爾函數;彳為第i個元胞在t時刻的狀態,i的取值為1-256,Si1為第1-Ι個元胞在t時刻的狀態,為第i_2個元胞在t時刻的狀態,^ !力第i+Ι個元胞在t時刻的狀態,Stn2為第i+2個元胞在t時刻的狀態,St;1為第i個元胞在t+Ι時刻的狀態,所述狀態的取值為O或I ;?是異或運算符,?是與運算符,-是非運算符;元胞的邊界采用周期型,即 sO = S2S6,S-l= A ^ S251 = ,S2SH = ;
[0010]步驟2,設置密鑰K,密鑰K為256比特的二進制序列kAh,k256 ;同時,設置需要產生的偽隨機序列長度為L比特;其中,L為正整數;
[0011]步驟3,將密鑰K作為規整元胞自動機在t = O時刻的全局狀態彳,規整元胞自動機根據步驟I中的演化規則向前迭代,依次產生不同t時刻的全局狀態
■’取被4除余I的時刻的全局狀態作為二進制序列輸出,當輸出的二進制序列長度大于或等于L比特時規整元胞自動機停止迭代;
[0012]步驟4,若步驟3中規整元胞自動機輸出的二進制序列長度等于L比特,則將該二進制序列直接作為偽隨機序列輸出;若規整元胞自動機輸出的二進制序列長度大于L比特,則將長度L之后的比特舍去后的二進制序列作為偽隨機序列輸出;從而完成偽隨機數的生成。
[0013]本發明采用以上技術方案與現有技術相比,具有以下技術效果:
[0014]本發明與非規整元胞自動機相比,采用規整元胞自動機設計偽隨機序列發生器,不僅能夠獲得高質量的偽隨機序列,而且由于只需要一個演化規則因此在軟硬件實現上更為簡單,所需的存儲空間更少。
【專利附圖】
【附圖說明】
[0015]圖1是本發明的一個實施例的偽隨機序列生成步驟圖。
[0016]圖2是規整元胞自動機迭代15625次的過程圖。
【具體實施方式】
[0017]下面詳細描述本發明的實施方式,所述實施方式的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施方式是示例性的,僅用于解釋本發明,而不能解釋為對本發明的限制。
[0018]本【技術領域】技術人員可以理解的是,除非特意聲明,這里使用的單數形式“一”、“一個”、“所述”和“該”也可包括復數形式。應該進一步理解的是,本發明的說明書中使用的措辭“包括”是指存在所述特征、整數、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數、步驟、操作、元件、組件和/或它們的組。應該理解,當我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或耦接。這里使用的措辭“和/或”包括一個或更多個相關聯的列出項的任一單元和全部組合。
[0019]本【技術領域】技術人員可以理解的是,除非另外定義,這里使用的所有術語(包括技術術語和科學術語)具有與本發明所屬領域中的普通技術人員的一般理解相同的意義。還應該理解的是,諸如通用字典中定義的那些術語應該被理解為具有與現有技術的上下文中的意義一致的意義,并且除非像這里一樣定義,不會用理想化或過于正式的含義來解釋。
[0020]下面結合附圖對本發明的技術方案做進一步的詳細說明:
[0021]在本發明一種基于規整元胞自動機的偽隨機數生成方法的一個實施例中,需要產生1000000比特的偽隨機序列,依據本發明的技術方案,按照以下步驟進行,如圖1所示。
[0022]步驟1:令規整元胞自動機的長度為256個元胞,該規整元胞自動機的演化規則如下:
^r1 =/(d,《K+2)
[0023]-
=S^1 Θ Sti θ s(+1 θ Sl1 θ (β\—2 -^)θ (S丨—i.S1i.S。) ? ((2.A.S1i.‘ )
[0024]式中,f (.)為布爾函數;4為第i個元胞在t時刻的狀態,i的取值為1-256,Sil為第1-Ι個元胞在t時刻的狀態,^力第i_2個元胞在t時刻的狀態,^ +L力第i+Ι個元胞在t時刻的狀遠、與第i+2個元胞在t時刻的狀態,5;+1為第i個元胞在t+Ι時刻的狀態,所述狀態的取值為O或I ;“θ”是異或運算符,“ ?”是與運算符,是非運算符;元胞的邊界米用周期型,即 sQ = S256,I = S2SS,S257 = 5I,^258 = Λ2。
[0025]步驟2:設置密鑰K,密鑰K為256比特的二進制序列kAh,k256 ;同時,設置需要產生的偽隨機序列長度為1000000比特。
[0026]步驟3:將256比特密鑰二進制序列k” k2, k3,...,k256作為規整元胞自動機在t = O時刻的全局狀態...,K56,規整元胞自動機根據步驟I中的演化規則前向迭代,如圖2所示,依次產生不同時刻的全局狀態取被4除余I的時刻的全局狀態,即t = 1,5,9,13,…時刻的全局狀態
?4,..”456、、S?】,…,S。、6?3,…,A...,作為二進制序列輸出 ο
[0027]當t = 15625 時亥lj,由 t = 1,5,9,13,...,15625 時亥Ij 的全局狀態
C1C5y5C.5 士C9C%9 J>ClVV3 t1315625 15625 1562515625
Λ--3,".,-56、 31,…,?256、?,?256、?2 ,…,)256 Λ …、t5I,…,0256
組成的二進制序列長度為1000192比特,該長度大于需要產生的偽隨機序列長度1000000比特,因此規整元胞自動機停止迭代。此時,規整元胞自動機取 t = 1,5,9,13,...,15625 時刻的全局狀態…,46、辦、
sy2sl...,S9256、氺.....WW,..:作為二進制序列輸出。
[0028]步驟4,由于步驟3中規整元胞自動機輸出的二進制序列長度為1000192比特,大于所需產生的偽隨機序列長度1000000比特,則取輸出的二進制序列中的前1000000比特作為偽隨機序列輸出;從而完成偽隨機數的生成。
[0029]下面對本發明一種基于規整元胞自動機的偽隨機數生成方法提出的方法進行隨機性測試。
[0030]目前,已有的隨機性測試方法不下百種,其中比較有代表性的是美國國家標準與技術研究所(NIST)公布的SP800-22標準,該標準提供了一個統計測試套件STS (Statistical Test Suite),它是一個統計軟件包,共包含了 15種不同的檢驗方法,分別為單比特頻數檢驗、塊內頻數檢驗、游程檢驗、塊內最長游程檢驗、二元矩陣秩檢驗、離散傅里葉變換檢驗、非重疊模塊匹配檢驗、重疊模塊匹配檢驗、Maurer通用統計檢驗、線性復雜度檢驗、序列檢驗、近似熵檢驗、累加和檢驗、隨機游動檢驗、隨機游動狀態頻數檢驗。這些檢驗方法可測試任意長二進制序列的隨機特性,主要致力于判定可能存在于序列中的多種多樣的非隨機性。
[0031]在測試過程中,我們首先利用上述基于規整元胞自動機的偽隨機數生成方法產生長度為1000000比特的偽隨機序列,將長度1000000比特的偽隨機序列分割成100個長度為10000比特的偽隨機序列,然后采用NIST STS(Vers1n 2.1.1),每一種檢驗方法對于每一個序列均會產生相應的概率值P-value, P-value是屬于O?I之間的數,將P-value和選取的顯著性水平(α = 0.01)對比,如果P-value彡α,則認為該序列成功通過此項測試。NIST采用兩種方法判定一個輸出序列是否隨機,分別是通過率和P-value的分布。
[0032](I)通過率
[0033]通過率是指通過序列占所有檢驗序列的比例。這里引入統計學中的置信區間理論,它定義為:多±3^^^,其中,? 1 α為顯著性水平,m為序列個數。
Vmp = l-a,
[0034]若測試的通過率落入置信區間內,則可以認為所測算法產生的序列是隨機的。以本文選取的顯著性水平α = 0.01為例,如果序列個數m為100,那么置信區間就是
(1-0.01)±3、(1 — 0.01 )0-Θ 1 = 0,99士0.02985 ,即[0.96015,1.2885]。
V100
[0035](2) P-value 的分布
[0036]因為真隨機序列的P-value服從均勻分布,所以可以根據P-value值分布的均勻性來描述隨機特性。由于P-value是屬于O?I之間的數,因此將區間[0,I]平均等分為 10 個子區間:[0.0, 0.1),[0.1, 0.2),[0.2,0.3),[0.3,0.4),[0.4,0.5),[0.5,0.6),[0.7,0.8),[0.8,0.9),[0.9,1.0],當序列足夠多時,P-value 應平均分布在這10個區間內,統計P-value在每個子區間出現的頻數,記為Fi, i = 1,2,3,...,10,若序列個數為m,則有F1+F2+...+F10 = m,計算統計量Z」=Σ^ '匕咐。然后再計算
卜丨 ml \ ()
9Y2、
P-valuc, = igamc(—,—),其中,igamc 是不完全 Gamma 函數。若 P_valueT ^ 0.0001,則認為
2 2
P-value服從均勻分布,序列是隨機的。
[0037]如表I所示,給出了 NIST測試結果。從結果能夠看出,15項檢驗的通過率均落在置信區間[0.96015,1.2885]之中,并且所有的P_valueT大于0.0001,這說明基于規整元胞自動機的偽隨機數生成方法產生的偽隨機序列具有良好的隨機性。
[0038]表I NIST測試結果
[0039]
【權利要求】
1.一種基于規整元胞自動機的偽隨機數生成方法,其特征在于,所述方法包括以下處理步驟: 步驟1:令規整元胞自動機的長度為256個元胞,該規整元胞自動機的演化規則如下: s 1 =/(d ^ K)
=(I ? sI Φ sL ? ? ((2.4 ) ? (sIl.S>1.sL ) ? ((2.4—1.sI s.) 式中,f (.)為布爾函數;4為第i個元胞在t時刻的狀態,i的取值為l-25b ^為第1-1個元胞在t時刻的狀態,Stl 2為第1-2個元胞在t時刻的狀態,s;+l為第i+Ι個元胞在t時刻的狀態,為第i+2個元胞在t時刻的狀態,?;+Ι為第i個元胞在t+Ι時刻的狀態,所述狀態的取值為O或I ;@是異或運算符,.是與運算符,-是非運算符;元胞的邊界采用周期型,即 sO = S256,I = ^255 , S257 = ’ ^258 = S2 ; 步驟2,設置密鑰K,密鑰K為256比特的二進制序列kik2k3,k256 ;同時,設置需要產生的偽隨機序列長度為L比特;其中,L為正整數; 步驟3,將密鑰K作為規整元胞自動機在t = O時刻的全局狀態,七°56,規整元胞自動機根據步驟I中的演化規則向前迭代,依次產生不同t時刻的全局狀態;取被4除余I的時刻的全局狀態作為二進制序列輸出,當輸出的二進制序列長度大于或等于L比特時,規整元胞自動機停止迭代; 步驟4,若步驟3中規整元胞自動機輸出的二進制序列長度等于L比特,則將該二進制序列直接作為偽隨機序列輸出;若規整元胞自動機輸出的二進制序列長度大于L比特,則將長度L之后的比特舍去后的二進制序列作為偽隨機序列輸出;從而完成偽隨機數的生成。
【文檔編號】H04L9/20GK104135363SQ201410362589
【公開日】2014年11月5日 申請日期:2014年7月28日 優先權日:2014年7月28日
【發明者】平萍, 毛鶯池, 呂鑫, 許峰, 王志堅 申請人:河海大學