1. 程式人生 > >偽隨機生成器具體實現——ANSI X9.17

偽隨機生成器具體實現——ANSI X9.17

一 點睛

該偽隨機數生成器,用於密碼軟體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進行加密之後的結果。那麼,攻擊者是否能夠從偽隨機數推測出新的內部狀態呢?不能,因為要算出新的內部狀態,只知道上一個偽隨機數是不夠的,還必須知道掩碼以及加密的金鑰才行。

通過分析上述步驟,可以發現,在這種偽隨機數生成器中,密碼的使用保證了無法根據輸出的偽隨機數列來推測出內部狀態。換言之,偽隨機數生成器的內部狀態是通過密碼進行保護的。

四 虛擬碼