在给定时间间隔内产生随机数的方法和相应装置制造方法及图纸

技术编号:2847612 阅读:521 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种加密方法,其中,产生大小N固定在0到W-1之间多个随机数S↓[i]的一种随机数发生器被用于在0和预先确定的限制数值K之间产生一个随机数R。按照本发明专利技术:E31:产生一个范围从0-W-1的随机变量S↓[i],E32:如果该随机变量S↓[i]严格小于基数W中限制数值K的系数K↓[i],则随机数R的i阶系数R↓[i]等于随机数S↓[i],然后,对所有低于i的各个阶j产生一个在0-W-1之间的随机变量S↓[j],并且R↓[j]=S↓[j],E33:除非,如果所述随机变量大于基数W中限制数值K在i处的系数K↓[i],则所述系数R↓[i]根据i阶随机变量Si按照预先确定的一个函数来确定,接着为i-1阶的随机数R确定系数R↓[i-1],通过重复步骤E31-E33后立即降低阶数。本发明专利技术还涉及一种适合实施所述方法的电子元件以及一种其中集成有所述元件的芯片卡。本发明专利技术可应用于密码计算。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及从发生器获取一个在A和B之间随机数的方法,该发生器产生的随机数在0和W-1之间,所产生数的大小为N,产生的随机数所取的最大值为W-1,其W为,比如W=2N,而A和B是小于或大于数W的任意整数。这种情况发生在,比如适合进行密码计算的电子元件中,它包括一种N-位的随机数发生器,比如N=8。这样,当期望随机数在,比如,0和100之间或者300和1000之间的时候,能够在0和W-1=255之间产生随机数。应该注意,为了最后得到在300和10000之间的数,可以先确定0和9700之间的数,然后再把所得的数加上300。这种情况大多数发生在实际应用密码时,比如DSA签字,E1 Gamal签字或者编码,应付各种攻击对策的开发,等等。已经知道有几种方法可以从0和W-1之间的数当中在0和K之间产生随机数R。这些方法通常通过软件手段来实现,一方面用来控制产生大小为N的随机数的硬件发生器,另一方面用来控制进行特殊乘法、加法等运算的计算装置。第一种已知方法包括如下步骤a)确定最小整数p,使得K≤WP-1,b)产生p个随机数S0,S,...,SP-1,并形成变量S=Σi=0p-1Si*Wi]]>c)如果S>K,则返回到步骤b),否则令R=SR是要寻找的在0和K之间的随机数。方程S=Σi=0p-1Si*Wi]]>是变量S在基数(Wp-1,...,W1,W0)内分解/重组的表示。也可以用一种常用记号记作S=Sp-1Sp-2...S1S0。第二种已知方法包括如下步骤a)确定最小整数p,使得K≤WP-1,b)产生p个随机数S0,S,...,SP-1,并形成变量T=Σi=0p-2Si*Wi]]>而且S=T+SP-1*WP-1c)如果S>K,则令R=T,否则令R=S第三种已知方法包括如下步骤a)确定最小整数p,使得K≤WP-1,b)产生p个随机数S0,S,...,SP-1,并形成变量S=Σi=0p-1Si*Wi]]>c)令R=S mod(K+1),也就是S被K+1整除的余数,也称为用K+1对S作模数约简(modular reduction)。这三种方法可归纳为如下步骤a)产生p个随机数S0,S,...,SP-1,p是最小整数,K≤WP-1,并形成变量S=Σi=0p-1Si*Wi]]>b)从变量S确定随机数R。根据具体情况,在步骤b期间,要从S得到R可以通过重复步骤b(第一种方法),考虑或不考虑增加的随机数Sp-1(第二种方法),或者进行模数约简(第三种方法)。应该注意,在这三个方法中,如果所要求的是一个在A和K+A之间的数,那么给在0和K之间得到的数R加上A可满足要求。第一个方法的主要缺点是计算时间特别长,尤其是它不可预计计算时间产生p个随机数的步骤可能要被重复多次,而且还不可能在开始时就预计出重复该步骤的次数。第二和第三个方法的主要缺点是产生的随机数有偏向即在区间产生的数R当中,某些值比其它值更为可几。换句话说,产生的数R不是完全随机的(非-均匀分布)。这种偏向可能会对实施这些方法的密码系统的安全性能有重大影响。事实上,密码系统的安全性能假定了它们所采用的随机数在或[A,K+A]区间希望是均匀分布的(或者至少接近均匀分布)。最后,这三个方法总体上都慢,因为它们是对大量的数作运算,其大小N(就位数的意义来说)大于为实施而采用电路的大小。这尤其是因为数K是任意一个数,可以比W大,所以其大小可大于N。变量S也可能大。总之,对大量的数进行运算需要的方法既复杂,而且还耗费计算时间。本专利技术的基本目的是提议一种能特别迅速构建随机数R的方法。所以,本专利技术提出一种加密方法,在实施该方法的过程中,为了在0和一个预先确定的限制数值K之间产生一个随机数R,采用一种随机数发生器,该发生器可产生大小N固定在0和W-1之间的多个随机数Si,其中,比如但不一定必须,W=2N。按照本专利技术方法的基本步骤如下E31在0和W-1之间产生一个随机变量Si,E32如果该随机变量Si严格小于基数W中限制数值K的系数Ki,则随机数R的i阶系数Ri等于随机数Si,然后对任何一个小于i的阶J,在0-W-1之间产生一个随机变量Sj,并且Rj=Sj,E33否则,如果所述变量大于基数W中限制数值K的i阶系数Ki,则所述系数Ri按照一个预先确定的函数从i阶的随机变量Si来确定,并接着为i-1阶的随机数R确定系数Ri-1,重复步骤E31-E33后立即降低阶数。这样,本专利技术方法是从最有意义的系数RP-1开始,一个接一个地寻找所要求的随机数R的系数Ri-1。所以,所采用的随机数发生器实体一个接一个地产生随机变量Si,每重复一次产生一个变量。此外,由于执行步骤E33的次数少,故而本方法快捷。这是因为只要发生器实体产生的变量Si中有一个比限制数值K的相应系数Ki小,本方法就不再要求对阶数低于i的变量Sj进行处理从而常常只要计算数R最有意义的少量系数。最后,和已知的那些方法相比,本专利技术方法的优点是只处理那些不大于N位的数,N是寄存器以及用于实施的装置的其它计算电路的大小。比如,如果W等于SN,从基数(Wp-1,...,W1,W0)中K的分解产生的Ki必须小于W,因而其大小不会大于N位。类似,由随机数发生器实体产生的随机变量Si也具有N位。通过在基本步骤中增加一个设定初值的步骤以及一个重组随机数R的步骤,得到E1在基数(Wp-1,Wp-2,...,W0)中分解限制数值K(K=Σi=0p-1Ki*Wi]]>或者K=Kp-2...K1K0),i是循环指数(loop index),Ki是0和W-1之间限制数值K的i阶系数,p是限制数值K的次数(degree),E2设置布尔变量f的初值为TRUE,E3在指数为i的循环内进行下列运算,i是在p-1和0之间变化的整数E31在0和W0-1之间产生一个随机变量Si,E32如果该随机变量Si严格小于i阶系数Ki,则将布尔变量f设置为FALSE,E33_1如果该随机变量Si严格大于i阶系数Ki,而且布尔变量f为TRUE,则i阶系数Ri按照一个预先确定的函数从i阶随机变量Si来确定,E33_2否则Ri=SiE34减少循环指数i,E4通过重组基数W中随机系数Ri(R=Σi=0p-1Ri*Wi]]>或者Rp-1...R1R0)确定随机数R。具体地说,一旦布尔变量f被定位为FALSE,除非实施本方法初始化步骤E2,它就会一直保持这个值,因为没有准备将它重新定位为TRUE。只有当变量f为TRUE时,才执行步骤E32;所以,一旦变量f被定位为值FALSE,就不再执行步骤E33_1,从而按照本专利技术的方法可迅速结束。本专利技术的第二个目标是提出一种方法,利用该方法可构建一种分布均匀的随机数,或者可构建尽量接近所期望均匀分布的随机数。为达到这个目标,要选择一个合适的函数来从随机变量Si中确定系数Ri。按照本专利技术方法的第一实施方案,为了从i阶随机变量Si确定i阶系数Ri(步骤E33_1),要执行以下子步骤E33_11如果随机变量Si严格大于限制数值K的系数Ki,则产生一个新的随机变量Si,E3本文档来自技高网...

【技术保护点】
一种加密方法,其中,为了在0和一个预先确定的限制数值K之间产生一个随机数R,利用一种随机数发生器产生大小N固定在0到W-1之间的多个随机数S↓[i],该方法的特征在于:E31:在0和W-1之间产生一个随机变量S↓[i],E3 2:如果该随机变量S↓[i]严格小于基数W中限制数值K的系数K↓[i],则随机数R的i阶系数R↓[i]等于随机数S↓[i],然后,对所有低于i的各个阶j产生一个在0和W-1之间的随机变量S↓[j],并且R↓[j]=S↓[j],E33 :否则,如果所述随机变量大于基数W中限制数值K的i阶系数K↓[i],则所述系数R↓[i]按照一个预先确定的函数从i阶随机变量S↓[i]确定,然后为i-1阶的随机数R确定系数R↓[i-1],并通过重复步骤E31-E33后立即降低阶数。

【技术特征摘要】
【国外来华专利技术】FR 2003-10-24 03124351.一种加密方法,其中,为了在0和一个预先确定的限制数值K之间产生一个随机数R,利用一种随机数发生器产生大小N固定在0到W-1之间的多个随机数Si,该方法的特征在于E31在0和W-1之间产生一个随机变量Si,E32如果该随机变量Si严格小于基数W中限制数值K的系数Ki,则随机数R的i阶系数Ri等于随机数Si,然后,对所有低于i的各个阶j产生一个在0和W-1之间的随机变量Sj,并Rj=Sj,E33否则,如果所述随机变量大于基数W中限制数值K的i阶系数Ki,则所述系数Ri按照一个预先确定的函数从i阶随机变量Si确定,然后为i-1阶的随机数R确定系数Ri-1,并通过重复步骤E31-E33后立即降低阶数。2.按照权利要求2的方法,其中所执行的步骤如下E1在基数(Wp-1,Wp-2,...,W0)中以形式K=Σi=0p-1Ki*Wi]]>对限制数值K进行分解,这里,i是循环指数,Ki是在0和W-1之间限制数值K的i阶系数,p是限制数值K的次数,E2设置布尔变量f的初值为TRUE,E3在指数为i的循环内进行下列运算,i是在p-1和0之间变化的一个整数E31在0和W0-1之间产生一个随机变量Si,E32如果该随机变量Si严格小于i阶系数Ki,则布尔变量f被设置为FALSE,E33_1如果该随机变量Si严格大于i阶系数Ki,且布尔变量f为TRUE,则i阶系数Ri可按照一个预先确定的函数从i阶随机变量Si来确定,E33_2否则Ri=SiE34减少循环指数i,E4按照方程R=Σi=0p-1Ri*Wi,]]>重组基数W中的随机系数Ri确定随机数R。3.按照权利要求2的方法,其中,为了从i阶随机变量Si确定i阶系数Ri(步骤E33_1和E33_2),执行以下子步骤E33_11如果随机变量Si严格大于限制数值K的系数Ki,则产生一个新的随机变量Si,E33_12重复步骤E33_11直到随机变量Si小于限制数值K的系数Ki,然后使系...

【专利技术属性】
技术研发人员:M诺耶
申请(专利权)人:格姆普拉斯公司
类型:发明
国别省市:FR[法国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1