这是在讨论RNG熵的过程中发生的,并且很难验证一长串位(例如私钥)中的熵水平。

我的一个同事告诉我一个网站,如果从PRNG获得足够的输出,则能够推断出PRNG来自哪个应用程序。例如,他告诉我他已经从OpenSSL的随机数生成器提交了数据,并且该网站已将“ Open SSL”标识为来源。

大约是三年前。他在以前工作过的一家公司遇到过该网站。

我无法通过谷歌搜索找到该网站,而我的同事可能找不到该URL(他正在查找。)不足为奇,我非常担心所谓的密码安全PRNG的输出是否容易受到具有微妙复杂性的区分攻击的攻击! URL?

评论

尽管这个问题天生没有错,但问题是它指定了一个未知的网站,并且它的作用根本不清楚。如果找不到任何表明算法不安全的区别功能,它很可能会返回OpenSSL。

@MaartenBodewes幸运的是,事实证明该网站是研究的概念验证,可以识别出创建给定RSA模数的软件。 RNG的弱点只是所使用方法中很小的一部分。在这种情况下,我希望您认为它是菱形修改器-因为事实证明它是基于有缺陷的前提,所以我应该对问题进行编辑吗?

不,不是必需的。我想从评论和答案中可以清楚看出情况是什么。

#1 楼


我的一个同事告诉我一个网站,考虑到PRNG的大量输出,它能够推断出PRNG来自哪个应用程序。


您正确地识别出这将对任何加密PRNG造成立即且可能是破坏性的攻击,因为它确实使您能够轻松地将随机字符串与PRNG输出区分开,这是密码学家试图有效地使之成为不可能的事情。


但是,故事可能有些真实。我知道有两种可能的情况:


该网站将输出标识为臭名昭著的OpenSSL Debian错误。
该站点已获得RSA公钥,并且可以根据主要搜索策略以安全的方式在不同库之间略有不同,来判断是哪种实现产生了它。这是在Usenix Security 2016(PDF)上介绍的,也许有人将其转换为网站。


评论


$ \ begingroup $
幸运的是,事实证明这是Usenix 2016研究的概念验证网站rsa.sekan.eu,并且它依赖于RSA密钥生成中的许多怪癖,这些怪癖与RNG的弱点。 (或者至少大多数不是。)我现在可以不再担心!
$ \ endgroup $
– AJM-Restate-Monica
20-4-1在9:59



#2 楼

尝试执行此操作的一种工具是取消控制。不过,它几乎肯定不是您在考虑的工具,因为它无法确定输出是否专门来自OpenSSL。不过,变体(php_mt_rand),Ruby的MT变体DEFAULT :: rand()和Java的Random()类可以恢复种子,从而使您可以预测将来的输出。

所有这些都是但是不安全的随机位发生器;网站的名称(毫无疑问是在Mersenne Twister之后)意味着它可能无法区分安全的随机数生成器。

评论


$ \ begingroup $
谢谢。幸运的是,事实证明有一些交叉的导线,并且该网站实际上是以RSA模数作为输入并识别产生它们的软件-参见crocs.fi.muni.cz/public/papers/usenix2016
$ \ endgroup $
– AJM-Restate-Monica
20年4月1日在10:01