一種塊內(nèi)頻數(shù)檢測方法
【技術領域】
[0001] 本發(fā)明設及數(shù)據(jù)通信和信息安全領域,尤其是設及一種塊內(nèi)頻數(shù)檢測方法。
【背景技術】
[0002] 隨機序列在密碼應用技術中占有非常重要的地位,香農(nóng)的完善保密系統(tǒng)W及現(xiàn)代 密碼系統(tǒng)都將隨機序列視為安全算法的根本?,F(xiàn)在的計算機安全系統(tǒng)大量使用隨機序列, 如密鑰的產(chǎn)生、數(shù)字簽名、身份認證等,運充分體現(xiàn)了隨機數(shù)的應用價值。在應用密碼學中, 隨機性檢測的目的是采用概率統(tǒng)計方法分析測試隨機數(shù)發(fā)生器等生成的序列的隨機性,判 斷待檢序列在統(tǒng)計上是否難W和真隨機數(shù)區(qū)分開。不同的檢測算法從不同的角度刻畫待檢 序列與真隨機序列之間的差距。在經(jīng)過多年的研究和發(fā)展后隨機性檢測已經(jīng)取得了豐碩的 成果,目前已有大量的隨機性檢測算法,并且新的檢測算法還在不斷涌現(xiàn)。
[0003] 美國國家標準與技術研究院(National Institute of Standards and Technology,NIST)發(fā)布的SP 800-22標準建議了 16種用于隨機性測試的統(tǒng)計檢驗方法。 2009年,我國國家密碼管理局發(fā)布了《隨機性檢測規(guī)范》建議了 15種用于隨機性測試的統(tǒng)計 檢驗方法,其中塊內(nèi)頻數(shù)檢測是二者共有的檢測項。塊內(nèi)頻數(shù)檢測是檢測n比特的待檢序列 的分組長度為m的子序列中1所占的比例。如果1的比例接近于一半,則可W認為序列是隨機 的。當m取1時,塊內(nèi)頻數(shù)檢測退化為單比特頻數(shù)檢測。塊內(nèi)頻率測試是隨機性測試的基礎, 應首先進行。如果塊內(nèi)頻率檢測都無法通過,那么不用進行其他測試即可表明該序列不隨 機。因此,運種檢測具有非常重要的作用。必須具備極高的檢測效率,W便快速剔除那些明 顯不滿足隨機性特征的待檢樣本。
[0004] 現(xiàn)有塊內(nèi)頻數(shù)檢測的方法是:將待檢序列按長度m劃分為N個非重疊的子序列,多 余比特舍棄,然后計算各子序列中比特1所占的個數(shù)Ni(比例JTi),接著將所有子序列中比特1 所占的比例進行累加,得到統(tǒng)計量V = AmSi=I,2,...,nUi-1/2)2,隨后利用余不完全伽馬函數(shù) igamc計算P = igamc(N/2,V/2),并將P與顯著水平a比較,判斷檢序列是否通過檢測。我國 《隨機性檢測規(guī)范》規(guī)定待檢序列為n = 1000000比特,子序列比特長度m= 100。塊內(nèi)頻數(shù)檢 測算法中為了算出統(tǒng)計量需要執(zhí)行N次減法、N次平方、的欠除法、mN+N次加法和2次乘法,其 中N為完整的子序列的個數(shù)。W上計算量說明該檢測算法的效率并不高,實際檢測工作中需 要更加高效快捷的檢測系統(tǒng),進而大大提高整個隨機性檢測規(guī)范的檢測效率。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于:針對現(xiàn)有技術存在的問題,提供一種塊內(nèi)頻數(shù)快速檢測方法, 解決計算機在執(zhí)行現(xiàn)有塊內(nèi)頻數(shù)檢測方法時,效率低的問題。
[0006] 本發(fā)明的發(fā)明目的通過W下技術方案來實現(xiàn):
[0007] -種塊內(nèi)頻數(shù)檢測方法,其特征在于,該方法包括W下步驟:
[000引(1)將待檢序列按長度m劃分為N個非重疊的子序列,多余比特舍棄;
[0009] (2)對每個子序列利用查表法得出子序列中比特1的個數(shù)Ni;
[0010] (3)根據(jù)公式
,計算統(tǒng)計量V;
[00川 (4)計算P = igamc(N/2,V/2),如果P^a,則認為待檢序列通過檢測。
[0012] 作為進一步的技術方案,所述查表法為:對每個子序列,從頭至尾依序取連續(xù)W個 比特-,并利用查表直接得出運連續(xù)W個比特中比特1的個數(shù),反復多次查表可得到每個子序 列中比特1的個數(shù)Ni。
[0013] 作為進一步的技術方案,所述查表法的W值取8最合適:8比特是完整的一個字節(jié), 無需進行字節(jié)間的拼接或拆分;并且此時表的規(guī)模僅為256字節(jié),適和絕大部分處理系統(tǒng)。
[0014] 作為進一步的技術方案,利用查表法計算每個子序列中比特1的個數(shù)時,每次處理 連續(xù)兩個子序列共25字節(jié),運樣可W解決單個子序列沒有按字節(jié)對齊的問題。
[0015] -種塊內(nèi)頻數(shù)檢測方法,其特征在于,該方法包括W下步驟:
[0016] (1)將待檢序列按長度m劃分為N個非重疊的子序列,多余比特舍棄;
[0017] (2)對每個子序列利用查表法得出子序列中比特1的個數(shù)Ni;
[001引(3)根據(jù)公式
,計算統(tǒng)計量V;
[0019] (4)計算P = igamc(N/2,V/2),如果P含日,則認為待檢序列通過檢測。
[0020] 作為進一步的技術方案,所述查表法為:對每個子序列,從頭至尾依序取連續(xù)W個 比特數(shù),并利用查表法直接得出運連續(xù)W個比特中比特1的個數(shù)Ni。
[0021] 作為進一步的技術方案,所述查表法的W值取8最合適:8比特是完整的一個字節(jié), 無需進行字節(jié)間的拼接或拆分;并且此時表的規(guī)模僅為256字節(jié),適和絕大部分處理系統(tǒng)。
[0022] 作為進一步的技術方案,利用查表法計算每個子序列中比特1的個數(shù)時,每次處理 連續(xù)兩個子序列共25字節(jié),運樣可W解決一個子序列沒有按字節(jié)對齊的問題。
[0023] 作為進一步的技術方案,計算統(tǒng)計值V時為了將運算代價非常高的除法從N次降低 為1次,采用了如下簡化公式
[0025] -種塊內(nèi)頻數(shù)檢測方法,其特征在于,該方法包括W下步驟:
[0026] (1)將待檢序列按長度m劃分為N個非重疊的子序列,多余比特舍棄;
[0027] (2)對每個子序列利用查表法得出子序列中比特1的個數(shù)Ni;
[002引(3)根據(jù)公式
.,.計算統(tǒng)計量V;
[0029] (4)先計算出P=igamc(N/2,V/2)含a時統(tǒng)計量V的上界V,然后比較統(tǒng)計量V和闊值 (上界)V,若V<v,則認為待檢序列通過檢測。
[0030] 作為進一步的技術方案,所述V可W在檢測前計算出來,V值在N= 10000,a = 0.01 時取10331.933578(保留六位小數(shù))。
[0031] 與現(xiàn)有技術相比,本發(fā)明具有檢查效率高、占用存儲空間小等優(yōu)點。
【附圖說明】
[0032] 圖I是塊內(nèi)頻數(shù)檢測方法實施例1的流程圖。
[0033] 圖2是塊內(nèi)頻數(shù)檢測方法實施例2的流程圖。
[0034] 圖3是塊內(nèi)頻數(shù)檢測方法實施例3的流程圖。
【具體實施方式】
[0035] 下面結合附圖和具體實施例對本發(fā)明進行詳細說明。
[0036] 實施例1
[0037] 經(jīng)研究發(fā)現(xiàn),現(xiàn)有塊內(nèi)頻數(shù)檢測效率并不高的主要原因是:子序列中1的個數(shù)統(tǒng)計 采用了單比特統(tǒng)計方式,使得每次只能處理一個比特,CPU的字長沒有得到充分利用,如果 改為一次處理多個比特,那么處理速度將會有明顯的提升。因此本發(fā)明提供一種塊內(nèi)頻數(shù) 檢測方法,該方法的主要原理為:利用查表法直接得出W個比特中比特1的個數(shù),進而大大減 小CPU計算次數(shù),提高處理效率。
[0038] 本實施例的該方法可通過W下系統(tǒng)實現(xiàn),如圖1所示,該系統(tǒng)包括拆分子序列模 塊、查表統(tǒng)計各子序列中1的個數(shù)模塊、計算統(tǒng)計量模塊、計算P值并與顯著水平比較模塊。 待檢數(shù)據(jù)流經(jīng)過拆分子序列模塊被拆分成多個非重疊子序列后進入查表統(tǒng)計各子序列中1 的個數(shù)模塊,后者統(tǒng)計每個子序列中的個數(shù)后送入計算統(tǒng)計量模塊,后者計算特定的統(tǒng)計 量并送入計算P值并與顯著水平比較模塊W分析待檢序列是否通過檢測并反饋判斷結果。
[0039] 拆分子序列模塊:主要完成拆分子序列模塊步驟SI:將待檢序列按長度m劃分為N 個非重疊的子序列,多余比特舍棄。我國《隨機性檢測規(guī)范》規(guī)定m取100。
[0040] 查表統(tǒng)計各子序列中1的個數(shù)模塊:主要完成查表統(tǒng)計各子序列中1的個數(shù)步驟 S2:對每個子序列,利用查表法得出各子序列中比特1的個數(shù)Ni和頻率JTi = Ni/m。
[0041 ]所述查表法為:對每個子序列,從頭至尾依序取連續(xù)W個比特,并利用查表直接得 出運連續(xù)W個比特中比特1的個數(shù),反復多次查表可得到每個子序列中比特1的個數(shù)Ni。查表 法中表的元素個數(shù)為綜合分析W比特的獲取W及表的規(guī)模后得出W取8較合適。首先,8比 特剛好是一個字節(jié),無需做額外的字節(jié)拆分或拼接;其次,表的規(guī)模為256字節(jié),適合絕大部 分系統(tǒng)。記B = Bi M…MBl為連續(xù)L個字節(jié)形成的數(shù)組,其中Bi,l含i含L為一個字節(jié)。記g(B, t)表示計算Bi M…IlBt運t個字節(jié)中比特1的總個數(shù)。g(B,l)表示計算1個字節(jié)Bi中比特1的 個數(shù),可通過1次查表實現(xiàn),g(B,t)可通過t次查表實現(xiàn)。
[0042] 每個子序列的比特長度為m=100,沒有按字節(jié)對齊,一個簡單的解決辦法是每次 處理連續(xù)兩個子序列共25字節(jié)。
[0043] 查表統(tǒng)計各子序列中1的個數(shù)步驟S2的步驟如下:
[0044] (1)從待檢序列中取連續(xù)的兩個子序列m字節(jié)表示為Ei,1 y。5):第i個子序 列和第i + 1個子序列。如果待檢序列已全部取完無法再取出兩個子序列,則結束步驟S2;否 則執(zhí)行下一步。
[0045] (2)查表計算第i個子序列的1的個數(shù)和第i+1個子序列的1的個數(shù):
[0046] Ni = g 巧i,12)+g(Ei3〉〉4,l);
[0047] M'+i =妍£i4,切+g化 1.; 。
[004引(3)轉步驟(1)。
[0049] 計算統(tǒng)計量模塊:主要完成計算統(tǒng)計量步驟S3:根據(jù)公式
計算統(tǒng)計量V。
[0050] 計算P值并與顯著水平比較模塊:主要完成計算P值并與顯著水平比較步驟S4:計 算P = Igamc(N/2,V/2),如果P ^ a,則認為待檢序列通過檢測。
[0化1]實施例2
[0052] 本實施例在實施例1的基礎上做了進一步優(yōu)化,主要優(yōu)化地方是:實施例1的算法 在計算統(tǒng)計量步驟中使用1所占的比例Ki,運需要N次除法,但處理器執(zhí)行除法的代價非常 高,大約是乘法運算時間的10- 20倍;本實施例通過優(yōu)化統(tǒng)計量計算流程優(yōu)化了除法執(zhí)行次 數(shù)。
[0053] 本實施例的該方法可通過W下系統(tǒng)實現(xiàn),如圖2所示,該系統(tǒng)包括拆分子序列模 塊、查表統(tǒng)計各子序列中1的個數(shù)模塊、計算簡化的統(tǒng)計量模塊、計算P值并與顯著水平比較 模塊。待檢數(shù)據(jù)流經(jīng)過拆分子序列模塊被拆分成多個非重疊子序列后進入查表統(tǒng)計各子序 列中1的個數(shù)模塊,后者統(tǒng)計每個子序列中的個數(shù)后送入計算簡化的統(tǒng)計量,后者計算特定 的統(tǒng)計量并