我看到了关于真正随机数生成器(TRNG)的以下声明:
由于密码的原因,“P1介质”AIS31真随机数生成器(TRNG)可能无法直接使用。即使是智能卡或其他具有高质量的随机性物理源的高级安全解决方案,通常也至少依赖于压缩TRNG输出。
我的问题是,如何压缩TRNG输出使其不安全?我试过搜索,但我找不到更多关于这一点的信息,在规范中,上面的引用来自,或任何地方,我已经在网上看过。
我唯一能想到的是,在某种程度上,压缩算法的结果可以根据输入预测。但是,如果输入是随机生成的,我不明白这有什么关系。
发布于 2020-09-04 17:46:45
我觉得你曲解了消息来源。消息来源说,TRNG“依赖”压缩(加密散列将是压缩函数,或者可能是一些更简单的函数,以提高吞吐量)。
随机数据在压缩后不是不安全的,压缩前是不安全的。
为什么?
当你掷骰子时,它是任何一个可能的值的概率相等,但假设骰子不是很完美的--在本质上,你会发现事情总是更像加权骰子,而不是完美的RNG。
如果输出有偏差,这意味着它不太可能产生特定的输出,从而破坏了RNG的安全性-- CSPRNG要安全,就必须以相同的概率产生每个输出,TRNG也不能免于该规则的限制。
解决方案是采用比您计划使用的更多的随机字节,然后使用压缩函数将它们合并。它可以像XORing每一对字节一样简单,也可以像加密散列那样考虑,但是您需要一些东西来平衡概率。
也就是说,使用压缩函数来缩小您的ZIP文件是一种简单的方法,可以以一种您不想要的方式处理这些概率,因此应该避免这种情况,但这不是他们所指的。
发布于 2020-09-05 07:46:38
我认为这是相对直接的。如果压缩算法能够从以前的数据块中检测到下一个数据块,那么它就能够可靠地压缩它。无论如何,这并不是一个很大的随机块,所以将所有这些都包含在您的“安全”编码中并没有多大好处。如果您压缩它,那么它仍然可以贡献一些东西,但它将被进一步转换(通过压缩)。如前所述,许多熵源仍然存在一些偏差。我想你会发现其中的许多,如智能卡等,在返回结果时已经考虑到了压缩的因素。也就是说,如果你想要2048位的“熵数据”,那么这可能不仅仅是下一个2048位从它的信号发生器中飞出来的数据。它可能已经在压缩过程中运行了,因此您实际上得到了2048位压缩数据(因此删除了较少的“随机”数据)。
https://crypto.stackexchange.com/questions/83754
复制相似问题