首页 购物车 询价
www.GB-GBT.com

[PDF] GM/T 0005-2021 - 自动发货. 英文版

标准搜索结果: 'GM/T 0005-2021'
标准号码内文价格美元第2步(购买)交付天数标准名称状态
GM/T 0005-2021 英文版 485 GM/T 0005-2021 3分钟内自动发货[PDF] 随机性检测规范 有效

基本信息
标准编号 GM/T 0005-2021 (GM/T0005-2021)
中文名称 随机性检测规范
英文名称 Randomness test specification
行业 Chinese Industry Standard (推荐)
中标分类 L80
国际标准分类 35.040
字数估计 30,391
发布日期 2021-10-18
实施日期 2022-05-01

GM/T 0005-2021 Randomness test specification ICS 35.030 CCSL80 中华人民共和国密码行业标准 代替GM/T 0005-2012 随 机 性 检 测 规 范 2021-10-18发布 2022-05-01实施 国家密码管理局 发 布 目次 前言 Ⅰ 1 范围 1 2 规范性引用文件 1 3 术语和定义 1 4 符号 2 5 随机性检测方法 3 5.1 单比特频数检测方法 3 5.2 块内频数检测方法 3 5.3 扑克检测方法 4 5.4 重叠子序列检测方法 4 5.5 游程总数检测方法 5 5.6 游程分布检测方法 6 5.7 块内最大游程检测方法 6 5.8 二元推导检测方法 7 5.9 自相关检测方法 8 5.10 矩阵秩检测方法 8 5.11 累加和检测方法 9 5.12 近似熵检测方法 9 5.13 线性复杂度检测方法 10 5.14 Maurer通用统计检测方法 11 5.15 离散傅立叶检测方法 12 6 随机性检测判定 12 6.1 概述 12 6.2 样本通过率判定 13 6.3 样本分布均匀性判定 13 6.4 随机性检测结果判定 13 附录A(规范性) 样本长度及检测设置 14 附录B(资料性) 随机性检测原理 16 附录C(资料性) 随机性检测结果示例 23 随 机 性 检 测 规 范 1 范围 本文件规定了适用于二元序列的随机性检测指标和检测方法。 2 规范性引用文件 本文件没有规范性引用文件。 3 术语和定义 下列术语和定义适用于本文件。 3.1 二元序列 binarysequence 由“0”和“1”组成的比特串。 注:如无特别说明,本文件所指的序列均为二元序列。 3.2 随机性假设 randomnesshypothesis 对二元序列做随机性检测时,首先假设该序列是随机的,这个假设称为原假设或零假设,记为H0。 与原假设相反的假设,即这个序列是不随机的,称为备择假设,记为Hα。 3.3 随机性检测 randomnesstest 用于二元序列检测的一个函数或过程,可以通过它来判断是否接受随机性原假设。 3.4 显著性水平 significancelevel 随机性检测中错误地判断随机序列为非随机序列的概率。 3.5 样本 sample 用于随机性检测的二元序列。 3.6 样本集 samplegroup 多个样本的集合。 3.7 样本长度 samplelength 样本的比特个数。 3.8 样本数量 samplesize 样本集中的样本个数。 ∇2Ψ2m:重叠子序列检测中的第二个统计值。 5 随机性检测方法 5.1 单比特频数检测方法 5.1.1 概述 单比特频数检测是最基本的检测,用来检测一个二元序列中0和1的个数是否相近。随机序列应 具有较好的0、1平衡性。 5.1.2 检测步骤 单比特频数检测步骤如下。 第一步:该检测将待检序列ε中的0和1分别转换成-1和1,Xi=2εi-1(1≤i≤n)。 第二步:累加求和计算得到Sn=∑ i=1 Xi。 第三步:计算统计值V= Sn 第四步:计算P_value=erfc 2 。 第五步:计算Q_value= 2erfc 2 。 检测设置按附录A要求,检测原理见附录B的B.1。 5.1.3 结果判定 将5.1.2中计算得出的P_value结果与α进行比较,如果P_value≥α,则认为待检序列通过单比 特频数检测,否则未通过单比特频数检测。 5.2 块内频数检测方法 5.2.1 概述 块内频数检测用来检测待检序列的m 位子序列中1的个数是否接近 。对随机序列来说,其任意 长度的m 位子序列中1的个数都应该接近 5.2.2 检测步骤 块内频数检测步骤如下。 第一步:将待检序列ε分成N= 个长度为m 的非重叠子序列,将多余的比特舍弃。 第二步:计算每个子序列中1所占的比例πi= j=1 ε(i-1)m+j ,1≤i≤N。 第三步:计算统计量V=4m∑ i=1 πi- 第四步:计算P_value=igamc ,V 2 。 第五步:计算Q_value=P_value。 检测设置按附录A要求,检测原理见B.2。 5.2.3 结果判定 将5.2.2中计算得出的P_value结果与α进行比较,如果P_value≥α,则认为待检序列通过块内 频数检测,否则未通过块内频数检测。 5.3 扑克检测方法 5.3.1 概述 扑克检测用来检测长度为m 的2m类子序列的个数是否接近。对于随机的序列,2m类子序列的个 数应该接近。 5.3.2 检测步骤 扑克检测步骤如下。 第一步:将待检序列ε划分成N= 个长度为m 的非重叠子序列,将多余的比特舍弃。统计第i 类子序列模式出现的频数,用ni(1≤i≤2m)表示。 第二步:计算统计值V= 2m N∑ 2m i=1 n2i-N。 第三步:计算P_value=igamc 2m-1 ,V 2 。 第四步:计算Q_value=P_value。 检测设置按附录A要求,检测原理见B.3。 5.3.3 结果判定 将5.3.2中计算得出的P_value结果与α进行比较,如果P_value≥α,则认为待检序列通过扑克 检测,否则未通过扑克检测。 5.4 重叠子序列检测方法 5.4.1 概述 对任意的正整数m,长度为m 的二元序列有2m类。重叠子序列检测将长度为n的待检序列划分 成n个可叠加的m 位子序列。对随机二元序列来说,由于其具有均匀性,故m 位可叠加子序列的每一 类模式出现的概率应该接近。 5.4.2 检测步骤 重叠子序列检测步骤如下。 第一步:由待检序列ε构造一个新的序列ε',构造方法如下:将序列ε最开始的m-1位数据添加到 序列ε的结尾即可得到新序列ε',新序列ε'的长度为n'=n+m-1。 第二步:计算ε'中每一类m 位子序列模式(共有2m类)出现的频数,记m 位子序列模式i1i2im的 -1.5< Ti≤-0.5,v2加1; -0.5< Ti≤0.5,v3加1; 0.5< Ti≤1.5,v4加1; 1.5< Ti≤2.5,v5加1; Ti >2.5,v6加1。 第六步:计算统计值V=∑ i=0 (vi-Nπi)2 Nπi 。其中,πi值为: π0=0.010417,π1=0.031250,π2=0.125,π3=0.500,π4=0.250,π5=0.062500,π6=0.020833。 第七步:计算P_value=igamc3, 2 。 第八步:计算Q_value=P_value。 检测设置按附录A要求,检测原理见B.13。 5.13.3 结果判定 将5.13.2中计算得出的P_value结果与α进行比较。如果P_value≥α,则认为待检序列通过线 性复杂度检测,否则未通过线性复杂度检测。 5.14 Maurer通用统计检测方法 5.14.1 概述 Maurer通用统计检测用于检测待检序列能否被无损压缩。因为随机序列是不能被显著压缩,因此 如果待检序列能被显著地压缩,则认为该序列不随机。 5.14.2 检测步骤 Maurer通用统计检测步骤如下: 第一步:将待检序列ε分成两部分:初始序列和测试序列。初始序列包括Q 个L 位的非重叠的子 序列,测试序列包括K 个L 位的非重叠的子序列,K= L -Q ,末尾不够组成一个完整L 位子序列的 多余位舍弃不用。 第二步:针对初始序列,创建一个表,它以L 位值作为表中的索引值,Tj(0≤j< 2L)表示表中第j 个元素的值,计算Tj=i(1≤i≤Q),其中j是初始序列中第i个L 位子序列的十进制表示。 第三步:计算sum=∑ Q+K i=Q+1 log2(i-Tj),其中,j是待检序列中第i个L 位子序列的十进制表示,Tj 表示当前表中第j个元素的值,在遍历第i个(Q+1≤i≤Q+K)L 位子序列后,应更新Tj=i。 第四步:计算V= sum K -E (L) ,E(L)和σ的计算见B.14。 第五步:计算P_value=erfc 2 。 第六步:计算Q_value= 2erfc 2 。 检测设置按附录A要求,检测原理见B.14。 5.14.3 结果判定 将5.14.2中计算得出的P_value结果与α进行比较。如果P_value≥α,则认为待检序列通过 Maurer通用统计检测,否则未通过 Maurer通用统计检测。 5.15 离散傅立叶检测方法 5.15.1 概述 离散傅立叶检测使用频谱的方法来检测序列的随机性。对待检序列进行傅立叶变换后可以得到尖 峰高度,根据随机性的假设,这个尖峰高度不能超过某个门限值(与序列长度n有关),否则将其归入不 正常的范围;如果不正常的尖峰个数超过了允许值,即可认为待检序列是不随机的。 5.15.2 检测步骤 离散傅立叶检测步骤如下: 第一步:将待检序列ε中的0和1分别转换成-1和1,得到新序列X1,X2,,Xn,其中Xi= 2εi-1。 第二步:对新序列进行傅立叶变换,得到一系列的复数f0,f1,,fn-1。 第三步:对每一个fj,计算其系数modj=modulus(fj)= fj,这里j∈ 0,n/2-1 。 第四步:计算门限值T= 2.995732274*n。 第五步:计算N0=0.95* 第六步:计算系数modj小于门限值T 的复数个数,记作N1。 第七步:计算统计值V= N1-N0 0.95*0.05* 3.8 第八步:计算P_value=erfc 2 。 第九步:计算Q_value= 2erfc 2 。 检测设置按附录A要求,检测原理见B.15。 5.15.3 结果判定 将5.15.2中计算得出的P_value结果与α进行比较。如果P_value≥α,则认为待检序列通过离 散傅立叶检测,否则未通过离散傅立叶检测。 6 随机性检测判定 6.1 概述 应采用第5章规定的15种随机性检测方法和附录A规定的检测设置对二元序列样本集进行随机 性检测。一种随机性检测方法对应至少一个随机性检测项目,其中如某一项随机性检测方法采用不同 检测参数设置(详见附录A),或具有不同检测模式(如块内最大游程检测方法、累加和检测方法),或具 有多个统计值(如重叠子序列检测方法),应作为单独的随机性检测项目进行检测,并分别对二元序列样 本集的每个检测项目的样本通过率、分布均匀性进行合格判定。比如累加和检测方法包括前向累加和、 后向累加和两种模式,前向累加和、后向累加和应作为2个独立的检测项目进行检测,并分别对二元序 列样本集中前向累加和、后向累加和的样本通过率、分布均匀性进行合格判定。 本文件确定二元序列样本集中的样本数量为1000。 6.2 样本通过率判定 对于每一个随机性检测项目,统计二元序列样本集中P_value值大于或等于α的样本个数,本文 件确定的用于样本通过率检测的显著性水平α=0.01。 记样本数量为s,当通过某检测项目的样本个数大于或等于s1-α-3 α(1-α) s 时,认为该样本 集通过该项检测,否则未通过此项检测。例如,样本数量为1000个,则通过该检测项目的样本个数应 大于或等于981。 6.3 样......