本發(fā)明涉及信息安全技術領域,具體地指一種無條件安全的可驗證隨機數(shù)生成方法。
背景技術:
長期以來,隨機數(shù)在信息安全的眾多應用領域都扮演著重要的角色,很多時候,隨機數(shù)是關系到安全、公平與巨大利益的關鍵因素,比如身份認證、密鑰協(xié)商、電子彩票、比賽抽簽等。隨機數(shù)分為真隨機數(shù)和偽隨機數(shù):真隨機數(shù)選取了真實世界的自然隨機性,比如通過某個人敲擊鍵盤的頻率以及物理噪聲發(fā)生器等方式,產(chǎn)生的隨機數(shù)便是真隨機數(shù)。現(xiàn)實生活中,通過物理條件產(chǎn)生的真隨機數(shù)數(shù)量較少,代價往往昂貴,并且其隨機性無法被驗證;偽隨機數(shù)是選取真隨機數(shù)作為種子,通過數(shù)學算法生成的大量隨機數(shù),偽隨機數(shù)可以生成數(shù)量龐大,與真隨機性同分布的隨機數(shù)。但是由于真隨機數(shù)的隨機性無法被驗證,對于使用真隨機數(shù)作為種子的偽隨機數(shù),其隨機性也無法得到驗證。當今社會,真隨機數(shù)的生成普遍缺乏透明性,因此對于對隨機數(shù)的安全性依賴較大的場景(如:車牌搖號,彩票,線上賭場等),很多時候我們無法確信所謂的隨機數(shù)是否是真正隨機的。
隨著信息安全的發(fā)展,如何生成可驗證的真隨機數(shù)變得日益重要。一般來說,隨機數(shù)的隨機性與可驗證性是兩個相互矛盾的安全屬性,同時實現(xiàn)這兩個屬性需要用到密碼學的知識?,F(xiàn)有技術中,可驗證隨機數(shù)的生成策略要么需要一個可信第三方,要么就是基于困難問題的安全假設,因此也限制了其應用范圍與安全級別。另外,面向較高安全需求的隨機數(shù)生成方法的設計還需要考慮可能存在的一些影響隨機性的攻擊手段。
技術實現(xiàn)要素:
本發(fā)明的目的是針對現(xiàn)有技術的不足之處,提出一種無條件安全的可驗證隨機數(shù)生成方法。
本發(fā)明條件安全的可驗證隨機數(shù)生成方法,包括如下步驟:
1)初始化一次無條件安全秘密共享需要的n個參與者,將每個參與者編號為1~n,設置門限參數(shù)t、最大的不誠實參與者的個數(shù)b,n為自然數(shù);
2)每個參與者1~n生成一個雙變量t-1階隨機對稱多項式,并將秘密s放入常數(shù)項;
3)每一個參與者1~n將自身的編號代入多項式,則生成單變量多項式,并將所述單變量多項式發(fā)送至其他參與者;
4)每一個參與者1~n收到所述單變量多項式后,將自身的編號代入多項式,則生成驗證值d,并將所述驗證值d發(fā)送至其他參與者;
5)上一步結束后,每一個參與者1~n擁有所述單變量多項式、發(fā)出去n-1個驗證值d,接收到n-1個驗證值d;每一個參與者1~n將發(fā)給其他參與者的驗證值與從該參與者接收到的驗證值相比對,判斷是否相等,共比對n-1次,若不相等,則廣播自身的編號與對方參與者的編號;
6)在廣播區(qū)域,每出現(xiàn)一組編號,每個參與者1~n將廣播區(qū)域中出現(xiàn)的各組編號從參與者集合g={1,2,…,n}中去掉該組序號,記剩余組序號集合為g,若|g′|≥n-b,則參與者認為驗證通過,輸出驗證標記v=1,并廣播計算出的恢復值d′,將該參與者編號加入統(tǒng)計集合l,否則驗證不通過,輸出驗證標記v=0;
7)若輸出驗證碼v=1的參與者的個數(shù)大于b,則生成隨機數(shù)成功,否則生成隨機數(shù)不成功,返回步驟2);
8)判斷是否滿足|g′|≥n-b>3b,是則根據(jù)統(tǒng)計集合l內(nèi)參與者廣播的恢復值d′通過譯碼算法恢復出目標一元t-1次多項式,參與者將自變量代入0,獲得目標可驗證隨機數(shù)r,否則返回步驟2)。
優(yōu)選地,所述步驟8)中譯碼算法為berlekamp-massey譯碼算法。
優(yōu)選地,按照上述方法生成若干個目標隨機數(shù)r輸入至隨機數(shù)發(fā)生器,生成大量隨機數(shù)。
本發(fā)明提供了一種無條件安全的可驗證隨機數(shù)生成方法,考慮了強計算能力的攻擊者,不依賴任何密碼學安全假設,實現(xiàn)了如下無條件的安全屬性:
1)正確性:如果參與者正確的履行本方法,最終本方法將生成不可預測的隨機數(shù);
2)健壯性:即使部分參與者合謀,他們也無法破解本方法從而預測出隨機數(shù)的任何信息。
3)不可預測性:本方法執(zhí)行完畢后,所有參與者的隨機因子會公平的作用到最終的隨機數(shù);
4)可驗證性:可驗證性使得每個參與者可以驗證其是否參與了隨機數(shù)的生成。
附圖說明
圖1為本發(fā)明的流程圖。
具體實施方式
以下結合附圖和具體實施例對本發(fā)明作進一步的詳細描述。
如圖1所示,本發(fā)明一種無條件安全的可驗證隨機數(shù)生成方法,包括如下步驟:
1)初始化一次無條件安全秘密共享需要的n個參與者,將每個參與者編號為1~n,設置門限參數(shù)t、最大的不誠實參與者的個數(shù)b,n為自然數(shù);
2)每個參與者1~n生成一個雙變量t-1階隨機對稱多項式,并將秘密s放入常數(shù)項,所有秘密s的和即為目標可驗證隨機數(shù)r;
3)每一個參與者1~n將自身的編號代入多項式,則生成單變量多項式,并將所述單變量多項式發(fā)送至其他參與者;
4)每一個參與者1~n收到所述單變量多項式后,將自身的編號代入多項式,則生成驗證值d,并將所述驗證值d發(fā)送至其他參與者;
5)上一步結束后,每一個參與者1~n擁有所述單變量多項式、發(fā)出去n-1個驗證值d,接收到n-1個驗證值d;每一個參與者1~n將發(fā)給其他參與者的驗證值與從該參與者接收到的驗證值相比對,判斷是否相等,共比對n-1次,若不相等,則廣播自身的編號與對方參與者的編號;
6)在廣播區(qū)域,每出現(xiàn)一組編號,每個參與者1~n將廣播區(qū)域中出現(xiàn)的各組編號從參與者集合g={1,2,…,n}中去掉該組序號,記剩余組序號集合為g,若|g′|≥n-b,則參與者認為驗證通過,輸出驗證標記v=1,并廣播計算出的恢復值d′,將該參與者編號加入統(tǒng)計集合l,否則驗證不通過,輸出驗證標記v=0;
7)若輸出驗證碼v=1的參與者的個數(shù)大于b,則生成隨機數(shù)成功,否則生成隨機數(shù)不成功,返回步驟2);
8)在滿足|g′|≥n-b>3b的條件下,根據(jù)統(tǒng)計集合l內(nèi)參與者廣播的恢復值d′通過譯碼算法恢復出目標一元t-1次多項式,參與者將自變量代入0,即可得到目標可驗證隨機數(shù)r。
由于門限為t,因此不誠實參與者最多有t-1,設不誠實參與者個數(shù)為b,b,記誠實的參與者為數(shù)字1,不誠實的參與者為數(shù)字0,根據(jù)參與者集合到全0或全1的海明距離來糾錯,此時有b個參與者是合謀的,有n-b個參與者是隨機的,因此要使結果可被恢復且隨機,需滿足等式(n-b)/2>b,即n>3b,由于在驗證階段會減掉b個,因此使得n>4b,n>4b是為了在去掉b個不誠實參與者的情況下也能滿足剩余數(shù)量大于3b。在滿足|g′|≥n-b>3b的條件下,可以恢復出目標一元t-1次多項式。
本發(fā)明的原理如下:n個參與者兩兩之間可以實現(xiàn)數(shù)據(jù)的私密傳輸。每個參與者生成一個隨機數(shù),最終通過本方法計算出一個可驗證隨機數(shù)。在真隨機數(shù)生成之前,不同參與者通過驗證算法達成一致,確認本次真隨機數(shù)的生成過程能過成功進行。本發(fā)明無可信的第三方分配機構,所有參與者協(xié)同的進行生成隨機數(shù)并抵抗不誠實的參與者。參與者分別在其他n-1個參與者之間分享他的隨機數(shù)s,最終的真隨機數(shù)值為r=s1+s2+…+sn。
在本分布式方法中,驗證算法用以抵抗一定數(shù)量惡意參與者合謀攻擊的可能,此攻擊主要為被動攻擊,即惡意參與者不會主動的破壞協(xié)議,他會按照協(xié)議的要求做他能做的所有事以提前破解隨機數(shù)并不被發(fā)現(xiàn),多個惡意參與者可以合謀以獲取更多的信息。
本發(fā)明一個實施例的具體步驟如下:
a.初始化:初始化n個參與者pk(1≤k≤n,為參與者的序號),其中n>4b,b為最大不誠實的參與者的個數(shù),b。令q為一個大素數(shù)且gf(q)為階為q的有限域。接下來的所有計算全在gf(q)中進行。每個參與者維護一個空的統(tǒng)計集合l。
b.生成雙變量隨機多項式:
參與者pk選擇任意數(shù)ak,ij∈gfq,其中第一序數(shù)k=1,2,…,n,第一計數(shù)i=1,2,…,t-1,第二計數(shù)j=1,2,…,t-1作為系數(shù)生成一個雙變量t-1次多項式:
發(fā)送過程中,每個參與者同時發(fā)送與接收,參與者pk表示序列號為k的參與者,后文的pl,pm同理。
c.發(fā)送秘密:
參與者pk計算單變量多項式fk(x,l)通過私密信道發(fā)給參與者pl,第二序數(shù)l=1,2,…,n,l≠k。如表1所示,所有參與者兩兩之間進行發(fā)送與接收:
表1
d.交換驗證值:
發(fā)送秘密完畢后,每個參與者收到了來自其他參與者的n-1個單變量多項式,參與者pl在步驟c.中收到了n-1個數(shù)f1(x,l),f2(x,l),…,fn(x,l)(無fl(x,l)),記為fm(x,l),交換集合m={1,2,…,l-1,l+1,…,n},接下來,他將驗證值d即fm(m,l)發(fā)送給其他參與者pm,第三序數(shù)m=1,2,…,n,m≠l,如表2所示。
表2
e.驗證:
對于每個第四序數(shù)σ∈m,步驟d.中的參與者pm可以判斷等式fσ(m,l)=fσ(l,m),m≠l)是否相等,若不等,他廣播此<σ;m,l>數(shù)據(jù)包至公開信道作為一個反駁。
f.計算統(tǒng)計集合:
參與者pm繼續(xù)做如下事:如果對于某一個<σ;m,l>數(shù)據(jù)包中的第四序數(shù)σ(σ≠m),其后面的第三序數(shù)m和第二序數(shù)l如果在公開信道被反駁,就從參與者集合g={1,2,…,n}中去掉該m與l,記剩余集合為g,若|g|≥n-b,則將此第四序數(shù)σ的值加入到統(tǒng)計集合l當中。
如果|l|≥n-b,表示有大于n-b個誠實參與者。參與者pm輸出驗證標記v=1表示驗證通過。否則,pm棄掉當前份額并輸出驗證標記v=0。若輸出v=0的參與者個數(shù)大于b,驗證不通過。
g.構建:
參與者pm在輸出v=1后,計算并廣播出恢復值d′=∑u∈lf(u)(0,m),u為第三計數(shù),在|l|≥n-b>3b的條件下,任何人可以使用belerkamp-masseydecoder恢復出目標一元t-1次多項式,自變量代入0可直接得到目標隨機數(shù)r。belerkamp-masseydecoder算法亦可用門限方案中的最大一致集隨機算法替代,參考文獻anapplicationofcoveringdesigns:determiningthemaximumconsistentsetofsharesinathresholdscheme.[j].1999,53:225-237reesrs,stinsondr,weir,etal..
最后,如需大量隨機數(shù),將本方法的可驗證隨機數(shù)真隨機數(shù)作為種子,通過偽隨機數(shù)發(fā)生器進行生成。
本說明書中未作詳細描述的內(nèi)容屬于本領域專業(yè)技術人員公知的現(xiàn)有技術。