一种伪随机数生成方法

文档序号:6650071阅读:598来源:国知局
专利名称:一种伪随机数生成方法
技术领域
本发明涉及一种信息安全技术,尤其涉及一种为密码系统生成伪随机数的方法。
背景技术
随机数在许多网络安全应用中扮演着重要的角色。基于密码学的大量网络安全算法都使用了随机数,例如,(1)、在认证方案中的密钥分配,用临时交互号来作为握手信息之一,以阻止重复攻击;(2)、会话密钥产生,可由密钥分配中心或者由委托方产生;(3)、公钥加密算法中密钥的产生,等等。
在相互认证或者会话密钥生成之类的应用中,对随机数的统计随机性的要求并不很高,但是要求产生的随机数序列是不可预测的。所谓的“真随机数序列”,是各个数之间的统计独立性而使序列不可预测。不过,真正的随机数序列很少用,一般的随机数序列是由算法产生的,只要敌手不能够从先前的随机数推导出后面的随机数就行了,这样的数一般称为伪随机数。
随机数生成器已经嵌入在大多数编译器中了,产生随机数仅仅是函数调用而已。计算机不可能产生完全随机的数字,所谓的随机数发生器都是通过一定的算法对事先选定的若干个随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数就是伪随机数。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。
随机数的应用对随机数的产生提出了两个不同的要求随机性和不可预测性。
随机序列应该具有良好的统计特性。其评价标准是(1)、分布一致性序列中的随机数的分布应该是一致的,即出现的频率大约相等;(2)、独立性序列中的任何数都不能由其它数导出。对随机序列的分布一致性已经有较好的测试方法。但是,尽管有许多测试方法可以用于表明一个序列的独立性不好,还没有某种方法可以表明一个序列的独立性好。通常的策略是多进行一些测试,直到可认为它的独立性是足够强的。密码算法大量使用了这种“似乎随机”的随机数序列,即伪随机数序列。

发明内容
本发明提供了一种伪随机数生成方法,可以在没有外部即时输入的情况下,产生具有良好密码性质的伪随机数。
本发明所述的伪随机数的生成方法,包括如下步骤步骤一,对第一寄存器中的第一随机数用对应加密算法进行加密,得到的密文与第一随机数进行异或,得到第一异或结果;步骤二,将第一异或结果与第二寄存器中的第二随机数进行异或,得到第二异或结果;步骤三,将第二异或结果用对应加密算法进行加密,得到的密文与第二异或结果进行异或,得到伪随机数。
上述方法中,采用与寄存器所存储的特定比特的随机数相配合的加密算法。
本发明还提供了一种对第一寄存器中第一随机数的更新方法,即将上述生成伪随机数方法中的第一异或结果反馈回第一寄存器中对第一随机数进行更新。
本发明还提供了一种第二寄存器中第二随机数的更新方法,其步骤如下步骤201,将得到的伪随机数与第二随机数进行异或,得到第三异或结果;步骤202,对第三异或结果用对应算法进行加密,得到的密文与第三异或结果进行异或,得到第四异或结果;步骤203,将第四异或结果反馈回第二寄存器中对第二随机数进行更新。
由上述技术方案可以看出,在两个寄存器中分别存入随机数种子后,在没有外部即时输入的情况下,就可以根据本发明所述的方法产生伪随机数,并且可以在产生一个伪随机数后对两个寄存器中存储的随机数种子进行更新,保证了每次产生伪随机数的随机性。


图1为本发明所述的伪随机数生成方法流程图;图2为本发明所述的伪随机数生成方法中寄存器T中的随机数种子更新方法流程图;图3为本发明所述的伪随机数生成方法中寄存器V中的随机数种子更新方法流程图。
具体实施例方式
下面结合说明书附图对本发明所述的技术方案做进一步说明。
以本发明中使用128比特的寄存器存储随机数为例,基于上述128比特的寄存器,使用AES算法,该算法中的密钥长度为128比特。
上述128比特的密钥以及128比特的寄存器中存储的随机数种子应该从具有不可预测性的物理随机源获得,并且预先存入相应的寄存器。
对于伪随机数的生成方法,包括了伪随机数的产生和对两个寄存器中随机数种子的更新过程,当每生成一个伪随机数,寄存器中的随机数种子就会自动进行更新,这保证了生成的伪随机数的随机性。
为便于说明本发明,下面对伪随机数的生成过程和寄存器中的随机数种子的更新过程分别加以说明,在伪随机数的实际生成过程中,伪随机数的生成与寄存器中的随机数种子的更新是作为一个任务完成的。
如说明书附图1所示,伪随机数生成方法包括如下步骤步骤101,在寄存器T、V中分别存入128比特的随机数种子To、Vo;步骤102,利用长度为128比特的密钥K1,采用AES算法对随机数种子To进行加密计算,得到的密文与To异或,得到结果Xi;步骤103,将上述结果Xi与随机数种子Vo进行异或,得到结果Yi;步骤104,利用长度为128比特的密钥K2,采用AES算法对Yi进行加密计算,得到的密文与Yi进行异或,得到伪随机数Ri。
对于上述方法中使用的随机数种子To、Vo,应该在每次输出伪随机数后进行更新,其更新方法如下如说明书附图2所示,对寄存器T中的随机数种子To进行更新的方法,包括如下步骤
步骤201,在寄存器T中存入128比特的随机数种子To;步骤202,利用长度为128比特的密钥K1,采用AES算法对随机数种子To进行加密计算,得到的密文与To异或,得到结果Xi;步骤203,将上述结果Xi反馈回寄存器T中对随机数种子To进行更新。
对于上述对寄存器T中的随机数种子To进行更新的过程,是在前述伪随机数生成方法中的步骤102之后完成的。
如说明书附图3所示,对寄存器V中的随机数种子Vo进行更新的方法需要使用当次运算输出的伪随机数Ri,具体包括如下步骤步骤301,将输出的伪随机数Ri与寄存器V中的随机数种子Vo进行异或,得到结果Zi;步骤302,利用长度为128比特的密钥K3,采用AES算法对上述Zi进行加密计算,得到的密文与Zi异或,得到结果Oi;步骤303,将上述结果Oi反馈回寄存器V中对随机数种子Vo进行更新。
对于上述对寄存器V中的随机数种子Vo进行更新的过程,是在前述伪随机数生成方法中的步骤104之后完成的。
由此可见,每次产生了伪随机数之后,都会对寄存器中的随机数种子进行更新,因此,随机数种子在前后两次生成伪随机数的过程中始终是不相同的,这也保证了生成伪随机数的不同。
在采用上述AES算法产生伪随机数的方法中,若用户需要的伪随机数为256比特,则先产生两个128比特的伪随机数,然后,将这两个伪随机数串接起来,满足用户需求;若用户需要的伪随机数为192比特,则在将两个伪随机数串接起来后,丢弃高位的64比特,也可以丢弃低位的64比特,就可以得到192比特的伪随机数。
本发明中,可以使用其他密钥长度的加密算法,如采用DES加密算法,该算法采用64比特的工作密钥,可以产生64比特的伪随机数。当然,与前述使用AES算法获得192比特或256比特伪随机数的方法一样,采用DES加密算法也可以获得一些用户实际需要的特定比特的伪随机数。
权利要求
1.一种伪随机数生成方法,其特征在于,方法包括如下步骤步骤一,对第一寄存器中的第一随机数用对应加密算法进行加密,得到的密文与第一随机数进行异或,得到第一异或结果;步骤二,将第一异或结果与第二寄存器中的第二随机数进行异或,得到第二异或结果;步骤三,将第二异或结果用对应加密算法进行加密,得到的密文与第二异或结果进行异或,得到伪随机数。
2.如权利要求1所述的伪随机数生成方法,其特征在于,所述加密算法与寄存器中的随机数相对应。
3.如权利要求1所述的伪随机数生成方法,其特征在于,所述第一随机数与第二随机数为相同比特。
4.如权利要求1或3所述的伪随机数生成方法,其特征在于,所述的随机数为128比特。
5.如权利要求4所述的伪随机数生成方法,其特征在于,所述加密算法为AES加密算法。
6.如权利要求1所述的伪随机数生成方法,其特征在于,对第一随机数进行更新的方法进一步包括将第一异或结果反馈回第一寄存器中对第一随机数进行更新。
7.如权利要求1所述的伪随机数生成方法,其特征在于,对第二随机数进行更新的方法进一步包括步骤201,将得到的伪随机数与第二随机数进行异或,得到第三异或结果;步骤202,对第三异或结果用对应算法进行加密,得到的密文与第三异或结果进行异或,得到第四异或结果;步骤203,将第四异或结果反馈回第二寄存器中对第二随机数进行更新。
全文摘要
本发明公开了一种伪随机数生成方法,步骤包括对第一寄存器中的第一随机数用对应加密算法进行加密,得到的密文与第一随机数进行异或,得到第一异或结果;将第一异或结果与第二寄存器中的第二随机数进行异或,得到第二异或结果;将第二异或结果用对应加密算法进行加密,得到的密文与第二异或结果进行异或,得到伪随机数。本发明在没有外部即时输入的情况下,可以产生良好密码性质的伪随机数,并且可以在产生一个伪随机数后对两个寄存器中存储的随机数种子进行更新,保证了每次产生伪随机数的随机性。
文档编号G06F7/58GK1832396SQ20051011560
公开日2006年9月13日 申请日期2005年11月7日 优先权日2005年11月7日
发明者谭示崇, 王育民, 詹阳, 姜正涛, 田海博, 范欣欣, 袁素春, 于松亮 申请人:北京浦奥得数码技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1