CN112416299B - 一种利用零漂数据获取随机数的方法 - Google Patents

一种利用零漂数据获取随机数的方法 Download PDF

Info

Publication number
CN112416299B
CN112416299B CN202011076113.1A CN202011076113A CN112416299B CN 112416299 B CN112416299 B CN 112416299B CN 202011076113 A CN202011076113 A CN 202011076113A CN 112416299 B CN112416299 B CN 112416299B
Authority
CN
China
Prior art keywords
gyroscope
random number
data
random numbers
null shift
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
CN202011076113.1A
Other languages
English (en)
Other versions
CN112416299A (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.)
Shijiazhuang Kelin Yunneng Information Technology Co ltd
Shijiazhuang Kelin Electric Co Ltd
Original Assignee
Shijiazhuang Kelin Yunneng Information Technology Co ltd
Shijiazhuang Kelin Electric Co Ltd
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 Shijiazhuang Kelin Yunneng Information Technology Co ltd, Shijiazhuang Kelin Electric Co Ltd filed Critical Shijiazhuang Kelin Yunneng Information Technology Co ltd
Priority to CN202011076113.1A priority Critical patent/CN112416299B/zh
Publication of CN112416299A publication Critical patent/CN112416299A/zh
Application granted granted Critical
Publication of CN112416299B publication Critical patent/CN112416299B/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computational Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Gyroscopes (AREA)

Abstract

一种利用零漂数据获取随机数的方法,涉及信息安全技术领域,尤其涉及设备静止状态下利用硬件电路,特别是使用陀螺仪的零漂数据获取随机数的方法,由上位机连接陀螺仪,获取陀螺仪的零漂数据生成随机数。陀螺仪有标准的数据输出接口,可以很方便地读出,不用专门实际硬件电路。零漂是陀螺仪的固有特性,随时都有输出,可以根据要求产生海量随机数,不受时间限制。零漂数据涉及的因素非常复杂,不可预测和再现,保证了“真”随机数的获得。

Description

一种利用零漂数据获取随机数的方法
技术领域
本申请涉及信息安全技术领域,尤其涉及设备静止状态下利用硬件电路,特别是使用陀螺仪的零漂数据获取随机数的方法。
背景技术
在网络社会中,信息安全处于十分重要的地位,由此产生了各种各样的数据加密算法。
随机数是信息安全和密码应用中的重要资源,可以参与到信息加密的各个阶段。随机数质量的优劣对信息安全具有决定性的影响。满足应用要求的随机数必须满足随机性、不可预测性及不可重现:
1、伪随机数:看起来是随机的,能通过现有的随机性检验。
2、密码学安全的伪随机数:不可预测,也就是说,即使给出产生序列的算法或者硬件设计和以前产生序列的所有知识,也不可能通过计算来预测下一个序列是什么。
3、真随机数:这个序列不能重复产生,即使在完全相同的操作条件下用完全相同的输入对序列发生器操作两次,也将得到两个完全不同的、毫不相关的序列。
目前有三种类型的随机数发生器:真随机数发生器TRNG(True Random NumberGenerator)、伪随机数发生器PRNG(Pseudo Random Number Generator) 和混合随机数发生器HRNG(Hybrid Random Number Generator)。
TRNG的好处在于可以生成真随机数,但是一般都需要额外的硬件,需要对数据进行额外的处理(如抽取键盘敲击活动、磁盘的电活动、鼠标移动作为输入源),生成的速度非常慢。PRNG的好处在于,一旦种子确定,就可以快速生成基本上是无限的随机数据流,缺点如果种子泄漏,则所有生成的数据都变得可预测。因此,外部观察者无法预测的种子输入是很重要的。
而HRNG结合了TRNG和PRNG的优点,既可以快速地无限地生成随机数,又可以防止种子被预测。HRNG通常从难以预测的事件中采集熵来生成种子,再应用确定性算法来产生随机数。
一个真随机数发生器从一个非确定性来源(如硬件源)产生一个高熵种子,然后使用PRNG结构来生成大量的随机数据。
目前的实现,一般是从硬件中得到种子,然后进行杂凑得到随机数。如Android平台的伪随机数发生器收集鼠标键盘事件、磁盘操作时间、中断事件等;ANSI X9 .17发生器的种子是时间。
上述实现存在以下问题:1、依靠硬件时间生成种子,需要捕获硬件动作,当动作很少发生时,生成速度明显下降。对小米6手机进行随机数输出测试,在手机静止并且无用户输入的情况下,1分钟内仅输出了16字节随机数;在用户针对手机频繁动作的情况下,1分钟内输出了128字节随机数,在特殊应用中满足不了要求。2、以时间作为种子,由于时间的连续性,其范围是可以在有限时间内穷尽。
在单片机领域,目前还有基于其他硬件的方案:常见的片上随机数产生器的产生方式有三种:基于电路噪声的随机数产生器、基于混沌机制的随机数产生器和基于振荡器采样的随机数产生器。以上方式需要单独设置硬件体系。
中国专利申请(111290734 A),通过获取终端磁场数据、光线传感器数据和陀螺仪数据,进而生成随机数。该申请用于密码机,一般的认知下,密码机处于静止状态,此时获取的各类数据变化不大,尤其是陀螺仪数据基本保持不变。
中国授权专利(CN 102629397 B),通过智能手机自带的三轴陀螺仪来检测手机的运动状态,记录下手机从静止到运动再回到静止的时长;将时长的毫秒数作为随机数种子。该申请是根据手机的运动来获得随机数种子。
在设备静止情况下,如果设备中安装陀螺仪,其输出的数据基本保持不变。如何在静止、无外界介入的应用场景下,从陀螺仪获取随机数,一直未见应用。
发明内容
针对上述问题,本发明提出了一种获取真随机数的方法。
本发明采用的技术方案是:一种利用零漂数据获取随机数的方法,由上位机连接硬件电路,所述硬件电路包括敏感元件和放大器;硬件电路为陀螺仪,上位机获取陀螺仪的零漂数据生成随机数。
上位机获取陀螺仪三个维度的角度值yaw,pitch,roll,使用各维度的最后4位,组成12位的基础算子;多组基础算子进行随机排布,最后生成随机数。
所述上位机使用树莓派。
陀螺仪是一种重要的惯性敏感器件,是导航、制导、稳定、瞄准等***的核心部件,广泛应用于各领域。
由于制造工艺和精度水平的限制,相比传统工艺制造的惯性传感器,其输出的数据噪声较大,也伴随着零点漂移误差。
通过实验我们发现,陀螺仪在静止时,经零漂处理的输出基本保持不变(可以精确到小数点后6位),但其原始数据(未经零漂补偿处理的数据,读取小数点后8位)变化非常剧烈。
有益效果:陀螺仪有标准的数据输出接口,可以很方便地读出,不用专门设计硬件电路。零漂是陀螺仪的固有特性,随时都有输出,可以根据要求产生海量随机数,不受时间限制。零漂数据涉及的因素非常复杂,不可预测和再现,保证了“真”随机数的获得。另外,每个陀螺仪都不同,更保证了数据源的无法破解。陀螺仪和树莓派都是成熟的低成本器件,实现比较容易。
附图说明
图1是树莓派和陀螺仪的连接示意图。
具体实施方式
在配电网络的数据传输中,需要采取加密手段。密钥的生成需要随机数的参与,为了保证密钥的安全性,最好选取真随机数参与计算过程。
零漂是直接耦合放大电路中存在的一个特殊问题。仪表或敏感元件在无输入时的输出示值称为“零位输出”简称“零位”,这个“零位”会随时间或温度而发生变化,这种变化就称为“零漂”,零漂包括时间漂移和温度漂移。
零点漂移的形成原因:运算放大器均是采用直接耦合的方式,直接耦合式放大电路的各级的Q点是相互影响的,由于各级的放大作用,第一级的微弱变化,会使输出级产生很大的变化。当输入短路时(由于一些原因使输入级的Q点发生微弱变化 如 :温度),输出将随时间缓慢变化,这样就形成了零点漂移。
产生零点漂移的原因很多,如电源电压不稳、元器件参数变值、环境温度变化等。其中最主要的因素是温度的变化,因为晶体管是温度的敏感器件,当温度变化时,其参数UBE、β、ICBQ都将发生变化,最终导致放大电路静态工作点产生偏移。此外,在诸因素中,最难控制的也是温度的变化。
敏感元件是传感器的重要组成部分,能敏锐地感受某种物理、化学、生物的信息并将其转变为电信息的特种电子元件。
各类传感器都需要放大器,放大敏感元件获取的微弱信号,因此都存在零漂问题。由于零漂的随机性,可以作为产生随机数的种子。
陀螺仪应用广泛,技术成熟,接口友好。在正常应用中,陀螺仪的零漂数据需要一定的算法手段进行补偿处理。处理后的陀螺仪数据,输出稳定,在静止时输出值保持不变。
由于环境因素产生的零漂,即使陀螺仪处于静止状态,其原始数据在任何时刻都有变化,下表给出了陀螺仪处于静止状态时,三个轴的原始数据。
由表中的数据可以看出,从小数点后第二位起,数值变化很大,且没有规律,不可预见。
原始数据 末4位数据
40.00537491 31.59332657 -84.70269012 7491 2657 9012
40.02405548 31.60865974 -84.72397614 5548 5974 7614
40.00374603 31.67206001 -84.67938232 4603 6001 8232
40.07834244 31.58668709 -84.78831482 4244 8709 1482
40.07265854 31.66724777 -84.77235413 5854 4777 5413
40.09675217 31.66972733 -84.79968262 5217 2733 8262
40.11986542 31.63022995 -84.81936646 6542 2995 6646
40.1318779 31.65666199 -84.82984161 7790 6199 4161
40.1505127 31.65496254 -84.84991455 1270 6254 1455
40.17694855 31.62103653 -84.87795258 4855 3653 5258
40.197052 31.62585068 -84.8991394 5200 5068 3940
40.24491501 31.60574913 -84.96614838 1501 4913 4838
40.26587296 31.56734085 -84.98239136 7296 4085 9136
40.27968216 31.57106018 -84.99407959 8216 6018 7959
40.27289963 31.6637001 -84.97631073 9963 0010 1073
40.28083038 31.66027832 -84.97875977 3038 7832 5977
40.28952408 31.65535927 -84.98247528 2408 5927 7528
40.34060669 31.61145973 -85.05308533 0669 5973 8533
40.35674286 31.58423042 -85.06289673 4286 3042 9673
40.38232422 31.54354668 -85.08860016 2422 4668 0016
40.39457703 31.597332 -85.10149384 7703 3200 9384
40.41657257 31.61588669 -85.12970734 7257 8669 0734
40.41532898 31.66693878 -85.12033081 2898 3878 3081
40.42059326 31.62568092 -85.11694336 9326 8092 4336
40.41174316 31.62799263 -85.08856964 4316 9263 6964
40.47396851 31.61594009 -85.18350983 6851 4009 0983
40.50089645 31.58358765 -85.21447754 9645 8765 7754
40.49943924 31.56679916 -85.19618988 3924 9916 8988
40.50912476 31.68151855 -85.20795441 2476 1855 5441
40.54991531 31.59464264 -85.25588226 1531 4264 8226
40.61077881 31.52388 -85.34119415 7881 8000 9415
40.56893921 31.59656715 -85.26327515 3921 6715 7515
40.58758545 31.62162209 -85.28500366 8545 2209 0366
40.59296799 31.62641525 -85.28235626 6799 1525 5626
40.62414551 31.65031242 -85.32775879 4551 1242 5879
40.64889908 31.61548996 -85.35428619 9908 8996 8619
40.65270615 31.60454559 -85.346138 0615 4559 3800
40.68056488 31.61952972 -85.38306427 6488 2972 6427
40.68642044 31.6039772 -85.37821198 2044 7720 1198
40.67577362 31.65618515 -85.35056305 7362 8515 6305
40.68058014 31.60545349 -85.34209442 8014 5349 9442
40.71741104 31.62850571 -85.39605713 1104 0571 5713
40.73776245 31.63035011 -85.4208374 6245 5011 3740
40.74440765 31.66003799 -85.42266846 0765 3799 6846
40.74832153 31.63845253 -85.41474152 2153 5253 4152
40.77416992 31.65496635 -85.44874573 6992 6635 4573
40.75322342 31.65632248 -85.39633942 2342 2248 3942
40.76995087 31.65816689 -85.4141922 5087 6689 9220
40.81350708 31.57819939 -85.47109985 0708 9939 9985
40.8586998 31.57064056 -85.53603363 9980 4056 3363
40.82230377 31.64237213 -85.46636963 0377 7213 6963
40.8280983 31.62327003 -85.46440125 9830 7003 0125
40.90314865 31.5347271 -85.57511902 4865 2710 1902
40.85915375 31.65518188 -85.50144196 5375 8188 4196
40.82853699 31.71674919 -85.44433594 3699 4919 3594
每个原始数据选取末4位,从55*3个原始数据选取的数据中,共有55*3*4=660个数字。下面的表给出了每个数字出现的次数及频率。
每个数字出现的次数及频率
数字 出现次数 出现频率
0 64 9.7%
1 58 8.8%
2 68 10.3%
3 62 9.4%
4 68 10.3%
5 75 11.4%
6 70 10.6%
7 57 8.6%
8 63 9.5%
9 75 11.4%
合计 660 100%
上述统计是在小样本的基础上进行的,可以预见,随着样本数据的增加,10个数字的出现概率趋于相同。
从上述试验结果中可以看到,静止状态下的陀螺仪产生的零漂数据,随机出现,且各个数字出现概率基本相同,符合真随机数的特征。
配电网络中,设备基本处于固定静止状态,陀螺仪的正常输出是稳定的,不可能使用随机运动情况下陀螺仪的数据作为随机数。
本实施例中,在计算密钥的设备中,设置树莓派+陀螺仪作为随机数发生器,获取静止状态下的陀螺仪数据产生随机数。
树莓派为卡片式电脑,成本低,体积小,内置操作***和环境,易于程序开发。
参看图1,树莓派的3.3V功能接脚与陀螺仪的VCC接脚连接,树莓派的SDA功能接脚与陀螺仪的SDA接脚连接,树莓派的SCL功能接脚与陀螺仪的SCL接脚连接,树莓派的GND功能接脚与陀螺仪的GND接脚连接。
树莓派获取陀螺仪三个维度的角度值的方法为:
首先从陀螺仪获取四元数数据q0、q1、q2、q3。
然后进行单位化处理,计算:
norm=sqrt(q0*q0+q1*q1+q2*q2+q3*q3);
q0=q0/norm;
q1=q1/norm;
q2=q2/norm;
q3=q3/norm;
norm为中间计算变量。
最后计算三个角度值
yaw=atan2(2*(q1*q2+q0*q3),q0*q0+q1*q1-q2*q2-q3*q3)*57.3;
pitch=-asin(-2*q1*q3+2*q0*q2)*57.3;
roll=atan2(2*q2*q3+2*q0*q1,-2*q1*q1-2*q2*q2+1)*57.3;
其中,yaw,pitch,roll分别表示绕y、x、z轴旋转的值。
asin和atan2都是c语言提供的函数。
asin是求反正弦的函数,asin(double A)返回A的弧度值。
atan2是求反正切的函数,atan2(double y,double x)函数返回原点至点(x,y)连线的方位角的弧度值,即原点(0,0) 和点(x,y)之间直线与x轴的夹角。
为了保证数据的随机性,计算陀螺仪三个维度角度值yaw,pitch,roll的精度为小数点后8位。
使用各维度的最后4位,组成12位的基础算子;多组基础算子进行随机排布,最后生成随机数。
选几组基础算子根据实际需要来确定,如对于不接入互联网的***,相对较安全,可取4-8组,如果接入互联网,同时考虑到效率,应当取8-16组,而对于更严苛的环境,则可取16组以上。
多组算子的随机排列,可以使用树莓派支持的编程环境提供的随机函数完成。为了增加随机性,也可以使用获取的基础算子本身来确定排列顺序,如根据基础算子中某一位数据的大小进行排序来确定、根据基础算子三个数据按照某种方式计算的结果确定顺序。
生成随机数后,以该数为随机种子进行使用。虽然生成的随机数具有真随机数的特性,但一成不变的使用一个随机数也有潜在风险。本发明提供的随机数生成机制不受时间限制,可以在任何需要的时刻产生,因此可以视需求动态调整随机数的使用周期。

Claims (4)

1.一种利用零漂数据获取随机数的方法,由上位机连接硬件电路,其特征在于:所述硬件电路包括敏感元件和放大器,上位机获取硬件电路的零漂数据生成随机数;
所述硬件电路为陀螺仪;陀螺仪处于静止状态。
2.根据权利要求1所述的方法,其特征在于:上位机获取陀螺仪三个维度的角度值yaw,pitch,roll,精度为小数点后8位,使用各维度的最后4位,组成12位的基础算子;多组基础算子进行随机排布,最后生成随机数。
3.根据权利要求2所述的方法,其特征在于:上位机获取陀螺仪三个维度的角度值的方法为:
4.1、从陀螺仪获取四元数数据q0、q1、q2、q3;
4.2、计算
norm=sqrt(q0*q0+q1*q1+q2*q2+q3*q3);
q0=q0/norm;
q1=q1/norm;
q2=q2/norm;
q3=q3/norm;
4.3、计算三个角度值
yaw=atan2(2*(q1*q2+q0*q3),q0*q0+q1*q1-q2*q2-q3*q3)*57.3;
pitch=-asin(-2*q1*q3+2*q0*q2)*57.3;
roll=atan2(2*q2*q3+2*q0*q1,-2*q1*q1-2*q2*q2+1)*57.3。
4.根据权利要求1所述的方法,其特征在于:所述上位机使用树莓派。
CN202011076113.1A 2020-10-10 2020-10-10 一种利用零漂数据获取随机数的方法 Active CN112416299B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011076113.1A CN112416299B (zh) 2020-10-10 2020-10-10 一种利用零漂数据获取随机数的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011076113.1A CN112416299B (zh) 2020-10-10 2020-10-10 一种利用零漂数据获取随机数的方法

Publications (2)

Publication Number Publication Date
CN112416299A CN112416299A (zh) 2021-02-26
CN112416299B true CN112416299B (zh) 2022-06-10

Family

ID=74853955

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011076113.1A Active CN112416299B (zh) 2020-10-10 2020-10-10 一种利用零漂数据获取随机数的方法

Country Status (1)

Country Link
CN (1) CN112416299B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1882900A1 (en) * 2006-07-27 2008-01-30 Honeywell International Inc. High resolution ioc drive and method for driving fiber optic gyroscopes
CN111561930A (zh) * 2020-04-28 2020-08-21 南京工业大学 一种车载mems陀螺仪随机漂移误差的抑制方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102506898B (zh) * 2011-11-03 2014-05-07 中国科学院自动化研究所 一种基于遗传算法的惯性/地磁传感器标定方法
CN102629397B (zh) * 2012-03-16 2014-04-02 江苏新彩软件有限公司 一种基于三轴陀螺仪的手机彩票随机选号方法
CN111142844B (zh) * 2019-12-25 2024-02-13 杭州安司源科技有限公司 一种轻量级真随机数生成方法
CN111259419A (zh) * 2020-01-15 2020-06-09 海南新软软件有限公司 基于多传感器的随机数加密方法及装置
CN111290734B (zh) * 2020-03-05 2023-09-08 中安云科科技发展(山东)有限公司 一种真随机数获取方法、***及密码机

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1882900A1 (en) * 2006-07-27 2008-01-30 Honeywell International Inc. High resolution ioc drive and method for driving fiber optic gyroscopes
CN111561930A (zh) * 2020-04-28 2020-08-21 南京工业大学 一种车载mems陀螺仪随机漂移误差的抑制方法

Also Published As

Publication number Publication date
CN112416299A (zh) 2021-02-26

Similar Documents

Publication Publication Date Title
Liu et al. Pseudorandom bit generator based on non‐stationary logistic maps
JP3696209B2 (ja) シード生成回路、乱数生成回路、半導体集積回路、icカード及び情報端末機器
Wang et al. Design of pseudo-random bit generator based on chaotic maps
Zhao et al. A self-perturbed pseudo-random sequence generator based on hyperchaos
Teh et al. GPUs and chaos: a new true random number generator
EP3519941B1 (en) Instruction to provide true random numbers
Xingyuan et al. A Novel True Random Number Generator Based on Mouse Movement and a One‐Dimensional Chaotic Map
JP5341690B2 (ja) 物理乱数生成装置
AL-khatib et al. Acoustic lightweight pseudo random number generator based on cryptographically secure LFSR
CN112416299B (zh) 一种利用零漂数据获取随机数的方法
Harrison et al. Experimental validation of a chaotic jerk circuit based true random number generator
Abutaha et al. Design of a pseudo-chaotic number generator as a random number generator
US7590674B2 (en) Method and apparatus for generating a random bit stream
KR20190097075A (ko) 환경 저항성의 진정한 난수 발생 방법
Guo et al. Parallel and real-time post-processing for quantum random number generators
CN116055039B (zh) 一种基于分组密码算法的随机数生成方法及装置
US11924338B2 (en) Split random number generator
Guo et al. A dynamic equilibrium algorithm to enhance randomness in TRNG
Paul et al. Generation of Pseudorandom Sequence Using Regula-Falsi Method
CN117289899A (zh) 一种量子随机数生成***
Chen et al. Templates selection in non‐overlapping template matching test
Skórski Evaluating entropy sources for true random number generators by collision counting
Idakwo et al. Development of a True Random Number Generator based on Computer Mouse Wait time and Datetime
İnce et al. Novel true random bit generation and its audio encryption application with Lorenz chaotic circuit-based entropy source
Paul et al. Generation of Pseudo Random Sequence Using Modified Newton Raphson Method

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