CN117827148A - 一种随机数生成方法、装置及电子设备 - Google Patents
一种随机数生成方法、装置及电子设备 Download PDFInfo
- Publication number
- CN117827148A CN117827148A CN202311873500.1A CN202311873500A CN117827148A CN 117827148 A CN117827148 A CN 117827148A CN 202311873500 A CN202311873500 A CN 202311873500A CN 117827148 A CN117827148 A CN 117827148A
- Authority
- CN
- China
- Prior art keywords
- iteration
- time
- random number
- round
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012545 processing Methods 0.000 claims abstract description 66
- 230000004044 response Effects 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 62
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012804 iterative process Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本申请公开了一种随机数生成方法、装置及电子设备。该方法包括:响应于随机数生成指示,获取初始参数值。基于初始参数值对计算机的系统时间进行多轮迭代处理,直至满足迭代结束条件。根据最后一轮迭代得到的时间簇因子确定随机数。每轮迭代过程中,基于预设函数对本轮的时间因子和函数累计值进行运算得到本轮的时间簇因子。上述流程中,不使用随机数种子参与随机数的生成,从根源避免了种子丢失,也避免了为保证种子安全可能招致的麻烦,继而提高随机数生成的不可预测性。
Description
技术领域
本申请涉及信息安全技术领域,具体公开了一种随机数生成方法、装置及电子设备。
背景技术
随机数被广泛应用于信息安全任务中,例如数据加密,生成验证码等。目前主流的随机数生成方式是通过硬件随机数发生器实现的。软件随机数发生器也有较为广泛的应用,出现了许多设计软件随机数发生器的方法,其设计思想一般都是对给定的随机数种子(Rand Seed)进行函数运算来生成随机数。
随机数种子是软件随机数发生器执行函数运算时引入的必要参数,在随机数发生器中给定相同的随机数种子即会生成相同的随机数,一旦随机数种子泄露,则可以依据相当高的概率由随机数种子推算出基于该随机数种子生成的随机数。
为提高随机数生成的不可预测性,常见的方式是为随机数种子的存储增添防窃取措施,通过防止种子泄露来避免随机数被预测。但增添防窃取措施并不能完全规避种子的泄露,仍存在因种子泄露而导致随机数被推算出来的风险。有鉴于此,如何提高随机数生成的不可预测性是当下亟需解决的问题。
发明内容
本申请实施例提供了一种随机数生成方法、装置及电子设备,用于提高随机数生成的不可预测性。特点是不使用随机数种子,从根源避免了种子丢失,也避免了为保证种子安全可能招致的麻烦。
为达到上述目的,本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供了一种随机数生成方法,所述方法包括:
响应于随机数生成指示,获取初始参数值;
响应于随机数生成指示,获取初始参数值;
基于所述初始参数值对计算机的系统时间进行多轮迭代处理,直至满足迭代结束条件;根据最后一轮迭代得到的时间簇因子确定随机数;
其中,每轮迭代过程如下:
基于预设函数对本轮的时间因子和函数累计值进行运算,得到本轮的时间簇因子;任一轮迭代中的时间因子为计算机在该轮迭代开始时的系统时间;首轮迭代中的函数累计值为所述初始参数值,非首轮迭代中的函数累计值为前一轮迭代得到的时间簇因子。
本申请实施例中,不使用随机数种子来生成随机数,能够刚避免种子丢失,也避免了为保证种子安全可能招致的麻烦。此外,本申请实施例每轮参与计算的时间因子是计算机的在该轮迭代开始时的系统时间。由于不同计算机的处理性能存在差异,即使获知首轮迭代引入的外部参数也难以推算出每轮迭代的时间因子,并且计算机的运算速度具有波动特性,即便每轮迭代的运算量相同,但每轮迭代的运算耗时也不会完全一样。在首轮迭代引入的外部参数被获取的前提下,即便采用与生成随机数的计算机性能完全相同的计算机进行模拟,也难以穷举出每轮迭代的时间因子。因此,本申请实施例能够有效提高随机数生成的不可预测性。
在一些可能的实施例中,通过下述方式确定所述迭代结束条件:
确定所述计算机在预设时段内执行所述多轮迭代处理的迭代轮数;
若所述迭代轮数大于第一轮数,则确定所述迭代结束条件为迭代耗时达到预设时长;
若所述迭代轮数小于或等于所述第一轮数,则确定所述迭代结束条件为迭代轮数达到第二轮数;其中,所述第一轮数和第二轮数是根据计算机的处理性能设定的,所述第二轮数小于所述第一轮数。
本申请实施例中,通过检测计算机在预设时段内可执行多轮迭代处理的具体迭代轮数,以根据该迭代轮数确定随机数生成的迭代结束条件。当迭代轮数大于第一轮数时,即表明计算机的处理性能较高,此时可选择以迭代耗时达到预设时长作为迭代结束条件,以提高随机数的生成速率及保证随机数不可预测性。相应的,当迭代轮数未大于第一轮数时,可选择以迭代轮数达到第二轮数作为迭代结束条件,以提高随机数生成的安全性。
在一些可能的实施例中,所述确定所述迭代结束条件为迭代次数达到第二轮数之后,所述方法还包括:
确定所述计算机执行第二轮数的多轮迭代处理的处理时长;
若所述处理时长大于时长阈值,则降低所述预设函数的运算复杂度,以使所述处理时长小于或等于所述时长阈值。
本申请实施例中,通过检测计算机执行第二迭代轮数的多轮迭代处理所需的处理时长,以根据该处理时长与时长阈值的比对结果,判定是否该计算机生成随机数的速率过慢。若处理时长大于时长阈值,则表明计算机处理性能略差,容易影响随机数的生成速率需求。此时可通过降低预设函数的运算复杂度以缩短处理时长,继而提高随机数的生成速率。
在一些可能的实施例中,所述根据最后一轮迭代得到的时间簇因子确定随机数,包括:
响应于随机数需求指示,获取随机数需求的第一数据长度;
若最后一轮迭代得到的时间簇因子的第二数据长度与所述第一数据长度相同,则将所述时间簇因子作为所述随机数。
本申请实施例中,能够根据需求的数据长度来根据多轮迭代处理后得到的时间簇因子来生成随机数,当随机数需求的的第一数据长度与时间簇因子的第二数据长度相同时,可直接将时间簇因子作为随机数。
在一些可能的实施例中,所述方法还包括:
若所述第二数据长度大于所述第一数据长度,则从最后一轮迭代得到的时间簇因子中截取所述第一数据长度的数据作为所述随机数;
若所述第二数据长度小于所述第一数据长度,则多次执行所述多轮迭代处理以在每次执行所述多轮迭代处理时得到一个新生成的时间簇因子,直至所述时间簇因子与所述新生成的时间簇因子的数据长度之和不小于所述第一数据长度;
根据所述时间簇因子和所述新生成的时间簇因子确定所述随机数。
本申请实施例中,可根据随机数需求的第一数据长度和时间簇因子的第二数据长度的比对结果自适应的生成满足需求长度的随机数。当时间簇因子的第二数据长度大于随机数需求的第一数据长度,则从时间簇因子中截取出满足长度需求的数据作为随机数。相应的,当第二数据长度小于第一数据长度时,则通过多次执行多轮迭代处理流程以使首次生成的时间簇因子和新生成的时间簇因子的数据长度之和不小于第一数据长度,继而根据首次生成的时间簇因子和新生成的时间簇因子获取随机数。
在一些可能的实施例中,所述根据所述时间簇因子和所述新生成的时间簇因子确定所述随机数,包括:
从所述时间簇因子和所述新生成的时间簇因子的数据拼接结果中,截取所述第一数据长度的数据作为所述随机数。
本申请实施例中,通过对首次生成的时间簇因子和新生成的时间簇因子进行拼接,以使其数据拼接结果能够满足随机数需求的第一数据长度,继而从该数据拼接结果中截取出第一数据长度的数据作为随机数。
在一些可能的实施例中,所述系统时间的最小计时单位为微秒。
本申请实施例中,通过将用于生成随机数的系统时间的最小计时单位设定为微秒,以充分利用计算机的运算速度具有波动特性的特点,使每轮迭代中引入的时间因子难以全部都被准确地推算或穷尽出来,继而提高随机数生成的不可预测性。
第二方面,本申请实施例提供了一种随机数生成装置,所述装置包括:
数据获取单元,被配置为响应于随机数生成指示,获取初始参数值;
数据生成单元,被配置为基于所述初始参数值对计算机的系统时间进行多轮迭代处理,直至满足迭代结束条件;根据最后一轮迭代得到的时间簇因子确定随机数;其中,每轮迭代过程如下:
基于预设函数对本轮的时间因子和函数累计值进行运算,得到本轮的时间簇因子;任一轮迭代中的时间因子为计算机在该轮迭代开始时的系统时间;首轮迭代中的函数累计值为所述初始参数值,非首轮迭代中的函数累计值为前一轮迭代得到的时间簇因子。
在一些可能的实施例中,通过下述方式确定所述迭代结束条件:
确定所述计算机在预设时段内执行所述多轮迭代处理的迭代轮数;
若所述迭代轮数大于第一轮数,则确定所述迭代结束条件为迭代耗时达到预设时长;
若所述迭代轮数小于或等于所述第一轮数,则确定所述迭代结束条件为迭代轮数达到第二轮数;其中,所述第一轮数和第二轮数是根据计算机的处理性能设定的,所述第二轮数小于所述第一轮数。
在一些可能的实施例中,执行所述确定所述迭代结束条件为迭代次数达到第二轮数之后,所述数据生成单元还被配置为:
确定所述计算机执行第二轮数的多轮迭代处理的处理时长;
若所述处理时长大于时长阈值,则降低所述预设函数的运算复杂度,以使所述处理时长小于或等于所述时长阈值。
在一些可能的实施例中,执行所述根据最后一轮迭代得到的时间簇因子确定随机数,所述数据生成单元具体被配置为:
响应于随机数需求指示,获取随机数需求的第一数据长度;
若最后一轮迭代得到的时间簇因子的第二数据长度与所述第一数据长度相同,则将所述时间簇因子作为所述随机数。
在一些可能的实施例中,所述数据生成单元还被配置为:
若所述第二数据长度大于所述第一数据长度,则从最后一轮迭代得到的时间簇因子中截取所述第一数据长度的数据作为所述随机数;
若所述第二数据长度小于所述第一数据长度,则多次执行所述多轮迭代处理以在每次执行所述多轮迭代处理时得到一个新生成的时间簇因子,直至所述时间簇因子与所述新生成的时间簇因子的数据长度之和不小于所述第一数据长度;
根据所述时间簇因子和所述新生成的时间簇因子确定所述随机数。
在一些可能的实施例中,执行所述根据所述时间簇因子和所述新生成的时间簇因子确定所述随机数,所述数据生成单元具体被配置为:
从所述时间簇因子和所述新生成的时间簇因子的数据拼接结果中,截取所述第一数据长度的数据作为所述随机数。
在一些可能的实施例中,所述系统时间的最小计时单位为微秒。
第三方面,本申请实施例提供一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中任一项所述的方法包括的步骤。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任一项所述的方法。
第五方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行第一方面任一项所述的方法。
本申请实施例中,响应于随机数生成指示,获取初始参数值。基于初始参数值对计算机的系统时间进行多轮迭代处理,直至满足迭代结束条件,根据最后一轮迭代得到的时间簇因子确定随机数。每轮迭代过程中,基于预设函数对本轮的时间因子和函数累计值进行运算,得到本轮的时间簇因子。上述流程中,每轮参与计算的时间因子是计算机的在该轮迭代开始时的系统时间。由于不同计算机的处理性能存在差异,即使获知首轮迭代引入的外部参数也难以推算出每轮迭代的时间因子。此外,计算机的运算速度具有波动特性,即便每轮迭代的运算量相同,但每轮迭代的运算耗时也不会完全一样。因此在首轮迭代引入的外部参数被获取的前提下,即便采用与生成随机数的计算机性能完全相同的计算机进行推算,也难以穷举出每轮迭代的时间因子。由此可见,本申请实施例能够有效提高随机数生成的不可预测性。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的基于随机数种子生成随机数的示意图;
图2为本申请实施例提供的一种随机数生成方法的整体流程图;
图3为本申请实施例提供的多轮迭代处理的流程图;
图4为本申请实施例提供的计算机波动示意图;
图5为本申请实施例提供的确定迭代结束条件的流程图;
图6为本申请实施例提供的一种随机数生成装置的结构图;
图7为本申请实施例提供的电子设备的结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
为便于理解本申请提供的技术方案,接下来对技术背景进行详细说明:
前文已提及,目前许多随机数生成方式是通过软件编程的随机数发生器实现的。基本路径是通过随机数发生器对给定的随机数种子(Rand Seed)进行某种运算来生成随机数和种子更新。例如,通过平方取中法(Middle Square Method)是对给定的随机数种子进行平方,并将平方结果修正到预设长度。然后从修正后的平方结果中截取指定长度(例如截取中间4位)作为生成的随机数。
具体如图1所示,给定随机数种子为2041,将随机数种子进行平方得到4165681。假设预设长度为8位,则可在首位添加0,得到修正后的8位平方结果04165681。然后截取中间4位,得到本次生成的随机数1656。之后将数值04165681,或者将04165681变换后的数值,作为新的种子。
通过上述流程可知,一旦随机数种子泄露,则可以通过随机数种子推算出基于该随机数种子生成的随机数。目前的主要防范手段是为随机数种子的存储增添防窃取措施,通过防止种子泄露来避免随机数被预测。但增添防窃取措施并不能完全规避种子的泄露,仍存在因种子泄露而导致随机数被推算出来的风险。有鉴于此,如何提高随机数生成的不可预测性是当下亟需解决的问题。
为解决上述问题,本申请的发明构思为:响应于随机数生成指示,获取初始参数值,初始参数值为用户选定的某固定常数。基于初始参数值对计算机的系统时间进行多轮迭代处理,直至满足迭代结束条件,根据最后一轮迭代得到的时间簇因子确定随机数。每轮迭代过程中,基于预设函数对本轮的时间因子和函数累计值进行运算,得到本轮的时间簇因子。其中,任一轮迭代中的时间因子为计算机在该轮迭代开始时的系统时间;首轮迭代中的函数累计值为该初始参数值,非首轮迭代中的函数累计值为前一轮迭代得到的时间簇因子。
上述随机数的生成流程中,不使用随机数种子,从根源避免了种子丢失,也避免了为保证种子安全可能招致的麻烦。此外,本申请实施例每轮参与计算的时间因子是计算机的在该轮迭代开始时的系统时间。由于不同计算机的处理性能存在差异,即使获知首轮迭代引入的外部参数也难以推算出每轮迭代的时间因子,并且计算机的运算速度具有波动特性,即便每轮迭代的运算量相同,但每轮迭代的运算耗时也不会完全一样。在首轮迭代引入的外部参数被获取的前提下,即便采用与生成随机数的计算机性能完全相同的计算机进行模拟,也难以穷举出每轮迭代的时间因子。因此,本申请实施例能够有效提高随机数生成的不可预测性。
接下来如图2所示,图2示出了本申请提供的一种随机数生成方法的整体流程,具体包括下述步骤:
步骤201:响应于随机数生成指示,获取初始参数值;
本申请实施例中的初始参数值是在给定数据生成条件后随机生成的。例如给定数据条件为生成64位的无符号整数,在执行步骤201时,可随机生成一个64位的无符号整数作为参与随机数生成的初始参数值。
具体的,64位的无符号整数包括{0,1,2,…,264-1}。将随机生成的64位的无符号整数作为初始参数值,即相当于从{0,1,2,…,264-1}中确定一个作为初始参数值,较为懒惰的做法是总是固定取零。
步骤202:基于所述初始参数值对计算机的系统时间进行多轮迭代处理,直至满足迭代结束条件;根据最后一轮迭代得到的时间簇因子确定随机数;
图3示出了本申请的多轮迭代流程,如图3所示,包括下述步骤:
步骤301:确定本轮的时间因子和函数累计值;
任一轮迭代中的时间因子是计算机在该轮迭代开始时记录的系统时间。实施时,可以在本轮迭代开始时读取计算机当前的系统时间,并将该系统时间作为时间因子。目前计算机可以记录的系统时间可以达到微秒甚至纳秒,具体实施时,可以将精确到微秒的系统时间作为本轮的时间因子。例如瞬时获得的系统时间为0时0分0秒0毫秒0微秒,这是一个小于264的正整数,也可被表示成64位二进制数。
本轮的函数累计值是根据当前迭代轮次确定的,首轮迭代中的函数累计值为上述步骤201中得到的初始参数值,非首轮迭代中的函数累计值则为前一轮迭代输出的时间簇因子。
步骤302:基于预设函数对本轮的时间因子和函数累计值进行运算,得到本轮的时间簇因子;
预设函数可以包括如取整、取余、位移等多种数值计算或逻辑运算的复杂函数,例如预设函数可如下述公式(1)所示:
F(A,t)=int[(A5/3.14159265)+0.5]+((t<<<29)+257)9 mod 264 (1)
其中,F为预设函数、F(A,t)为本轮的时间簇因子、A为本轮的函数累计值(也是上一轮算出的时间簇因子)、t为本轮的时间因子、int为取整、<<<为位移符,表示将64位数循环左移、mod为取余。
需要说明的是,上述公式(1)仅为预设函数的一个示例,并非是对本申请实施例的预设函数进行具体限定,具体实施时根据实际需求设定包含复杂运算的预设函数即可,此处要求预设函数包含复杂运算,即具备一定复杂度的目的在于提高生成随机数的安全性。
步骤303:确定是否满足迭代结束条件;
本申请实施例的迭代结束条件是根据计算机的处理性能设定的。具体的,本申请实施例预先从安全性、用户体验和适用场景等角度设定了三个用于决策迭代结束条件设定参数。这三个设定参数分别包括:最小迭代次数N、最优生成时间T1、最大生成时间T2。
为便于理解本申请如何确定迭代结束条件,接下来对上述三个设定参数分别进行介绍:
最小迭代次数N:该项参数是从安全性角度来设定的参数。前文已提及,计算机的运算速度具有波动特性,即便每轮迭代的运算量相同,但每轮迭代的运算耗时也不会完全一样。
例如图4所示,假设计算机在执行一轮迭代所需的时间可能在5~7微秒间波动,那么迭代两次则可能产生9种结果,分别为:
如果首次迭代结束时间为5微秒,则第二次迭代结束时间可分别为10微秒、11微秒以及12微秒(即第二次迭代耗时5微秒、6微秒或7微秒);
如果首次迭代结束时间为6微秒,则第二次迭代结束时间分别为11微秒、12微秒以及13微秒(即第二次迭代耗时5微秒、6微秒或7微秒);
如果首次迭代结束时间为7微秒,则第二次迭代结束时间分别为12微秒、13微秒以及14微秒(即第二次迭代耗时5微秒、6微秒或7微秒)。由此得到图4示出的9种结果。
为预防通过穷举所有可能对随机数进行预测,可将最小迭代次数N设定为100次,即表示生成一个随机数至少需要进行100轮上述图3所示的多轮迭代处理流程。
最优生成时间T1:该项参数是从用户体验的角度来设定的参数。该项参数表示生成一个随机数所需的最优时间,可以通过对用户进行问卷统计调查来获取用户期望的最优时间。例如,可以将最优时间T1设定为100微秒。
最大生成时间T2:该项参数是从适用场角度来设定的参数。经统计发现,每秒生成200个随机数能够满足绝大多数应用场景。
基于此,可以设定最大生成时间T2=1s/Num。Num即表征能够满足绝大多数应用场景的,每秒内生成随机数的数量。例如,Num取值为200则T2=1s/200=5000绝大(微秒)。即表示,若想要在1秒内生成200个随机数,则生成一个随机数的最大耗时不能超过5000微秒,否则可能无法满足用户需求的随机数生成速率。
通过上述内容介绍了本申请实施例中,用于决策迭代结束条件的三个设定参数(N、T1和T2)后,接下来通过图5对本申请如何确定多轮迭代处理的迭代结束条件进行说明。具体如图5所示,包括下述步骤:
步骤501:确定计算机在预设时段内执行多轮迭代处理的迭代轮数;
计算机上试跑随机数生成的程序,测算预设时段t0(1秒)内能够执行多少轮迭代,即得到步骤501中的迭代轮数n0。
需要说明的是,此处测算1秒内能够执行多少轮迭代的原因在于,如果计算机的处理性能比较优秀,那么一轮迭代的计算耗时通常会在几微秒甚至1微秒以内结束。但受硬件限制,通过常规计算机通常无法准确抓取到单次迭代的耗时。因此,本申请实施例选择通过抓取计算机在1秒内的迭代轮数n0来评判计算机的处理性能。
步骤502:检测迭代轮数n0是否大于第一轮数n1;
下面首先对第一轮数n1是如何获取的进行解释说明:
本申请实施例中的第一轮数n1是根据上述最优生成时间T1(100上述)和最小迭代次数N(100轮)得到的。前文已提及,T1表示生成一个随机数所需的最优时间,N表示生成一个随机数最少需要迭代多少次。所以,T1/N=100一个随机数最轮=100一轮,表示在100示在内,通过迭代100轮来生成一个随机数,那么每迭代一轮所需的平均时间ti为1来生。
接下来将单位换算到1秒内,通过计算t0/ti得到计算机在1秒内能够执行多少轮迭代,即1s/1执行多少轮迭代,即迭轮,第一轮数n1即为1000000轮。
步骤503:若迭代轮数n0大于第一轮数n1,则确定迭代结束条件为迭代耗时达到预设时长ti;
如果迭代轮数n0大于第一轮数n1,则说明计算机的处理性能很快,足以满足在100足在内迭代100次。因此,在安全性得以保障的基础上,可基于前述最优生成时间T1来设定迭代结束条件。具体的,可确定迭代结束条件为迭代耗时达到预设时长。该预设时长是根据上述最优生成时间T1设定的。例如,可直接将T1设定为判定迭代结束的预设时长。
步骤504:若迭代轮数n0小于或等于第一轮数n1,则确定迭代结束条件为迭代轮数达到第二轮数n2;
如果迭代轮数n0小于或等于第一轮数n1,则说明计算机无法满足在100明计内迭代100次。此时需要以保障随机数的安全性为主,具体可将迭代结束条件设定为迭代轮数达到第二轮数n2。实施时,可将前文提及的最小迭代次数N设定为第二轮数n2。即,保障每个随机数要在迭代100次后生成。
另为确保随机数的生成速率能够满足用户需求,待确定迭代结束条件为迭代次数达到第二轮数n2之后,需要获取计算机执行n2轮的多轮迭代处理所耗费的处理时长t1。
如果该处理时长t1大于时长阈值△t,则说明本台计算机的处理速度非常低,以当前的预设函数进行随机数生成,在确保安全性(即至少迭代100次)的前提下,是不能保证每秒生成200个以上的随机数的,即随机数的生成速率不能满足用户需求。△t是根据上述最大生成时间T2确定的。例如,可直接将T2设定为△t。
此时,需要降低预设函数的运算复杂度,以使处理时长t1小于或等于时长阈值△t。实施时,可以通过减少预设函数中参与运算的项数,或降低幂运算的幂次等方式降低运算复杂度,本申请对此不作限定。
需要说明的是,此处降低预设函数运算复杂度的操作即相当于更新了预设函数,后续生成随机数时需采用更新后的预设函数进行随机数的生成。
步骤304:若满足迭代结束条件,则结束迭代并根据最后一轮迭代得到的时间簇因子确定随机数;否则,返回步骤301执行下一轮迭代。
实际应用中,用户可能对随机数的长度具有要求,例如可能要求生成32位、64位、128位甚至256位的随机数。
在执行步骤304时,首先确定用户是否有随机数的长度需求,如果没有,则可直接将最后一轮迭代得到的时间簇因子作为生成的随机数。
如果存在长度需求,则获取随机数需求的第一数据长度L1,以及最后一轮迭代得到的时间簇因子的第二数据长度L2。
如果L1=L2,则说明该时间簇因子恰好满足用户要求的随机数长度,此时可直接将最后一轮迭代得到的时间簇因子作为生成的随机数。
如果L2>L1,则说明当前生成的时间簇因子过长,此时可从最后一轮迭代得到的时间簇因子中截取L1长度的数据作为随机数。例如,最后一轮得到的时间簇因子a为64位,用a1、a2、a3……a64表征a的每一位。假设用户需求的第二数据长度为16位,则可从左至右截取a1~a16作为本次生成的随机数,还可居中截取a17~a32作为本次生成的随机数。本申请实施例对如何对时间簇因子进行数据截取的方式不作限定,实施时可采用随机截取的方式,仅需保证截取到L1长度的数据即可。
如果L2<L1,则说明当前生成的时间簇因子过短,此时可多次轮迭代,将得到的多个时间簇因子进行数据拼接,以使拼接后的时间簇因子达到用户需求的第一数据长度L1。
实施时,可以执行多次上述多轮迭代处理流程,以在每执行一次多轮迭代处理流程后生成一个新的时间簇因子,直至本次生成的时间簇因子与新生成的时间簇因子的数据长度之和,不小于用户需求的第一数据长度L1。
例如,多轮迭代处理过程中,每次生成的时间簇因子的数据长度为64位,而用户需求的第一数据长度L1为100位,则需执行2次多轮迭代处理流程以生成2个64位的时间簇因子。即,使本次生成的时间簇因子与新生成的时间簇因子的数据长度之和(128位)大于第一数据长度L1(100位)。
接下来,从时间簇因子和新生成的时间簇因子的数据拼接结果中,截取第一数据长度的数据作为随机数。以上述示例继续说明,实施时可将本次生成的时间簇因子和新生成的时间簇因子进行数据拼接,得到128位的数据拼接结果,然后从这128位的数据拼接结果中,截取出100位的数据作为最终生成的随机数,由此即可得到满足用户需求长度的随机数。
本申请实施例中,每轮预设函数的参数为该轮的函数累计值和时间因子,每轮参与计算的时间因子是计算机的在该轮迭代开始时的系统时间,无需预先设定和存储。所以本申请的随机数生成流程中实质上无需随机数种子的参与,即从源头规避了因随机数种子泄露而导致随机数被推算的可能。
进一步的,由于不同计算机的处理性能存在差异,即使获知首轮迭代引入的外部参数也难以推算出每轮迭代的时间因子。此外,计算机的运算速度具有波动特性,即便每轮迭代的运算量相同,但每轮迭代的运算耗时也不会完全一样。因此在首轮迭代引入的外部参数被获取的前提下,即便采用与生成随机数的计算机性能完全相同的计算机进行推算,也难以穷举出每轮迭代的时间因子。由此可见,本申请实施例能够有效提高随机数生成的不可预测性。
基于相同的发明构思,本申请实施例还提供了一种随机数生成装置,具体如图6所示,包括:
数据获取单元601,被配置为响应于随机数生成指示,获取初始参数值;
数据生成单元602,被配置为基于所述初始参数值对计算机的系统时间进行多轮迭代处理,直至满足迭代结束条件;根据最后一轮迭代得到的时间簇因子确定随机数;其中,每轮迭代过程如下:
基于预设函数对本轮的时间因子和函数累计值进行运算,得到本轮的时间簇因子;任一轮迭代中的时间因子为计算机在该轮迭代开始时的系统时间;首轮迭代中的函数累计值为所述初始参数值,非首轮迭代中的函数累计值为前一轮迭代得到的时间簇因子。
在一些可能的实施例中,通过下述方式确定所述迭代结束条件:
确定所述计算机在预设时段内执行所述多轮迭代处理的迭代轮数;
若所述迭代轮数大于第一轮数,则确定所述迭代结束条件为迭代耗时达到预设时长;
若所述迭代轮数小于或等于所述第一轮数,则确定所述迭代结束条件为迭代轮数达到第二轮数;其中,所述第一轮数和第二轮数是根据计算机的处理性能设定的,所述第二轮数小于所述第一轮数。
在一些可能的实施例中,执行所述确定所述迭代结束条件为迭代次数达到第二轮数之后,所述数据生成单元602还被配置为:
确定所述计算机执行第二轮数的多轮迭代处理的处理时长;
若所述处理时长大于时长阈值,则降低所述预设函数的运算复杂度,以使所述处理时长小于或等于所述时长阈值。
在一些可能的实施例中,执行所述根据最后一轮迭代得到的时间簇因子确定随机数,所述数据生成单元602具体被配置为:
响应于随机数需求指示,获取随机数需求的第一数据长度;
若最后一轮迭代得到的时间簇因子的第二数据长度与所述第一数据长度相同,则将所述时间簇因子作为所述随机数。
在一些可能的实施例中,所述数据生成单元602还被配置为:
若所述第二数据长度大于所述第一数据长度,则从最后一轮迭代得到的时间簇因子中截取所述第一数据长度的数据作为所述随机数;
若所述第二数据长度小于所述第一数据长度,则多次执行所述多轮迭代处理以在每次执行所述多轮迭代处理时得到一个新生成的时间簇因子,直至所述时间簇因子与所述新生成的时间簇因子的数据长度之和不小于所述第一数据长度;
根据所述时间簇因子和所述新生成的时间簇因子确定所述随机数。
在一些可能的实施例中,执行所述根据所述时间簇因子和所述新生成的时间簇因子确定所述随机数,所述数据生成单元602具体被配置为:
从所述时间簇因子和所述新生成的时间簇因子的数据拼接结果中,截取所述第一数据长度的数据作为所述随机数。
在一些可能的实施例中,所述系统时间的最小计时单位为微秒。
下面参照图7来描述根据本申请的这种实施方式的电子设备130。图7显示的电子设备130仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,电子设备130以通用电子设备的形式表现。电子设备130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。
总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(ROM)1323。
存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
电子设备130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备130交互的设备通信,和/或与使得该电子设备130能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口135进行。并且,电子设备130还可以通过网络适配器136与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于电子设备130的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器132,上述指令可由上述装置的处理器131执行以完成上述方法。可选地,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器131执行时实现如本申请提供的一种随机数生成方法中的任一方法。
在示例性实施例中,本申请提供的一种随机数生成方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的一种随机数生成方法中的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的用于随机数生成的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如语言或类似的程序设计语言。程序代码可以完全地在用户电子设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务端上执行。在涉及远程电子设备的情形中,远程电子设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户电子设备,或者,可以连接到外部电子设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程图像缩放设备的处理器以产生一个机器,使得通过计算机或其他可编程图像缩放设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程图像缩放设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程图像缩放设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种随机数生成方法,其特征在于,所述方法包括:
响应于随机数生成指示,获取初始参数值;
基于所述初始参数值对计算机的系统时间进行多轮迭代处理,直至满足迭代结束条件;根据最后一轮迭代得到的时间簇因子确定随机数;
其中,每轮迭代过程如下:
基于预设函数对本轮的时间因子和函数累计值进行运算,得到本轮的时间簇因子;任一轮迭代中的时间因子为计算机在该轮迭代开始时的系统时间;首轮迭代中的函数累计值为所述初始参数值,非首轮迭代中的函数累计值为前一轮迭代得到的时间簇因子。
2.根据权利要求1所述的方法,其特征在于,通过下述方式确定所述迭代结束条件:
确定所述计算机在预设时段内执行所述多轮迭代处理的迭代轮数;
若所述迭代轮数大于第一轮数,则确定所述迭代结束条件为迭代耗时达到预设时长;
若所述迭代轮数小于或等于所述第一轮数,则确定所述迭代结束条件为迭代轮数达到第二轮数;其中,所述第一轮数和第二轮数是根据计算机的处理性能设定的,所述第二轮数小于所述第一轮数。
3.根据权利要求2所述的方法,其特征在于,所述确定所述迭代结束条件为迭代次数达到第二轮数之后,所述方法还包括:
确定所述计算机执行第二轮数的多轮迭代处理的处理时长;
若所述处理时长大于时长阈值,则降低所述预设函数的运算复杂度,以使所述处理时长小于或等于所述时长阈值。
4.根据权利要求1所述的方法,其特征在于,所述根据最后一轮迭代得到的时间簇因子确定随机数,包括:
响应于随机数需求指示,获取随机数需求的第一数据长度;
若最后一轮迭代得到的时间簇因子的第二数据长度与所述第一数据长度相同,则将所述时间簇因子作为所述随机数。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述第二数据长度大于所述第一数据长度,则从最后一轮迭代得到的时间簇因子中截取所述第一数据长度的数据作为所述随机数;
若所述第二数据长度小于所述第一数据长度,则多次执行所述多轮迭代处理以在每次执行所述多轮迭代处理时得到一个新生成的时间簇因子,直至所述时间簇因子与所述新生成的时间簇因子的数据长度之和不小于所述第一数据长度;
根据所述时间簇因子和所述新生成的时间簇因子确定所述随机数。
6.根据权利要求5所述的方法,其特征在于,所述根据所述时间簇因子和所述新生成的时间簇因子确定所述随机数,包括:
从所述时间簇因子和所述新生成的时间簇因子的数据拼接结果中,截取所述第一数据长度的数据作为所述随机数。
7.根据权利要求1-6中任一所述的方法,其特征在于,所述系统时间的最小计时单位为微秒。
8.一种随机数生成装置,其特征在于,所述装置包括:
数据获取单元,被配置为响应于随机数生成指示,获取初始参数值;
数据生成单元,被配置为基于所述初始参数值对计算机的系统时间进行多轮迭代处理,直至满足迭代结束条件;根据最后一轮迭代得到的时间簇因子确定随机数;其中,每轮迭代过程如下:
基于预设函数对本轮的时间因子和函数累计值进行运算,得到本轮的时间簇因子;任一轮迭代中的时间因子为计算机在该轮迭代开始时的系统时间;首轮迭代中的函数累计值为所述初始参数值,非首轮迭代中的函数累计值为前一轮迭代得到的时间簇因子。
9.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1-7中任一项所述的方法包括的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311873500.1A CN117827148A (zh) | 2023-12-30 | 2023-12-30 | 一种随机数生成方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311873500.1A CN117827148A (zh) | 2023-12-30 | 2023-12-30 | 一种随机数生成方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117827148A true CN117827148A (zh) | 2024-04-05 |
Family
ID=90507577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311873500.1A Pending CN117827148A (zh) | 2023-12-30 | 2023-12-30 | 一种随机数生成方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117827148A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140129602A1 (en) * | 2012-11-02 | 2014-05-08 | Electronics And Telecommunications Research Institute | Random number generation apparatus and method using input time information |
CN107203365A (zh) * | 2016-03-17 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 随机数的生成及获取方法和装置 |
CN115567199A (zh) * | 2022-09-15 | 2023-01-03 | 北京海泰方圆科技股份有限公司 | 一种随机数种子生成方法、装置、电子设备及存储介质 |
CN115686437A (zh) * | 2021-07-22 | 2023-02-03 | 腾讯科技(深圳)有限公司 | 随机数生成方法、装置、计算机设备和存储介质 |
-
2023
- 2023-12-30 CN CN202311873500.1A patent/CN117827148A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140129602A1 (en) * | 2012-11-02 | 2014-05-08 | Electronics And Telecommunications Research Institute | Random number generation apparatus and method using input time information |
CN107203365A (zh) * | 2016-03-17 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 随机数的生成及获取方法和装置 |
CN115686437A (zh) * | 2021-07-22 | 2023-02-03 | 腾讯科技(深圳)有限公司 | 随机数生成方法、装置、计算机设备和存储介质 |
CN115567199A (zh) * | 2022-09-15 | 2023-01-03 | 北京海泰方圆科技股份有限公司 | 一种随机数种子生成方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
杨轩;耿燕;: "一类基于时间-迭代信号的切换系统ILC策略", 西安工程大学学报, no. 05, 25 October 2020 (2020-10-25) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wichelmann et al. | Microwalk: A framework for finding side channels in binaries | |
US10778410B2 (en) | Homomorphic data encryption method and apparatus for implementing privacy protection | |
Brumley et al. | Remote timing attacks are still practical | |
US8411855B1 (en) | Size optimization for large elliptic curve cryptography scalar multiplication acceleration tables | |
EP3126959B1 (en) | Elliptic curve point multiplication procedure resistant to side-channel information leakage | |
CN107004084B (zh) | 用于加密操作的乘法掩码 | |
US20130041710A1 (en) | Advanced Statistical Detection of Emerging Trends | |
US10572635B2 (en) | Automatic correction of cryptographic application program interfaces | |
CN115643003B (zh) | 用于侧信道分析的方法及装置 | |
Koppermann et al. | 18 seconds to key exchange: Limitations of supersingular isogeny Diffie-Hellman on embedded devices | |
CN110266484B (zh) | 一种数据加密方法、装置、设备及介质 | |
CN113794706B (zh) | 数据的处理方法、装置、电子设备及可读存储介质 | |
CN117827148A (zh) | 一种随机数生成方法、装置及电子设备 | |
CN109445973A (zh) | 定位应用程序崩溃的方法及装置 | |
US20200167665A1 (en) | Performing data processing based on decision tree | |
CN112580114A (zh) | 一种信息处理方法、装置、设备及存储介质 | |
CN108595973B (zh) | 指令确定方法、设备控制方法、装置和系统 | |
US20160006563A1 (en) | Encrypted data computation system, device, and program | |
CN116170180A (zh) | 加密方法、装置、存储介质以及电子设备 | |
CN108494589B (zh) | 一种分布式Nginx服务器的管理方法和系统 | |
CN113347270B (zh) | 一种网络传输文件防水平越权方法和装置 | |
US9582667B2 (en) | Detecting vulnerability to resource exhaustion | |
CN107358032A (zh) | 一种产品的升级方法、装置及产品升级系统 | |
US9842086B2 (en) | Calculation device, calculation method, and program | |
CN111949738A (zh) | 基于区块链的数据存储去重方法、终端设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |