伪随机数发生器怎么可能不重复? | 您所在的位置:网站首页 › hash冲撞 › 伪随机数发生器怎么可能不重复? |
我的理解是PRNG的工作是使用输入种子和将其转换为非常不相关的输出的算法,以便下一个生成的数字尽可能不可预测.但这是我看到的问题: 我能想象的任何伪随机数生成器必须具有有限数量的结果.假设我正在使用一个随机数生成器,它可以生成0到1000亿之间的任何数字.如果我要求输出一千亿次和一次,我可以肯定一个数字输出了不止一次.如果相同的种子在通过算法时总是给出相同的输出,那么我可以确定PRNG将开始循环.我的逻辑在哪里有缺陷? 在这种情况下,我是正确的,如果你知道一个PRNG算法,并正在被用于加密PRNG,不能使用这种方法(和在那里,以防止任何措施?):
使用PRNG可以生成整个循环数字集. 知道生成私钥的时间戳,并在稍后知道PRNG的时间和输出 根据计算所需的时间,确定已知输出与未知输出之间的数量 在预生成列表中查找以查找生成的数字
templatetype.. 5 你是绝对正确的,理论上这种方法可以用来打破PRNG,因为正如你所指出的那样,给定足够长的输出序列,你可以开始预测接下来会发生什么. 问题是"足够长"可能太长,以至于这种方法完全不切实际.例如,梅森倍捻机 PRNG,这是不适合使用的密码,有一段2 19937 - 1,这是这么长时间,它是完全不可行的尝试,你描述的攻击. 一般来说,假设伪随机生成器使用n位内部存储器.这给出了2 n个这些位的内部配置,这意味着在保证看到重复之前,您可能需要看到2 n + 1个输出.鉴于大多数加密安全的PRNG使用至少256位的内部存储,这使得您的攻击不可行. 值得注意的一个细节是,"PRNG重复一个数字"和"从那时起,数字总是相同的"之间存在差异.如果每次内部状态不同,PRNG可能会多次重复输出,然后再继续输出不同的数字. 1> templatetype..: 你是绝对正确的,理论上这种方法可以用来打破PRNG,因为正如你所指出的那样,给定足够长的输出序列,你可以开始预测接下来会发生什么. 问题是"足够长"可能太长,以至于这种方法完全不切实际.例如,梅森倍捻机 PRNG,这是不适合使用的密码,有一段2 19937 - 1,这是这么长时间,它是完全不可行的尝试,你描述的攻击. 一般来说,假设伪随机生成器使用n位内部存储器.这给出了2 n个这些位的内部配置,这意味着在保证看到重复之前,您可能需要看到2 n + 1个输出.鉴于大多数加密安全的PRNG使用至少256位的内部存储,这使得您的攻击不可行. 值得注意的一个细节是,"PRNG重复一个数字"和"从那时起,数字总是相同的"之间存在差异.如果每次内部状态不同,PRNG可能会多次重复输出,然后再继续输出不同的数字. |
CopyRight 2018-2019 实验室设备网 版权所有 |