控制SecureRandom API的配置文件位于$JAVA_HOME/jre/lib/security/java.security。比如我們可以配置該文件里的securerandom.source屬性來(lái)指定SecureRandom中使用的seed的來(lái)源。比如使用設(shè)備相關(guān)的源,可以這樣設(shè)置:
securerandom.source=file:/dev/urandom securerandom.source=file:/dev/random
關(guān)于SecureRandom具體技術(shù)細(xì)節(jié),可參看文后參考鏈接2。
現(xiàn)在重點(diǎn)看下SecureRandomSpi抽象類,文件見鏈接3。該抽象類為SecureRandom類定義了功能接口,里面有三個(gè)抽象方法engineSetSeed,engineGenerateSeed,and engineNextBytes。如果Service Provider希望實(shí)現(xiàn)加密強(qiáng)度較高的偽隨機(jī)數(shù)生成器,就必須實(shí)現(xiàn)這三個(gè)方法。
然而Apache Harmony 6.0M3及其之前版本的SecureRandom實(shí)現(xiàn)中engineNextBytes函數(shù)存在安全漏洞。
Apache Harmony 是2005年以Apache License發(fā)布的一個(gè)開源的java核心庫(kù)。雖然2011年以后已宣布停產(chǎn),但是這個(gè)項(xiàng)目作為Google Android platform的一部分繼續(xù)被開發(fā)維護(hù)。
Apache Harmony's SecureRandom實(shí)現(xiàn)算法如下:
Android里的PRNG使用SHA-1哈希算法、由操作系統(tǒng)提供的設(shè)備相關(guān)的種子來(lái)產(chǎn)生偽隨機(jī)序列。隨機(jī)數(shù)是通過(guò)三部分(即seed+counter+ padding)反復(fù)哈希求和計(jì)算產(chǎn)生的。算法如下圖
其中計(jì)數(shù)器counter從0開始,算法每運(yùn)行一次自增一。counter和padding部分都可以稱為buffer。Padding遵守SHA-1的填充格式:最后的8 byte存放要hash的值的長(zhǎng)度len,剩下的部分由一個(gè)1,后面跟0的格式進(jìn)行填充。最后返回Hash后的結(jié)果,也就是生成的偽隨機(jī)序列。
當(dāng)使用無(wú)參構(gòu)造函數(shù)創(chuàng)建一個(gè)SecureRandom實(shí)例,并且在隨后也不使用setSeed()進(jìn)行初始化時(shí),插入一個(gè)起始值后,代碼不能正確的調(diào)整偏移量(byte offset,這個(gè)offset是指向state buffer的指針)。這導(dǎo)致本該附加在種子后面的計(jì)數(shù)器(8 byte)和padding(起始4 byte)覆蓋了種子的起始12 byte。熵的剩下8 byte(20 byte的種子中未被覆蓋部分),使得PRNG加密應(yīng)用無(wú)效。
小編推薦閱讀國(guó)產(chǎn)工具PKAV HTTP Fuzzer滲透測(cè)試助手最新發(fā)布
閱讀FireEye:11.2%的移動(dòng)APP仍存在FREAK漏洞
閱讀惠普漏洞:惠普ArcSight企業(yè)安全系列產(chǎn)品曝高危安全漏洞
閱讀騰訊、360各顯神通,分別秒殺IE、Flash、PDF項(xiàng)目
閱讀蘋果Mac OS X系統(tǒng)被發(fā)現(xiàn)存在DLL劫持漏洞
閱讀金融行業(yè)平臺(tái)的針對(duì)性防御滲透測(cè)試
閱讀D-Link(友訊)路由器曝遠(yuǎn)程文件上傳及命令注入漏洞(已發(fā)布安全更新)
閱讀Win10將使用P2P進(jìn)行系統(tǒng)更新,引發(fā)安全擔(dān)憂
閱讀美國(guó)最大的無(wú)卡ATM網(wǎng)絡(luò)即將推出,從此告別刷卡!
閱讀谷歌應(yīng)用漏洞泄漏超過(guò)28萬(wàn)條私人WHOIS數(shù)據(jù)
閱讀使命召喚、魔獸世界、英雄聯(lián)盟……專攻游戲的勒索軟件TeslaCrypt
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)