一种用于生成Android设备真随机数的方法技术

技术编号:23024748 阅读:38 留言:0更新日期:2020-01-03 16:47
本发明专利技术涉及一种用于生成Android设备真随机数的方法,包括:每间隔j毫秒通过intr字段获取第一数值;根据所述第一数值获取第一序列;将所述第一序列中相邻的所述第一数值做差获取第二数值;根据所述第二数值获取第二序列;根据所述第二序列获取真随机数。本发明专利技术生成的Android设备的真随机数无需集成真随机数发生器芯片,通过利用系统中的中断次数信息生成的真随机数,从而使得本方法生成的真随机数不会受到硬件退化的影响,且可以在大多数Android设备进行使用。

A method for generating true random numbers of Android devices

【技术实现步骤摘要】
一种用于生成Android设备真随机数的方法
本专利技术属于信息安全
,具体涉及一种用于生成Android设备真随机数的方法。
技术介绍
密钥是保证Android(安卓)设备安全的重要组件之一,密钥的生成与使用均需要用到随机数,随机数的优劣直接影响到密钥的安全性,生成高质量的真随机数需要高熵值的随机源信息。随机数生成方法主要包含两种:伪随机数生成方法和真随机数生成方法。伪随机数生成方法主要使用线性同余算法,而线性同余算法在循环迭代过程中,生成的伪随机数具有规律性,降低了随机数应该具备的随机性。在申请公布号:CN103530086A,名称为“一种分散机制的软件随机数生成方法”的中国专利中利用线性同余算法生成随机数的方法,将随机数的N个字节按两个字节进行划分,按照预先设定的查询表进行查询,用查询结果替换原有的字节,将置换后的结果依次进行合并得到随机数。但由于置换表是固定的,置换并没有消除随机数的统计规律。在申请公布号:CN107769923A,名称为“一种基于CPU时钟和USB独立时钟的真随机数产生方法”的中国专利中将CPU时钟和USB独立时钟的抖动差异作为随机噪声源,生成随机数种子,采用散列算法对随机数种子进行散列操作,生成真随机数。但是,目前研究大都是针对Android硬件信息进行研究,需要在Android设备的硬件上集成随机数发生器,虽然可以产生较好的随机数序列,使得随机数序列容易受到硬件使用过程退化的影响,并且现有的大部分Android设备上都没有集成真随机数发生器芯片,导致这种方法无法得到广泛应用。
技术实现思路
为了解决现有技术中存在的上述问题,本专利技术提供了一种用于生成Android设备真随机数的方法。本专利技术的一个实施例提供了一种用于生成Android设备真随机数的方法,包括:每间隔j毫秒通过intr字段获取第一数值;根据所述第一数值获取第一序列;将所述第一序列中相邻的所述第一数值做差获取第二数值;根据所述第二数值获取第二序列;根据所述第二序列获取真随机数。在本专利技术的一个实施例中,其特征在于,每间隔j毫秒通过intr字段获取第一数值,包括:每间隔j毫秒获取一次/proc/stat文件中的intr字段的第一个数值作为第一数值,共获取k次。在本专利技术的一个实施例中,所述j毫秒≥1毫秒。在本专利技术的一个实施例中,根据所述第一数值获取第一序列,包括:将k次获取的多个所述第一数值按照获取顺序形成所述第一序列。在本专利技术的一个实施例中,将所述第一序列中相邻的所述第一数值做差获取第二数值,包括:将所述第一序列中相邻的所述第一数值做差获取多个所述第二数值,其中,所述第二数值为k-1个。在本专利技术的一个实施例中,根据所述第二数值获取第二序列,包括:将k-1个所述第二数值按照获取顺序形成所述第二序列。在本专利技术的一个实施例中,根据所述第二序列获取真随机数,包括:将所述第二序列作为所述真随机数。在本专利技术的一个实施例中,根据所述第二序列获取真随机数,包括:利用线性函数处理所述第二序列获取所述真随机数。在本专利技术的一个实施例中,根据所述第二序列获取真随机数,包括:根据单向函数计算所述第二序列,将其计算结果作为所述真随机数。在本专利技术的一个实施例中,所述单向函数为为散列算法。与现有技术相比,本专利技术的有益效果:本专利技术生成的Android设备的真随机数无需集成真随机数发生器芯片,通过利用系统中的中断次数信息生成的真随机数,从而使得本方法生成的真随机数不会受到硬件退化的影响,且可以在大多数Android设备进行使用。附图说明图1为本专利技术实施例提供的一种用于生成Android设备真随机数的方法的流程示意图;图2为本专利技术实施例提供的一种/proc/stat文件示意图。具体实施方式下面结合具体实施例对本专利技术做进一步详细的描述,但本专利技术的实施方式不限于此。实施例一请参见图1,图1为本专利技术实施例提供的一种用于生成Android设备真随机数的方法的流程示意图。本专利技术实施例提供的一种用于生成Android设备真随机数的方法,包括:每间隔j毫秒通过intr字段获取第一数值;根据所述第一数值获取第一序列;将所述第一序列中相邻的所述第一数值做差获取第二数值;根据所述第二数值获取第二序列;根据所述第二序列获取真随机数。本实施例生成的Android设备的真随机数无需集成真随机数发生器芯片,通过利用系统中的中断次数信息(即第一数值)生成的真随机数,从而使得本方法生成的真随机数不会受到硬件退化的影响,且可以在大多数Android设备进行使用,适用性强。实施例二本专利技术实施例在上述实施例的基础上,对本专利技术实施例提供的一种用于生成Android设备真随机数的方法进行具体介绍,该方法具体包括:步骤一、每间隔j毫秒通过intr字段获取第一数值;在Android系统发生进程切换时,会引起中断的发生,可以通过/proc/stat文件获取析单位时间内中断发生的次数,中断次数信息被存储在/proc/stat文件中。具体地,每间隔j毫秒获取一次/proc/stat文件中的intr字段的第一个数值作为第一数值,共获取k次,即共k个第一数值,其中第一数值代表自Android系统启动到当前时间累计发生的中断次数,其中,各种关于Android系统内核的活动信息都可以在/proc/stat文件中找到,该文件记录了自Android系统第一次启动以来的所有内核的相关数据。其中,j毫秒≥1毫秒。优选地,j毫秒为1毫秒。优选地,k≥106。请参见图2,图2为本专利技术实施例提供的一种/proc/stat文件示意图。其中,在intr字段行中给出的是Android系统中的中断信息,第一个数值268827681即表示自Android系统启动到当前时间,系统中总共发生的中断次数,即268827681为获取的第一数值,intr字段行中后续的每个数值分别表示某个特定的中断自系统启动到当前时间总共发生的次数。步骤二、根据第一数值获取第一序列;将k次获取的第一数值按照获取顺序形成第一序列;其中,第一序列表示为N={n1,n2,…nh,…,nk},N表示第一序列,nh表示第h次获取的第一数值。步骤三、将第一序列中相邻的第一数值做差获取第二数值;具体地,将第一序列中相邻的两个第一数值做差,做差所得结果即为第二数值,如n2-n1,nh-nh-1,其中,第二数值代表间隔j毫秒内发生的中断次数,第二数值为k-1个。步骤四、根据第二数值获取第二序列;将k-1个第二数值按照获取顺序形成第二序列;其中,第二序列表示为M={n2-n1,n3-n2,…nh-nh-1,…,nk-nk-1},M表示第一本文档来自技高网
...

【技术保护点】
1.一种用于生成Android设备真随机数的方法,其特征在于,包括:/n每间隔j毫秒通过intr字段获取第一数值;/n根据所述第一数值获取第一序列;/n将所述第一序列中相邻的所述第一数值做差获取第二数值;/n根据所述第二数值获取第二序列;/n根据所述第二序列获取真随机数。/n

【技术特征摘要】
1.一种用于生成Android设备真随机数的方法,其特征在于,包括:
每间隔j毫秒通过intr字段获取第一数值;
根据所述第一数值获取第一序列;
将所述第一序列中相邻的所述第一数值做差获取第二数值;
根据所述第二数值获取第二序列;
根据所述第二序列获取真随机数。


2.根据权利要求1所述的方法,其特征在于,每间隔j毫秒通过intr字段获取第一数值,包括:
每间隔j毫秒获取一次/proc/stat文件中的intr字段的第一个数值作为第一数值,共获取k次。


3.根据权利要求2所述的方法,其特征在于,所述j毫秒≥1毫秒。


4.根据权利要求2所述的方法,其特征在于,根据所述第一数值获取第一序列,包括:
将k次获取的多个所述第一数值按照获取顺序形成所述第一序列。


5.根据权利要求4所述的方法,其特征在于,将所述第一序列中相邻的...

【专利技术属性】
技术研发人员:曾勇董丽华宋彭飞刘志宏蒋忠元马建峰
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1