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

看板java作者 (B翰)時間7年前 (2017/06/30 23:26), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
版上的前輩們大家好 小弟目前正在研究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老半天也找不到相關的原理, 大部份都在教如何使用而已 有前輩們知道其生成的原理嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.211.23.169 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1498836364.A.00F.html

07/01 00:34, , 1F
SecureRandom是JCA的一部分,實際實作要看provider
07/01 00:34, 1F

07/01 00:35, , 2F
剛好版上就有一篇 #1HLoCRRG
07/01 00:35, 2F

07/01 00:36, , 3F
基本上都是用OS提供的random當seed,再用某種PRNG展開
07/01 00:36, 3F

07/03 20:40, , 4F
感謝,文章很有幫助。另外想問某種PRNG是?
07/03 20:40, 4F
文章代碼(AID): #1PLcsC0F (java)
文章代碼(AID): #1PLcsC0F (java)