目錄
一、隨機數的應用
二、隨機數的性質
三、偽隨機數生成器
1.偽隨機數生成器的結構
1)偽隨機數生成器的內部狀態
2)偽隨機數生成器的種子
四、對偽隨機數生成器的攻擊
1)生成金鑰
對稱密碼和訊息認證碼
2)生成金鑰對
公鑰密碼和數字簽名
3)生成初始化向量
分組密碼的模式(cbc、cfb、ofb)
4)生成nonce
防禦重放攻擊和分組密碼的ctr模式
5)生成salt(鹽)
基於口令的密碼(pbe)
1)隨機性
不存在統計學偏差,完全雜亂的數列
2)不可**性
不能從過去的數列中推測出下乙個要出現的數
3)不可重現性
不能出現重複數列(除非儲存下來)
由此可分為三類隨機數:
1)弱偽隨機數:只具有隨機性,不具有不可**性和不可重現性
2)強偽隨機數:具有隨機性和不可**性,但不具有不可重現性
3)真隨機數:具有隨機性、不可**性和不可重現性
注:軟體只能生成偽隨機數,是因為執行軟體的計算機自身僅具備有限的內部狀態,在內部條件相同時,軟體只能生成相同的數;我們將首次出現到出現之前的數列長度稱為週期,凡是具有週期的數列都不具備不可重現性;想要生成真隨機數,就要從不可重現的事物中獲取(聲音、溫度等)通過硬體生成的數列(根據溫度、聲音的變化)的裝置稱為隨機數生成器(rng)
使用軟體生成的數列稱為偽隨機數生成器(prng)
指生成器中管理的記憶體中的數值,根據內部狀態計算隨機數的方法和改變內部狀態的方法組合後,就是偽隨機數生成器的演算法
由於內部狀態決定了下乙個生成的偽隨機數,因此內部狀態不能被攻擊者知道用於對內部狀態進行初始化,種子本身是一串隨機的位元序列,根據種子可算出偽隨機數
種子需要保密1)對種子進行攻擊
當種子被攻擊後,攻擊者就可以知道這給偽隨機數生成器生成的全部偽隨機數列;為了防止被攻擊,使用不可重現性的真隨機數作為種子
2)對隨機數池進行攻擊
一般使用隨機數池的檔案積累隨機位元數列,當需要使用時,從池中取出所需長度的位元序列來使用
隨機數池被攻擊後,偽隨機數的種子會被**出來
隨機數應用
隨機數應用 隨機呼叫1 3之間的整數 random.randint 1,3 in 50 random.randint 1,3 out 50 3 in 51 random.randint 1,3 out 51 2 in 52 random.randint 1,3 out 52 1 in 53 rand...
隨機數 偽隨機數
隨機數 偽隨機數 rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。srand unsigned seed 通過引數seed改變系統提供的種子值,從而可以使得每次呼...
JavaScript隨機數的應用
function getrandom function getrandomint min,max 此示例返回指定值之間的隨機整數。該值不低於min 或者大於minif 的下乙個整數min不是整數 並且小於 但不等於 max。要求 隨機生成長度為 10 的陣列。每項的型別為 object 物件 其 x...