CN110647310A - 一种用于生成Android设备真随机数的方法 - Google Patents
一种用于生成Android设备真随机数的方法 Download PDFInfo
- Publication number
- CN110647310A CN110647310A CN201810674186.7A CN201810674186A CN110647310A CN 110647310 A CN110647310 A CN 110647310A CN 201810674186 A CN201810674186 A CN 201810674186A CN 110647310 A CN110647310 A CN 110647310A
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random 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(安卓)设备安全的重要组件之一,密钥的生成与使用均需要用到随机数,随机数的优劣直接影响到密钥的安全性,生成高质量的真随机数需要高熵值的随机源信息。
随机数生成方法主要包含两种:伪随机数生成方法和真随机数生成方法。伪随机数生成方法主要使用线性同余算法,而线性同余算法在循环迭代过程中,生成的伪随机数具有规律性,降低了随机数应该具备的随机性。在申请公布号: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 (10)
1.一种用于生成Android设备真随机数的方法,其特征在于,包括:
每间隔j毫秒通过intr字段获取第一数值;
根据所述第一数值获取第一序列;
将所述第一序列中相邻的所述第一数值做差获取第二数值;
根据所述第二数值获取第二序列;
根据所述第二序列获取真随机数。
2.根据权利要求1所述的方法,其特征在于,每间隔j毫秒通过intr字段获取第一数值,包括:
每间隔j毫秒获取一次/proc/stat文件中的intr字段的第一个数值作为第一数值,共获取k次。
3.根据权利要求2所述的方法,其特征在于,所述j毫秒≥1毫秒。
4.根据权利要求2所述的方法,其特征在于,根据所述第一数值获取第一序列,包括:
将k次获取的多个所述第一数值按照获取顺序形成所述第一序列。
5.根据权利要求4所述的方法,其特征在于,将所述第一序列中相邻的所述第一数值做差获取第二数值,包括:
将所述第一序列中相邻的所述第一数值做差获取多个所述第二数值,其中,所述第二数值为k-1个。
6.根据权利要求5所述的方法,其特征在于,根据所述第二数值获取第二序列,包括:
将k-1个所述第二数值按照获取顺序形成所述第二序列。
7.根据权利要求1所述的方法,其特征在于,根据所述第二序列获取真随机数,包括:
将所述第二序列作为所述真随机数。
8.根据权利要求1所述的方法,其特征在于,根据所述第二序列获取真随机数,包括:
利用线性函数处理所述第二序列获取所述真随机数。
9.根据权利要求1所述的方法,其特征在于,根据所述第二序列获取真随机数,包括:
根据单向函数计算所述第二序列,将其计算结果作为所述真随机数。
10.根据权利要求9所述的方法,其特征在于,所述单向函数为散列算法。
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 true CN110647310A (zh) | 2020-01-03 |
CN110647310B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199073A (zh) * | 2020-09-22 | 2021-01-08 | 深圳市微特自动化设备有限公司 | 一种基于单片机的随机数生成方法 |
CN115617146A (zh) * | 2022-10-05 | 2023-01-17 | 深圳市国鑫恒运信息安全有限公司 | 一种服务器独立同分布错峰上电的方法及系统 |
Citations (6)
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有限公司 | 保护从中央处理器发送的以供处理的安全数据的安全性 |
US20120210127A1 (en) * | 2006-05-16 | 2012-08-16 | Masakazu Sato | Authentication device using true random number generating element or pseudo-random number generating element, authentication apparatus, and authentication method |
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 | 西安电子科技大学 | 基于自治布尔网络结构的真随机数发生器 |
-
2018
- 2018-06-26 CN CN201810674186.7A patent/CN110647310B/zh active Active
Patent Citations (6)
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 |
US20120210127A1 (en) * | 2006-05-16 | 2012-08-16 | Masakazu Sato | Authentication device using true random number generating element or pseudo-random number generating element, authentication apparatus, and authentication method |
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)
Title |
---|
张丽娟等: "协作干扰下的无线安全增强", 《通信学报》 * |
童元满等: "基于层次平台的安全SoC设计技术", 《计算机工程与应用》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199073A (zh) * | 2020-09-22 | 2021-01-08 | 深圳市微特自动化设备有限公司 | 一种基于单片机的随机数生成方法 |
CN112199073B (zh) * | 2020-09-22 | 2024-02-02 | 深圳市微特自动化设备有限公司 | 一种基于单片机的随机数生成方法 |
CN115617146A (zh) * | 2022-10-05 | 2023-01-17 | 深圳市国鑫恒运信息安全有限公司 | 一种服务器独立同分布错峰上电的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110647310B (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478132B (zh) | 在计算装置中产生熵和在伪随机数发生器中播种熵的方法 | |
US11042664B2 (en) | Efficient implementation for differential privacy using cryptographic functions | |
Li et al. | Chaotic encryption scheme for real-time digital video | |
KR101246437B1 (ko) | 유한체 연산을 사용하는 랜덤 번호 발생기를 포함하는 암호 시스템 | |
Dawson et al. | The LILI-128 keystream generator | |
JP6176076B2 (ja) | 物理乱数生成装置、物理乱数生成方法、及び物理乱数生成システム | |
CN110647310B (zh) | 一种用于生成Android设备真随机数的方法 | |
US20140059100A1 (en) | Reducing bias in hardware generated random numbers | |
US11487505B2 (en) | Physical unclonable function based true random number generator, method for generating true random numbers, and associated electronic device | |
CN109409101B (zh) | 数据加密的方法及终端设备 | |
CN107769923A (zh) | 一种基于cpu时钟和usb独立时钟的真随机数产生方法 | |
CN115603907A (zh) | 加密存储数据的方法、装置、设备和存储介质 | |
CN114710274A (zh) | 数据调用方法、装置、电子设备及存储介质 | |
CN113938270A (zh) | 弹性降低复杂度的数据加密方法和装置 | |
CN116610288A (zh) | 随机数生成方法及装置 | |
CN103593161B (zh) | 基于真随机数发生器的全随机任意分数分频器及方法 | |
CN111314061B (zh) | 一种随机数的生成方法及系统 | |
US20210382695A1 (en) | Method for generating random sequence using exponential function as random number source | |
Xu et al. | Adjustable unbalanced quantum random-number generator | |
CN112912838B (zh) | 一种随机数生成装置及方法 | |
US11036472B2 (en) | Random number generator generating random number by using at least two algorithms, and security device comprising the random number generator | |
CN117573073A (zh) | 伪随机数生成方法、装置、设备及存储介质 | |
Wang et al. | Internet-oriented optimization schemes for joint compression and encryption | |
Zhang et al. | Study on post-processing algorithms for true random number generators | |
CN116107541A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |