随机数产生方法

文档序号:6563750阅读:408来源:国知局
专利名称:随机数产生方法
技术领域
本发明涉及信息安全、通信、数字接口、计算机等领域中随机数的产生方法。
背景技术
在信息安全领域,密钥的产生、密钥的交换、认证、加密和解密等都和随机数相关。在 通信领域,信号的调制和解调、信号的传输、信号的抗干扰、信号的捕获、信号的跟踪等也 必须使用随机数。在现代科技中,随机数的应用无处不在。
一般以统计特性来描述随机数,随机数一般可以分为正态分布、均匀分布、指数分布等 。在信息安全、通信等领域,经常使用正态分布和均匀分布的随机数。
在密码学、信息安全领域,随机数有如下用途
会话密钥的产生
鉴别方案中用来避免重放攻击每次使用不同的随机数 RSA密钥产生大素数的产生和测试 很多挑战-应答协议里的挑战因素
在信息安全领域,安全不仅限于密钥的安全,也依赖于随机数的质量。 一般对随机数有 如下要求
(1) 均匀分布
在任何尺度上看其统计规律是均匀的,比如0、 l的平均各半,字节0 255的出现概率是 1/256,双字节0 65535的出现概率是l/65536等等。
(2) 独立性
无法推导或预测,也不能靠观察过去预知将来。
由于对随机数有以上特征的要求,因此,随机数的产生方法的研究非常重要。 随机数的产生方法目前已经有很多种,包括
一、 物理方法 一是放射性物质随机蜕变;二是电子管回路的热噪声,如可将热噪声源 ,装于计算机外部,按其噪声电压的大小表示不同的随机数。此法产生的随机性最好,但产 生过程复杂。
二、 査随机数表法"Rand Table" (1955年由美国兰德公司编制,有随机数IOO万 个。随机数表中的数字具有均匀的随机性,没有周期性。使用时,可根据需要任取一段(横
或竖)。如需20个,便可从中取(顺次)20个,需要几位取几位,随机数表无所谓位数, 不能四舍五入。
三、 递推公式产生法由于第i + l个随机数是由第i个按一定公式推算出来的,故并非 真正的随机数。但满足a)有较好的随机、均匀性。b)周期长、重复性差。c)算法过程
不退化(即不能反复出现某一常数。)d)算法可再现,速度快。这是目前最常用的方法,
特别在通信领域和信息安全领域。典型的算法有线性同余法、线性移位法。比如m序列。
四、 加密的方法使用密码学中已知的加密算法,以某个值(可以是其它方法产生的随
机数或者本算法加密的结果)作为密钥,对另外的一个值进行加密运算(可以是其它方法或 者本算法加密的结果),使用解密的结果作为随机数使用。这种方法是密码学、信息安全领 域中常用的算法。
以上几种方法,第一种可以产生真正的随机数,但是由于使用复杂, 一般很少使用,第 二种很少使用,第三种在信息安全、通信领域得到了广泛的使用。第四种方法在信息安全领 域得到了广泛的使用。
以上的算法有一个共同的缺点,就是其产生的结果,只有其统计特性才满足某个要求, 对每个产生的随机数序列,要满足某个指定的特性一般无法作到。比如,在某些认证、密钥
共享机制里,为了提高安全性,要求使用的随机数必须有指定个数的o或者非o数,目前的算
法无法直接作到。比如使用m序列,也只能保证产生的序列在足够多样本的情况下才基本满 足0和1的个数相等,对于某个样本,根本做不到保证产生相等的0和1。

发明内容
本发明所要解决的技术问题是,提供一种能产生任意指定个数的O和非零数随机序列的 随机数产生方法。
本发明为解决上述技术问题所采用的技术方案是,随机数产生方法,其特征在于,包括 以下步骤
a、 产生第一随机序列,该序列的维数为n,包含指定个数为m的0,与指定个数为n-m的 非零数;
b、 产生第二随机序列,该序列为在l至n范围内产生一个符合指定分布规律的n维随机序
列;
c、 以第二随机序列中各分量为依据,调整第一随机序列中各分量的顺序;
d、 将调整后的第一随机序列作为随机数输出。
本发明的有益效果是,随机数产生方法简单,产生速度快;产生的随机数每个样本均具
备指定的特性,而不仅仅是统计特性。
具体实施例方式
在某些使用非对称方式进行认证、密钥协商或者密钥共享的场合,为了保证系统的安全 性,要求公钥必须具备的特性之一就是公钥向量的成员必须具备指定个数的O或者具备大于 指定个数的0。比如在目前广泛使用的数字接口的认证过程中,其公钥为一个40维的向量, 要求必须20个成员为0, 20个成员必须为1。并且其连续分配的公钥必须是随机的,否则对其 安全性会构成严重威胁。直接使用现有已知的随机数产生方式,均无法产生满足要求的随机 数。
本发明可以产生满足上述要求的随机数,其实现主要分为以下3个部分
(1) 确定随机数的维数以及随机数的特性,比如要求必须具备多少个O;
(2) 按照指定的特性产生任意的一个序列,满足(1)的要求;
(3) 产生一个在随机数维数范围内的均匀分布序列,以该序列中各分量为依据,调整 随机数中各分量的顺序。
本发明可以产生两类随机序列指定O和l个数的伪随机序列以及指定O和非O个数的伪随 机序列。
指定0和1个数的伪随机序列,即产生一个lXn维的向量,要求该向量中包含指定m ( m〈n)个数的O和n-m个的l,并且0和1的在该向量中的位置是随机的。以要求产生有3个0的1 X8维的随机数为例,产生方法如下
(1) 首先确定产生向量的维数为8,以及指定的0的个数为3,同时确定0和1需要遵从何 种分布。比如正态分布、均匀分布、指数分布等。在信息安全领域, 一般需要均匀分布的随 机数。本方案以均匀分布为例进行说明,推而广之,对于其它分布也适用;
(2) 产生3个0, 5个1,然后将其任意组合成一个1X8的向量。该向量为第一随机序列
,其组合的方式可以将各分量按照顺序排列,也可以扰乱进行排列,对此没有特殊要求;设 定本步骤产生的随机序列为(n, r2, r3,……r8},其中r尸l; r2=l; r3=l; r4=l; r5=0;
f6=0; r7=0; T8=l;
(3) 在l至8范围内产生一个均匀分布的lX8维随机序列卜l,a2,a3……a8},该随机序 列为第二随机序列,其中&1=4;a2=5;a3=2;a4=6;a5=8;a6=l;a7=3; a8=7;
(4) 将随机序列{al, a2, a3,……an}中各分量作为随机序列{rL r2, r3,……r8}的下标, 依次下标重新排列个分量在第一随机序列中的位置;调整后的第一随机序列为
{r4, r5, r2, T6, rs, ri, r3, r了l;
(5)调整后的第一随机序列为随机数{1, 0, 1, 0, 1, 1, 1, 0}。 另外,步骤(4)也可以用其它方法,变换第一随机序列中各分量的位置
(4)将随机序列{al, a2, a3,……an}中各分量作为随机序列{rL r2, r3,……r8}的下标, 对第一随机序列中各分量进行交换,交换的方式可以是ri与rai互换位置(i=l, 2,……8) ;也可以采用其它的交换方式进行扰乱;以ri与"i互换为例{n, r2, r3……
rn} = {l, 1, 1, 1, 0, 0,0,1};{al, a2, a3……an} = {4, 5, 2, 6, 8, 1, 3, 7},进行8次互换过程如下:第l次互换,i==1;ri=1;al=4,rai=r4=l; n与r4位置互换得到{1, 1, 1, 1, 0, 0, 0, 1}
第2次互换,i==2;r2=0;a2=5,rai=r5=0; r2与r5位置互换得到{1, 0, 1, 1, 1, 0, 0, 1};
第3次互换,i==3,a3==2r3与r2位置互换得到{1, 1, 0, 1, 1, 0, 0,1};
第4次互换,i==4,a4==6r4与r6位置互换得到{1, 1, 0, 0, 1, 1, 0,1};
第5次互换,i==5,a5==8r5与rs位置互换得到{1, 1, 0, 0, 1, 1, 0,1};
第6次互换,i==6,a6==1r6与n位置互换得到{1, 1, 0, 0, 1, 1, 0,1};
第7次互换,i==7,a7==3r7与r3位置互换得到{1, 1, 0, 0, 1, 1, 0,1};
第8次互换,i==8,a8==7r8与r7位置互换得到{1, 1, 1, 1, 0, 0, 1,0};
(1)调整后的第一随机序列为随机数{1, 1, 1, l,O,O, 1,0}。 输出的随机数满足规定的要求具备指定个数的0和1,具备指定的分布特征。 指定0和非0个数的伪随机序列,指的定需要产生一个lXn维的向量,要求产生的每个向
量,必须包含指定m (m〈n)个数的0和n-m个的非0值,并且0和非0数的在该向量中的位置是
随机的。这样的随机序列有两种产生方式。 产生方法一
(1) 首先确定产生向量的维数为8,以及指定的0的个数为3,同时确定O和非O数需要遵 从何种分布,本方案以均匀分布为例进行说明,推而广之,对于其它分布也适用;
(2) 产生3个0, 5个非0数,然后将其任意组合成一个1X8的向量。该向量为第一随机 序列,其组合的方式可以将各分量按照顺序排列,也可以扰乱进行排列,对此没有特殊要求 ;设定本步骤产生的随机序列为(n, r2, r3, r8},其中r尸O; r2=0; r3=0; r4=25;
T5=29; T6=8; T7=l; T8=9;
(3) 在l至8范围内产生一个均匀分布的lX8维随机序列卜l,a2,a3……a8},该随机序 列为第二随机序列,其中&1=4;a2=5;a3=2;a4=6;a5=8;a6=l;a7=3; a8=7;
(4) 将随机序列{al, a2, a3,……an}中各分量作为随机序列{rL r2, r3,……r8}的下标, 对第一随机序列中各分量进行交换,交换的方式可以是ri与rai互换位置(i=l, 2,……8)
;也可以采用其它的交换方式进行扰乱;以ri与"i互换为例{n, r2, r3……
rn} = {0, 0, 0, 25, 29, 8, 1, 9}; {al, a2, a3......an} = {4, 5, 2, 6, 8, 1, 3, 7},进行8次互换过程如下
第l次互换,i=l; r1=l; al=4,rai=r4=l;n与r4位置互换得到{25, 0, 0, 0, 29, 8, 1, 9}
第2次互换,i=2; r2=0; a2=5,rai=r5=0; r2与rs位置互换得到{25, 29, 0, 0, 0, 8, 1, 9}
第3次互换, 第4次互换, 第5次互换, 第6次互换, 第7次互换, 第8次互换,
L=3, L=4, L=5, L=6, L=7, L=8,
a3=2 a4=6 a5=8 a6=l a7=3 a8=7
r3与r2位置互换得至l r4与r6位置互换得至l r5与r8位置互换得至l r6与n位置互换得至l r7与r3位置互换得至l
{25, 0, 29 , 0, 0, 8, 1, 9} {25, 0, 29 , 8, 0, 0, 1, 9} {25, 0, 29 , 8, 9, 0, 1, 0} {0, 0, 29 , 8, 9, 25, 1, 0} {0, 0, 1 , 8, 9, 25, 29, 0} {0, 0, 1 , 8, 9, 25, 0, 29}
r8与r7位置互换得至l (2)调整后的第一随机序列为随机数{0, 0, 1 , 8, 9, 25, 0, 29}。 产生方法二
(1) 首先按照前述的方式产生具备指定的m个O和n-m个l个数的随机序列R;
(2) 按照指定分布产生一个n-m非零随机序列;
(3) 使用步骤(2)产生的伪随机序列R对步骤(1)产生的n-m个非零数进行替换,可 以按照指定的方式进行替换,也可以按照随机的方式进行替换;
(4) 使用步骤(3)产生的经替换后的随机序列R作为满足要求的随机数的输出。 对于本方案中产生指定分布随机数的方法,已经有很多公开的算法,本处不再描述。本
随机数产生方法可以使用在特殊要求的场合比如在某些认证和共享密钥形成的场合作为公 钥使用,也适用于IC卡、USB Key、芯片等基于硬件实现的场合,以及基于软件实现的场合
权利要求
1.随机数产生方法,其特征在于,包括以下步骤a、产生第一随机序列,该序列的维数为n,包含指定个数为m的0,与指定个数为n-m的非零数;b、产生第二随机序列,该序列为在1至n范围内产生一个符合指定分布规律的n维随机序列;c、以第二随机序列中各分量为依据,调整第一随机序列中各分量的顺序;d、将调整后的第一随机序列作为随机数输出。
全文摘要
本发明涉及信息安全、通信、数字接口、计算机等领域中随机数的产生方法。本发明所要解决的技术问题是,提供一种能产生任意指定个数的0和非零数随机序列的随机数产生方法。本发明为解决上述技术问题所采用的技术方案是,随机数产生方法,包括以下步骤a.产生第一随机序列,该序列的维数为n,包含指定个数为m的0;b.产生第二随机序列,该序列为在1至n范围内产生一个符合指定分布规律的n维随机序列;c.以第二随机序列中各分量为依据,调整第一随机序列中各分量的顺序;d.将调整后的第一随机序列作为随机数输出。本发明的有益效果是,随机数产生方法简单,产生速度快;产生的随机数每个样本均具备指定的特性。
文档编号G06F7/58GK101187856SQ20071020300
公开日2008年5月28日 申请日期2007年12月12日 优先权日2007年12月12日
发明者刘冬梅, 刘贤洪 申请人:四川长虹电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1