应用篇——随机数
目錄
一、隨機數的應用
二、隨機數的性質
三、偽隨機數生成器
1.偽隨機數生成器的結構
1)偽隨機數生成器的內部狀態
2)偽隨機數生成器的種子
四、對偽隨機數生成器的攻擊
一、隨機數的應用
1)生成密鑰
對稱密碼和消息認證碼
2)生成密鑰對
公鑰密碼和數字簽名
3)生成初始化向量
分組密碼的模式(CBC、CFB、OFB)
4)生成nonce
防御重放攻擊和分組密碼的CTR模式
5)生成salt(鹽)
基于口令的密碼(PBE)
?
二、隨機數的性質
1)隨機性
不存在統計學偏差,完全雜亂的數列
2)不可預測性
不能從過去的數列中推測出下一個要出現的數
3)不可重現性
不能出現重復數列(除非保存下來)
由此可分為三類隨機數:
1)弱偽隨機數:只具有隨機性,不具有不可預測性和不可重現性
2)強偽隨機數:具有隨機性和不可預測性,但不具有不可重現性
3)真隨機數:具有隨機性、不可預測性和不可重現性
注:軟件只能生成偽隨機數,是因為運行軟件的計算機自身僅具備有限的內部狀態,在內部條件相同時,軟件只能生成相同的數;我們將首次出現到出現之前的數列長度稱為周期,凡是具有周期的數列都不具備不可重現性;想要生成真隨機數,就要從不可重現的事物中獲取(聲音、溫度等)
三、偽隨機數生成器
通過硬件生成的數列(根據溫度、聲音的變化)的設備稱為隨機數生成器(RNG)
使用軟件生成的數列稱為偽隨機數生成器(PRNG)
1.偽隨機數生成器的結構
1)偽隨機數生成器的內部狀態
指生成器中管理的內存中的數值,根據內部狀態計算隨機數的方法和改變內部狀態的方法組合后,就是偽隨機數生成器的算法
由于內部狀態決定了下一個生成的偽隨機數,因此內部狀態不能被攻擊者知道
2)偽隨機數生成器的種子
用于對內部狀態進行初始化,種子本身是一串隨機的比特序列,根據種子可算出偽隨機數
種子需要保密
四、對偽隨機數生成器的攻擊
1)對種子進行攻擊
當種子被攻擊后,攻擊者就可以知道這給偽隨機數生成器生成的全部偽隨機數列;為了防止被攻擊,使用不可重現性的真隨機數作為種子
2)對隨機數池進行攻擊
一般使用隨機數池的文件積累隨機比特數列,當需要使用時,從池中取出所需長度的比特序列來使用
隨機數池被攻擊后,偽隨機數的種子會被預測出來
總結
- 上一篇: 应用篇——密钥
- 下一篇: 应用篇——SSL/TLS