(12)发明专利申请
(10)申请公布号 CN 105376055 A (43)申请公布日 2016.03.02
(21)申请号 201510900370.5(22)申请日 2015.12.09
(71)申请人捷德(中国)信息科技有限公司
地址330096 江西省南昌市高新开发区火炬
大街399号(72)发明人崔进
(74)专利代理机构北京三友知识产权代理有限
公司 11127
代理人汤在彦(51)Int.Cl.
H04L 9/06(2006.01)
权利要求书1页 说明书7页 附图7页
(54)发明名称
一种生成伪随机数的方法及伪随机数发生器(57)摘要
本发明提供一种生成伪随机数的方法及伪随机数发生器,所述方法包括:获取预先设定的密钥、初始向量、种子以及加密函数,所述的加密函数调用SM4算法以及3DES算法;所述SM4算法与3DES算法结合确定生成函数;根据所述的生成函数、密钥、初始向量以及种子输出伪随机数。本发明提供的伪随机数发生器,应用国密SM4算法与3DES算法结合确定生成函数进而输出伪随机数,为伪随机数发生器提供了一种新的设计方案,由于用到国密SM4算法以及3DES算法,因此增加了安全性。
C N 1 0 5 3 7 6 0 5 5 A CN 105376055 A
权 利 要 求 书
1/1页
1.一种生成伪随机数的方法,其特征是,所述的方法包括:
获取预先设定的密钥、初始向量、种子以及加密函数,所述的加密函数调用SM4算法以及3DES算法;
所述SM4算法与3DES算法结合确定生成函数;根据所述的生成函数、密钥、初始向量以及种子输出伪随机数。2.根据权利要求1所述的方法,其特征是,所述的加密函数同时包括SM4算法和3DES算法,两种算法被调用一次或多次。
3.根据权利要求2所述的方法,其特征是,所述的生成函数包括所述加密函数以及代数运算。
4.根据权利要求2所述的方法,其特征是,所述的方法还包括:预先确定所述加密函数的调用方式。5.根据权利要求2所述的方法,其特征是,所述的方法还包括:根据输出的伪随机数动态调节所述加密函数的调用方式。6.一种伪随机数发生器,其特征是,所述的伪随机数发生器包括:获取模块,用于获取预先设定的密钥、初始向量、种子以及加密函数,所述的加密函数调用SM4算法以及3DES算法;
生成函数确定模块,所述SM4算法与3DES算法结合确定生成函数;伪随机数输出模块,用于根据所述的生成函数、密钥、初始向量以及种子输出伪随机数。
7.根据权利要求6所述的伪随机数发生器,其特征是,所述的加密函数同时包括SM4算法和3DES算法,两种算法被调用一次或多次。
8.根据权利要求7所述的伪随机数发生器,其特征是,所述的生成函数包括所述加密函数以及代数运算。
9.根据权利要求7所述的伪随机数发生器,其特征是,所述的伪随机数发生器还包括:加密函数调用方式确定模块,用于预先确定所述加密函数的调用方式。10.根据权利要求7所述的伪随机数发生器,其特征是,所述的伪随机数发生器还包括:
加密函数调用方式调节模块,用于根据输出的伪随机数动态调节所述加密函数的调用方式。
2
CN 105376055 A
说 明 书
一种生成伪随机数的方法及伪随机数发生器
1/7页
技术领域
本发明关于伪随机数技术领域,特别是关于伪随机数的生成技术,具体的讲是一种生成伪随机数的方法及伪随机数发生器。
[0001]
背景技术
随机数一般应用于加密算法等领域。但是,比随机数更容易产生的伪随机数出现
了,由于伪随机数更容易操作和处理,被更广泛的应用于各个领域。[0003] 伪随机数又称伪随机数序列,产生这种伪随机数的算法称为伪随机数发生器,可通过软件或硬件来实现。现有技术中有许多种方法生成伪随机数,但是每种生成伪随机数的方法都有其局限性,设计方案相对单一,在实际应用中无法给应用平台提供更多的选择方案。
[0002]
发明内容
为了克服现有技术存在的上述技术问题,本发明提供了一种生成伪随机数的方法
及伪随机数发生器,应用国密SM4算法与3DES算法结合确定生成函数进而输出伪随机数,为伪随机数发生器提供了一种新的设计方案,由于用到国密SM4算法以及3DES算法,因此增加了安全性。
[0005] 本发明的目的之一是,提供一种生成伪随机数的方法,所述方法包括:获取预先设定的密钥、初始向量、种子以及加密函数,所述的加密函数调用SM4算法以及3DES算法;所述SM4算法与3DES算法结合确定生成函数;根据所述的生成函数、密钥、初始向量以及种子输出伪随机数。
[0006] 在本发明的优选实施方式中,所述的加密函数同时包括SM4算法和3DES算法,两种算法被调用一次或多次。
[0007] 在本发明的优选实施方式中,所述的生成函数包括所述加密函数以及代数运算。[0008] 在本发明的优选实施方式中,所述的方法还包括:预先确定所述加密函数的调用方式。
[0009] 在本发明的优选实施方式中,所述的方法还包括:根据输出的伪随机数动态调节所述加密函数的调用方式。
[0010] 本发明的目的之一是,提供了伪随机数发生器,所述的伪随机数发生器包括:获取模块,用于获取预先设定的密钥、初始向量、种子以及加密函数,所述的加密函数调用SM4算法以及3DES算法;生成函数确定模块,所述SM4算法与3DES算法结合确定生成函数;伪随机数输出模块,用于根据所述的生成函数、密钥、初始向量以及种子输出伪随机数。[0011] 在本发明的优选实施方式中,所述的加密函数同时包括SM4算法和3DES算法,两种算法被调用一次或多次。
[0004]
在本发明的优选实施方式中,所述的生成函数包括所述加密函数以及代数运算。
[0013] 在本发明的优选实施方式中,所述的伪随机数发生器还包括:加密函数调用方式
[0012]
3
CN 105376055 A
说 明 书
2/7页
确定模块,用于预先确定所述加密函数的调用方式。[0014] 在本发明的优选实施方式中,所述的伪随机数发生器还包括:加密函数调用方式调节模块,用于根据输出的伪随机数动态调节所述加密函数的调用方式。[0015] 本发明的有益效果在于,提供了一种生成伪随机数的方法及伪随机数发生器,针对现有技术中原有的设计方案相对单一的问题,提供了一种新的设计方案,应用国密SM4算法与3DES算法结合确定生成函数进而输出伪随机数,由于用到国密SM4算法以及3DES算法,因此增加了安全性,且在优选实施方式中,根据平台的,SM4算法可与3DES算法自由切换,调用一次或多次,选择空间更大,由于用到的两种加密方式在实际应用中较为普遍,应用平台实现起来比较方便。
[0016] 为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018] 图1为现有技术中的3DES算法的原理示意图;
[0019] 图2为现有技术中的3DES算法的单DES流程示意图;[0020] 图3为国密SM4算法的原理示意图;
[0021] 图4为本发明实施例提供的一种生成伪随机数的方法的实施方式一的流程图;[0022] 图5为本发明实施例提供的一种生成伪随机数的方法的实施方式二的流程图;[0023] 图6为本发明实施例提供的一种生成伪随机数的方法的实施方式三的流程图;[0024] 图7为本发明实施例提供的一种伪随机数发生器的实施方式一的结构框图;[0025] 图8为本发明实施例提供的一种伪随机数发生器的实施方式二的结构框图;[0026] 图9为本发明实施例提供的一种伪随机数发生器的实施方式三的结构框图;[0027] 图10为本发明提供的SM4算法与3DES算法结合的伪随机数发生器示例的结构示意图。
[0017]
具体实施方式
[0028] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029] 本发明针对现有技术中虽然有许多种方法生成伪随机数,但是每种生成伪随机数的方法都有其局限性,设计方案相对单一,在实际应用中无法给应用平台提供更多的选择方案,且安全性较低的技术问题,提出了一种生成伪随机数的方法以及伪随机数发生器,应用国密SM4算法与3DES算法结合确定生成函数进而输出伪随机数,为伪随机数发生器提供了一种新的设计方案,由于用到国密SM4算法以及3DES算法,因此增加了安全性。
4
CN 105376055 A[0030]
说 明 书
3/7页
下面首先介绍伪随机数发生器的基本原理。[0031] 1、从一个初始种子值开始通过各种计算得到序列。[0032] 2、一般要求:必须拥有良好的统计属性[0033] 3、广泛应用于各个领域,如密码学,软件仿真等。[0034] 示例:ANSI C中的rand()[0035] s(0)=12345
[0036] s(i+1)=1103515245*s(i)+12345mod,i=0,1,...[0037] 图3为国密SM4算法的原理示意图,由图3可知,国密SM4算法中,明文、密钥、密文都是16字节,非线性迭代轮函数包括32次循环,每轮循环包括非线性变换S盒,以及由移位异或构成的线性变换。除了256字节的S盒之外,还定义了另外两组参数FK以及CK。密钥扩展算法是先把16字节密钥按照4字节一组,再利用类似于数据加密的操作在4组初始密钥的基础上生成32组4字节轮密钥。
[0038] 图1为现有技术中的3DES算法的原理示意图,图2为现有技术中的3DES算法的单DES流程示意图。由图1、图2可知,三次DES调用的结果,密钥长度为112个bit。单DES的非线性迭代轮函数包括16次循环。单DES的每轮循环包括非线性变换S盒,以及由换位、移位、异或构成的线性变换。与SM4只用到一个S盒不同,单DES用到8个不同的S盒。单DES的密钥扩展算法先把56位有效分为28位的两组,再利用移位、选位、换位操作生成16组6字节轮密钥。
[0039] 3DES算法已经应用于随机数发生器,例如ANST X9.17。同样是对称分组密码,SM4算法原理与3DES类似,也可以用于伪随机数生成。由国密SM4算法和3DES算法的原理,本发明提出了一种生成伪随机数的方法,将两种算法结合生成伪随机数,如图4所示,在实施方式一中,该方法具体包括:[0040] S101:获取预先设定的密钥、初始向量、种子以及加密函数,所述的加密函数调用SM4算法以及3DES算法。[0041] S102:所述SM4算法与3DES算法结合确定生成函数。在具体的实施方式中,所述的加密函数同时包括SM4算法和3DES算法,两种算法被调用一次或多次。所述的生成函数包括所述加密函数以及代数运算。[0042] S103:根据所述的生成函数、密钥、初始向量以及种子输出伪随机数。[0043] 上述方法利用两种算法元素的长度关系,可以变换或改进生成函数,SM4算法密钥长度为16字节。3DES算法虽然实际用到的密钥长度为112bit,但密钥输入值也可以是16字节(无效bit算法会自动过滤)。两算法的输入/输出的块处理长度恰好为2倍关系。因此对于一个16字节的明文,运用同一个16字节密钥,两种算法都可以得到16字节密文。[0044] 如上所述的一种生成伪随机数的方法,其生成的伪随机数可被广泛应用于各个领域,将国密SM4算法与3DES算法相结合生成伪随机数为应用平台提供了更多的选择。由于很多平台(如智能卡等)都同时支持两种算法,将两种算法相结合生成随机数是比较容易实现的。
本发明利用了对称分组密码本身的特性:SM4以及3DES都是对称密码,而对称分
组密码的原理是通过发散和混淆函数对明文进行非线性变换从而得到没有统计特性的密文。因此,利用这两种算法生成随机数可以以分组密码的安全性确保伪随机数序列的安全
[0045]
5
CN 105376055 A
说 明 书
4/7页
性。
本发明利用了两种算法的不同加密函数特征:SM4与3DES两种算法虽然基于相同的对称分组密码原理,但具体采用的加解密操作函数却有很大区别,各有侧重。同时利用两种算法会更好的扰乱明文信息,从而提高伪随机数质量。[0047] 加密函数的调用方式有预定选择和动态选择两种,下面首先介绍预定选择。图5为本发明实施例提供的一种生成伪随机数的方法的实施方式二的流程图,由图5可知,该方法在实施方式二中具体包括:[0048] S201:获取预先设定的密钥、初始向量、种子以及加密函数,所述的加密函数调用SM4算法以及3DES算法;[0049] S202:预先确定所述加密函数的调用方式;[0050] S203:所述SM4算法与3DES算法结合确定生成函数;[0051] S204:根据所述的生成函数、密钥、初始向量以及种子输出伪随机数。[0052] 在该实施方式二中,生成函数中的加密函数的调用方式是预先确定的。预定选择指随机数发生器投入使用之前即确定了生成函数中加密函数的调用方式,使用过程中不会发生变化。设计生成函数时可以根据其生成随机数的性能测试结果(目前比较成熟的是NIST公布的一套测试组件),变换调用的具体函数(SM4算法或3DES算法)。如果平台有特殊,也可以根据具体情况选择加密函数。[0053] 下面介绍加密函数的动态选择,图6为本发明实施例提供的一种生成伪随机数的方法的实施方式三的流程图,由图6可知,该方法在实施方式三中具体包括:[0054] S301:获取预先设定的密钥、初始向量、种子以及加密函数,所述的加密函数调用SM4算法以及3DES算法;[0055] S302:所述SM4算法与3DES算法结合确定生成函数;[0056] S303:根据所述的生成函数、密钥、初始向量以及种子输出伪随机数。[0057] S304:根据输出的伪随机数动态调节所述加密函数的调用方式。[0058] 在该实施方式三中,加密函数是动态调整的。动态选择加密函数对平台的计算能力要求较高,如果要一次性得到大量统计属性较好的随机数,则可以根据已生成数据他统计特性,动态选择当前生成函数中加密函数的调用方式。[0059] 如上所述,即为本发明提供的一种生成伪随机数的方法,针对现有技术中原有的设计方案相对单一的问题,提供了一种新的设计方案,应用国密SM4算法与3DES算法结合确定生成函数进而输出伪随机数。由于用到国密SM4算法以及3DES算法,两种算法结合,因此增加了安全性,且在优选实施方式中,根据平台的,SM4算法可与3DES算法自由切换,调用一次或多次,选择空间更大,由于用到的两种加密方式在实际应用中较为普遍,应用平台实现起来比较方便。
[0060] 由国密SM4算法和3DES算法的原理,本发明还提出了一种伪随机数发生器,如图7所示,在实施方式一中,该伪随机数发生器具体包括:[0061] 获取模块101,用于获取预先设定的密钥、初始向量、种子以及加密函数,所述的加密函数调用SM4算法以及3DES算法;
[0046]
生成函数确定模块102,所述SM4算法与3DES算法结合确定生成函数。在具体的
实施方式中,所述的加密函数同时包括SM4算法和3DES算法,两种算法被调用一次或多次。
[0062]
6
CN 105376055 A
说 明 书
5/7页
所述的生成函数包括所述加密函数以及代数运算。[0063] 伪随机数输出模块103,用于根据所述的生成函数、密钥、初始向量以及种子输出伪随机数。
[00] 上述伪随机数发生器利用两种算法元素的长度关系,可以变换或改进生成函数:SM4算法密钥长度为16字节。3DES算法虽然实际用到的密钥长度为112bit,但密钥输入值也可以是16字节(无效bit算法会自动过滤)。两算法的输入/输出的块处理长度恰好为2倍关系。因此对于一个16字节的明文,运用同一个16字节密钥,两种算法都可以得到16字节密文。
[0065] 如上所述的一种伪随机数发生器,其生成的伪随机数可被广泛应用于各个领域,将国密SM4算法与3DES算法相结合生成伪随机数为应用平台提供了更多的选择。由于很多平台(如智能卡等)都同时支持两种算法,将两种算法相结合生成随机数是比较容易实现的。
[0066] 加密函数的调用方式有预定选择和动态选择两种,下面首先介绍预定选择。图8为本发明实施例提供的一种伪随机数发生器的实施方式二的结构框图,由图8可知,该伪随机数发生器在实施方式二中具体包括:[0067] 获取模块101,用于获取预先设定的密钥、初始向量、种子以及加密函数,所述的加密函数调用SM4算法以及3DES算法;[0068] 加密函数调用方式确定模块104,用于预先确定所述加密函数的调用方式;[0069] 生成函数确定模块102,所述SM4算法与3DES算法结合确定生成函数。[0070] 所述的生成函数包括加密函数以及代数运算。[0071] 伪随机数输出模块103,用于根据所述的生成函数、密钥、初始向量以及种子输出伪随机数。
[0072] 在该实施方式二中,生成函数中的加密函数的调用方式是预先确定的。预定选择指随机数发生器投入使用之前即确定了生成函数中加密函数的调用方式,使用过程中不会发生变化。设计生成函数时可以根据其生成随机数的性能测试结果(目前比较成熟的是NIST公布的一套测试组件),变换调用的具体函数(SM4算法或3DES算法)。如果平台有特殊,也可以根据具体情况选择加密函数。[0073] 下面介绍加密函数的动态选择,图9为本发明提供的SM4算法与3DES算法结合的伪随机数发生器的示意图,由图9可知,该伪随机数发生器在实施方式三中具体包括:[0074] 获取模块101,用于获取预先设定的密钥、初始向量、种子以及加密函数,所述的加密函数调用SM4算法以及3DES算法;[0075] 生成函数确定模块102,所述SM4算法与3DES算法结合确定生成函数;[0076] 伪随机数输出模块103,用于根据所述的生成函数、密钥、初始向量以及种子输出伪随机数。
[0077] 加密函数调用方式调节模块105,用于根据输出的伪随机数动态调节所述加密函数的调用方式。
在该实施方式三中,加密函数是动态调整的。动态选择加密函数对平台的计算能
力要求较高,如果要一次性得到大量统计属性较好的随机数,则可以根据已生成数据他统计特性,动态选择当前生成函数中加密函数的调用方式。
[0078]
7
CN 105376055 A[0079]
说 明 书
6/7页
如上所述,即为本发明提供的一种伪随机数发生器,针对现有技术中原有的设计方案相对单一的问题,提供了一种新的设计方案,应用国密SM4算法与3DES算法结合确定生成函数进而输出伪随机数。由于用到国密SM4算法以及3DES算法,两种算法结合,因此增加了安全性,且在优选实施方式中,根据平台的,SM4算法可与3DES算法自由切换,调用一次或多次,选择空间更大,由于用到的两种加密方式在实际应用中较为普遍,应用平台实现起来比较方便。
[0080] 下面结合具体的实施例,详细介绍本发明的方案。图10为本发明提供的SM4算法与3DES算法结合的伪随机数发生器的示意图,其是一个加密安全的伪随机数发生器,该示例是从ANST X9.17标准中就提到了基于三重DES的随机数发生器变化出的。对该示例生成的随机数进行检验,性能良好。
[0081] 本发明的设计思想有如下特点:
[0082] 1.生成函数中同时包含了SM4算法和3DES算法。[0083] 2.如果平台不支持3DES算法,可以将其中的两处3DES算法替换为SM4算法,满足平台要求。
[0084] 3.可以将其中任意一个3DES算法替换为SM4算法,从而得到新的随机数发生器,可以分别测试其生成的随机数,选择适合当前平台的设计方案。[0085] 4.如果需要产生大量有特殊质量要求的随机数,可以以8字节为单位,根据已产生数据的情况,选择下一轮生成函数中调用的加密函数,具体调节条件需要具体设定。[0086] 综上所述,本发明提出的一种生成伪随机数的方法及伪随机数发生器,针对现有技术中原有的设计方案相对单一的问题,提供了一种新的设计方案,应用国密SM4算法与3DES算法结合确定生成函数进而输出伪随机数。由于用到国密SM4算法以及3DES算法,两种算法结合,因此增加了安全性,且在优选实施方式中,根据平台的,SM4算法可与3DES算法自由切换,调用一次或多次,选择空间更大,由于用到的两种加密方式在实际应用中较为普遍,应用平台实现起来比较方便。[0087] 本文的创新点在于:
[0088] 1.加密函数可以同时调用SM4和3DES两种算法,从而提供更多选择,加强安全性。[00] 2.加密函数可以自由切换。例如,如果平台不支持3DES算法,则可以将加密函数替换为SM4算法。
[0090] 3.如果需要一次性产生大批量随机数,也可以动态调节加密函数。
[0091] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一般计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0092] 本领域技术人员还可以了解到本发明实施例列出的各种功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
[0093] 本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例
8
CN 105376055 A
说 明 书
7/7页
的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的。
9
CN 105376055 A
说 明 书 附 图
1/7页
图2
图1
图3
10
CN 105376055 A
说 明 书 附 图
2/7页
图4
11
CN 105376055 A
说 明 书 附 图
3/7页
图5
12
CN 105376055 A
说 明 书 附 图
4/7页
图6
13
CN 105376055 A
说 明 书 附 图
5/7页
图7
14
CN 105376055 A
说 明 书 附 图
6/7页
图8
15
CN 105376055 A
说 明 书 附 图
7/7页
图9
图10
16
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务