收集區
在這裡晃動滑鼠或手指
估計熵0 / 256 bit
- 事件數
- 0
- 池混合次數
- 0
- 下一個寫入位置
- 0 / 320
「模擬腳本直線移動」會送出等速直線、固定間隔的事件。池照樣被寫入,但估計熵幾乎不會增加。
隨機池
320 位元組每個位元組是舊值加上新資料。寫滿 320 位元組後,用 SHA-256 把整個池混合一次。較亮的位元組是剛寫入的,底線標出下一個寫入位置。
在下方區域晃動滑鼠或手指,每個移動事件的座標和時間會被混進一個 320 位元組的隨機池。收集夠了就雜湊成 256 位元的種子。做法仿照 TrueCrypt 一類軟體建立加密磁碟時「請隨機移動滑鼠」的步驟。
在這裡晃動滑鼠或手指
「模擬腳本直線移動」會送出等速直線、固定間隔的事件。池照樣被寫入,但估計熵幾乎不會增加。
每個位元組是舊值加上新資料。寫滿 320 位元組後,用 SHA-256 把整個池混合一次。較亮的位元組是剛寫入的,底線標出下一個寫入位置。
來自 crypto.getRandomValues,也就是作業系統的亂數產生器。建議保持開啟。
由種子展開:SHA-256(種子 ‖ 計數器) 的前 32 位元
熵估計是保守的啟發式,看的是軌跡的加速度和事件間隔的變化,每個事件最多記 3 bit。等速直線的事件估計接近 0,真人手勢約有 1 到 3 bit。
這是教學示範。實際產生密鑰時直接呼叫 crypto.getRandomValues(),瀏覽器背後的作業系統已經收集了比滑鼠更可靠的熵。