應用篇 隨機數

2021-09-09 07:43:53 字數 1393 閱讀 6846

目錄

一、隨機數的應用

二、隨機數的性質

三、偽隨機數生成器

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...