原文網址:http://www.javacodegeeks.com/2013/03/
weaknesses-in-java-pseudo-random-number-generators-prngs.html
譯文網址:http://blog.dontcareabout.us/2013/03/java-prng.html
BBS 版以 markdown 格式撰寫
______________________________________________________________________
這是 Kai Michaelis、Jorg Schwenk 還有我在 [RA Conference 2013] 的
Cryptographers' Track 發表論文的總結。
你可以取得我演講時的[投影片]、還有[論文全文]。
我們對常見 Java library 所產生的亂數序列進行分析,
這些 Java library 用了 PRNG
(Pseudo Random Number Generator,通常是 SecureRandom),
我們發現在特定條件下有明顯的弱點。
為了讓這篇文章盡可能簡短,各種 PRNG 所用的演算法、詳細的 bug 描述、
統計檢驗的結果都略過不提,但是論文裡頭都有。
我們的調查涵蓋 PRNG 本身、以及它們用來作 seed 的 entropy collector
(例如沒有可用的實數產生器時)。
**底線:需要品質良好的亂數時,不要使用 PRNG!**
[RA Conference 2013]: https://ae.rsaconference.com/US13/connect/
sessionDetail.ww?SESSION_ID=3386&tclass=popup
[投影片]: https://ae.rsaconference.com/US13/connect/fileDownload/
session/85EEC4CC0848A5E7793DDEC27550D7A6/CRYP-W25.pdf
[論文全文]: http://link.springer.com/chapter/10.1007%2F978-3-642-36095-4_9
有很多測量品質的方式。首先,我們分析程式碼,
然後試圖(且成功地)發現導致缺陷的明顯程式錯誤。
再者,我們對產生出來的亂數序列進行統計檢驗。
最後,我們在特定情況下(高系統負載、某些 component 無法使用...... 等等)
對演算法作壓力測試。
[Apache Harmony]
================
雖然已經退休了(譯註:原文是 although retried,應該是 typo),
但是 Apache Harmony 仍然活在 Android source code 中
(參見[這裡][Harmony Wikipedia])、
是幾百萬台機器的一部分。
[Apache Harmony]: http://harmony.apache.org/
[Harmony Wikipedia]: http://en.wikipedia.org/wiki/
Apache_Harmony#Use_in_Android_SDK
弱點