【经验】如何使用NIST SP 800-22随机数测试集?
本文汇顶科技介绍了如何使用NIST SP 800-22随机数测试集,对GR551X系列低功耗蓝牙模块的TRNG(真随机数发生器)模块进行测试,以便验证该模块生成的随机数质量满足标准的要求。
目录
一、简介
1.1 随机数测试集
1.2 P-value值说明
1.3 TRNG(真随机数发生器)
二、环境搭建
2.1 NIST测试集下载与安装
2.2 随机数测试源生成
三、测试流程
3.1 随机数序列生成
3.2 NIST测试
四、测试报告
五、附录
一、简介
美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)发布了一篇名为“A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications”的文章,对用于检验加密应用的随机数发生器的质量的NIST SP 800-22随机数测试集进行了全面的介绍。可参考SP 800-22 Rev. 1a:A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications获取。
1.1随机数测试集
NIST SP 800-22随机数测试集包含15个测试项,用于测试由基于硬件或软件的加密随机数或伪随机数生成器生成的(任意长)二进制序列的随机性。这些测试侧重于序列中可能存在的各种不同类型的非随机性,其中的一些测试可分解为各种子测试。
1. The Frequency (Monobit) Test(频率测试)该测试的重点是整个序列中0和1的比例。此测试的目的是确定序列中1和0的数量是否与真正随机序列的预期数量大致相同。该测试评估1的分数与1/2的接近程度,即序列中1和0的数量应该大致相同。所有后续测试都取决于此测试的通过。
2. Frequency Test within a Block(块内频率测试)该测试的重点是M位内1的比例。该测试的目的是确定M位中1的频率是否大约为M/2,正如在随机性假设下所预期的那样。对于块大小M=1,此测试退化为测试1,即频率(单比特)测试。
3. The Runs Test(运行测试)该测试的重点是序列中的运行总数,其中运行是相同位的不间断序列。长度为k的运行由k个完全相同的位组成,并且在前后以相反值的位为界。运行测试的目的是确定运行时各种长度的1和0是否符合随机序列的预期,即该测试确定这些0和1之间的振荡是太快还是太慢。
4. Tests for the Longest-Run-of-Ones in a Block该测试的重点是M位中最长的1。该测试的目的是确定测试序列中最长1的长度是否与随机序列中预期的最长1的长度一致。
5. The Binary Matrix Rank Test(二元矩阵秩检验)该测试的重点是整个序列的不相交子矩阵的等级。此测试的目的是检查原始序列的固定长度子串之间的线性相关性。
6. The Discrete Fourier Transform (Spectral) Test(离散傅里叶变换测试)该测试的重点是序列的离散傅里叶变换中的峰值高度。该测试的目的是检测测试序列中的周期性特征(即彼此靠近的重复模式),这些特征表明与随机性假设的偏差。目的是检测超过95 %阈值的峰数是否与5 %显着不同。
7. The Non-overlapping Template Matching Test(非重叠模板匹配测试)该测试的重点是预先指定的目标字符串的出现次数。此测试的目的是检测产生过多出现给定非周期性(非周期性)模式的生成器。
8. The Overlapping Template Matching Test(重叠模板匹配测试)重叠模板匹配测试的重点是预先指定的目标字符串的出现次数。
9. Maurer's "Universal Statistical" Test该测试的重点是匹配模式之间的位数(与压缩序列长度相关的度量)。测试的目的是检测是否可以在不丢失信息的情况下显着压缩序列,一个显着可压缩的序列被认为是非随机的。
10. The Linear Complexity Test(线性复杂度测试)该测试的重点是线性反馈移位寄存器(LFSR)的长度。此测试的目的是确定序列是否足够复杂以被认为是随机的。随机序列的特点是较长的LFSR,太短的LFSR意味着非随机性。
11. The Serial Test(串行测试)该测试的重点是整个序列中所有可能的重叠m位模式的频率。该测试的目的是确定2m位重叠模式的出现次数是否与随机序列的预期值大致相同。随机序列具有一致性,也就是说每个m位模式与其他每个m位模式出现的机会相同。
12. The Approximate Entropy Test(近似熵检验)与串行测试一样,该测试的重点是整个序列中所有可能的重叠m位模式的频率。
13. The Cumulative Sums (Cusums) Test(累积和测试)该测试的重点是随机游程的最大偏移(从零开始),由序列中调整后的(-1,+1)数字的累积和定义。测试的目的是确定测试序列中出现的部分序列的累积和相对于随机序列的累积和的预期行为是太大还是太小。这个累积和可以被认为是随机游程。对于随机序列,随机游程的偏移应该接近于零。对于某些类型的非随机序列,这种随机游程从零开始的偏移会很大。
14. The Random Excursions Test(随机偏移测试)该测试的重点是在累积和随机游程中恰好有K次访问的周期数。累积和随机游程是从(0,1)序列转移到适当的(-1,+1)序列后的部分和得出的。随机游程的循环由一系列随机采取的单位长度的步骤组成,这些步骤从原点开始并返回原点。此测试的目的是确定在一个周期内访问特定状态的次数是否偏离了人们对随机序列的预期。
15. The Random Excursions Variant Test(随机偏移变化测试)该测试的重点是在累积和随机游程中访问(即发生)特定状态的总次数。此测试的目的是检测随机游程中对各种状态的预期访问次数的偏差。
1.2 P-value值说明
检验统计量用于计算总结针对零假设的证据强度的P-value值。对于这些测试,在给定测试评估的非随机性类型的情况下,每个P-value值是完美随机数发生器生成的序列随机性小于被测序列的概率。如果确定测试的P-value值等于1,则序列似乎具有完全随机性。若P-value值为零表示该序列似乎是完全非随机的。
1.3 TRNG(真随机数发生器)
TRNG模块支持伪随机数生成和真随机数生成。伪随机数由线性反馈移位寄存器(LFSR)生成。真随机数是通过使用前馈环形振荡器(FRO)作为熵源来生成的。
TRNG模块详细的资料和介绍可以在GR551X系列芯片的Datasheet中获取。
二、环境搭建
2.1 NIST测试集下载与安装
NIST SP 800-22随机数测试集配套工具包可以在NIST官网上获取。可参考NIST SP 800-22: Download Documentation and Software点击Download即可下载sts-2_1_2.zip。
该工具包是Linux系统下开发的,如果你的电脑是Linux系统,可以直接进入文件夹运行Makefile安装。如果你的电脑是Windows系统,可以借助虚拟机软件来运行Makefile安装。本文是在Windows系统下,使用Cygwin软件来运行Makefile安装工具包。
通过命令行进入sts-2.1.2工具包根目录,找到Makefile文件,输入make命令进行自动化编译。编译过程中的警告可以忽略,这些警告不会影响到测试。
编译完成后,查看sts-2.1.2工具包根目录,如果能够找到assesss.exe文件,说明编译成功,随后assesss.exe文件将作为随机数测试的入口。
2.2 随机数测试源生成
NIST测试集工具包支持ASCII和Binary数据格式的多种文件格式的输入。本文将采用二进制字符串数据格式的txt文件格式作为随机数测试源,其中的随机数序列将通过GR551X系列芯片上的TRNG(真随机数发生器)模块生成。
TRNG模块可以通过下列配置,使用FR0环形振荡器,生成32位真随机数。
app_rng_params_t rng_params;
rng_params.use_type = APP_RNG_TYPE_POLLING;
rng_params.init.seed_mode = RNG_SEED_FR0_S0;
rng_params.init.lfsr_mode = RNG_LFSR_MODE_59BIT;
rng_params.init.out_mode = RNG_OUTPUT_FR0_S0;
rng_params.init.post_mode = RNG_POST_PRO_NOT;
app_rng_init(&rng_params, NULL);
调用下列函数接口,可以使用轮询的方式生成32位随机数。
uint16_t app_rng_gen_sync(uint16_t *p_seed, uint32_t *p_random32bit);
GR551X系列芯片不能直接创建txt文件并写入数据,但是可以将生成的随机数序列通过串口打印至PC端。通过串口调试工具,可以将串口的打印保存成txt文件,这样生成的随机数序列也就以txt文件格式保存在PC端。注意串口的速率不要过高,这样串口调试工具保存下的数据会存在丢失的风险。
可以使用printf函数将生成的32位随机数按照二进制字符串形式打印至串口。
printf("% 08X", p_random32bit);
三、测试流程
下图介绍了使用NIST测试工具集sts-2.1.2对GR551X系列芯片生成的随机数序列进行测试的流程。
3.1 随机数序列生成
按照2.2随机数测试源生成小节的方法,使用GR551X系列芯片的TRNG(真随机数发生器)模块生成符合格式的随机数序列文件。
TRNG的示例工程在SDK_Folder\projects\peripheral\rng\app_rng目录下。
由于NIST测试集工具包具有自定义测试序列长度的选项,所以测试的随机数序列的长度可以根据当前的测试环境决定。测试序列数据量越大,测试所需的时间越长。本文推荐的随机数序列至少为20480000位二进制字符串格式大小的txt文件,即需要使用TRNG生成至少640000个32位随机数。
将生成的随机数序列文件拷贝至sts-2.1.2工具包根目录下的data目录下。
3.2 NIST测试
3.2.1设置数据段长度
在sts-2.1.2工具包根目录下,输入./assess.exe并回车,可以看到如何设置数据段长度。
NIST测试集是按数据段来进行检验的,无论原始数据文件有多大,都可以通过设置数据段长度,将数据文件分成小端。数据段的长度不应过小,因为有些测试项所需的数据流至少要大于特定值才能进行检验。数据段的长度最好满足32的倍数。本文推荐的数据段长度为1024000位,该长度可以满足所有测试项的数据流要求。
在sts-2.1.2工具包根目录下,输入./assess.exe 1024000并回车。
3.2.2 设置测试数据文件
根据菜单指引,输入0可以设置测试数据文件,注意这里需要输入的是测试数据文件的绝对路径,相对路径可能会报错。
3.2.3 设置测试项
如1.1随机数测试集小节介绍,sts-2.1.2工具包可以进行15项随机数测试。根据菜单指引,可以选择单项测试也可以选择全项测试,输入1将选择全项测试。
如果想进行单项测试可以输入0,随后输入0或1以指示是否应将该编号的测试项应用于随机数序列。例如,输入111111111111111则将15个测试项应用于随机数序列。
3.2.4 设置测试参数
根据菜单指引,需要设置相应的测试参数才能开启测试。测试参数的设置十分重要,因为不同的参数将会带来不同的测试结果,合理的参数设置才能获取到正确的测试报告。
输入数字[1,2,3,4,5,6]可以设置对应的测试参数,输入0将会结束参数的设置。
3.2.4.1 Block Frequency Test - block length(M)
这项测试建议每个要测试的序列至少包含100位(即n ≥ 100)。 请注意,n ≥ MN。 应选择块大小M,使得M ≥ 20,M > .01n和N < 100。其中M为每个块的长度,n为序列的位数,N为将输入序列划分为 n/M 的非重叠块。
由于本文推荐的数据段长度为1024000位,这项参数推荐设置为20480。
3.2.4.2 NonOverlapping Template Test - block length(m)
这项测试已编写的测试代码提供m = 2、3、…、10的模板。建议指定m = 9或m = 10以获得有意义的结果。
尽管在测试代码中已指定N = 8,但代码可以更改为其他大小。应使N ≤ 100以确保P-value值有效。此外,确保M > 0.01
∙
n且N = n/M。
3.2.4.3 Overlapping Template Test - block length(m)
这项测试的m可以选择各种值,但目前NIST建议m = 9或m = 10。如果需要其他值,需要满足以下条件:
1. n ≥ MN
2. 应选择N以使 N∙( min(π_i) )>5
3. 计算λ=(M-m+1)/2^m≈2
4. 应满足 m≈log2_M
5. 自由度数K应满足K≈2λ,注意除5以外的K值,需要重新计算 π_i 的值
3.2.4.4 Approximate Entropy Test - block length(m)
这项测试使每个块的长度m和序列的位数n满足m<[ log2_n ]-5。
3.2.4.5 Serial Test - block length(m)
这项测试使每个块的长度m和序列的位数n满足m<[ log2_n ]-2。
3.2.4.6 Linear Complexity Test - block length(M)
这项测试需要满足序列的位数n ≥ 10^6,每个块的长度M必须在500 ≤ M ≤ 5000的范围内,并且 N = n/M ≥ 200才能使结果 χ^2 有效。
3.2.5 设置数据流数量
此处需要设置数据流的数量,数据流的数量应与数据段的长度对应,不能大于测试数据文件的总数据量,否则可能会导致测试失败。由于先前设置了数据段长度为1024000位,测试数据文件的总位数为20480000位,所以数据流的数量不能大于20。本文推荐数据流的数量为20,这样可以满足所有的测试项的测试条件。
3.2.6 设置文件格式
此处需要设置文件的格式,由于本文的随机数序列是按照二进制字符串格式生成的,所以这里将输入1选择Binary格式。如果文件格式不一致,则可能会导致测试失败。
3.2.7 测试完成
设置完测试参数后可以获得一个开始测试提示,测试完成后可以获得一个测试完成的提示,如下图所示。
igamc: UNDERFLOW是数据存在下溢,如果文件格式设置的不匹配则会出现大量的该提示,少量的该提示可以忽略。
测试的随机数序列的长度可以根据当前的测试环境决定,测试序列数据量越大,测试所需的时间越长。
四、测试报告
当数据测试完成后,NIST随机数测试集工具包将生成测试报告文件,其中包含相关的中间值,例如测试统计数据和每个统计测试的P-value值。基于这些P-value值,可以得出关于随机数序列质量的结论。
每项测试的详细报告保存位置在sts-2.1.2\experiments\AlgorithmTesting\<测试集名称>,所有测试的结果摘要会汇总在sts-2.1.2\experiments\AlgorithmTesting\finalAnalysisReport.txt文件中。
对于每个统计测试,都会产生一组P-value值(对应于一组随机数序列)。对于固定的测试阈值,预计一定百分比的P-value值表示序列测试不通过。例如,如果将测试阈值设置为0.01(即α= 0.01),则预计大约1%的序列不满足测试要求。当P-value值≥α时,测试序列通过NIST随机数统计检验,否则测试序列不满足NIST随机数测试要求。
对于每个统计测试,相应地计算和分析通过的序列的比例。对于单项测试的测试结果,可以进入至相应测试的文件夹中查看。例如频率测试的结果,可以进入sts-2.1.2\experiments\AlgorithmTesting\BlockFrequency\stats.txt文件中查看。当P-value值大于等于0.01时,左侧会有SUCCESS提示。当P-value值小于0.01时,左侧会有FAILURE提示。
汇总的测试报告可以进入sts-2.1.2\experiments\AlgorithmTesting\finalAnalysisReport.txt文件中查看。
如果某项测试的P-value值偏低,在该测试项的P-value值右边会有*号的提示。
如果某测试项通过随机数检验的数据流比例偏低,在该测试项的PROPORTION右边会有*号的提示。
由于测试序列具有随机性,且不同的测试序列和测试参数将生成不同的测试报告,建议生成多组测试序列进行随机数检验。
五、附录
下图为使用GR5515芯片的TRNG模块生成随机数序列进行NIST SP 800-22随机数测试的汇总测试报告。
------------------------------------------------------------------------------
RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF PASSING SEQUENCES
------------------------------------------------------------------------------
generator is <GR5515_test.txt>
------------------------------------------------------------------------------
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 P-VALUE PROPORTION STATISTICAL TEST
------------------------------------------------------------------------------
4 2 2 1 1 0 4 2 2 2 0.637119 19/20 Frequency
1 2 1 2 3 2 3 2 3 1 0.964295 19/20 BlockFrequency
4 1 1 3 3 1 1 1 2 3 0.739918 19/20 CumulativeSums
4 1 2 0 2 4 3 0 0 4 0.162606 18/20 CumulativeSums
5 0 0 4 1 4 1 2 1 2 0.122325 19/20 Runs
4 2 2 5 1 2 1 1 0 2 0.350485 19/20 LongestRun
4 2 1 1 0 2 5 2 1 2 0.350485 20/20 Rank
4 1 2 2 1 3 2 1 3 1 0.834308 18/20 FFT
2 1 3 4 3 2 1 3 1 0 0.637119 19/20 NonOverlappingTemplate
3 1 4 0 5 2 1 1 0 3 0.162606 19/20 NonOverlappingTemplate
2 3 3 2 1 3 2 1 2 1 0.964295 19/20 NonOverlappingTemplate
2 2 1 0 4 1 1 4 1 4 0.350485 20/20 NonOverlappingTemplate
5 0 3 4 1 1 1 1 2 2 0.275709 19/20 NonOverlappingTemplate
1 4 0 5 5 1 0 1 2 1 0.048716 19/20 NonOverlappingTemplate
3 1 2 0 1 3 2 2 2 4 0.739918 18/20 NonOverlappingTemplate
2 3 2 1 2 2 2 1 2 3 0.991468 20/20 NonOverlappingTemplate
1 1 3 0 3 3 2 2 2 3 0.834308 19/20 NonOverlappingTemplate
3 2 2 1 3 1 3 0 2 3 0.834308 19/20 NonOverlappingTemplate
1 4 1 1 3 1 1 4 1 3 0.534146 19/20 NonOverlappingTemplate
5 1 1 2 1 1 1 1 4 3 0.350485 19/20 NonOverlappingTemplate
2 3 3 2 1 1 1 4 3 0 0.637119 19/20 NonOverlappingTemplate
2 1 1 4 2 0 3 1 3 3 0.637119 19/20 NonOverlappingTemplate
0 3 2 1 4 2 3 0 3 2 0.534146 20/20 NonOverlappingTemplate
1 3 1 0 4 4 1 1 2 3 0.437274 20/20 NonOverlappingTemplate
3 3 0 5 0 2 3 0 3 1 0.162606 18/20 NonOverlappingTemplate
3 1 1 1 2 1 1 4 4 2 0.637119 20/20 NonOverlappingTemplate
4 6 0 1 2 1 0 2 1 3 0.066882 20/20 NonOverlappingTemplate
1 0 2 3 4 2 1 5 2 0 0.213309 19/20 NonOverlappingTemplate
3 0 1 2 3 2 3 3 1 2 0.834308 18/20 NonOverlappingTemplate
1 2 1 4 1 4 2 1 2 2 0.739918 19/20 NonOverlappingTemplate
4 2 3 1 2 0 3 2 2 1 0.739918 19/20 NonOverlappingTemplate
1 1 1 3 3 4 2 1 1 3 0.739918 19/20 NonOverlappingTemplate
3 2 2 0 2 2 2 4 1 2 0.834308 18/20 NonOverlappingTemplate
1 0 2 2 1 4 1 2 1 6 0.122325 19/20 NonOverlappingTemplate
1 4 1 2 1 3 2 1 4 1 0.637119 20/20 NonOverlappingTemplate
2 5 0 3 2 1 0 2 0 5 0.066882 20/20 NonOverlappingTemplate
3 2 0 1 2 2 3 1 3 3 0.834308 19/20 NonOverlappingTemplate
3 4 2 0 0 0 2 3 2 4 0.275709 19/20 NonOverlappingTemplate
2 2 3 1 2 2 2 1 2 3 0.991468 20/20 NonOverlappingTemplate
2 1 2 2 2 4 2 1 3 1 0.911413 19/20 NonOverlappingTemplate
3 2 1 1 2 2 1 4 2 2 0.911413 19/20 NonOverlappingTemplate
3 2 1 2 0 1 2 3 4 2 0.739918 20/20 NonOverlappingTemplate
3 0 4 1 0 5 2 0 2 3 0.122325 18/20 NonOverlappingTemplate
3 5 1 4 1 1 3 2 0 0 0.162606 19/20 NonOverlappingTemplate
1 0 2 1 2 5 4 3 0 2 0.213309 20/20 NonOverlappingTemplate
2 1 4 3 1 2 2 2 0 3 0.739918 20/20 NonOverlappingTemplate
2 0 0 3 6 1 1 2 2 3 0.122325 19/20 NonOverlappingTemplate
0 3 0 2 3 2 2 4 2 2 0.637119 20/20 NonOverlappingTemplate
4 4 3 1 1 2 1 1 1 2 0.637119 19/20 NonOverlappingTemplate
3 3 1 1 2 4 2 0 4 0 0.350485 19/20 NonOverlappingTemplate
2 2 4 1 3 1 2 3 1 1 0.834308 20/20 NonOverlappingTemplate
2 7 2 2 2 1 1 1 1 1 0.090936 19/20 NonOverlappingTemplate
2 3 2 2 3 3 2 3 0 0 0.739918 19/20 NonOverlappingTemplate
4 2 1 3 2 0 2 1 2 3 0.739918 19/20 NonOverlappingTemplate
4 2 0 3 1 0 4 2 2 2 0.437274 19/20 NonOverlappingTemplate
3 1 2 4 2 2 1 2 2 1 0.911413 19/20 NonOverlappingTemplate
3 1 1 5 2 2 1 4 1 0 0.275709 20/20 NonOverlappingTemplate
5 3 2 2 1 1 1 2 2 1 0.637119 19/20 NonOverlappingTemplate
3 1 0 4 2 1 2 1 5 1 0.275709 20/20 NonOverlappingTemplate
5 1 0 3 3 3 0 0 2 3 0.162606 19/20 NonOverlappingTemplate
1 3 2 4 1 2 2 1 2 2 0.911413 19/20 NonOverlappingTemplate
2 0 2 0 4 2 0 3 4 3 0.275709 20/20 NonOverlappingTemplate
4 2 0 2 3 2 4 1 0 2 0.437274 18/20 NonOverlappingTemplate
5 2 2 3 1 2 0 0 5 0 0.066882 19/20 NonOverlappingTemplate
4 0 3 3 2 3 1 2 0 2 0.534146 20/20 NonOverlappingTemplate
2 2 1 1 2 3 2 2 4 1 0.911413 19/20 NonOverlappingTemplate
2 3 2 1 1 4 3 3 0 1 0.637119 19/20 NonOverlappingTemplate
2 1 2 3 2 0 4 1 3 2 0.739918 19/20 NonOverlappingTemplate
2 4 2 1 1 2 2 0 3 3 0.739918 18/20 NonOverlappingTemplate
3 2 2 0 0 3 3 1 1 5 0.275709 20/20 NonOverlappingTemplate
1 1 0 1 3 1 5 7 1 0 0.004301 19/20 NonOverlappingTemplate
1 4 2 2 2 3 3 1 1 1 0.834308 19/20 NonOverlappingTemplate
4 0 1 2 0 3 4 2 2 2 0.437274 19/20 NonOverlappingTemplate
1 2 1 3 3 1 4 1 3 1 0.739918 19/20 NonOverlappingTemplate
2 2 4 1 1 2 3 3 1 1 0.834308 18/20 NonOverlappingTemplate
3 3 3 2 1 0 3 1 3 1 0.739918 19/20 NonOverlappingTemplate
2 0 3 2 1 3 3 4 1 1 0.637119 20/20 NonOverlappingTemplate
3 2 1 1 1 2 1 4 5 0 0.275709 18/20 NonOverlappingTemplate
5 3 1 2 1 1 2 1 2 2 0.637119 19/20 NonOverlappingTemplate
3 3 2 1 5 1 3 0 1 1 0.350485 18/20 NonOverlappingTemplate
3 3 3 2 1 1 0 5 1 1 0.350485 20/20 NonOverlappingTemplate
5 1 2 3 1 3 1 3 0 1 0.350485 19/20 NonOverlappingTemplate
2 1 3 4 3 2 1 3 1 0 0.637119 19/20 NonOverlappingTemplate
2 4 4 1 1 3 2 0 1 2 0.534146 19/20 NonOverlappingTemplate
3 1 3 1 5 0 1 1 2 3 0.350485 19/20 NonOverlappingTemplate
4 1 0 1 2 4 2 3 2 1 0.534146 20/20 NonOverlappingTemplate
3 2 0 3 3 2 1 3 3 0 0.637119 19/20 NonOverlappingTemplate
4 3 4 4 0 3 0 0 2 0 0.090936 18/20 NonOverlappingTemplate
1 0 4 4 2 0 4 1 1 3 0.213309 19/20 NonOverlappingTemplate
1 2 2 2 3 2 0 3 3 2 0.911413 20/20 NonOverlappingTemplate
1 2 3 1 2 1 2 3 4 1 0.834308 20/20 NonOverlappingTemplate
4 2 3 3 2 2 1 0 2 1 0.739918 19/20 NonOverlappingTemplate
3 1 3 2 1 0 2 0 3 5 0.275709 19/20 NonOverlappingTemplate
3 2 4 3 2 1 3 1 0 1 0.637119 19/20 NonOverlappingTemplate
4 2 1 2 0 3 2 2 3 1 0.739918 19/20 NonOverlappingTemplate
2 4 2 0 0 1 4 2 2 3 0.437274 19/20 NonOverlappingTemplate
1 2 5 1 3 3 3 1 1 0 0.350485 19/20 NonOverlappingTemplate
1 2 3 2 1 4 2 2 1 2 0.911413 20/20 NonOverlappingTemplate
4 3 2 3 2 1 2 0 1 2 0.739918 19/20 NonOverlappingTemplate
4 2 3 4 1 4 1 0 1 0 0.213309 20/20 NonOverlappingTemplate
3 5 2 1 2 1 1 3 0 2 0.437274 19/20 NonOverlappingTemplate
1 2 1 5 0 4 1 3 1 2 0.275709 20/20 NonOverlappingTemplate
3 3 0 0 0 3 2 1 3 5 0.162606 19/20 NonOverlappingTemplate
3 1 2 4 0 3 3 0 4 0 0.213309 19/20 NonOverlappingTemplate
2 2 1 1 1 4 2 2 1 4 0.739918 19/20 NonOverlappingTemplate
3 0 3 0 2 1 1 6 2 2 0.122325 19/20 NonOverlappingTemplate
5 0 2 3 2 2 2 2 1 1 0.534146 19/20 NonOverlappingTemplate
2 4 3 5 0 2 1 2 1 0 0.213309 19/20 NonOverlappingTemplate
5 1 1 1 2 1 3 1 2 3 0.534146 19/20 NonOverlappingTemplate
3 1 2 4 1 2 4 1 0 2 0.534146 19/20 NonOverlappingTemplate
2 1 3 4 1 3 2 1 3 0 0.637119 20/20 NonOverlappingTemplate
2 1 2 4 3 4 0 1 3 0 0.350485 19/20 NonOverlappingTemplate
3 1 2 1 3 3 1 1 3 2 0.911413 19/20 NonOverlappingTemplate
5 4 2 1 2 0 3 1 2 0 0.213309 18/20 NonOverlappingTemplate
1 4 2 1 1 2 3 2 1 3 0.834308 19/20 NonOverlappingTemplate
2 4 2 1 2 3 2 1 2 1 0.911413 20/20 NonOverlappingTemplate
1 2 5 3 0 3 1 1 1 3 0.350485 19/20 NonOverlappingTemplate
2 3 1 1 2 0 4 2 2 3 0.739918 19/20 NonOverlappingTemplate
1 4 2 2 1 2 2 1 3 2 0.911413 19/20 NonOverlappingTemplate
1 3 3 0 2 1 4 3 0 3 0.437274 20/20 NonOverlappingTemplate
4 2 3 2 0 2 0 3 3 1 0.534146 19/20 NonOverlappingTemplate
6 2 3 0 2 1 2 0 3 1 0.122325 20/20 NonOverlappingTemplate
3 1 4 2 2 0 2 1 3 2 0.739918 18/20 NonOverlappingTemplate
3 3 2 0 3 0 1 5 1 2 0.275709 20/20 NonOverlappingTemplate
3 1 1 1 3 2 4 2 3 0 0.637119 19/20 NonOverlappingTemplate
3 3 2 2 0 4 1 0 2 3 0.534146 19/20 NonOverlappingTemplate
2 3 1 2 1 0 2 3 2 4 0.739918 19/20 NonOverlappingTemplate
2 3 1 3 1 3 2 1 2 2 0.964295 19/20 NonOverlappingTemplate
3 1 2 4 2 1 3 0 1 3 0.637119 19/20 NonOverlappingTemplate
3 3 1 2 2 2 0 2 2 3 0.911413 20/20 NonOverlappingTemplate
3 1 2 4 2 1 0 4 1 2 0.534146 19/20 NonOverlappingTemplate
3 3 1 2 1 3 2 2 2 1 0.964295 18/20 NonOverlappingTemplate
5 0 3 2 3 2 0 2 2 1 0.350485 19/20 NonOverlappingTemplate
3 3 0 1 1 3 1 4 0 4 0.275709 19/20 NonOverlappingTemplate
4 4 3 1 1 2 0 3 1 1 0.437274 19/20 NonOverlappingTemplate
2 3 2 1 0 2 1 3 3 3 0.834308 19/20 NonOverlappingTemplate
2 4 3 1 1 3 2 1 2 1 0.834308 19/20 NonOverlappingTemplate
3 1 6 0 0 1 3 2 3 1 0.090936 18/20 NonOverlappingTemplate
2 2 3 1 3 3 1 1 3 1 0.911413 18/20 NonOverlappingTemplate
5 1 1 3 1 1 2 1 3 2 0.534146 20/20 NonOverlappingTemplate
2 2 1 2 2 1 1 3 3 3 0.964295 19/20 NonOverlappingTemplate
2 3 0 1 1 3 3 1 2 4 0.637119 19/20 NonOverlappingTemplate
2 1 2 3 1 1 2 3 3 2 0.964295 19/20 NonOverlappingTemplate
4 2 1 4 2 2 1 1 2 1 0.739918 19/20 NonOverlappingTemplate
1 1 2 6 3 1 2 1 1 2 0.275709 20/20 NonOverlappingTemplate
4 3 1 2 3 2 1 1 0 3 0.637119 19/20 NonOverlappingTemplate
3 1 3 0 4 2 0 0 3 4 0.213309 19/20 NonOverlappingTemplate
4 3 4 1 3 1 1 2 1 0 0.437274 19/20 NonOverlappingTemplate
3 2 0 5 3 1 1 3 1 1 0.350485 19/20 NonOverlappingTemplate
2 2 2 3 2 0 2 2 4 1 0.834308 19/20 NonOverlappingTemplate
2 0 0 3 1 4 3 3 2 2 0.534146 18/20 NonOverlappingTemplate
2 1 1 1 2 4 3 3 3 0 0.637119 20/20 NonOverlappingTemplate
2 1 0 1 3 3 2 2 4 2 0.739918 20/20 NonOverlappingTemplate
4 2 1 2 1 2 2 1 1 4 0.739918 18/20 NonOverlappingTemplate
3 3 2 0 1 1 1 4 3 2 0.637119 19/20 NonOverlappingTemplate
5 1 2 3 1 3 1 3 0 1 0.350485 19/20 NonOverlappingTemplate
1 1 1 1 2 7 1 2 3 1 0.066882 20/20 OverlappingTemplate
2 3 1 3 3 1 2 2 3 0 0.834308 19/20 Universal
3 4 1 0 2 1 5 1 3 0 0.162606 19/20 ApproximateEntropy
2 2 0 0 1 0 0 0 2 3 0.213309 10/10 RandomExcursions
0 0 2 3 1 0 1 1 2 0 0.350485 10/10 RandomExcursions
2 0 3 1 0 3 0 0 0 1 0.122325 10/10 RandomExcursions
0 1 0 2 2 1 2 0 2 0 0.534146 10/10 RandomExcursions
1 1 1 1 0 1 1 0 3 1 0.739918 10/10 RandomExcursions
1 1 0 0 2 1 2 1 1 1 0.911413 10/10 RandomExcursions
0 4 1 1 0 0 2 1 1 0 0.122325 10/10 RandomExcursions
1 0 3 2 1 0 2 1 0 0 0.350485 10/10 RandomExcursions
0 0 1 1 2 0 2 2 1 1 0.739918 10/10 RandomExcursionsVariant
0 1 2 0 0 0 2 1 2 2 0.534146 10/10 RandomExcursionsVariant
0 2 1 0 0 0 1 2 2 2 0.534146 10/10 RandomExcursionsVariant
0 1 1 1 1 1 0 0 2 3 0.534146 10/10 RandomExcursionsVariant
0 1 3 1 0 0 1 0 1 3 0.213309 10/10 RandomExcursionsVariant
1 2 0 1 1 0 2 0 2 1 0.739918 10/10 RandomExcursionsVariant
2 1 0 2 0 0 2 1 1 1 0.739918 10/10 RandomExcursionsVariant
1 1 1 0 1 2 1 0 2 1 0.911413 10/10 RandomExcursionsVariant
1 1 0 0 1 2 0 2 1 2 0.739918 10/10 RandomExcursionsVariant
0 1 1 1 0 0 2 2 1 2 0.739918 10/10 RandomExcursionsVariant
1 0 0 0 2 1 1 4 1 0 0.122325 10/10 RandomExcursionsVariant
0 1 1 3 0 0 1 0 2 2 0.350485 10/10 RandomExcursionsVariant
0 1 1 2 2 1 1 0 1 1 0.911413 10/10 RandomExcursionsVariant
0 0 2 2 2 1 0 0 1 2 0.534146 10/10 RandomExcursionsVariant
0 3 1 1 0 1 1 1 0 2 0.534146 10/10 RandomExcursionsVariant
2 1 2 0 2 1 1 0 0 1 0.739918 10/10 RandomExcursionsVariant
1 2 2 2 1 1 1 0 0 0 0.739918 10/10 RandomExcursionsVariant
0 4 1 1 4 0 0 0 0 0 0.004301 10/10 RandomExcursionsVariant
2 2 2 2 1 3 4 0 3 1 0.739918 19/20 Serial
2 3 3 0 2 2 3 1 2 2 0.911413 19/20 Serial
2 1 3 3 2 0 2 2 1 4 0.739918 19/20 LinearComplexity
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The minimum pass rate for each statistical test with the exception of therandom excursion (variant) test is approximately = 18 for asample size = 20 binary sequences.
The minimum pass rate for the random excursion (variant) testis approximately = 8 for a sample size = 10 binary sequences.
For further guidelines construct a probability table using the MAPLE programprovided in the addendum section of the documentation.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- |
- +1 赞 0
- 收藏
- 评论 0
本文由咪猫转载自汇顶科技,原文标题为:NIST SP 800-22随机数测试指南,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】汇顶科技单模低功耗蓝牙系统级芯片GR551x_OpenHarmony开发——环境搭建篇
GR551x是汇顶科技推出的支持Bluetooth 5.1的单模低功耗蓝牙系统级(SoC)芯片,广泛应用于物联网(IoT)和智能穿戴设备领域。本文主要介绍如何在Ubuntu系统上一步一步搭建OpenHarmony软件开发环境,编译出可执行文件。
设计经验 发布时间 : 2022-08-10
【经验】汇顶科技蓝牙SoC GR551X芯片内部PWM的功能使用说明
汇顶蓝牙SoC GR551X芯片内部有两个PWM模块,每个模块有三个独立的PWM输出:PWMA、PWMB、PWMC,在实际应用中可实现6路PWM输出,输出频率有两种,每三个PWM的频率是相同的。本文介绍GR551X芯片内部PWM的功能使用。
设计经验 发布时间 : 2021-07-03
【经验】为实现GR551x晶体校准、固件下载、筛选不良片等功能,汇顶科技产测方案为硬件+PC端上位机提供详细指南
汇顶科技GR551x产测方案为硬件+PC端上位机整体解决方案,用以实现GR551x的晶体校准、固件下载、RSSI测试、筛选不良片等功能。怎么查看芯片在工厂时的产测结果: GRPLT软件的Log文件夹中保存待测板的产测log。
设计经验 发布时间 : 2022-08-02
汇顶科技携手涂鸦智能打造基于GR551x系列低功耗蓝牙SoC的Smart Tag防丢器解决方案,可支持苹果生态
汇顶科技携手全球化IoT开发平台服务商涂鸦智能基于GR551x系列低功耗蓝牙SoC,共同打造了支持苹果生态的Smart Tag防丢器解决方案。支持多连接特性,只需简单配置即可在多个苹果设备间实现寻物功能。
原厂动态 发布时间 : 2022-08-24
汇顶科技GR551x系列低功耗蓝牙SoC通过Apple Find My network accessory合规性验证
近日,汇顶科技GR551x系列低功耗蓝牙SoC成功通过Apple授权第三方测试机构的各项合规性验证,标志着该系列SoC已全面兼容Find My network accessory的最新规格和功能要求,将为Apple Find My生态终端产品引入性能、成本和开发效率三者兼顾的低功耗蓝牙参考应用方案。
原厂动态 发布时间 : 2023-07-26
【应用】国产低功耗蓝牙5.1SoC GR551x系列用于血氧仪,内置两个PWM模块,Flash高达1M
在血氧仪的应用中,汇顶科技GR551x系列作为低功耗蓝牙5.1SoC,现有产品有双模蓝牙音频SoC芯片和超低功耗(BLE)蓝牙SoC芯片,除了考虑到蓝牙SoC的应用范围,选择低功耗蓝牙SoC还需考虑工作电流和睡眠电流以及应用的环境温度。
应用方案 发布时间 : 2023-04-18
【经验】汇顶科技低能耗蓝牙SoC芯片GR551x系列在SDK1.7.0中如何使用CMSIS-DSP库
低能耗蓝牙SoC芯片GR551x系列,SDK1.7.0新增了对CMSIS-DSP的支持,本文汇顶科技介绍在SDK1.7.0中使用此DSP库的方法。本文主要分为以下三个部分,一是CMSIS-DSP简介;二是使用CMSIS-DSP的步骤;最后则是正弦数据生成实例。
设计经验 发布时间 : 2022-07-21
【产品】1MB Flash,2M PHY,强大的驱屏能力,汇顶蓝牙SoC解决方案 | 视频
在2021年4年27日主控器件及存储专场|世强硬创新产品研讨会中,汇顶科技市场谢经理给大家带来汇顶超低功耗蓝牙5.1 SoC GR551x,Flash高达1M,RAM 256K,以及在智能穿戴,电子标签等市场的应用介绍。
新产品 发布时间 : 2021-04-29
【产品】支持蓝牙5.1的汇顶科技单模低功耗蓝牙系统级芯片GR551x系列,广泛用于物联网和智能穿戴设备
GR551x系列是汇顶科技推出的支持Bluetooth 5.1的单模低功耗蓝牙系统级芯片(SoC芯片),可以配置为广播者、观察者、外围设备和中央设备,并支持上述各种角色的组合应用,可广泛应用于物联网(IoT)和智能穿戴设备领域。
新产品 发布时间 : 2021-04-13
电子商城
现货市场
服务
根据用户的蓝牙模块,使用Bluetooth 蓝牙测试装置MT8852B,测试蓝牙1.0至5.1,包括传输速率、功率、频率、调制和接收机灵敏度,生成测试报告。支持到场/视频直播测试,资深专家全程指导。
实验室地址: 深圳 提交需求>
提供全面表征产品器件耗电特征及功耗波形、快速瞬态效应、电源优化、表征和仿真测试服务,使用直流电源分析仪测量精度达50µV,8nA,波形发生器带宽100kHz,输出功率300W,示波器200kHz,512 kpts
实验室地址: 深圳/苏州 提交需求>
登录 | 立即注册
提交评论