偽隨機生成器具體實現——ANSI X9.17
阿新 • • 發佈:2018-12-15
一 點睛
該偽隨機數生成器,用於密碼軟體PGP中。
二 偽隨機數生成器的步驟
1 初始化內部狀態
2 將當前時間加密生成掩碼。
3 對內部狀態與掩碼求XOR。
4 將步驟3的結果進行加密。
5 將步驟4的結果作為偽隨機數輸出。
6 對步驟4的結果與掩碼求XOR。
7 將步驟6的結果加密。
8 將步驟7的結果作為新的內部狀態。
9 重複步驟2~8直到得到所需數量的偽隨機。
三 攻擊性分析
在步驟2中,我們將當前時間進行加密生成了一個掩碼。當前時間是可以被攻擊者預測出來的,但是由於攻擊者不知道加密金鑰,因此他無法預測加密後的當前時間(掩碼)。
在之後的步驟3和步驟6中,我們將使用掩碼對位元序列進行隨機翻轉。
步驟3~5的作用是輸出偽隨機數。這裡輸出的偽隨機數是將內部狀態與掩碼的XOR進行加密之後的結果。那麼,攻擊者是否能通過偽隨機進行反算來看穿內部狀態與掩碼的XOR呢?不能,因為要看穿這個值,攻擊者必須要破解密碼。因此,根據過去輸出的偽隨機數列,攻擊者無法推測出偽隨機生成器的內部狀態。
步驟6~8的作用是更新內部狀態。新的內部狀態是將上一個偽隨機數與掩碼的的XOR進行加密之後的結果。那麼,攻擊者是否能夠從偽隨機數推測出新的內部狀態呢?不能,因為要算出新的內部狀態,只知道上一個偽隨機數是不夠的,還必須知道掩碼以及加密的金鑰才行。
通過分析上述步驟,可以發現,在這種偽隨機數生成器中,密碼的使用保證了無法根據輸出的偽隨機數列來推測出內部狀態。換言之,偽隨機數生成器的內部狀態是通過密碼進行保護的。
四 虛擬碼