我正在使用NIST SP 800-22来评估随机数发生器的性能.
NIST SP 800-22共进行了15次测试.在每个测试中,它都有一个关于测试序列大小的建议。例如,在离散傅里叶变换(谱)测试中:“建议测试的每个序列至少包含1000位(即n≥1000)。”因此,这意味着,每个被测试序列的大小必须大于1000。
那么,我应该选择哪个n的值呢?为了确认随机数发生器通过了离散傅里叶变换(谱)检验,随机数发生器是否总是通过n≥1000的所有值?
发布于 2022-04-13 12:37:06
1,250位x10个流工作:-
------------------------------------------------------------------------------
RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF PASSING SEQUENCES
------------------------------------------------------------------------------
generator is <Blum-Blum-Shub>
------------------------------------------------------------------------------
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 P-VALUE PROPORTION STATISTICAL TEST
------------------------------------------------------------------------------
0 0 2 2 2 1 1 2 0 0 0.534146 10/10 FFT
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -因为上面是一个很好的传球。
假设您的RNG是好的,只运行FFT是不确定的。当随机性令人讨厌时,您经常会遇到孤立的测试失败,特别是当样本越来越小的时候。随机性在很大程度上是样本大小的函数。这就是为什么测试“套件”有各种各样非常简单和非常复杂的测试。因此,“随机数生成器是否总是以n≥1000的所有值传递(Sic)”。
我也会对100位流保持警惕。从经验再看,10似乎是一个不错的数量,并允许一个像样的p值被确定。在>> 10比特流之后,你会遇到收益递减的情况。因此,执行10位流(每个1,000,000位(1.25 MB ))来运行所有测试。对于RandomExcursions(变体)测试,您不会得到任何p值,但是您将从通过率中得到成功的指示。
但是在此之前,如果您已经设计了自己的TRNG (可能还有随机抽取器),那么运行恩特。表面上这是最稳健的随机性测试。使用500 kB。如果您的样本不合格ent,那么您的TRNG是坏的。
https://crypto.stackexchange.com/questions/99654
复制相似问题