馮勇領(lǐng),廖建雄
(1.四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065;2.四川博大科技實(shí)業(yè)總公司,成都 610042)
基于Android的隨機(jī)數(shù)序列的產(chǎn)生及檢測(cè)
馮勇領(lǐng)1,廖建雄2
(1.四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065;2.四川博大科技實(shí)業(yè)總公司,成都 610042)
在網(wǎng)絡(luò)社會(huì)中,信息數(shù)據(jù)安全一直處于十分重要的地位,因而產(chǎn)生各種各樣的數(shù)據(jù)加密算法,其中許多算法都需要一個(gè)隨機(jī)數(shù)發(fā)生器。而在手機(jī)等移動(dòng)領(lǐng)域,還未有很好的隨機(jī)數(shù)發(fā)生器。研究在Android系統(tǒng)下,通過手機(jī)屏幕軌跡產(chǎn)生真隨機(jī)數(shù)序列,并使用美國NIST建議的16種測(cè)試方法對(duì)隨機(jī)性進(jìn)行測(cè)試。經(jīng)過測(cè)試該系統(tǒng)產(chǎn)生的隨機(jī)數(shù)符合隨機(jī)性,可直接應(yīng)用于真實(shí)微信語音流的加密,亦可擴(kuò)展到手機(jī)平臺(tái)上其他類型的數(shù)據(jù)(如短信、視屏等)的加密,實(shí)用性比較廣泛。
隨機(jī)數(shù);Android;加密
在許多加密的應(yīng)用程序中都需要隨機(jī)數(shù)的產(chǎn)生。例如,常見的密碼系統(tǒng)使用密鑰,必須生成的是一個(gè)隨機(jī)的樣式。許多密碼協(xié)議還需要在不同的點(diǎn)進(jìn)行隨機(jī)或真隨機(jī)的輸入,如:作為輔助量用于生成數(shù)字簽名以及一些認(rèn)證協(xié)議。隨機(jī)數(shù)由兩種類型的產(chǎn)生器生成,即真隨機(jī)數(shù)產(chǎn)生器 (True Random Number Generators,TRNG)和偽隨機(jī)數(shù)產(chǎn)生器 (Pseudo Random Number Generators,PRNG)。TRNG建立在一種稱為熵源(Entropy Source)的不確定性源的基礎(chǔ)上,如熱力學(xué)噪聲、空氣噪聲、核衰變等物理現(xiàn)象,對(duì)這些現(xiàn)象采集的數(shù)據(jù)再進(jìn)行后處理 (post-process),即可得到隨機(jī)數(shù).而PRNG則根據(jù)輸入的隨機(jī)數(shù)種子,采用確定性的算法生成多個(gè)隨機(jī)數(shù)。TRNG通常比PRNG更安全,因此在安全級(jí)別較高的應(yīng)用中,都會(huì)采用TRNG。
真隨機(jī)數(shù)是依分布概率產(chǎn)生的,是不可預(yù)測(cè),不可見的。而計(jì)算機(jī)中的隨機(jī)數(shù)是按照某種算法產(chǎn)生,其結(jié)果是確定的,是可見的。因此通過計(jì)算機(jī)中的隨機(jī)函數(shù)產(chǎn)生的“隨機(jī)數(shù)”并不完全隨機(jī),是偽隨機(jī)數(shù)。
在密碼學(xué)等一些關(guān)鍵性的,安全性較高的應(yīng)用中,通常使用真隨機(jī)數(shù)。
在手機(jī)等移動(dòng)操作系統(tǒng)中,手機(jī)屏幕是用戶和手機(jī)交互最直接,最便捷,最常用的途徑,所以考慮到軟件的可用性,我們采取的是通過手機(jī)屏幕來產(chǎn)生隨機(jī)數(shù),當(dāng)我們觸摸屏幕時(shí),每個(gè)觸目點(diǎn)都會(huì)有相應(yīng)的坐標(biāo)、觸碰壓力、接觸面積等信息,所以當(dāng)我們用屏幕產(chǎn)生一段軌跡時(shí),可以得到很多點(diǎn)的信息,通過結(jié)合一定數(shù)量的點(diǎn)的坐標(biāo)、壓力、接觸面積三個(gè)信息,在經(jīng)過一定的數(shù)學(xué)處理,可以得到我們需要的密鑰。而且,即使同一個(gè)人也無法產(chǎn)生兩段所有點(diǎn)信息都相同的軌跡,所以這種方法產(chǎn)生的密鑰能保證隨機(jī)性。
我們通過對(duì)觸屏軌跡等人們使用觸屏手機(jī)產(chǎn)生的各種物理數(shù)據(jù)進(jìn)行采集獲取,制作出真隨機(jī)數(shù)發(fā)生器。本方案技術(shù)要求低,使用方便,算法實(shí)現(xiàn)速度快,在手機(jī)上產(chǎn)生后可以立刻使用。
軟件中通過對(duì)觸屏軌跡等物理數(shù)據(jù)進(jìn)行采集獲取,制作出真隨機(jī)數(shù)發(fā)生器。真隨機(jī)數(shù)的產(chǎn)生方式簡單有效,既保證了產(chǎn)生的數(shù)據(jù)的隨機(jī)性,又極大程度地降低了操作的復(fù)雜性,以最普通的操作方式產(chǎn)生得到了滿足要求的隨機(jī)數(shù),合理地嵌入到了微信地使用流程中,極大地避免了軟件用戶體驗(yàn)的下降,又達(dá)到了安全加密的目的。同時(shí),軟件的隨機(jī)數(shù)產(chǎn)生方式對(duì)手機(jī)CPU的占用率和對(duì)內(nèi)存的消耗低,避免了對(duì)手機(jī)性能的過度消耗。
用戶在屏幕上產(chǎn)生軌跡,長度點(diǎn)數(shù)在150到300之間,檢測(cè)用戶觸摸位置,獲取觸摸位置以及軌跡的數(shù)據(jù)。
包括:軌跡結(jié)束的時(shí)間:time、點(diǎn)擊事務(wù)的 ID:PointID、坐標(biāo)值:(X,Y)、壓力值:pressure、面積大小:size
(1)將每一點(diǎn)的各數(shù)據(jù)值拼接成一串序列

(2)將所有點(diǎn)的序列拼接成一段長序列

(3)采用SHA-256算法對(duì)該序列進(jìn)行處理,得到256bits的Hash值,即為輸出的隨機(jī)序列
因?yàn)镠ash函數(shù)的抗碰撞能力較好,其產(chǎn)生的哈希值對(duì)明文敏感性較強(qiáng),所以基于Hash函數(shù)的隨機(jī)數(shù)會(huì)具有比較好的統(tǒng)計(jì)特性。
程序偽代碼:

將產(chǎn)生該點(diǎn)的時(shí)間time、該點(diǎn)的唯一標(biāo)識(shí)ID、該點(diǎn)所在手機(jī)屏幕的X軸坐標(biāo)、獲取該點(diǎn)所在手機(jī)屏幕的Y軸坐標(biāo)、產(chǎn)生該點(diǎn)時(shí)的觸點(diǎn)壓力pressure、該點(diǎn)的大小size連接起來,成為一個(gè)字符串item;

從檢測(cè)結(jié)果來看,用戶A以及用戶B產(chǎn)生的2個(gè)隨機(jī)序列所測(cè)試的P-value值均大于0.01,通過了NIST sts-2.1.1程序的全部測(cè)試。結(jié)果平均值分別為0.446793和0.528576。從隨機(jī)性數(shù)值來看,不同手機(jī)產(chǎn)生的隨機(jī)數(shù)的隨機(jī)性相差不大。從平均時(shí)間來看,用戶A的隨機(jī)數(shù)產(chǎn)生平均時(shí)間為 2.48ms,用戶 B為13.74ms,用戶A的產(chǎn)生速度大約是用戶B的6倍。其中主要影響因素為CPU的運(yùn)行速度以及手機(jī)內(nèi)存大小。因此可以看出,手機(jī)硬件設(shè)備越好(CPU核心數(shù)多,主頻高,運(yùn)算速度快,內(nèi)存大),其產(chǎn)生隨機(jī)數(shù)所需的時(shí)間越少。

表1 生成的TRNG序列的隨機(jī)性檢測(cè)結(jié)果

表2 生成256bit隨機(jī)數(shù)的平均時(shí)間
對(duì)比“基于鼠標(biāo)軌跡和混沌系統(tǒng)的真隨機(jī)數(shù)產(chǎn)生器研究”中提出的改進(jìn)方案,其基于PC平臺(tái)的鼠標(biāo)軌跡和混沌系統(tǒng)的真隨機(jī)數(shù)產(chǎn)生器的測(cè)試結(jié)果為0.4721,單從隨機(jī)性來看,其文章中的改進(jìn)方案TRNG與本文提出的真隨機(jī)數(shù)產(chǎn)生器的測(cè)試平均值0.4876相近,隨機(jī)性相差不大。但從運(yùn)算時(shí)間來看,其改進(jìn)方案產(chǎn)生的TRNG的平均時(shí)間為143ms,在速度上要比本方案慢很多。
本文對(duì)基于Android手機(jī)屏幕軌跡的TRNG產(chǎn)生的數(shù)據(jù)采用NIST機(jī)構(gòu)建議的16種隨機(jī)數(shù)測(cè)試方法進(jìn)行了嚴(yán)格的測(cè)試。測(cè)試結(jié)果顯示,該方法產(chǎn)生的TRNG通過了所有的隨機(jī)測(cè)試,可以實(shí)際應(yīng)用于Android平臺(tái)。
同時(shí)對(duì)比基于PC平臺(tái)的TRNG產(chǎn)生器,本文提出的基于Android平臺(tái)的產(chǎn)生器的TRNG的隨機(jī)性沒有產(chǎn)生明顯差別,但本方案的算法簡便,產(chǎn)生速度非常快,方便又廉價(jià),具有很大的使用優(yōu)勢(shì),尤其適合用于手機(jī)設(shè)備上。
[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]周慶,胡月,廖曉峰.基于鼠標(biāo)軌跡和混沌系統(tǒng)的真隨機(jī)數(shù)產(chǎn)生器研究.物理學(xué)報(bào),2008,57(9).
[9]程一飛.RSA算法及其應(yīng)用[J].安慶師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2004,2:025.
[10]王啟明,王一凡.RSA算法的安全性分析 中南民族學(xué)院學(xué)報(bào)(自然科學(xué)版),2000-9(19).
[11]馮秀濤.3GPP LTE國際加密標(biāo)準(zhǔn)ZUC算法.信息安全與通信保密,2011.12.
[12]杜紅紅,張文英.祖沖之算法的安全分析.計(jì)算機(jī)技術(shù)與發(fā)展,2012-6(22),6.
[13]William Stallings.網(wǎng)絡(luò)安全基礎(chǔ)—應(yīng)用與標(biāo)準(zhǔn)(第4版).白國強(qiáng)等譯.清華大學(xué)出版社.
[14]E2EColud工作室.深入淺出Google Android[M].北京:人民郵電出版社,2009
[15]張仕成.基于 Google Android平臺(tái)的應(yīng)用程序開發(fā)與研究[J].電腦知識(shí)與技術(shù):學(xué)術(shù)交流,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
馮勇領(lǐng)(1992-),男,廣東廣州人,碩士,研究方向?yàn)榉植际教幚砑熬W(wǎng)絡(luò)計(jì)算
2017-02-09
2017-03-15
廖建雄(1992-),男,四川眉山人,本科,研究方向?yàn)檐浖_發(fā)