用于区分好坏随机数生成器的统计测试的最新技术是什么?

机器算法验证 随机生成 随机性
2022-04-07 08:51:15

外面有很多包。特别是,PractRand对其中的一些给出了意见,但这只是一个意见。关于应该使用哪组统计测试来测试随机数生成器,是否存在传统观念?


更新 1 : 鉴于 @ usεr11852的评论,答案可能会用于测试 PRNG 或 CSPRNG。如果任何一个当前存在任何正式建议,我会认为它已得到回答。


更新 2:鉴于 @usεr11852 和 @DW 的评论,答案应该假设测试 PRNG(而不是CSPRNG)。(如果在这个阶段是可能的。)

2个回答

除了 Sephan Kolassa 提到的Dieharder套件之外,其他著名的测试套件包括TestU01和 NIST Statistical Test Suite ( STS )。

您提到的 PractRand 库将 Dieharder 和 STS 评为“坏”,将 TestU01 评为“好”。但是,与其他测试套件不同,PractRand 并不为人所知,而且似乎没有任何学术论文或外部评论。因此,人们必须使用自己的判断来信任这些比较(在 PractRand 网页上有一些信息

我建议看看 crypto.stackexchange.com。例如,这里这里的一些相关线程。

需要注意的重要一点是,科学和密码应用程序对伪随机数生成器有不同的要求。两者都需要统计随机性。但是,对于加密应用程序来说,这还不够,它们还需要抵抗试图利用随机数生成器内部工作原理的攻击。这无法通过统计测试来验证,并且需要密码分析。

参考

1995 年,Diehard 测试套件发布。这不再是最先进的技术 - 一个限制是 Diehard 在每次测试中仅使用大约 1000 万个随机数,但随机数的现代使用可能会消耗更多,因此测试应该基于更大的样本得出结论。

Diehard 套件的继承者是Dieharder 套件我相信这是最先进的技术,但是(免责声明)我不是随机数测试方面的专家,因此任何真正专家并且实际上可以用文献支持他们的回答的人的回答将不胜感激。