伪随机生成器具体实现——ANSI X9.17

时间:2024-03-26 16:13:37

一 点睛

该伪随机数生成器,用于密码软件PGP中。

二 伪随机数生成器的步骤

1 初始化内部状态

2 将当前时间加密生成掩码。

3 对内部状态与掩码求XOR。

4 将步骤3的结果进行加密。

5 将步骤4的结果作为伪随机数输出。

6 对步骤4的结果与掩码求XOR。

7 将步骤6的结果加密。

8 将步骤7的结果作为新的内部状态。

9 重复步骤2~8直到得到所需数量的伪随机。

伪随机生成器具体实现——ANSI X9.17

三 攻击性分析

在步骤2中,我们将当前时间进行加密生成了一个掩码。当前时间是可以被攻击者预测出来的,但是由于攻击者不知道加***,因此他无法预测加密后的当前时间(掩码)。

在之后的步骤3和步骤6中,我们将使用掩码对比特序列进行随机翻转。

步骤3~5的作用是输出伪随机数。这里输出的伪随机数是将内部状态与掩码的XOR进行加密之后的结果。那么,攻击者是否能通过伪随机进行反算来看穿内部状态与掩码的XOR呢?不能,因为要看穿这个值,攻击者必须要**密码。因此,根据过去输出的伪随机数列,攻击者无法推测出伪随机生成器的内部状态。

步骤6~8的作用是更新内部状态。新的内部状态是将上一个伪随机数与掩码的的XOR进行加密之后的结果。那么,攻击者是否能够从伪随机数推测出新的内部状态呢?不能,因为要算出新的内部状态,只知道上一个伪随机数是不够的,还必须知道掩码以及加密的**才行。

通过分析上述步骤,可以发现,在这种伪随机数生成器中,密码的使用保证了无法根据输出的伪随机数列来推测出内部状态。换言之,伪随机数生成器的内部状态是通过密码进行保护的。

四 伪代码

伪随机生成器具体实现——ANSI X9.17