CN110647310B - 一种用于生成Android设备真随机数的方法 - Google Patents

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

Info

Publication number
CN110647310B
CN110647310B CN201810674186.7A CN201810674186A CN110647310B CN 110647310 B CN110647310 B CN 110647310B CN 201810674186 A CN201810674186 A CN 201810674186A CN 110647310 B CN110647310 B CN 110647310B
Authority
CN
China
Prior art keywords
sequence
random number
true random
value
numerical value
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.)
Active
Application number
CN201810674186.7A
Other languages
English (en)
Other versions
CN110647310A (zh
Inventor
曾勇
董丽华
宋彭飞
刘志宏
蒋忠元
马建峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201810674186.7A priority Critical patent/CN110647310B/zh
Publication of CN110647310A publication Critical patent/CN110647310A/zh
Application granted granted Critical
Publication of CN110647310B publication Critical patent/CN110647310B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

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

Description

一种用于生成Android设备真随机数的方法
技术领域
本发明属于信息安全技术领域,具体涉及一种用于生成Android设备真随机数的方法。
背景技术
密钥是保证Android(安卓)设备安全的重要组件之一,密钥的生成与使用均需要用到随机数,随机数的优劣直接影响到密钥的安全性,生成高质量的真随机数需要高熵值的随机源信息。
随机数生成方法主要包含两种:伪随机数生成方法和真随机数生成方法。伪随机数生成方法主要使用线性同余算法,而线性同余算法在循环迭代过程中,生成的伪随机数具有规律性,降低了随机数应该具备的随机性。在申请公布号:CN 103530086A,名称为“一种分散机制的软件随机数生成方法”的中国专利中利用线性同余算法生成随机数的方法,将随机数的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表示第一序列。
步骤五、将第二序列作为真随机数。
通过实验分析,在不申请敏感权限的情况下,在获取到的其他Android系统侧信道信息中未发现满足高随机性的数据序列,仅考虑将相同时间间隔内增加的中断次数作为随机数噪声源。
本实施例生成的Android设备的真随机数无需集成真随机数发生器芯片,利用系统中的中断次数信息生成的真随机数的方法简单,并且生成的真随机数不会受到硬件退化的影响,且适用性强。
实施例三
本发明实施例在上述实施例的基础上,对本发明实施例提供的一种用于生成Android设备真随机数的方法进行具体介绍,该方法具体包括:
步骤一、每间隔j毫秒通过intr字段获取第一数值;
在Android系统发生进程切换时,会引起中断的发生,可以通过/proc/stat文件获取析单位时间内中断发生的次数,中断次数信息被存储在/proc/stat文件中。
具体地,每间隔j毫秒获取一次/proc/stat文件中的intr字段的第一个数值作为第一数值,共获取k次,即共k个第一数值,其中第一数值代表自Android系统启动到当前时间累计发生的中断次数。
其中,j毫秒≥1毫秒。
优选地,j毫秒为1毫秒。
优选地,k≥106
请再次参见图2,在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表示第一序列。
步骤五、根据第二序列获取真随机数。
利用线性函数处理第二序列中的每个第二数值,处理后的第二数值组成的序列即为真随机数,其中,线性函数mh-1’=(nh-nh-1)a+b,其中,a和b可以取任意值,且a和b不能同时为0,真随机数P={(n2-n1)a+b,(n3-n2)a+b,…(nh-nh-1)a+b,…,(nk-nk-1)a+b}。
通过实验分析,在不申请敏感权限的情况下,在获取到的其他Android系统侧信道信息中未发现满足高随机性的数据序列,仅考虑将相同时间间隔内增加的中断次数作为随机数噪声源。
本实施例生成的Android设备的真随机数无需集成真随机数发生器芯片,通过利用系统中的中断次数信息生成的真随机数,从而使得本方法生成的真随机数不会受到硬件退化的影响,且可以在大多数Android设备进行使用,适用性强。
实施例四
本发明实施例在上述实施例的基础上,对本发明实施例提供的一种用于生成Android设备真随机数的方法进行具体介绍,该方法具体包括:
步骤一、每间隔j毫秒通过intr字段获取第一数值;
在Android系统发生进程切换时,会引起中断的发生,可以通过/proc/stat文件获取析单位时间内中断发生的次数,中断次数信息被存储在/proc/stat文件中。
具体地,每间隔j毫秒获取一次/proc/stat文件中的intr字段的第一个数值作为第一数值,共获取k次,即共k个第一数值,其中第一数值代表自Android系统启动到当前时间累计发生的中断次数。
其中,j毫秒≥1毫秒。
优选地,j毫秒为1毫秒。
优选地,k≥106
请再次参见图2,其中,在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表示第一序列。
步骤五、根据第二序列获取真随机数;
根据单向函数计算第二序列中的每个第二数值,将计算得到的所有值所组成的序列作为真随机数。
比如,第二数值为n2-n1,根据单向函数计算n2-n1,得到的值为q1,根据单向函数计算n3-n2,得到的值为q2,根据单向函数计算nk-nk-1,得到的值为qk-1,则真随机数V=[q1,q2,……,qk-1]。
优选地,单向函数为散列算法(Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS(Federal Information Processing Standards,联邦信息处理标准)所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。
优选地,散列算法为SHA-256算法。
通过实验分析,在不申请敏感权限的情况下,在获取到的其他Android系统侧信道信息中未发现满足高随机性的数据序列,仅考虑将相同时间间隔内增加的中断次数作为随机数噪声源。
本实施例生成的Android设备的真随机数无需集成真随机数发生器芯片,利用系统中的中断次数信息生成的真随机数不会受到硬件退化的影响,且利用安全散列算法得到的真随机数的安全性能更高,且该方法生成的真随机数的适用性强。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种用于生成Android设备真随机数的方法,其特征在于,包括:
每间隔j毫秒通过intr字段获取第一数值;
根据所述第一数值获取第一序列;
将所述第一序列中相邻的所述第一数值做差获取第二数值;
根据所述第二数值获取第二序列;
根据所述第二序列获取真随机数;
每间隔j毫秒通过intr字段获取第一数值,包括:
每间隔j毫秒获取一次/proc/stat文件中的intr字段的第一个数值作为第一数值,共获取k次。
2.根据权利要求1所述的方法,其特征在于,所述j毫秒≥1毫秒。
3.根据权利要求1所述的方法,其特征在于,根据所述第一数值获取第一序列,包括:
将k次获取的多个所述第一数值按照获取顺序形成所述第一序列。
4.根据权利要求3所述的方法,其特征在于,根据所述第二数值获取第二序列,包括:
将k-1个所述第二数值按照获取顺序形成所述第二序列。
5.根据权利要求1所述的方法,其特征在于,根据所述第二序列获取真随机数,包括:
将所述第二序列作为所述真随机数。
6.根据权利要求1所述的方法,其特征在于,根据所述第二序列获取真随机数,包括:
利用线性函数处理所述第二序列获取所述真随机数。
7.根据权利要求1所述的方法,其特征在于,根据所述第二序列获取真随机数,包括:
根据单向函数计算所述第二序列,将其计算结果作为所述真随机数。
8.根据权利要求7所述的方法,其特征在于,所述单向函数为散列算法。
CN201810674186.7A 2018-06-26 2018-06-26 一种用于生成Android设备真随机数的方法 Active CN110647310B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810674186.7A CN110647310B (zh) 2018-06-26 2018-06-26 一种用于生成Android设备真随机数的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810674186.7A CN110647310B (zh) 2018-06-26 2018-06-26 一种用于生成Android设备真随机数的方法

Publications (2)

Publication Number Publication Date
CN110647310A CN110647310A (zh) 2020-01-03
CN110647310B true CN110647310B (zh) 2021-09-03

Family

ID=68988520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810674186.7A Active CN110647310B (zh) 2018-06-26 2018-06-26 一种用于生成Android设备真随机数的方法

Country Status (1)

Country Link
CN (1) CN110647310B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112199073B (zh) * 2020-09-22 2024-02-02 深圳市微特自动化设备有限公司 一种基于单片机的随机数生成方法
CN115617146A (zh) * 2022-10-05 2023-01-17 深圳市国鑫恒运信息安全有限公司 一种服务器独立同分布错峰上电的方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7502815B1 (en) * 2004-02-20 2009-03-10 Xilinx, Inc. True random number generator and method of generating true random numbers
CN101477612A (zh) * 2008-01-02 2009-07-08 Arm有限公司 保护从中央处理器发送的以供处理的安全数据的安全性
CN103824005A (zh) * 2014-03-11 2014-05-28 东南大学 一种内嵌可配置ip核的防复制系统及防复制方法
CN106648543A (zh) * 2016-12-29 2017-05-10 北京握奇智能科技有限公司 一种随机数生成方法及装置
CN107943451A (zh) * 2017-11-20 2018-04-20 西安电子科技大学 基于自治布尔网络结构的真随机数发生器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4954628B2 (ja) * 2006-05-16 2012-06-20 修 亀田 真性乱数発生素子あるいは擬似乱数発生素子を用いた認証用デバイス、認証装置及び認証方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7502815B1 (en) * 2004-02-20 2009-03-10 Xilinx, Inc. True random number generator and method of generating true random numbers
CN101477612A (zh) * 2008-01-02 2009-07-08 Arm有限公司 保护从中央处理器发送的以供处理的安全数据的安全性
CN103824005A (zh) * 2014-03-11 2014-05-28 东南大学 一种内嵌可配置ip核的防复制系统及防复制方法
CN106648543A (zh) * 2016-12-29 2017-05-10 北京握奇智能科技有限公司 一种随机数生成方法及装置
CN107943451A (zh) * 2017-11-20 2018-04-20 西安电子科技大学 基于自治布尔网络结构的真随机数发生器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
协作干扰下的无线安全增强;张丽娟等;《通信学报》;20170225;全文 *
基于层次平台的安全SoC设计技术;童元满等;《计算机工程与应用》;20080601;全文 *

Also Published As

Publication number Publication date
CN110647310A (zh) 2020-01-03

Similar Documents

Publication Publication Date Title
US11042664B2 (en) Efficient implementation for differential privacy using cryptographic functions
CN109478132B (zh) 在计算装置中产生熵和在伪随机数发生器中播种熵的方法
KR101246437B1 (ko) 유한체 연산을 사용하는 랜덤 번호 발생기를 포함하는 암호 시스템
US7546327B2 (en) Platform independent randomness accumulator for network applications
Dawson et al. The LILI-128 keystream generator
CN110647310B (zh) 一种用于生成Android设备真随机数的方法
US20140059100A1 (en) Reducing bias in hardware generated random numbers
JP6176076B2 (ja) 物理乱数生成装置、物理乱数生成方法、及び物理乱数生成システム
US11487505B2 (en) Physical unclonable function based true random number generator, method for generating true random numbers, and associated electronic device
CN115603907A (zh) 加密存储数据的方法、装置、设备和存储介质
CN107769923A (zh) 一种基于cpu时钟和usb独立时钟的真随机数产生方法
McEvoy et al. Fortuna: cryptographically secure pseudo-random number generation in software and hardware
CN114710274A (zh) 数据调用方法、装置、电子设备及存储介质
CN112989388A (zh) 一种云架构下的安全验证方法、装置及电子设备
CN116610288A (zh) 随机数生成方法及装置
CN111314061B (zh) 一种随机数的生成方法及系统
US20210382695A1 (en) Method for generating random sequence using exponential function as random number source
CN113938270A (zh) 弹性降低复杂度的数据加密方法和装置
CN110134369A (zh) 随机数发生器、随机数发生方法及芯片
US20230093544A1 (en) Random Number Generation Apparatus and Method
Xu et al. Adjustable unbalanced quantum random-number generator
US11036472B2 (en) Random number generator generating random number by using at least two algorithms, and security device comprising the random number generator
CN117573073A (zh) 伪随机数生成方法、装置、设备及存储介质
TWI782540B (zh) 基於物理不可複製功能的真隨機數產生器以及用於產生真隨機數的方法
Fujieda et al. A light-weight implementation of latch-based true random number generator

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
GR01 Patent grant
GR01 Patent grant