本发明涉及随机数领域,尤其涉及一种随机数生成方法及系统。
背景技术:
通过pos终端进行金融交易的过程中,很多环节都需要使用到随机数,例如,生成随机数作为密钥或敏感数据交换中用于数据交换双方双向认证时的参数等,一旦随机数的不可预测性得不到保障,不法分子便可以通过预测随机数来得到密钥或伪装成双向认证的某一方获得敏感数据,这样一来,持卡人的个人信息可能会暴露,交易数据可能被篡改,严重危害社会的正常金融秩序。因此,随机数的不可预测性是保障通过pos终端进行金融交易安全性的重要因素。
目前,在pos终端等实时性要求较高的设备中生成随机数的方案有以下两种:
一种是基于硬件的随机数生成方案,完全基于芯片的硬件电路生成随机数。虽然,基于硬件生成的随机数具有较好的随机性,但是一旦不法分子得到芯片的原理图,掌握随机数生成电路的构造,便有可能预测出随机数。此外,如果同一类型的芯片采用相同的随机数生成硬件电路,将导致这一类型的所有芯片在相同条件下生成的随机数完全相同,一旦不法分子掌握一个芯片的原理图,使用同一类型芯片的pos终端都面临者重大的安全风险。若为了提高不法分子破解硬件电路生成随机数的原理的难度,增加硬件电路的复杂性,会导致生成随机数需耗费较高的时间成本,这对于pos终端的运行以及用户体验来说都是无法接受的。因此,现有的应用于pos终端等实时性要求较高的设备中产生随机数的硬件电路较为简单。
另一种是基于软件的随机数生成方案,首先使用c库(一般是指编译器提供的可在c源程序中调用的函数,是c语言标准规定的库函数)中的随机数生成函数生成一串初始随机数,再使用固定的密钥对初始随机数进行des加密得到最终的随机数。虽然基于软件的随机数生成方案效率高,但是,只要输入相同的数据,通过c库随机数生成函数生成的随机数也是相同的。不法分子一旦掌握了c库函数的输入,便可以预测出生成的随机数。
综上所述,现有的应用于pos终端等实时性要求较高的设备的随机数生成方案不可预测性差。
技术实现要素:
本发明所要解决的技术问题是:如何在高效生成随机数的前提下,提高随机数的不可预测性。
为了解决上述技术问题,本发明采用的技术方案为:
本发明提供一种随机数生成方法,包括:
s1、通过硬件电路生成硬件随机数;
s2、在随机数生成器运行过程中采集运行参数的值;
s3、获取随机数生成器中硬件的唯一标识符;
s4、根据所述硬件随机数、所述运行参数的值和所述唯一标识符,生成第一随机数。
本发明还提供一种随机数生成系统,包括:
第一生成模块,用于通过硬件电路生成硬件随机数;
采集模块,用于在随机数生成器运行过程中采集运行参数的值;
获取模块,用于获取随机数生成器中硬件的唯一标识符;
第二生成模块,用于根据所述硬件随机数、所述运行参数的值和所述唯一标识符,生成第一随机数。
本发明的有益效果在于:以具有较高随机性的硬件随机数、根据系统实际运行情况实时变化的运行参数的值、具有唯一性的硬件设备标识符作为c库的随机数生成函数的输入,使得不同设备在不同时刻生成的随机数均不同,具有较高的不可预测性。此外,本方案的硬件随机数只作为c库随机数生成函数的一部分,其作用为提高随机数生成函数的随机性,且不必担心不法分子盗取硬件电路后可预测出随机数,因此,使用效率高的硬件电路即可,从而实现在高效生成随机数的前提下,生成的随机数具有较高的不可预测性。
附图说明
图1为本发明提供的一种随机数生成方法的具体实施方式的流程框图;
图2为本发明提供的一种随机数生成系统的具体实施方式的结构框图;
图3为本发明提供的一种随机数生成系统的实施例的结构框图;
图4为本发明提供的一种随机数生成系统的另一实施例的结构框图;
标号说明:
1、第一生成模块;2、采集模块;3、获取模块;4、第二生成模块;
41、第一生成单元;42、加密单元;43、更新单元;5、提取单元;6、第二生成单元;7、异或单元;8、第三生成单元;9、第四生成单元。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:以具有较高随机性的硬件随机数、根据系统实际运行情况实时变化的运行参数的值、具有唯一性的硬件设备标识符作为c库的随机数生成函数的输入,提高随机数的不可预测性。
名词解释
请参照图1至图4,
如图1所示,本发明提供一种随机数生成方法,包括:
s1、通过硬件电路生成硬件随机数;
s2、在随机数生成器运行过程中采集运行参数的值;
s3、获取随机数生成器中硬件的唯一标识符;
s4、根据所述硬件随机数、所述运行参数的值和所述唯一标识符,生成第一随机数。
进一步地,所述s4具体为:
s41、根据所述硬件随机数、所述运行参数的值和所述唯一标识符生成初始向量和初始密钥;
s42、加密运算所述初始向量和所述初始密钥,得到第一随机数。
进一步地,还包括:
更新所述初始向量和所述初始密钥。
由上述描述可知,每次生成随机数后,初始向量v以及初始密钥都会改变,有效避免了密钥被破解的风险。
进一步地,所述s41具体为:
提取所述硬件随机数中的预设字节,得到第二随机数;
以所述第二随机数作为预设随机数生成函数的输入,生成第三随机数;
异或所述第二随机数和所述第三随机数,得到第四随机数;
根据所述第四随机数、所述运行参数的值和所述唯一标识符,生成所述初始向量和初始密钥。
进一步地,所述s4具体为:
提取所述硬件随机数中的预设字节,得到第二随机数;
以所述第二随机数作为预设随机数生成函数的输入,生成第三随机数;
异或所述第二随机数和所述第三随机数,得到第四随机数;
根据所述第四随机数、所述运行参数的值和所述唯一标识符,生成所述第一随机数。
如图2所示,本发明还提供一种随机数生成系统,包括:
第一生成模块1,用于通过硬件电路生成硬件随机数;
采集模块2,用于在随机数生成器运行过程中采集运行参数的值;
获取模块3,用于获取随机数生成器中硬件的唯一标识符;
第二生成模块4,用于根据所述硬件随机数、所述运行参数的值和所述唯一标识符,生成第一随机数。
进一步地,所述第二生成模块4包括:
第一生成单元41,用于根据所述硬件随机数、所述运行参数的值和所述唯一标识符生成初始向量和初始密钥;
加密单元42,用于加密运算所述初始向量和所述初始密钥,得到第一随机数。
进一步地,所述第二生成模块4还包括:
更新单元43,用于更新所述初始向量和所述初始密钥。
进一步地,所述第一生成单元41包括:
提取单元5,用于提取所述硬件随机数中的预设字节,得到第二随机数;
第二生成单元6,用于以所述第二随机数作为预设随机数生成函数的输入,生成第三随机数;
异或单元7,用于异或所述第二随机数和所述第三随机数,得到第四随机数;
第三生成单元8,用于根据所述第四随机数、所述运行参数的值和所述唯一标识符,生成所述初始向量和初始密钥。
进一步地,所述第二生成模块4包括:
提取单元5,用于提取所述硬件随机数中的预设字节,得到第二随机数;
第二生成单元6,用于以所述第二随机数作为预设随机数生成函数的输入,生成第三随机数;
异或单元7,用于异或所述第二随机数和所述第三随机数,得到第四随机数;
第四生成单元9,用于根据所述第四随机数、所述运行参数的值和所述唯一标识符,生成所述第一随机数。
本发明的实施例一为:
本实施例提供一种随机数生成方法,包括:
s1、通过硬件电路生成硬件随机数;
其中,通过硬件电路生成硬件随机数r1;
s2、在随机数生成器运行过程中采集运行参数的值;
其中,所述运行参数的值r4可以为系统启动时间、系统中断次数和rtc时间等;
s3、获取随机数生成器中硬件的唯一标识符;
其中,所述硬件的唯一标识符r5可以为硬件电路芯片的唯一标识符或运行随机数生成器的pos机的唯一标识符;
s4、根据所述硬件随机数、所述运行参数的值和所述唯一标识符,生成第一随机数;具体为:
s41、根据所述硬件随机数、所述运行参数的值和所述唯一标识符生成初始向量和初始密钥;具体为:
s411、提取所述硬件随机数中的预设字节,得到第二随机数;以所述第二随机数作为预设随机数生成函数的输入,生成第三随机数;
其中,将硬件随机数r1的一定量的字节(第二随机数)作为c库随机数生成函数的初始值,生成第三随机数r2;
s412、异或所述第二随机数和所述第三随机数,得到第四随机数;
其中,异或运算硬件随机数r1和第三随机数r2,得到第四随机数r3;把r3作为本次初始化随机数生成器的熵,并将r3写入到密钥区作为下次初始化随机数生成器时使用的数据;
s413、根据所述第四随机数、所述运行参数的值和所述唯一标识符,生成所述初始向量和初始密钥;
其中,将第四随机数r3,运行参数的值r4和硬件的唯一标识符r5作为初始化随机数生成器的输入,生成初始向量v和初始密钥key;
s42、加密运算所述初始向量和所述初始密钥,得到第一随机数;
s43、更新所述初始向量和所述初始密钥。
本发明的实施例二为:
本实施例另提供一种随机数生成方法,包括:
s1、通过硬件电路生成硬件随机数;
s2、在随机数生成器运行过程中采集运行参数的值;
s3、获取随机数生成器中硬件的唯一标识符;
s4、根据所述硬件随机数、所述运行参数的值和所述唯一标识符,生成第一随机数;具体为:
s41、提取所述硬件随机数中的预设字节,得到第二随机数;
s42、以所述第二随机数作为预设随机数生成函数的输入,生成第三随机数;
s43、异或所述第二随机数和所述第三随机数,得到第四随机数;
s44、根据所述第四随机数、所述运行参数的值和所述唯一标识符,生成所述第一随机数。
本发明的实施例三为:
如图3所示,本实施例提供一种随机数生成系统,包括:
第一生成模块1通过硬件电路生成硬件随机数;采集模块2在随机数生成器运行过程中采集运行参数的值;获取模块3获取随机数生成器中硬件的唯一标识符;第二生成模块4根据所述硬件随机数、所述运行参数的值和所述唯一标识符,生成第一随机数;
其中,所述第二生成模块4包括第一生成单元41、加密单元42和更新单元43;
所述第一生成单元41根据所述硬件随机数、所述运行参数的值和所述唯一标识符生成初始向量和初始密钥;具体为,提取单元5提取所述硬件随机数中的预设字节,得到第二随机数;第二生成单元6以所述第二随机数作为预设随机数生成函数的输入,生成第三随机数;异或单元7异或所述第二随机数和所述第三随机数,得到第四随机数;第三生成单元8根据所述第四随机数、所述运行参数的值和所述唯一标识符,生成所述初始向量和初始密钥;
所述加密单元42加密运算所述初始向量和所述初始密钥,得到第一随机数;
所述更新模块43更新所述初始向量和所述初始密钥;
本发明的实施例四为:
如图4所示,本实施例另提供一种随机数生成系统,包括:
第一生成模块1通过硬件电路生成硬件随机数;采集模块2在随机数生成器运行过程中采集运行参数的值;获取模块3获取随机数生成器中硬件的唯一标识符;第二生成模块4根据所述硬件随机数、所述运行参数的值和所述唯一标识符,生成第一随机数;
其中,所述第二生成模块4包括提取单元5、第二生成单元6、异或单元7和第四生成单元9;
所述提取单元5提取所述硬件随机数中的预设字节,得到第二随机数;所述第二生成单元6以所述第二随机数作为预设随机数生成函数的输入,生成第三随机数;所述异或单元7异或所述第二随机数和所述第三随机数,得到第四随机数;所述第四生成单元9根据所述第四随机数、所述运行参数的值和所述唯一标识符,生成所述第一随机数。
综上所述,本发明提供的随机数生成方法及系统,以具有较高随机性的硬件随机数、根据系统实际运行情况实时变化的运行参数的值、具有唯一性的硬件设备标识符作为c库的随机数生成函数的输入,使得不同设备在不同时刻生成的随机数均不同,具有较高的不可预测性。此外,本方案的硬件随机数只作为c库随机数生成函数的一部分,其作用为提高随机数生成函数的随机性,且不必担心不法分子盗取硬件电路后可预测出随机数,因此,使用效率高的硬件电路即可,从而实现在高效生成随机数的前提下,生成的随机数具有较高的不可预测性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。