[問題] SecureRandom的原理是什麼?

作者: sky800507 (B翰)   2017-06-30 23:26:02
版上的前輩們大家好
小弟目前正在研究TRNG與PRNG
目前對TRNG的了解就是收集物理現象(大氣噪音、元素衰退或電腦系統中的
隨機事件,像滑鼠位移、網路訊號等...)並轉換成bits,最後再轉換成數字,
所產生的隨機數列無法被重現。Linux提供了/dev/random的隨機亂數產生方式,
就是藉由蒐集系統的隨機事件到Entropy Source,並將這些bits轉換成數字。
而PRNG則是給定初始種子(seed),使用數學算式來產生隨機亂數,與TRNG
最大的差異就在於數列是被決定好的,只要種子一樣,數列就可以重現。
目前知道java.util.Random是使用線性同餘(LCG)來產生隨機亂數,是屬於PRNG
而java.Security.SecureRandom目前是知道在Linux上是會用到/dev/random或/dev/urandom
但對於他的隨機數生成原理卻不太清楚,Google老半天也找不到相關的原理,
大部份都在教如何使用而已
有前輩們知道其生成的原理嗎?
作者: ssccg (23)   2017-07-01 00:34:00
SecureRandom是JCA的一部分,實際實作要看provider剛好版上就有一篇 #1HLoCRRG基本上都是用OS提供的random當seed,再用某種PRNG展開
作者: sky800507 (B翰)   2017-07-03 20:40:00
感謝,文章很有幫助。另外想問某種PRNG是?

Links booklink

Contact Us: admin [ a t ] ucptt.com