首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用易受攻击的pRNG?

如何利用易受攻击的pRNG?
EN

Stack Overflow用户
提问于 2014-04-18 04:30:48
回答 1查看 1.7K关注 0票数 0

源经常指出,如果一个pRNG有一个可预测的种子,比如日期时间,那么结果的输出几乎没有熵,可以被利用。

但是你实际上是如何开发pRNG的呢?你必须长时间观察输出流吗?在这种情况下,您分析什么以及如何使用它?

有关于这个问题的文件吗?

假设你怀疑一个系统有一个非常弱的pRNG种子,仅仅时间,你如何确认怀疑?你是怎么用的?

或者,如果你想测试一个pRNG,看看它是否很弱,你会怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-26 15:12:30

神圣的问题蝙蝠侠。希望我去派对不会太晚。

But how do you actually go about exploiting the pRNG?

这取决于使用它的系统,以及从下一个随机数的知识中获得什么(如果有的话)优势。

你必须长时间观察输出流吗?在这种情况下,您分析什么以及如何使用它?

看,这在很大程度上取决于所使用的RNG类型。例如,考虑两种不同的RNG算法,它们都带有系统时间。第一个是线性同余发生器或LCG,第二个是Mersenne。如果你有LCG的算法,你只看到一个随机数就可以预测下一个数字。即使你不知道,如果你知道种子和/或访问一个适当大小的输出随机数流,你可以在几分钟内用蛮力计算出来。

至于mersenne绕行器,即使你知道算法,它仍然需要624个随机数才能预测下一个,更不用说你编写的算法的复杂性了。

因此,开发的难度已经有了很大的不同。一旦你找到blum或另一种类似的加密算法,这几乎是不可能的。

有关于这个问题的文件吗?

载货。以下是一些文章:

这是一个非常酷的基于RNG的开发的例子。

这篇文章更侧重于RNG本身。

假设你怀疑一个系统有一个非常弱的pRNG种子,仅仅时间,你如何确认怀疑?你是怎么用的?

同样,这取决于所使用的RNG。对于LCG来说,只要有一些基本知识,就不会花太长时间就能弄清楚。读一读,你就会明白我的意思了。对于任何更复杂的事情,难度都会成倍上升。

或者,如果你想测试一个pRNG,看看它是否很弱,你会怎么做呢?

PRNG有句点,或一个循环的数字,将不断重复。这是一个很好的方法来判断他们有多好。有时,如果选择了错误的数字或生成器,它们就会很短。一个非常简单的测试,如果您可以无限地访问生成器(比如您的代码中有一些blackbox'd随机()函数,您想要进行质量检查),那就是只记录您得到的第一个数字,然后等待这个数字再次出现所需的时间。如果在几分钟内发生这种情况(2^32个数字),您将处理一个简单的LCG。对于像梅森扭动器这样的东西,它在两千年后就不会出现了(2^19937−1)。

希望这能帮点忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23147385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档