首页 / 专利库 / 电脑零配件 / 硬件 / 一种随机数生成方法及装置

一种随机数生成方法及装置

阅读:416发布:2021-09-19

专利汇可以提供一种随机数生成方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种随机数生成方法及装置,该方法包括:选择至少一个系统调度线程;针对每一个系统调度线程,根据完成系统调度线程耗费的CPU时钟周期生成随机源;针对每一个系统调度线程,生成随机源对应的随机数。基于本发明公开的方法,通过随机选择windows 操作系统 中至少一个系统调度线程,并根据系统调度线程在当前系统环境下完成调度耗费的CPU时钟周期生成随机源,最终根据随机源生成随机数,相较于 硬件 生成随机数来说,随机性更高,生成的随机数也就更有效,这也就避免了产生安全漏洞,从而为 计算机系统 安全提供保证。,下面是一种随机数生成方法及装置专利的具体信息内容。

1.一种随机数生成方法,其特征在于,包括:
选择至少一个系统调度线程;
针对每一个所述系统调度线程,根据完成所述系统调度线程耗费的CPU时钟周期生成随机源;
针对每一个所述系统调度线程,生成所述随机源对应的随机数;
其中,所述系统调度线程,包括:
时间片用完引起的系统调度线程、进程运行引起的系统调度线程、接口函数引起的系统调度线程、软硬件中断引起的系统调度线程或时钟引起的系统调度线程。
2.根据权利要求1所述的方法,其特征在于,还包括:
当所述系统调度线程为多个时,根据各个所述随机数生成随机数序列。
3.根据权利要求1所述的方法,其特征在于,所述根据完成所述系统调度线程耗费的CPU时钟周期生成随机源,包括:
确定所述系统调度线程其中包含的至少一个系统调度进程;
计算完成各个所述系统调度进程耗费的CPU时钟周期;
将计算得到的各个所述CPU时钟周期依次存储于预设内存地址;
当各个所述系统调度进程均执行完成时,根据所述内存地址存储的各个所述CPU时钟周期生成随机源。
4.根据权利要求3所述的方法,其特征在于,所述计算完成各个所述系统调度进程耗费的CPU时钟周期,包括:
触发各个所述系统调度进程,同时,记录触发时间点;
根据各个所述系统调度进程中预先添加的至少一个熵源进行调度;
当完成调度时,记录完成时间点;
根据所述触发时间点和所述完成时间点,计算完成各个所述系统调度进程耗费的CPU时钟周期。
5.根据权利要求4所述的方法,其特征在于,采用Sleep接口函数触发各个所述系统调度进程。
6.一种随机数生成装置,其特征在于,包括:系统调度线程选择模、随机源生成模块和随机数生成模块;
所述系统调度线程选择模块,用于选择至少一个系统调度线程;
所述随机源生成模块,用于针对每一个所述系统调度线程,根据完成所述系统调度线程耗费的CPU时钟周期生成随机源;
所述随机数生成模块,用于针对每一个所述系统调度线程,生成所述随机源对应的随机数;
其中,所述系统调度线程,包括:
时间片用完引起的系统调度线程、进程运行引起的系统调度线程、接口函数引起的系统调度线程、软硬件中断引起的系统调度线程或时钟引起的系统调度线程。
7.根据权利要求6所述的装置,其特征在于,还包括:随机数序列生成模块;
所述随机数序列生成模块,用于当所述系统调度线程为多个时,根据各个所述随机数生成随机数序列。
8.根据权利要求6所述的装置,其特征在于,所述随机源生成模块,包括:系统调度进程确定单元、时钟周期计算单元、存储单元和随机源生成单元;
所述系统调度进程确定单元,用于确定所述系统调度线程其中包含的至少一个系统调度进程;
所述时钟周期计算单元,用于计算完成各个所述系统调度进程耗费的CPU时钟周期;
所述存储单元,用于将计算得到的各个所述CPU时钟周期依次存储于预设内存地址;
所述随机源生成单元,用于当各个所述系统调度进程均执行完成时,根据所述内存地址存储的各个所述CPU时钟周期生成随机源。
9.根据权利要求8所述的装置,其特征在于,所述时钟周期计算单元,包括:触发记录子单元、熵源调度子单元、记录子单元和时钟周期计算子单元;
所述触发记录子单元,用于触发各个所述系统调度进程,同时,记录触发时间点;
所述熵源调度子单元,用于根据各个所述系统调度进程中预先添加的至少一个熵源进行调度;
所述记录子单元,用于当完成调度时,记录完成时间点;
所述时钟周期计算子单元,用于根据所述触发时间点和所述完成时间点,计算完成各个所述系统调度进程耗费的CPU时钟周期。

说明书全文

一种随机数生成方法及装置

技术领域

[0001] 本发明涉及密码安全技术领域,更具体地说,涉及一种随机数据生成方法及装置。

背景技术

[0002] 随机数广泛应用于计算机应用,是密码技术的基础之一。随机数分为两大类:真随机数和伪随机数。
[0003] 在一些关键的密码应用中一般都是采用真随机数,并且在逻辑上通常由真随机数生成器(TRNG)创建。经工作人员发现,在windows系统下,目前TRNG只可基于硬件“熵源”生成真随机数,存在安全漏洞,不能保证计算机系统安全。

发明内容

[0004] 有鉴于此,本发明提供一种随机数生成方法及装置,以解决现有的技术方案中基于硬件的“熵源”生成真随机数,存在安全漏洞的问题。技术方案如下:
[0005] 一种随机数生成方法,包括:
[0006] 选择至少一个系统调度线程;
[0007] 针对每一个所述系统调度线程,根据完成所述系统调度线程耗费的CPU时钟周期生成随机源;
[0008] 针对每一个所述系统调度线程,生成所述随机源对应的随机数。
[0009] 优选的,还包括:
[0010] 当所述系统调度线程为多个时,根据各个所述随机数生成随机数序列。
[0011] 优选的,所述根据完成所述系统调度线程耗费的CPU时钟周期生成随机源,包括:
[0012] 确定所述系统调度线程其中包含的至少一个系统调度进程
[0013] 计算完成各个所述系统调度进程耗费的CPU时钟周期;
[0014] 将计算得到的各个所述CPU时钟周期依次存储于预设内存地址;
[0015] 当各个所述系统调度进程均执行完成时,根据所述内存地址存储的各个所述CPU时钟周期生成随机源。
[0016] 优选的,所述计算完成各个所述系统调度进程耗费的CPU时钟周期,包括:
[0017] 触发各个所述系统调度进程,同时,记录触发时间点;
[0018] 根据各个所述系统调度进程中预先添加的至少一个熵源进行调度;
[0019] 当完成调度时,记录完成时间点;
[0020] 根据所述触发时间点和所述完成时间点,计算完成各个所述系统调度进程耗费的CPU时钟周期。
[0021] 优选的,所述系统调度线程,包括:
[0022] 时间片用完引起的系统调度线程、进程运行引起的系统调度线程、接口函数引起的系统调度线程、软硬件中断引起的系统调度线程或时钟引起的系统调度线程。
[0023] 优选的,采用Sleep接口函数触发各个所述系统调度进程。
[0024] 一种随机数生成装置,包括:系统调度线程选择模、随机源生成模块和随机数生成模块;
[0025] 所述系统调度线程选择模块,用于选择至少一个系统调度线程;
[0026] 所述随机源生成模块,用于针对每一个所述系统调度线程,根据完成所述系统调度线程耗费的CPU时钟周期生成随机源;
[0027] 所述随机数生成模块,用于针对每一个所述系统调度线程,生成所述随机源对应的随机数。
[0028] 优选的,还包括:随机数序列生成模块;
[0029] 所述随机数序列生成模块,用于当所述系统调度线程为多个时,根据各个所述随机数生成随机数序列。
[0030] 优选的,所述随机源生成模块,包括:系统调度进程确定单元、时钟周期计算单元、存储单元和随机源生成单元;
[0031] 所述系统调度进程确定单元,用于确定所述系统调度线程其中包含的至少一个系统调度进程;
[0032] 所述时钟周期计算单元,用于计算完成各个所述系统调度进程耗费的CPU时钟周期;
[0033] 所述存储单元,用于将计算得到的各个所述CPU时钟周期依次存储于预设内存地址;
[0034] 所述随机源生成单元,用于当各个所述系统调度进程均执行完成时,根据所述内存地址存储的各个所述CPU时钟周期生成随机源。
[0035] 优选的,所述时钟周期计算单元,包括:触发记录子单元、熵源调度子单元、记录子单元和时钟周期计算子单元;
[0036] 所述触发记录子单元,用于触发各个所述系统调度进程,同时,记录触发时间点;
[0037] 所述熵源调度子单元,用于根据各个所述系统调度进程中预先添加的至少一个熵源进行调度;
[0038] 所述记录子单元,用于当完成调度时,记录完成时间点;
[0039] 所述时钟周期计算子单元,用于根据所述触发时间点和所述完成时间点,计算完成各个所述系统调度进程耗费的CPU时钟周期。
[0040] 相较于现有技术,本发明实现的有益效果为:
[0041] 以上本发明提供的一种随机数生成方法及装置,该方法包括:选择至少一个系统调度线程,并根据完成各个系统调度线程耗费的CPU时钟周期生成随机源,进而生成各个系统调度线程的随机数。
[0042] 基于本发明公开的方法,随机选择windows操作系统中至少一个系统调度线程,并且,对于每个系统调度线程来说,完成系统调度线程耗费的CPU时钟周期与当前系统环境有关系,由于windows系统为非实时操作系统,进而每个系统调度线程每次调度完成耗费的CPU时钟周期是不同的,因此,相较于硬件生成随机数来说,随机性更高,生成的随机数也就更有效,这也就避免了产生安全漏洞,从而为计算机系统安全提供保证。附图说明
[0043] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0044] 图1为本发明实施例一公开的一种随机数生成方法流程图
[0045] 图2为本发明实施例二公开的一种随机数生成方法流程图;
[0046] 图3为本发明实施例三公开的一种随机数生成方法部分流程图;
[0047] 图4为本发明实施例三公开的另一种随机数生成方法部分流程图;
[0048] 图5为本发明实施例四公开的一种随机数生成装置结构示意图;
[0049] 图6为本发明实施例五公开的一种随机数生成装置结构示意图;
[0050] 图7为本发明实施例六公开的一种随机数生成装置部分结构示意图;
[0051] 图8为本发明实施例六公开的另一种随机数生成装置部分结构示意图。

具体实施方式

[0052] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0053] 实施例一
[0054] 本发明实施例一公开了一种随机数生成方法,该方法应用于随机数生成装置,方法流程图如图1所示,包括如下步骤:
[0055] S101,选择至少一个系统调度线程;
[0056] 在执行步骤S101的过程中,在选择系统调度进程时,可根据实际需要选择时间片用完引起的系统调度线程、进程运行引起的系统调度线程、接口函数引起的系统调度线程、软硬件中断引起的系统调度线程和时钟引起的系统调度线程中的一个或多个,上述系统调度线程是根据windows系统操作实现机制与线程调度机制优选的,在实际应用中不局限于上述系统调度进程,可根据实际需要进行选择。
[0057] S102,针对每一个系统调度线程,根据完成系统调度线程耗费的CPU时钟周期生成随机源;
[0058] 在执行步骤S102的过程中,windows系统中的任意系统调度线程,包含了多个熵源,例如,中断响应、寄存器保存、内存缺页调度和时钟调度等,可根据每个系统调度线程中预先添加的熵源进行调度,进而生成随机源,并计算随机数;
[0059] 需要说明的是,在windows系统中,计算中断响应时长可根据关中断时长、保护CPU内部寄存器时长、进入中断服务函数的执行时长和开始执行中断服务例程第一条指令时长,并且,中断源包括内存缺页、时钟、主板控制器芯片等,并且,由于中断源发生时间是不可预知的,因此,中断响应时长也不能确定;
[0060] 还需要说明的是,在windows系统中,当多任务内核运行另外任务时,会将正在运行任务的当前状态,即CPU寄存器中的全部内容,保存到自身栈区中,并将下一个将要运行的任务的当前状态从该任务的栈区中重新装入CPU寄存器,进而开始下一个任务的运行。在这个任务切换的过程中,做任务切换所需要的CPU时钟周期是动态变化的,包括当前的进程状态、中断状态、内存状态和寄存器状态,而windows系统在每一次任务切换时,上述状态都是动态变化的,因此,对于上述状态保存及切换的CPU时钟周期也不能确定。
[0061] S103,针对每一个系统调度线程,生成随机源对应的随机数。
[0062] 在执行步骤S103的过程中,可根据DRBG算法对随机源进行处理,生成随机数。
[0063] 需要说明的是,DRBG算法在生成统计学意义上的随机数方面,起了很大作用,能够从以下方面生成满足随机数统计学特性的随机数:频率测试、块内频率测试、累积和测试、游程测试、块内最长游程测试、二元矩阵轶测试、离散傅里叶变换测试、非重叠模块匹配测试、重叠模块匹配测试、通用统计测试、近似熵测试、随机游动测试、随机游动状态频数测试、序列测试和线性复杂度测试。
[0064] 本发明实施例公开的随机数生成方法,通过随机选择windows操作系统中至少一个系统调度线程,并根据系统调度线程在当前系统环境下完成调度耗费的CPU时钟周期生成随机源,最终根据随机源生成随机数,相较于硬件生成随机数来说,随机性更高,生成的随机数也就更有效,这也就避免了产生安全漏洞,从而为计算机系统安全提供保证。
[0065] 实施例二
[0066] 结合上述本发明实施例一公开的随机数生成方法和图1,本发明实施例二还提供一种随机数生成方法,方法流程图如图2所示,包括如下步骤:
[0067] S101,选择至少一个系统调度线程;
[0068] S102,针对每一个系统调度线程,根据完成系统调度线程耗费的CPU时钟周期生成随机源;
[0069] S103,针对每一个系统调度线程,生成随机源对应的随机数;
[0070] S104,当系统调度线程为多个时,根据各个随机数生成随机数序列。
[0071] 需要说明的是,本发明实施例二提供的随机数生成方法中,步骤S101~步骤S103的具体执行过程与上述实施例一公开的步骤S101~步骤S103一致,在此不再赘述,请参见本发明实施例一公开的部分。
[0072] 本发明实施例公开的随机数生成方法,通过随机选择windows操作系统中至少一个系统调度线程,并根据系统调度线程在当前系统环境下完成调度耗费的CPU时钟周期生成随机源,最终根据随机源生成随机数,并且,当系统调度线程为多个时,根据各个随机数生成随机数序列,相较于硬件生成随机数来说,随机性更高,生成的随机数也就更有效,这也就避免了产生安全漏洞,从而为计算机系统安全提供保证。
[0073] 实施例三
[0074] 结合上述本发明实施例一和实施例二公开的随机数生成方法,如图1和图2所示出的步骤S102中,根据完成系统调度线程耗费的CPU时钟周期生成随机源的具体执行过程,方法流程图如图3所示,包括如下步骤:
[0075] S201,确定系统调度线程其中包含的至少一个系统调度进程;
[0076] 在执行步骤S201的过程中,每一个系统调度线程中包含至少一个系统调度进程,例如,时间片用完引起的系统调度线程可包含三个调度进程,则表示该调度进程需要执行三次。
[0077] S202,计算完成各个系统调度进程耗费的CPU时钟周期;
[0078] 在执行步骤S202的过程中,可采用系统调度进程耗费的CPU时钟周期作为生成该系统调度线程随机源的依据。
[0079] S203,将计算得到的各个CPU时钟周期依次存储于预设内存地址;
[0080] S204,当各个系统调度进程均执行完成时,根据内存地址存储的各个CPU时钟周期生成随机源。
[0081] 本发明实施例公开的随机数生成方法,通过随机选择windows操作系统中至少一个系统调度线程,并根据系统调度线程中各个系统调度进程在当前系统环境下完成调度耗费的CPU时钟周期生成随机源,最终根据随机源生成随机数,相较于硬件生成随机数来说,随机性更高,生成的随机数也就更有效,这也就避免了产生安全漏洞,从而为计算机系统安全提供保证。
[0082] 结合上述本发明实施例三公开的随机数生成方法和图3,步骤S202中,计算完成各个系统调度进程耗费的CPU时钟周期的具体执行过程,方法流程图如图4所示,包括如下步骤:
[0083] S301,触发各个系统调度进程,同时,记录触发时间点;
[0084] 在执行步骤S301的过程中,可采用Sleep接口函数触发各个所述系统调度进程。
[0085] S302,根据各个系统调度进程中预先添加的至少一个熵源进行调度;
[0086] S303,当完成调度时,记录完成时间点;
[0087] S304,根据触发时间点和完成时间点,计算完成各个系统调度进程耗费的CPU时钟周期。
[0088] 本发明实施例公开的随机数生成方法,通过随机选择windows操作系统中至少一个系统调度线程,并根据系统调度线程中各个系统调度进程在当前系统环境下完成调度耗费的CPU时钟周期生成随机源,最终根据随机源生成随机数,相较于硬件生成随机数来说,随机性更高,生成的随机数也就更有效,这也就避免了产生安全漏洞,从而为计算机系统安全提供保证。
[0089] 实施例四
[0090] 结合上述本发明各实施例公开的随机数生成方法,本发明实施例四则对应公开执行上述随机数生成方法的装置,其结构示意如图5所示,随机数生成装置100包括:系统调度线程选择模块101、随机源生成模块102和随机数生成模块103;
[0091] 系统调度线程选择模块101,用于选择至少一个系统调度线程;
[0092] 随机源生成模块102,用于针对每一个系统调度线程,根据完成系统调度线程耗费的CPU时钟周期生成随机源;
[0093] 随机数生成模块103,用于针对每一个系统调度线程,生成随机源对应的随机数。
[0094] 本发明实施例公开的随机数生成装置,通过随机选择windows操作系统中至少一个系统调度线程,并根据系统调度线程在当前系统环境下完成调度耗费的CPU时钟周期生成随机源,最终根据随机源生成随机数,相较于硬件生成随机数来说,随机性更高,生成的随机数也就更有效,这也就避免了产生安全漏洞,从而为计算机系统安全提供保证。
[0095] 实施例五
[0096] 结合上述本发明实施例一公开的随机数生成装置和图5,本发明实施例二还提供一种随机数生成装置,其结构示意图如图6所示,随机数生成装置100还包括:随机数序列生成模块104;
[0097] 随机数序列生成模块104,用于当系统调度线程为多个时,根据各个随机数生成随机数序列。
[0098] 本发明实施例公开的随机数生成装置,通过随机选择windows操作系统中至少一个系统调度线程,并根据系统调度线程在当前系统环境下完成调度耗费的CPU时钟周期生成随机源,最终根据随机源生成随机数,并且,当系统调度线程为多个时,根据各个随机数生成随机数序列,相较于硬件生成随机数来说,随机性更高,生成的随机数也就更有效,这也就避免了产生安全漏洞,从而为计算机系统安全提供保证。
[0099] 实施例六
[0100] 结合上述实施例四和实施例五公开的随机数生成装置,如图5和图6所示出的随机源生成模块102,其结构示意如图7所示,包括:系统调度进程确定单元201、时钟周期计算单元202、存储单元203和随机源生成单元204;
[0101] 系统调度进程确定单元201,用于确定系统调度线程其中包含的至少一个系统调度进程;
[0102] 时钟周期计算单元202,用于计算完成各个系统调度进程耗费的CPU时钟周期;
[0103] 存储单元203,用于将计算得到的各个CPU时钟周期依次存储于预设内存地址;
[0104] 随机源生成单元204,用于当各个系统调度进程均执行完成时,根据内存地址存储的各个CPU时钟周期生成随机源。
[0105] 本发明实施例公开的随机数生成装置,通过随机选择windows操作系统中至少一个系统调度线程,并根据系统调度线程中各个系统调度进程在当前系统环境下完成调度耗费的CPU时钟周期生成随机源,最终根据随机源生成随机数,相较于硬件生成随机数来说,随机性更高,生成的随机数也就更有效,这也就避免了产生安全漏洞,从而为计算机系统安全提供保证。
[0106] 结合上述实施例六公开的随机数生成装置,如图7所示出的时钟周期计算单元202,其结构示意如图8所示,包括:触发记录子单元301、熵源调度子单元302、记录子单元
303和时钟周期计算子单元304;
[0107] 触发记录子单元301,用于触发各个系统调度进程,同时,记录触发时间点;
[0108] 熵源调度子单元302,用于根据各个系统调度进程中预先添加的至少一个熵源进行调度;
[0109] 记录子单元303,用于当完成调度时,记录完成时间点;
[0110] 时钟周期计算子单元304,用于根据触发时间点和完成时间点,计算完成各个系统调度进程耗费的CPU时钟周期。
[0111] 本发明实施例公开的随机数生成装置,通过随机选择windows操作系统中至少一个系统调度线程,并根据系统调度线程中各个系统调度进程在当前系统环境下完成调度耗费的CPU时钟周期生成随机源,最终根据随机源生成随机数,相较于硬件生成随机数来说,随机性更高,生成的随机数也就更有效,这也就避免了产生安全漏洞,从而为计算机系统安全提供保证。
[0112] 以上对本发明所提供的一种随机数生成方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
[0113] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0114] 还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素,或者是还包括为这些过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0115] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈