基于Android的随机数序列的产生及检测
2017-05-12冯勇领廖建雄
冯勇领,廖建雄
(1.四川大学计算机学院,成都 610065;2.四川博大科技实业总公司,成都 610042)
基于Android的随机数序列的产生及检测
冯勇领1,廖建雄2
(1.四川大学计算机学院,成都 610065;2.四川博大科技实业总公司,成都 610042)
在网络社会中,信息数据安全一直处于十分重要的地位,因而产生各种各样的数据加密算法,其中许多算法都需要一个随机数发生器。而在手机等移动领域,还未有很好的随机数发生器。研究在Android系统下,通过手机屏幕轨迹产生真随机数序列,并使用美国NIST建议的16种测试方法对随机性进行测试。经过测试该系统产生的随机数符合随机性,可直接应用于真实微信语音流的加密,亦可扩展到手机平台上其他类型的数据(如短信、视屏等)的加密,实用性比较广泛。
随机数;Android;加密
0 引言
在许多加密的应用程序中都需要随机数的产生。例如,常见的密码系统使用密钥,必须生成的是一个随机的样式。许多密码协议还需要在不同的点进行随机或真随机的输入,如:作为辅助量用于生成数字签名以及一些认证协议。随机数由两种类型的产生器生成,即真随机数产生器 (True Random Number Generators,TRNG)和伪随机数产生器 (Pseudo Random Number Generators,PRNG)。TRNG建立在一种称为熵源(Entropy Source)的不确定性源的基础上,如热力学噪声、空气噪声、核衰变等物理现象,对这些现象采集的数据再进行后处理 (post-process),即可得到随机数.而PRNG则根据输入的随机数种子,采用确定性的算法生成多个随机数。TRNG通常比PRNG更安全,因此在安全级别较高的应用中,都会采用TRNG。
真随机数是依分布概率产生的,是不可预测,不可见的。而计算机中的随机数是按照某种算法产生,其结果是确定的,是可见的。因此通过计算机中的随机函数产生的“随机数”并不完全随机,是伪随机数。
在密码学等一些关键性的,安全性较高的应用中,通常使用真随机数。
在手机等移动操作系统中,手机屏幕是用户和手机交互最直接,最便捷,最常用的途径,所以考虑到软件的可用性,我们采取的是通过手机屏幕来产生随机数,当我们触摸屏幕时,每个触目点都会有相应的坐标、触碰压力、接触面积等信息,所以当我们用屏幕产生一段轨迹时,可以得到很多点的信息,通过结合一定数量的点的坐标、压力、接触面积三个信息,在经过一定的数学处理,可以得到我们需要的密钥。而且,即使同一个人也无法产生两段所有点信息都相同的轨迹,所以这种方法产生的密钥能保证随机性。
1 技术实现
我们通过对触屏轨迹等人们使用触屏手机产生的各种物理数据进行采集获取,制作出真随机数发生器。本方案技术要求低,使用方便,算法实现速度快,在手机上产生后可以立刻使用。
软件中通过对触屏轨迹等物理数据进行采集获取,制作出真随机数发生器。真随机数的产生方式简单有效,既保证了产生的数据的随机性,又极大程度地降低了操作的复杂性,以最普通的操作方式产生得到了满足要求的随机数,合理地嵌入到了微信地使用流程中,极大地避免了软件用户体验的下降,又达到了安全加密的目的。同时,软件的随机数产生方式对手机CPU的占用率和对内存的消耗低,避免了对手机性能的过度消耗。
用户在屏幕上产生轨迹,长度点数在150到300之间,检测用户触摸位置,获取触摸位置以及轨迹的数据。
包括:轨迹结束的时间:time、点击事务的 ID:PointID、坐标值:(X,Y)、压力值:pressure、面积大小:size
(1)将每一点的各数据值拼接成一串序列
(2)将所有点的序列拼接成一段长序列
(3)采用SHA-256算法对该序列进行处理,得到256bits的Hash值,即为输出的随机序列
因为Hash函数的抗碰撞能力较好,其产生的哈希值对明文敏感性较强,所以基于Hash函数的随机数会具有比较好的统计特性。
程序伪代码:
将产生该点的时间time、该点的唯一标识ID、该点所在手机屏幕的X轴坐标、获取该点所在手机屏幕的Y轴坐标、产生该点时的触点压力pressure、该点的大小size连接起来,成为一个字符串item;
2 测试检验
从检测结果来看,用户A以及用户B产生的2个随机序列所测试的P-value值均大于0.01,通过了NIST sts-2.1.1程序的全部测试。结果平均值分别为0.446793和0.528576。从随机性数值来看,不同手机产生的随机数的随机性相差不大。从平均时间来看,用户A的随机数产生平均时间为 2.48ms,用户 B为13.74ms,用户A的产生速度大约是用户B的6倍。其中主要影响因素为CPU的运行速度以及手机内存大小。因此可以看出,手机硬件设备越好(CPU核心数多,主频高,运算速度快,内存大),其产生随机数所需的时间越少。
表1 生成的TRNG序列的随机性检测结果
表2 生成256bit随机数的平均时间
3 结语
对比“基于鼠标轨迹和混沌系统的真随机数产生器研究”中提出的改进方案,其基于PC平台的鼠标轨迹和混沌系统的真随机数产生器的测试结果为0.4721,单从随机性来看,其文章中的改进方案TRNG与本文提出的真随机数产生器的测试平均值0.4876相近,随机性相差不大。但从运算时间来看,其改进方案产生的TRNG的平均时间为143ms,在速度上要比本方案慢很多。
本文对基于Android手机屏幕轨迹的TRNG产生的数据采用NIST机构建议的16种随机数测试方法进行了严格的测试。测试结果显示,该方法产生的TRNG通过了所有的随机测试,可以实际应用于Android平台。
同时对比基于PC平台的TRNG产生器,本文提出的基于Android平台的产生器的TRNG的随机性没有产生明显差别,但本方案的算法简便,产生速度非常快,方便又廉价,具有很大的使用优势,尤其适合用于手机设备上。
[1]ETSI/SAGE Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3&128-EIA3.Document 1:128-EEA3 and128-EIA3 Specification V1.6 1st July,2011.
[2]ETSI/SAGE Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3&128-EIA3.Document 2:ZUC Specification V1.6 28th June,2011.
[3]ETSI/SAGE Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3&128-EIA3 Document 3:Implementor′s Test Data V1.1 4th Jan,2011.
[4]ETSI/SAGE Technical report Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3&128-EIA3.Document 4: Design and Evaluation Report V1.3 18th Jan,2011.
[5]NIST A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications[April,2010 Special Publication 800-22 Revision 1a].
[6]Zhou,Q.,et al.,True Random Number Generator Based on Mouse Movement and Chaotic Hash Function.Information Sciences,2009,179(19):3442-3450.
[7]Zhao,L.,et al..True Random Number Generation from Mobile Telephone Photo Based on Chaotic Cryptography.Chaos,Solitons& Fractals,2009,42(3):1692-1699.
[8]周庆,胡月,廖晓峰.基于鼠标轨迹和混沌系统的真随机数产生器研究.物理学报,2008,57(9).
[9]程一飞.RSA算法及其应用[J].安庆师范学院学报(自然科学版),2004,2:025.
[10]王启明,王一凡.RSA算法的安全性分析 中南民族学院学报(自然科学版),2000-9(19).
[11]冯秀涛.3GPP LTE国际加密标准ZUC算法.信息安全与通信保密,2011.12.
[12]杜红红,张文英.祖冲之算法的安全分析.计算机技术与发展,2012-6(22),6.
[13]William Stallings.网络安全基础—应用与标准(第4版).白国强等译.清华大学出版社.
[14]E2EColud工作室.深入浅出Google Android[M].北京:人民邮电出版社,2009
[15]张仕成.基于 Google Android平台的应用程序开发与研究[J].电脑知识与技术:学术交流,2009,5(10):7959-7962.
Generation and Test of Random Number under Android
FENG Yong-ling1,LIAO Jian-xiong2
(1.College of Computer Science,Sichuan University,Chengdu 610065;2.Sichuan Boda Science and Technology Industry General Corporation,Chengdu 610042)
In the network society,information and data security has been in a very important position,resulting in variety of data encryption algorithms;many algorithms require a random number generator.In the field of mobile phones,yet to have a good random number generator. Under Android system,studies true random number sequences generated by the phone screen trail,and uses the U.S.NIST recommended 16 kinds of test methods for random testing.After testing the system in line with the randomness of the random number generator that can be applied directly to Wechat to encrypted voice streams on mobile platforms can also be extended to other types of data (such as text messaging,video,etc.)encryption,it has wide practicability.
Random Number;Android;Encrypt
1007-1423(2017)09-0128-03
10.3969/j.issn.1007-1423.2017.09.029
冯勇领(1992-),男,广东广州人,硕士,研究方向为分布式处理及网络计算
2017-02-09
2017-03-15
廖建雄(1992-),男,四川眉山人,本科,研究方向为软件开发