发布于 2018-07-02 18:49:09
这取决于执行测试的目标:
当RNG测试通过时,没有其他的rational目标可以满足。重复第一个项目:如果测试是对源的白化输出进行的黑盒测试,那么pass就表示在密码学上没有任何关于源、白化或组合的有用信息。
我假设测试至少是正确的(特别是,当给定真正的随机输入时,测试失败的可能性可与其规定的P-值相比较),并正确使用。通过反复将测试应用到已知良好的CSPRNG的输出上,这往往被证明是错误的。无论CSPRNG的输入(只要它是任意的,而不是针对被测试的测试),测试都应该通过(每一个P值偶尔出现故障)。
注意:从密码学的角度来看,ENT是一个可怕的测试,特别是对于已白化的源。例如,一个PRNG,90%的时间输出一个字节,比上一个字节多一个字节(模256),并且是随机的,其他的10%,仍然被认为是完全可以的。
注:温度或过程变化,电磁干扰,老化,对抗性影响,或墨菲定律,可以破坏一个噪音源。因此,在密码设备中,持续监视噪声源的正确操作是至关重要的。一个技术上有效的安全认证过程旨在检查源、进行白化,并且监视将整个设备置于安全状态(至少:压缩白化输出)以检测故障。这一目标与现场可靠性是对立的,两者都很难实现。
发布于 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随机,这正是这些测试的目的。
最后,以下是对上述原始熵的有效检验:
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的最终输出,以确保整个系统(包括条件)正常工作。在较小的程度上,测试可能也会获得一个失败的熵源,但这确实是最初图表中健康测试的范围。
https://crypto.stackexchange.com/questions/60463
复制相似问题