專(zhuān)利名稱(chēng):高效可證安全的偽隨機(jī)生成器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及密碼學(xué),尤其涉及可證明安全的高效偽隨機(jī)生成器。此外,由于隨機(jī)算法和現(xiàn)代通信技術(shù)都需要頻繁使用隨機(jī)序列,因此本發(fā)明也涉及到這些領(lǐng)域。
背景技術(shù):
本發(fā)明是基于可證安全密碼理論的,以下在此意義上描述了偽隨機(jī)生成器的研究背景。
很多密碼算法都需要使用足夠長(zhǎng)的隨機(jī)序列(包括數(shù)序列和位序列,下面統(tǒng)稱(chēng)為隨機(jī)序列)來(lái)實(shí)現(xiàn)安全性,如將隨機(jī)位序列和明文消息逐位異或可立刻得到一個(gè)一次一密的流密碼系統(tǒng)。由于產(chǎn)生長(zhǎng)的隨機(jī)序列的代價(jià)往往很高,實(shí)際應(yīng)用中常常代之以算法產(chǎn)生的偽隨機(jī)序列。本發(fā)明設(shè)計(jì)了一個(gè)擴(kuò)展隨機(jī)序列的算法,通常稱(chēng)為偽隨機(jī)生成器。直觀地說(shuō),偽隨機(jī)生成器是一個(gè)確定性的算法,它接受一個(gè)較短的隨機(jī)種子,通過(guò)計(jì)算產(chǎn)生出一個(gè)更長(zhǎng)的和隨機(jī)序列在計(jì)算上不可區(qū)分的偽隨機(jī)序列。偽隨機(jī)生成器的效率通常是在忽略具體的計(jì)算模型下,以每個(gè)模乘運(yùn)算輸出的比特?cái)?shù)(或輸出每比特需要的模乘數(shù))來(lái)衡量的,它是衡量其應(yīng)用價(jià)值的重要指標(biāo)。在實(shí)際應(yīng)用中,由于很難找到有足夠大擴(kuò)張率的函數(shù),一般的構(gòu)造方法是迭代一些擴(kuò)張率較小的函數(shù),將每次迭代的輸出串聯(lián)起來(lái)以得到足夠長(zhǎng)的偽隨機(jī)序列。這主要體現(xiàn)在迭代函數(shù)(Iterator)和偽隨機(jī)序列提取函數(shù)(Extractor)上。圖1表示現(xiàn)有偽隨機(jī)生成器的功能方框圖,其中模塊101表示輸入的隨機(jī)種子S0,模塊102表示迭代函數(shù)I,模塊103表示偽隨機(jī)序列提取函數(shù)E,{Si}為狀態(tài)序列,它隨著函數(shù)I的每一次作用更新到一個(gè)新的狀態(tài)。最后ri表示第i輪輸出的偽隨機(jī)值,根據(jù)算法的計(jì)算能力,最終可以輸出多項(xiàng)式p(n)長(zhǎng)的偽隨機(jī)序列。
現(xiàn)代密碼學(xué)是建立在計(jì)算復(fù)雜性基礎(chǔ)上的,基于各種困難性假設(shè),已出現(xiàn)了很多可證安全的偽隨機(jī)生成器的構(gòu)造方法。如基于離散對(duì)數(shù)問(wèn)題、整數(shù)分解問(wèn)題、RSA問(wèn)題、DDH問(wèn)題以及多變量二次方程組的難解性等問(wèn)題的生成器。由這些方法產(chǎn)生的偽隨機(jī)序列滿足可證安全性,并有足夠大的擴(kuò)展能力。不過(guò)這些算法的效率都很低,在允許預(yù)運(yùn)算的條件下,目前最快的生成器(Gennaro生成器)能在一個(gè)模乘運(yùn)算下漸進(jìn)地輸出o(n)個(gè)偽隨機(jī)位。但是漸進(jìn)效率并不能反映實(shí)際應(yīng)用的情況,其具體安全性情況下的效率可能很低。如由于基于的困難性假設(shè)太強(qiáng),為了生成1個(gè)隨機(jī)位Gennaro生成器至少需消耗1500個(gè)基本運(yùn)算(只含加減乘和比特邏輯運(yùn)算)以保證安全性,因此不適于實(shí)際應(yīng)用。
目前關(guān)于偽隨機(jī)序列生成器的專(zhuān)利主要集中在電路設(shè)計(jì)或設(shè)備制造上,也有一些專(zhuān)利和算法相關(guān),這些算法大多數(shù)是基于放射源和物理噪聲提取或移位寄存器理論的。這些專(zhuān)利產(chǎn)生的序列能通過(guò)很多針對(duì)隨機(jī)性的統(tǒng)計(jì)檢驗(yàn),但是都不具有可證安全性。因此,其輸出序列雖能用于實(shí)現(xiàn)隨機(jī)算法和現(xiàn)代通信技術(shù),但用于實(shí)現(xiàn)密碼算法卻不夠安全,目前很多基于這些生成器的密碼算法都找到了有效的攻擊方法。另外,基于放射源或物理噪聲的生成器生成長(zhǎng)隨機(jī)序列的代價(jià)往往太高,且這樣產(chǎn)生的隨機(jī)序列往往帶有相關(guān)性或偏向性,并可能無(wú)法重現(xiàn),因此其實(shí)際應(yīng)用價(jià)值非常有限。國(guó)內(nèi)專(zhuān)利CN 1240318A和本發(fā)明有類(lèi)似之處,都是設(shè)計(jì)可證安全的偽隨機(jī)生成器。不過(guò)前者是基于小指數(shù)離散對(duì)數(shù)問(wèn)題的,這個(gè)困難性假設(shè)目前還未經(jīng)過(guò)廣泛的檢驗(yàn),缺乏有力的安全性證明;相比之下,本發(fā)明是基于有限域上多項(xiàng)式的重構(gòu)問(wèn)題的,這是問(wèn)題已有幾十年的研究背景,已被接受為一個(gè)標(biāo)準(zhǔn)的困難性假設(shè)。同時(shí),專(zhuān)利CN 1240318A聽(tīng)述算法在一個(gè)模乘運(yùn)算下只能漸進(jìn)地輸出1個(gè)隨機(jī)位,效率大約只及本發(fā)明的1/11。
本發(fā)明的困難性基礎(chǔ)是有限域上多項(xiàng)式的重構(gòu)問(wèn)題,它等價(jià)于Reed-Solomon解碼問(wèn)題。該問(wèn)題可簡(jiǎn)單地描述為從含噪聲的多項(xiàng)式點(diǎn)值對(duì)中恢復(fù)出多項(xiàng)式。該問(wèn)題具有很長(zhǎng)的研究歷史,在敘述其研究現(xiàn)狀前,先給出一個(gè)簡(jiǎn)單定義。
多項(xiàng)式重構(gòu)問(wèn)題給定正整數(shù)n,k,t,滿足k<t<n;
為一素?cái)?shù)階的有限域,向量z=(z1,z2,…,zn)和
且當(dāng)i≠j時(shí)滿足zi≠zj。求解所有的對(duì)<p(x),I>,使得p(x)是
中次數(shù)小于k的多項(xiàng)式,|I|≥t且對(duì)于所有的i∈I,p(zi)=y(tǒng)i。
為方便起見(jiàn),下面將該問(wèn)題的實(shí)例簡(jiǎn)寫(xiě)為PR[z,k,t]。當(dāng)t≥(n+k)/2時(shí),可以有效地恢復(fù)出唯一的多項(xiàng)式p;當(dāng)時(shí),存在有效的算法求解實(shí)例PR[z,k,t]的多個(gè)解。當(dāng)時(shí),目前最有效的求解算法的復(fù)雜性接近min(Cnk,Cnt),當(dāng)min(Cnk,Cnt)和n滿足指數(shù)關(guān)系時(shí),已證明這是一個(gè)NP問(wèn)題。由于重構(gòu)多項(xiàng)式只需使用插值或多項(xiàng)式求值計(jì)算,因此基于該問(wèn)題的密碼算法往往高效;另一方面,由于目前還未找到求解該問(wèn)題的量子算法,也使得該問(wèn)題適于設(shè)計(jì)更安全的密碼算法。
發(fā)明內(nèi)容
本發(fā)明提供了一個(gè)偽隨機(jī)生成器的構(gòu)造方法,它的安全性基于有限域上多項(xiàng)式重構(gòu)問(wèn)題的困難性,因此是可證安全的。同時(shí),由于算法的效率很高,很適于實(shí)際應(yīng)用。
本發(fā)明所述的偽隨機(jī)生成器包括如下步驟 步驟一,隨機(jī)地選擇一個(gè)大素?cái)?shù)q,構(gòu)造有限域
用N=|q|表示q的二進(jìn)制長(zhǎng)度。再選擇合適的整數(shù)n,k,t,使k<t<n且使min(Cnk,Cnt)和n滿足指數(shù)關(guān)系,令n為算法的安全參數(shù)。
步驟二,令z=(1,2,…,n),從有限域
中隨機(jī)地選擇k+1個(gè)系數(shù){ai}i=1k+1構(gòu)造多項(xiàng)式p(x)=akxk+ak-1xk-1+…+a1x+a0,再選擇集合使|I|≥t。對(duì)于每個(gè)i∈I,計(jì)算yi=p(i)mod q。最后從集合
中隨機(jī)地選擇n-|I|個(gè)值作為其余的y值。從而構(gòu)造出一個(gè)多項(xiàng)式重構(gòu)問(wèn)題的實(shí)例PR[z,k,t]。
步驟三,選擇l,使N-l=w(logN),其中w(logN)表示一個(gè)比logN增長(zhǎng)更快的數(shù)。另選擇一個(gè)N-l位的數(shù)x0作為種子,計(jì)算α1=p(x0)mod q。由于
為N位長(zhǎng),令x1為α1的最高N-l有效位,輸出α1的其余二進(jìn)制位為σ1。
步驟四,計(jì)算α2=p(x1)mod q。令x2為α2的最高N-l有效位,輸出α2的其余二進(jìn)制位為σ2。一直計(jì)算下去可以得到輸出序列σ1,σ2,…,σi,…,σm(n),其中m(n)表示n的多項(xiàng)式。
上述算法的輸出序列是偽隨機(jī)的,其安全性取決于多項(xiàng)式重構(gòu)問(wèn)題的困難性,即由該困難問(wèn)題可以證明這個(gè)隱藏多項(xiàng)式的輸出是偽隨機(jī)的,因此將輸出序列和同長(zhǎng)隨機(jī)序列進(jìn)行區(qū)分的能力可用于求解多項(xiàng)式重構(gòu)問(wèn)題。圖2描述了算法第i次迭代的執(zhí)行框架圖。在效率方面,分析以上步驟可知該算法大約每求解一次多項(xiàng)式的值可輸出l個(gè)隨機(jī)位,使用快速多項(xiàng)式求值算法,求解一個(gè)k次多項(xiàng)式需花費(fèi)k次乘法和k次加法運(yùn)算,由于一個(gè)快速模q乘法運(yùn)算的開(kāi)銷(xiāo)大約是模q加法運(yùn)算的
倍,因此這個(gè)生成器可以在每個(gè)模乘運(yùn)算下可輸出大約
個(gè)隨機(jī)位。
圖1為現(xiàn)有偽隨機(jī)生成器的功能框架圖; 圖2為本發(fā)明所述偽隨機(jī)生成器的第i次迭代框架圖; 圖3為本發(fā)明的具體實(shí)施步驟圖; 圖4為加入了隨機(jī)參數(shù)選擇的偽隨機(jī)生成器框架圖。
具體實(shí)施例方式 下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案作詳細(xì)說(shuō)明。
圖3顯示了具體執(zhí)行本發(fā)明的步驟圖,為了清楚地描述本發(fā)明,下面描述一個(gè)具體的實(shí)施例,細(xì)化圖3各步驟如下 步驟301,按照現(xiàn)在普遍的計(jì)算能力,可以選擇安全級(jí)別為280,即使得破解本發(fā)明需要大約280次運(yùn)算;同時(shí)為了滿足多項(xiàng)式重構(gòu)問(wèn)題的困難性,使N=1024,隨機(jī)地選擇一個(gè)N位的素?cái)?shù)q,構(gòu)造有限域
選擇n=200,k=80,t=100,使得且Cnk大致為2n;令l=944,使得N-l=80是一個(gè)比log2N=10明顯大的數(shù); 步驟302,選擇z=(1,2,…,n),從有限域
中隨機(jī)地選擇k+1個(gè)系數(shù){ai}i=1k+1構(gòu)造多項(xiàng)式p(x)=akxk+ak-1xk-1+…+a1x+a0,再?gòu)募蟵1,…,n}中隨機(jī)地選擇t個(gè)數(shù),記入集合I。對(duì)于每個(gè)i∈I,計(jì)算yi=p(i)mod q。最后從集合
中隨機(jī)地選擇n-t個(gè)值作為其余的y值,構(gòu)造出一個(gè)多項(xiàng)式重構(gòu)問(wèn)題的實(shí)例。
步驟303,選擇一個(gè)80位的隨機(jī)數(shù)x0,計(jì)算α1=p(x0)mod q。令x1為α1的最高N-l有效位,輸出α1的其余二進(jìn)制位為σ1。再計(jì)算α2=p(x1)mod q。令x2為α2的80個(gè)最高有效位,輸出α2的其余二進(jìn)制位為σ2。按此方式迭代地計(jì)算下去可以得到輸出序列σ1,σ2,…,σi,…,σm(n),其中m(n)表示n的任一整多項(xiàng)式。
不難發(fā)現(xiàn)通過(guò)計(jì)算一個(gè)k次多項(xiàng)式,上述實(shí)例的每個(gè)迭代過(guò)程可以輸出近l=944位的隨機(jī)值。使用多項(xiàng)式求值的霍納規(guī)則(Horner Rules),計(jì)算一個(gè)k次多項(xiàng)式至多需要k次模q的乘法和加法運(yùn)算,由于N位乘法比N位加法大約慢
倍,從而每個(gè)模乘運(yùn)算可以輸出大致11個(gè)偽隨機(jī)位。這比專(zhuān)利CN 1240318A所述算法快了近11倍。通過(guò)采用更復(fù)雜的多項(xiàng)式求值算法,可以在允許對(duì)多項(xiàng)式系數(shù)進(jìn)行預(yù)處理的情況下進(jìn)一步提高算法的效率。
另外,本發(fā)明需要在構(gòu)造多項(xiàng)式重構(gòu)問(wèn)題的實(shí)例時(shí)選擇一些隨機(jī)參數(shù),包括從
中選擇k+1個(gè)多項(xiàng)式系數(shù)和n-t個(gè)噪聲值,從集合{1,…,n}中隨機(jī)地選擇t個(gè)數(shù),以及從
中隨機(jī)地選擇一個(gè)種子等。有很多辦法可以實(shí)現(xiàn)這些隨機(jī)參數(shù)的選取,圖4給出了加入隨機(jī)參數(shù)選擇方法的偽隨機(jī)生成器框架,它包含了以下步驟 步驟401,采用基于放射源或物理噪聲的隨機(jī)序列生成器來(lái)產(chǎn)生一個(gè)短的隨機(jī)值r,將r傳給步驟402; 步驟402,將r拆分為種子和其它參數(shù),運(yùn)行一個(gè)參數(shù)較短的可證安全的偽隨機(jī)生成器,如BBS生成器,Gennaro生成器等,輸出偽隨機(jī)序列,將其傳給步驟403; 步驟403,將輸入的偽隨機(jī)序列拆分為隨機(jī)參數(shù),執(zhí)行圖3中的除參數(shù)選擇外的其它步驟,最終輸出足夠長(zhǎng)的偽隨機(jī)序列。
由于這些參數(shù)只需產(chǎn)生一次,后續(xù)迭代過(guò)程不需要重新選擇,并且實(shí)際應(yīng)用中這些隨機(jī)參數(shù)相比于最終所需的偽隨機(jī)值要短得多,因此從整體效率來(lái)看,步驟401和402帶來(lái)的開(kāi)銷(xiāo)是值得的。而從安全性的角度分析,雖然最終傳入步驟403的值是偽隨機(jī)的,但是由于步驟402采用的是可證安全的偽隨機(jī)生成器,其輸出值和隨機(jī)序列是不可區(qū)分的,因此對(duì)于本發(fā)明的安全性沒(méi)有影響。
雖然本說(shuō)明書(shū)只描述了所述算法的細(xì)節(jié),而未更多地談及本發(fā)明的應(yīng)用,但由于偽隨機(jī)序列在密碼學(xué)、計(jì)算機(jī)算法等研究中的重要價(jià)值,其應(yīng)用面是非常廣泛的,如本發(fā)明可直接應(yīng)用于構(gòu)造一次一密的可證安全流密碼算法,設(shè)計(jì)高效的隨機(jī)算法等。所以,本發(fā)明的精神和范圍不應(yīng)該局限于此處所描述的實(shí)施例。
權(quán)利要求
1一種偽隨機(jī)數(shù)或位序列的生成方法,其特征為,
這個(gè)偽隨機(jī)生成器是由有限域上的多項(xiàng)式來(lái)定義的。選擇一個(gè)有限域上多項(xiàng)式重構(gòu)問(wèn)題的實(shí)例PR[z,k,t],再選擇一個(gè)隨機(jī)N-l位的種子x0,從i=0至多項(xiàng)式m(n),計(jì)算αi+1=p(xi)mod q,令xi+1為αi+1的最高N-l個(gè)有效位,輸出αi+1的其余二進(jìn)制位為σi+1,其中q為一個(gè)N位長(zhǎng)的大素?cái)?shù),p(x)為有限域Fq上的k次多項(xiàng)式,整數(shù)l滿足N-l比logN明顯大。照此方式計(jì)算下去可以得到一個(gè)多項(xiàng)式長(zhǎng)的輸出序列σ1,σ2,…,σi,…,σm(n),這個(gè)輸出序列是偽隨機(jī)的;
2如權(quán)利1所述的偽隨機(jī)數(shù)生成方法,其特征在于,數(shù)值q至少有1024位;
3如權(quán)利1所述的偽隨機(jī)數(shù)生成方法,其特征在于,數(shù)值t小于
且滿足k<t<n;
4如權(quán)利1所述的偽隨機(jī)數(shù)生成方法,其特征在于,數(shù)值t和k滿足min(Cnk,Cnt)接近2n;
5如權(quán)利1所述的偽隨機(jī)數(shù)生成方法,其特征在于,數(shù)值xi至少有80位;
6如權(quán)利1所述的偽隨機(jī)數(shù)生成方法,其特征在于,數(shù)值σi大致有944位;
7如權(quán)利1所述的偽隨機(jī)數(shù)生成方法,其特征在于,每個(gè)模乘運(yùn)算可以輸出接近l/k位隨機(jī)值。
8如權(quán)利1所述的偽隨機(jī)數(shù)生成方法,其特征在于,這個(gè)偽隨機(jī)生成器是密碼上可證安全的,生成器的輸出序列和隨機(jī)序列的區(qū)分算法可用于求解多項(xiàng)式重構(gòu)問(wèn)題;
9如權(quán)利1所述的偽隨機(jī)數(shù)生成方法,其特征在于,這個(gè)偽隨機(jī)生成器的隨機(jī)參數(shù)可以通過(guò)組合基于放射源或物理噪聲的隨機(jī)生成器和其它可證安全的偽隨機(jī)生成器來(lái)選擇。
全文摘要
本發(fā)明設(shè)計(jì)了一種偽隨機(jī)序列的生成方法,能夠在很小的開(kāi)銷(xiāo)下輸出較長(zhǎng)的偽隨機(jī)位。這個(gè)偽隨機(jī)生成器是密碼上可證安全的,其安全性基于有限域上多項(xiàng)式重構(gòu)問(wèn)題的困難性,可以滿足可證安全的密碼算法和協(xié)議的設(shè)計(jì)需要,如可直接用于設(shè)計(jì)比現(xiàn)有加密過(guò)程更高效的可證安全流密碼算法和分組加密算法等。在一個(gè)實(shí)施例中,本發(fā)明是由一個(gè)Fq上的多項(xiàng)式定義的偽隨機(jī)生成器,q是一個(gè)1024位的大素?cái)?shù)。通過(guò)選擇合適的參數(shù),可以在一個(gè)模q乘法運(yùn)算下輸出近11個(gè)偽隨機(jī)位,同時(shí)其安全級(jí)別可以達(dá)到280,能滿足目前大多數(shù)密碼應(yīng)用的需要。此外,由于隨機(jī)算法和現(xiàn)代通信技術(shù)都需要頻繁使用隨機(jī)序列,因此本發(fā)明也可應(yīng)用到這些領(lǐng)域。
文檔編號(hào)H04L9/18GK101677268SQ20081004610
公開(kāi)日2010年3月24日 申請(qǐng)日期2008年9月19日 優(yōu)先權(quán)日2008年9月19日
發(fā)明者石泓松, 李發(fā)根, 蔚 鄧, 婷 鐘, 偉 陳 申請(qǐng)人:電子科技大學(xué)