伪随机生成器具体实现——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进行加密之后的结果。那么,攻击者是否能够从伪随机数推测出新的内部状态呢?不能,因为要算出新的内部状态,只知道上一个伪随机数是不够的,还必须知道掩码以及加密的密钥才行。

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

四 伪代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值