高效可证安全的伪随机生成器的制作方法

文档序号:7686332阅读:256来源:国知局
专利名称:高效可证安全的伪随机生成器的制作方法
技术领域
本发明涉及密码学,尤其涉及可证明安全的高效伪随机生成器。此外,由于随机算法和现代通信技术都需要频繁使用随机序列,因此本发明也涉及到这些领域。

背景技术
本发明是基于可证安全密码理论的,以下在此意义上描述了伪随机生成器的研究背景。
很多密码算法都需要使用足够长的随机序列(包括数序列和位序列,下面统称为随机序列)来实现安全性,如将随机位序列和明文消息逐位异或可立刻得到一个一次一密的流密码系统。由于产生长的随机序列的代价往往很高,实际应用中常常代之以算法产生的伪随机序列。本发明设计了一个扩展随机序列的算法,通常称为伪随机生成器。直观地说,伪随机生成器是一个确定性的算法,它接受一个较短的随机种子,通过计算产生出一个更长的和随机序列在计算上不可区分的伪随机序列。伪随机生成器的效率通常是在忽略具体的计算模型下,以每个模乘运算输出的比特数(或输出每比特需要的模乘数)来衡量的,它是衡量其应用价值的重要指标。在实际应用中,由于很难找到有足够大扩张率的函数,一般的构造方法是迭代一些扩张率较小的函数,将每次迭代的输出串联起来以得到足够长的伪随机序列。这主要体现在迭代函数(Iterator)和伪随机序列提取函数(Extractor)上。图1表示现有伪随机生成器的功能方框图,其中模块101表示输入的随机种子S0,模块102表示迭代函数I,模块103表示伪随机序列提取函数E,{Si}为状态序列,它随着函数I的每一次作用更新到一个新的状态。最后ri表示第i轮输出的伪随机值,根据算法的计算能力,最终可以输出多项式p(n)长的伪随机序列。
现代密码学是建立在计算复杂性基础上的,基于各种困难性假设,已出现了很多可证安全的伪随机生成器的构造方法。如基于离散对数问题、整数分解问题、RSA问题、DDH问题以及多变量二次方程组的难解性等问题的生成器。由这些方法产生的伪随机序列满足可证安全性,并有足够大的扩展能力。不过这些算法的效率都很低,在允许预运算的条件下,目前最快的生成器(Gennaro生成器)能在一个模乘运算下渐进地输出o(n)个伪随机位。但是渐进效率并不能反映实际应用的情况,其具体安全性情况下的效率可能很低。如由于基于的困难性假设太强,为了生成1个随机位Gennaro生成器至少需消耗1500个基本运算(只含加减乘和比特逻辑运算)以保证安全性,因此不适于实际应用。
目前关于伪随机序列生成器的专利主要集中在电路设计或设备制造上,也有一些专利和算法相关,这些算法大多数是基于放射源和物理噪声提取或移位寄存器理论的。这些专利产生的序列能通过很多针对随机性的统计检验,但是都不具有可证安全性。因此,其输出序列虽能用于实现随机算法和现代通信技术,但用于实现密码算法却不够安全,目前很多基于这些生成器的密码算法都找到了有效的攻击方法。另外,基于放射源或物理噪声的生成器生成长随机序列的代价往往太高,且这样产生的随机序列往往带有相关性或偏向性,并可能无法重现,因此其实际应用价值非常有限。国内专利CN 1240318A和本发明有类似之处,都是设计可证安全的伪随机生成器。不过前者是基于小指数离散对数问题的,这个困难性假设目前还未经过广泛的检验,缺乏有力的安全性证明;相比之下,本发明是基于有限域上多项式的重构问题的,这是问题已有几十年的研究背景,已被接受为一个标准的困难性假设。同时,专利CN 1240318A听述算法在一个模乘运算下只能渐进地输出1个随机位,效率大约只及本发明的1/11。
本发明的困难性基础是有限域上多项式的重构问题,它等价于Reed-Solomon解码问题。该问题可简单地描述为从含噪声的多项式点值对中恢复出多项式。该问题具有很长的研究历史,在叙述其研究现状前,先给出一个简单定义。
多项式重构问题给定正整数n,k,t,满足k<t<n;

为一素数阶的有限域,向量z=(z1,z2,…,zn)和

且当i≠j时满足zi≠zj。求解所有的对<p(x),I>,使得p(x)是

中次数小于k的多项式,|I|≥t且对于所有的i∈I,p(zi)=yi。
为方便起见,下面将该问题的实例简写为PR[z,k,t]。当t≥(n+k)/2时,可以有效地恢复出唯一的多项式p;当时,存在有效的算法求解实例PR[z,k,t]的多个解。当时,目前最有效的求解算法的复杂性接近min(Cnk,Cnt),当min(Cnk,Cnt)和n满足指数关系时,已证明这是一个NP问题。由于重构多项式只需使用插值或多项式求值计算,因此基于该问题的密码算法往往高效;另一方面,由于目前还未找到求解该问题的量子算法,也使得该问题适于设计更安全的密码算法。


发明内容
本发明提供了一个伪随机生成器的构造方法,它的安全性基于有限域上多项式重构问题的困难性,因此是可证安全的。同时,由于算法的效率很高,很适于实际应用。
本发明所述的伪随机生成器包括如下步骤 步骤一,随机地选择一个大素数q,构造有限域

用N=|q|表示q的二进制长度。再选择合适的整数n,k,t,使k<t<n且使min(Cnk,Cnt)和n满足指数关系,令n为算法的安全参数。
步骤二,令z=(1,2,…,n),从有限域

中随机地选择k+1个系数{ai}i=1k+1构造多项式p(x)=akxk+ak-1xk-1+…+a1x+a0,再选择集合使|I|≥t。对于每个i∈I,计算yi=p(i)mod q。最后从集合

中随机地选择n-|I|个值作为其余的y值。从而构造出一个多项式重构问题的实例PR[z,k,t]。
步骤三,选择l,使N-l=w(logN),其中w(logN)表示一个比logN增长更快的数。另选择一个N-l位的数x0作为种子,计算α1=p(x0)mod q。由于

为N位长,令x1为α1的最高N-l有效位,输出α1的其余二进制位为σ1。
步骤四,计算α2=p(x1)mod q。令x2为α2的最高N-l有效位,输出α2的其余二进制位为σ2。一直计算下去可以得到输出序列σ1,σ2,…,σi,…,σm(n),其中m(n)表示n的多项式。
上述算法的输出序列是伪随机的,其安全性取决于多项式重构问题的困难性,即由该困难问题可以证明这个隐藏多项式的输出是伪随机的,因此将输出序列和同长随机序列进行区分的能力可用于求解多项式重构问题。图2描述了算法第i次迭代的执行框架图。在效率方面,分析以上步骤可知该算法大约每求解一次多项式的值可输出l个随机位,使用快速多项式求值算法,求解一个k次多项式需花费k次乘法和k次加法运算,由于一个快速模q乘法运算的开销大约是模q加法运算的

倍,因此这个生成器可以在每个模乘运算下可输出大约

个随机位。



图1为现有伪随机生成器的功能框架图; 图2为本发明所述伪随机生成器的第i次迭代框架图; 图3为本发明的具体实施步骤图; 图4为加入了随机参数选择的伪随机生成器框架图。

具体实施例方式 下面结合附图对本发明的技术方案作详细说明。
图3显示了具体执行本发明的步骤图,为了清楚地描述本发明,下面描述一个具体的实施例,细化图3各步骤如下 步骤301,按照现在普遍的计算能力,可以选择安全级别为280,即使得破解本发明需要大约280次运算;同时为了满足多项式重构问题的困难性,使N=1024,随机地选择一个N位的素数q,构造有限域

选择n=200,k=80,t=100,使得且Cnk大致为2n;令l=944,使得N-l=80是一个比log2N=10明显大的数; 步骤302,选择z=(1,2,…,n),从有限域

中随机地选择k+1个系数{ai}i=1k+1构造多项式p(x)=akxk+ak-1xk-1+…+a1x+a0,再从集合{1,…,n}中随机地选择t个数,记入集合I。对于每个i∈I,计算yi=p(i)mod q。最后从集合

中随机地选择n-t个值作为其余的y值,构造出一个多项式重构问题的实例。
步骤303,选择一个80位的随机数x0,计算α1=p(x0)mod q。令x1为α1的最高N-l有效位,输出α1的其余二进制位为σ1。再计算α2=p(x1)mod q。令x2为α2的80个最高有效位,输出α2的其余二进制位为σ2。按此方式迭代地计算下去可以得到输出序列σ1,σ2,…,σi,…,σm(n),其中m(n)表示n的任一整多项式。
不难发现通过计算一个k次多项式,上述实例的每个迭代过程可以输出近l=944位的随机值。使用多项式求值的霍纳规则(Horner Rules),计算一个k次多项式至多需要k次模q的乘法和加法运算,由于N位乘法比N位加法大约慢

倍,从而每个模乘运算可以输出大致11个伪随机位。这比专利CN 1240318A所述算法快了近11倍。通过采用更复杂的多项式求值算法,可以在允许对多项式系数进行预处理的情况下进一步提高算法的效率。
另外,本发明需要在构造多项式重构问题的实例时选择一些随机参数,包括从

中选择k+1个多项式系数和n-t个噪声值,从集合{1,…,n}中随机地选择t个数,以及从

中随机地选择一个种子等。有很多办法可以实现这些随机参数的选取,图4给出了加入随机参数选择方法的伪随机生成器框架,它包含了以下步骤 步骤401,采用基于放射源或物理噪声的随机序列生成器来产生一个短的随机值r,将r传给步骤402; 步骤402,将r拆分为种子和其它参数,运行一个参数较短的可证安全的伪随机生成器,如BBS生成器,Gennaro生成器等,输出伪随机序列,将其传给步骤403; 步骤403,将输入的伪随机序列拆分为随机参数,执行图3中的除参数选择外的其它步骤,最终输出足够长的伪随机序列。
由于这些参数只需产生一次,后续迭代过程不需要重新选择,并且实际应用中这些随机参数相比于最终所需的伪随机值要短得多,因此从整体效率来看,步骤401和402带来的开销是值得的。而从安全性的角度分析,虽然最终传入步骤403的值是伪随机的,但是由于步骤402采用的是可证安全的伪随机生成器,其输出值和随机序列是不可区分的,因此对于本发明的安全性没有影响。
虽然本说明书只描述了所述算法的细节,而未更多地谈及本发明的应用,但由于伪随机序列在密码学、计算机算法等研究中的重要价值,其应用面是非常广泛的,如本发明可直接应用于构造一次一密的可证安全流密码算法,设计高效的随机算法等。所以,本发明的精神和范围不应该局限于此处所描述的实施例。
权利要求
1一种伪随机数或位序列的生成方法,其特征为,
这个伪随机生成器是由有限域上的多项式来定义的。选择一个有限域上多项式重构问题的实例PR[z,k,t],再选择一个随机N-l位的种子x0,从i=0至多项式m(n),计算αi+1=p(xi)mod q,令xi+1为αi+1的最高N-l个有效位,输出αi+1的其余二进制位为σi+1,其中q为一个N位长的大素数,p(x)为有限域Fq上的k次多项式,整数l满足N-l比logN明显大。照此方式计算下去可以得到一个多项式长的输出序列σ1,σ2,…,σi,…,σm(n),这个输出序列是伪随机的;
2如权利1所述的伪随机数生成方法,其特征在于,数值q至少有1024位;
3如权利1所述的伪随机数生成方法,其特征在于,数值t小于
且满足k<t<n;
4如权利1所述的伪随机数生成方法,其特征在于,数值t和k满足min(Cnk,Cnt)接近2n;
5如权利1所述的伪随机数生成方法,其特征在于,数值xi至少有80位;
6如权利1所述的伪随机数生成方法,其特征在于,数值σi大致有944位;
7如权利1所述的伪随机数生成方法,其特征在于,每个模乘运算可以输出接近l/k位随机值。
8如权利1所述的伪随机数生成方法,其特征在于,这个伪随机生成器是密码上可证安全的,生成器的输出序列和随机序列的区分算法可用于求解多项式重构问题;
9如权利1所述的伪随机数生成方法,其特征在于,这个伪随机生成器的随机参数可以通过组合基于放射源或物理噪声的随机生成器和其它可证安全的伪随机生成器来选择。
全文摘要
本发明设计了一种伪随机序列的生成方法,能够在很小的开销下输出较长的伪随机位。这个伪随机生成器是密码上可证安全的,其安全性基于有限域上多项式重构问题的困难性,可以满足可证安全的密码算法和协议的设计需要,如可直接用于设计比现有加密过程更高效的可证安全流密码算法和分组加密算法等。在一个实施例中,本发明是由一个Fq上的多项式定义的伪随机生成器,q是一个1024位的大素数。通过选择合适的参数,可以在一个模q乘法运算下输出近11个伪随机位,同时其安全级别可以达到280,能满足目前大多数密码应用的需要。此外,由于随机算法和现代通信技术都需要频繁使用随机序列,因此本发明也可应用到这些领域。
文档编号H04L9/18GK101677268SQ20081004610
公开日2010年3月24日 申请日期2008年9月19日 优先权日2008年9月19日
发明者石泓松, 李发根, 蔚 邓, 婷 钟, 伟 陈 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1