[技術討論] Android真隨機數生成器

請問 因為我想寫個手機android apps
必須使用真隨機數
如果系x86/windows 可以用RDSEED
我想問我聽過ARM CPU裡面有個安全模塊 trustzone,裡面有TRNG 真隨機數生成器
請問有無簡單方法可以寫個android apps用一些簡單的code取得呢個真隨機數生成器所產生的真隨機數
例如有沒有一D簡單的function就可以做到??

我不要計出來的psuedo random number.......

我本身不太識寫程式,只寫過簡單的C 做一些簡單的類似hello world的程式
而且我自己從來未打過code真正寫android apps (只玩過mit app inventor)

我見到android有個SecureRandom呢樣野
請問有通常手機如果SecureRandom有沒有機會出到真隨機數?
同是不是如果下下用GenerateSeed得出的隨機數一定是最好的?

因為我見到android securerandom是用UNIX like 系統下的/dev/urandom
想問問呢樣野系點collect random

TOP

電腦gen唔到真隨機數
你粒seed冇人知已經"真隨機"

TOP

因為我見到android securerandom是用UNIX like 系統下的/dev/urandom
想問問呢樣野系點collect random
skywalker167 發表於 2020-9-15 21:45

簡單咁講佢係利用一啲現實上隨機嘅 event
例如傳統HDD嘅讀碟時間(因為就算讀同一 sector 都會因為隻碟開始時轉到唔同位置令完成時間唔同)
又或者user input 之間嘅時間等等
估計每一個哩啲 source 嘅 entropy
放入一個 pool 度
再經一啲處理後使用

TOP

有個用atmospheric noise 做參數叫 RANDOM.ORG  有 free api call

via HKEPC Reader for Android

TOP

用Java 入面嘅threadlocal random得唔得?

via HKEPC Reader for Android

TOP

本帖最後由 skywalker167 於 2020-10-3 19:59 編輯

好多謝各位的回覆
其實我需要隨機數的原因同保安無關,系為某D特別原因.....
我想要一D好隨機而且受手機附近的環境影響的隨機數,而且最好是實時....
所以其實我不需要threadlocalrandom或者random.org的隨機數
不過都好多謝兩位的提議

另外多謝smoke_cheese的解釋
而家我都大概明白dev/random系點
我唸緊用/dev/random的seed (即系securerandom),
直接做隨機數,不過我問過一個讀CS的人他話他的理解是seed不是隨機數....
其實是不是seed要經過pseudo random number generator先系隨機數?
另外最理想系實時.....所以如果系x86 PC個RDSEED系最好......但手機就.....
但又不想話用時間的hash呢D.....或者自己讀手機sensor....
我都系唸緊/dev/random下的seed直接做隨機數

TOP

好多謝各位的回覆
其實我需要隨機數的原因同保安無關,系為某D特別原因.....
我想要一D好隨機而且受手機附 ...
skywalker167 發表於 2020-10-3 19:58


講得pseudo random當然不是真隨機數
電腦軟件(CPU)係做唔到真隨機

所以有D人整D硬件黎用其他方法整隨機數
https://hackaday.io/project/4628-nuclear-random-number-generator

Hash隨時仲衰過就咁/dev/random

TOP

本帖最後由 EITCo 於 2020-10-4 23:15 編輯
好多謝各位的回覆
其實我需要隨機數的原因同保安無關,系為某D特別原因.....
我想要一D好隨機而且受手機附 ...
skywalker167 發表於 2020-10-3 19:58



    就算係保安用途,都尚且唔需要講究 true random v.s. pseudorandom
何況你唔係保安用途
除非真係做緊關於 information theory, cryptography 之類嘅學術研究啦
但其實你咁樣問得,都已表示你唔需要 true random

呢篇文可以睇睇
https://www.2uo.de/myths-about-urandom/
以前一直唔知原來 /dev/random 都係由 pseudorandom generator (PRG) 產生
不過當唔夠 entropy 輸入個 PRG 時
/dev/urandom 會照 gen output
/dev/random 會 block
但就算保安用途都係 urandom 已經夠 (除左有少少細節要注意)

而要 true random 應該需要有專門硬件用物理方法抽隨機數,好似 8# 例子
但你唔係做緊啲咩高深專門嘅研究
用左都係殺雞用牛刀,自我感覺良好

不過如果 just for fun
呢度直程 stream 啲 true random data 畀你睇
https://qrng.anu.edu.au/live-numbers__trashed/random-binary/
(當然反而唔好真係用係保安上
因為唔保密,人人都睇到,起碼個網自己有 raw data
加上你唔知佢各樣 implementation 有無漏洞)

TOP

我系特別原因先有錦的要求
....
或者可以而家話吾一定要true random number

但我有個要求系呢個隨機數要高度隨機
同受真實世界影響,而且呢個影響要實時 而且最好系部手機自己讀取(不是從透過internet系另外一個地方傳來)

如果我將點解我有呢個要求的原因講出來
相信不但會無人幫,而且會被人圍攻,被人人身攻擊
我試過因為呢個原因而被一個以前的(絕無僅有的)朋友話我on9
而且完全系認真地話我on9
不再做我朋友
我呢個原因同我的身分都有D關係 (我系五毛小粉紅)

甚至如果我作一個原因 話呢個程式系用於腦控
都會比真正的原因更加容易被人接受

TOP