1. 使用隨機數的密碼技術
① 生成密鑰:對稱密碼和消息認證碼。
② 生成密鑰對:用於公鑰密碼和數字簽名。
③ 生成初始化向量IV:用於分組密碼的CBC,CFB和OFB模式。
④ 生成nonce:用於防御重放攻擊以及分組密碼的CTR模式。
⑤ 生成鹽:用於基於口令的密碼(PBE)等。
2. 隨機數的性質
① 隨機性 —— 不存在統計學偏差,總是完全雜亂的數列。
雜亂無章並不意味着不會被看穿,具備隨機性的偽隨機數稱為“弱偽隨機數”。
② 不可預測性 —— 不能從過去的數列推測出下一個出現的數。
攻擊者在知道過去生成偽隨機數數列的前提下,依然無法預測下一個生成出來的偽隨機數的性質。
也就是知道過去生成的偽隨機數序列,也無法預測下一個生成的偽隨機數。
不可預測性是通過使用其他的密碼技術來實現的。
不可預測性的偽隨機數稱為“強偽隨機數”。
③ 不可重現性 —— 除非將數列本身保存下來,否則不能重現相同的數列。
無法重現和某一隨機數列完全相同的數列的性質。
首次出現重復之前的數列長度稱為周期,對於軟件生成的數列,周期必定是有限的,不可重現的隨機數稱為“真隨機數”。
3. 偽隨機數生成器
硬件生成的隨機數,根據傳感器熱量,聲音等硬件設備稱為隨機數生成器。
生成隨機數的軟件,稱為偽隨機數生成器。
4. 偽隨機數生成器的結構
內部狀態是隨機數生成器所管理的內存中的數值。
偽隨機數生成器的種子是用來對偽隨機數生成器的內部狀態進行初始化的。
5. 具體的偽隨機數生成器
① 雜亂的方法 ② 線性同余法 ③ 單向函數散列法 ④ 密碼法 ⑤ ANSI.X9.17