首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在原始熵或白化熵上执行ENT / Dieharder?

在原始熵或白化熵上执行ENT / Dieharder?
EN

Cryptography用户
提问于 2018-07-02 18:15:38
回答 2查看 1.4K关注 0票数 7

在关于硬件随机数发生器的这个问题中,讨论了以下问题:为了测试RNG和熵的质量,恩特迪哈德之类的测试套件是应用于原始熵还是应用于美白熵?

EN

回答 2

Cryptography用户

回答已采纳

发布于 2018-07-02 18:49:09

这取决于执行测试的目标:

  • 如果目标是测试美白中的问题,那么当然应该在白化输出上运行测试。如果测试失败(比P值预测的更频繁),那么白化效果就会很糟糕。如果测试通过,我们就无法推断任何密码有用的东西(源或白化可能有严重缺陷,或者/而且测试的输出可以完全可预测,因为谁知道它是如何生成的)。如果在测试过程中将源替换为非常低的熵源,那么测试就会变得毫无意义。
  • 如果目标是测试噪声源中的问题,那么在进行白化之前,应该在噪声源上运行测试。如果测试失败(比P值预测的更频繁),那么噪声源就不会被证明足够好,不能用于加密而不进行白化(但它可能仍然很好,并且完全可以用于白化;许多即使不是最好的原始源也失败了Dieharder,一些失败了ENT)。如果测试通过,我们就无法推断出任何密码上有用的东西,而不知道噪声源是如何工作的,以及测试是如何工作的。
  • 如果目标是通过符合性测试,那么它执行的规则是让人满意的橡皮图章。如果S/他不在乎,那么简单的方法就是使用经过白化的输出,这样好的美白就足够通过测试了,而不管源是什么。我猜发生了这种情况(对于FIPS 140-1和-2一致性而言,有些测试是强制性的,对大多数实际来源来说过于严格;理性占上风,测试已经被删除,然而这些测试仍然是RNGs的一些供应商吹嘘的)。

当RNG测试通过时,没有其他的rational目标可以满足。重复第一个项目:如果测试是对源的白化输出进行的黑盒测试,那么pass就表示在密码学上没有任何关于源、白化或组合的有用信息。

我假设测试至少是正确的(特别是,当给定真正的随机输入时,测试失败的可能性可与其规定的P-值相比较),并正确使用。通过反复将测试应用到已知良好的CSPRNG的输出上,这往往被证明是错误的。无论CSPRNG的输入(只要它是任意的,而不是针对被测试的测试),测试都应该通过(每一个P值偶尔出现故障)。

注意:从密码学的角度来看,ENT是一个可怕的测试,特别是对于已白化的源。例如,一个PRNG,90%的时间输出一个字节,比上一个字节多一个字节(模256),并且是随机的,其他的10%,仍然被认为是完全可以的。

注:温度或过程变化,电磁干扰,老化,对抗性影响,或墨菲定律,可以破坏一个噪音源。因此,在密码设备中,持续监视噪声源的正确操作是至关重要的。一个技术上有效的安全认证过程旨在检查源、进行白化,并且监视将整个设备置于安全状态(至少:压缩白化输出)以检测故障。这一目标与现场可靠性是对立的,两者都很难实现。

票数 6
EN

Cryptography用户

发布于 2018-07-02 21:01:05

也许可以说明TRNG是如何工作的:

也许更重要的是,你必须意识到随机意味着随机,或不确定。它绝对不是指独立且同分布的随机数(非IID)。一个歹徒死在角落里的幸运死是随机的。它是有偏见的,但它是随机的,因为没有一个特定的结果可以100%肯定地预测。因此,它可以作为模拟熵源在上面的图表。同样,你也可以使用齐纳二极管或光子探测器来达到这个目的。

从噪声源输出的(数字化)原始数据称为熵。如果源是齐纳,如果在示波器上观察,原始的可能如下所示:

请注意与带有"1“的黄色小箭头有关的异步测量。这是零参考。这就是数字化后的样子:-

你可以清楚地看到,它是高度偏倚和相关的,值是10位样本。这是我墙上真正的TRNG中的熵源,它是非常非IID的。这是一个标准的雪崩效应对数正态分布加上实际读数的相关性。大多数熵源都是非IID的,尽管有些离IID很近。量子激光器件达到> 0.94位/比特。在这个原始数据阶段,它是随机的,但不是TRNG的最终输出所需的IID。我的例子追踪保守约1.5位/sample熵,或~15%的纯度。

对/Diehard也是如此。通过对这些原始数据进行测试,可以获得哪些信息?它会大败,正如它应该做的那样。顽固性测试和所有其他随机测试也将失败。这样的测试甚至不能接受10位格式的数据。数据可能以ASCII逗号分隔格式接收,或者作为Numpy数组接收,从而进一步使测试无效。原因就在于“随机性测试”这个名字。这个原始熵甚至不接近IID随机,这正是这些测试的目的。

最后,以下是对上述原始熵的有效检验:

代码语言:javascript
复制
Entropy = 5.840091 bits per byte.

Optimum compression would reduce the size
of this 500000 byte file by 26 percent.

Chi square distribution for 500000 samples is 6926978.44, and randomly
would exceed this value less than 0.01 percent of the times.

Arithmetic mean value of data bytes is 160.3918 (127.5 = random).
Monte Carlo value for Pi is 1.805719223 (error 42.52 percent).
Serial correlation coefficient is 0.286267 (totally uncorrelated = 
0.0).

考试失败了。其他的随机性测试也是如此。甚至5.84位/byte的熵测量也是不正确的,因为它不是熵测量工具。原始熵的活源可以找到这里。在最多只有50个单元的链接数据上运行死记硬背有什么用?如果字符串为p=0或p= 1s,则会失败。不出所料。

总之,您使用这些测试检查TRNG的最终输出,以确保整个系统(包括条件)正常工作。在较小的程度上,测试可能也会获得一个失败的熵源,但这确实是最初图表中健康测试的范围。

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

https://crypto.stackexchange.com/questions/60463

复制
相关文章

相似问题

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