概述
概述
检测标准
- 我国随机检测规范GM/T 0005-2012《随机性检测规范》,现已经升级为国家标准GB/T 32915-2016 信息安全技术 二元序列随机性检测方法。
- NIST随机性检测文档NIST SP800-22r1a, A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications。
1 检测项对比
NIST和国密随机性检测项目的对比如下:
- NIST有15个检测项,国密有15个检测项。
- 两者有11个相同的检测项:单比特频数检测、块内频数检测、游程总数检测、块内最大1游程检测、矩阵秩检测、离散傅里叶变换检测、Maurer通用统计检测、线性复杂度检测、重叠子序列检测、近似熵检测、累加和检测。
- NIST有4个专有检测项:随机游动检测、随机游动变式检测、非覆盖模板匹配检测、覆盖模板匹配检测。
- 国密有4个专有检测项:扑克检测、游程分布检测、二元推导检测、自相关检测。
NIST测试项 | 国密测试项GM |
单比特频数检测 Frequency(Monobit) Test | 单比特频数检测 Monobit Frequency Test |
块内频数检测 Frequency Test within a block | 块内频数检测 Frequency Test within a block |
游程检测 Runs Test | 游程总数检测 Runs Test |
块内“1”的最大游程检测 Test for the longest Run of Ones in a block | 块内最大1游程检测 Test for the longest Run of Ones in a block |
二元矩阵秩检测 Binary Matrix Rank Test | 矩阵秩检测 Binary Matrix Rank Test |
离散傅里叶变换检测 Discrete Fourier Transform (Spectral) Test | 离散傅里叶变换检测 Discrete Fourier Transform Test |
Maurer通用统计检测 Maurer's "Universal Statistical" Test | Maurer通用统计检测 Maurer's "Universal Statistical" Test |
线性复杂度检测 Linear Complexity Test | 线性复杂度检测 Linear Complexity Test |
序列检测 Serial Test | 重叠子序列检测 Serial Test |
近似熵检测 Approximate Entropy Test | 近似熵检测 Approximate Entropy Test |
累积和检测 Cumulative Sums (Cusum) Test | 累加和检测 Cumulative Test |
随机游动检测 Random Excursion Test | —— |
随机游动变式检测 Random Excursion Variant Test | —— |
非覆盖模板匹配检测 Non-overlapping Template Matching Test | —— |
覆盖模板匹配检测 Overlapping Template Matching Test | —— |
—— | 扑克检测 poker test |
—— | 游程分布检测 runs distribution test |
—— | 二元推导检测 binary derivative test |
—— | 自相关检测 Autocorrelation Test |
2 检测参数对比
参数说明:
- n:样本序列的比特长度。国密规定取1000000;NIST未定义,但倾向于取1000000。
- a:显著性水平。国密规定为0.01;NIST未定义,建议为0.001~0.01。
检测项 | NIST参数建议 | STS参数取值 | 国密参数取值 |
单比特频数检测 | n>100 | 自定义n | n=1000000 |
块内频数检测 | n>100, 块大小M>20,M>0.1n 块数N=floor(n/M)<100 | 块大小M=128 可自行设定 | 块大小M=100 |
游程检测 | n>100 | 自定义n | n=1000000 |
块内最大1游程检测 | 块大小M,由n定: 当128<=n<6272时,取M=8; 当6272<=n<750000时,取M=128 当750000<=n时,取M=10000 | 根据n值设定M,具体设定同左 | 块大小M =10000 |
二元矩阵秩检测 | n>32MQ,其中M和Q矩阵的行数和列数 | M=Q=32 | M=Q=32 |
离散傅里叶变换检测 | n>1000 | 自定义n | n=1000000 |
Maurer通用统计检测 | n>=(Q+K)L 6<=L<=16 Q=10*2L K=floor(n/L)-Q 表后的图有详细设定 | 按表后的图,根据n值设定L和Q | n=1000000 L=7 Q=1280 |
线性复杂度检测 | n>=1000000 块长M:500<M<5000 块数N:N>200 | 块长M=500 可自行设定 | 块长M=500 |
序列检测 | m=16 可自行设定 | m=2,5 | |
近似熵检测 | m=10 可自行设定 | m=2,5 | |
累积和检测 | n>100 | 自定义n | n=1000000 |
随机游动检测 | n>=1000000 | 自定义n | N/A |
随机游动变式检测 | n>=1000000 | 自定义n | N/A |
非覆盖模板匹配检测 | 模板长度可为2-10,但通常取9,10(更有意义) 块数N<=100, 块大小M>0.01n | 模板长度=9 可自行设定 | N/A |
覆盖模板匹配检测 | n>1000000 建议m=9,10 n>=MN. N •(min πi) > 5. λ= (M-m+1)/2m ≈2 m ≈log2 M | m=9 可自行设定 | N/A |
扑克检测 | N/A | N/A | 子序列长度m=4,8 |
游程分布检测 | N/A | N/A | n=1000000,k=15 |
二元推导检测 | N/A | N/A | k=3,7 |
自相关检测 | N/A | N/A | d=1,2,8,16 |
3 检测通过准则对比
- NIST:两个准则。
- (1)每个检测项计算出来的P值不小于显著性水平a为通过;通过的样本总量有上下界;
- (2)P的统计一致性需满足要求。
- 国密:一个准则。(1)每个检测项计算出来的P值不小于显著性水平a为通过;通过的样本总量只有下界,没有上界。
(1)每个检测项计算出来的P值不小于显著性水平a
记s为样本个数
NIST | 国密 | |
显著性水平 | 建议为0.001~0.01 | 固定为0.01 |
通过率阈值 | 上下界 当显著性水平为0.01,样本个数s为1000时,上式计算出的上下界为(0.9805607,0.9994392)。 | 只有下界 当显著性水平为0.01,样本个数s为1000时,上式计算出的下界为0.9805607。 |
(2)P的统计一致性需满足要求(仅NIST)
检测步骤:
步骤1:把[0,1]区间等份成10段,统计各个被检验序列的P值落入各区间的数目,再把统计结果用直方图表述出来。
步骤2:P值分布的一致均匀性可以通过检验来验证,并得到对应这个检验的所有被检验序列的P值的P值.这个P值表明P值的经验分布与一致均匀分布的符合程度(Goodness-of-Fit Distributional Test)。计算统计量:
,
其中是落入区间的P值数目,s是样本序列数目。
步骤3:计算,
步骤4:如果这个,就说明被检验序列的P值一致均匀分布。
最后
以上就是强健月饼为你收集整理的随机性检测标准对比——国密GM/T 0005 vs NIST SP800-22r1a概述1 检测项对比2 检测参数对比3 检测通过准则对比的全部内容,希望文章能够帮你解决随机性检测标准对比——国密GM/T 0005 vs NIST SP800-22r1a概述1 检测项对比2 检测参数对比3 检测通过准则对比所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复