随机性检测方法及装置与流程

文档序号:13445861阅读:1010来源:国知局
随机性检测方法及装置与流程

本申请涉及检测技术,具体涉及一种随机性检测方法及装置。本申请同时涉及另一种随机性检测方法及装置。



背景技术:

随机序列在扩频通信、编码技术等许多工程领域都有着广泛的应用,特别是在密码技术中占有重要地位,例如:数字签名、身份认证、数据加解密等都用到随机序列发生器生成的序列,序列的随机性是安全指标的一个重要衡量标准,因此对于序列的随机性检测方法也日益得到人们的重视。随机序列发生器是指用于生成具有一定随机特性的序列的数据源,可以是基于硬件的伪随机序列发生器,也可以是随机函数或者密码算法等软件。

序列的随机性检测方法主要是应用概率统计的方法,对随机序列发生器产生的序列进行随机性检测,以判别序列是否满足随机性要求,并可以参考随机性检测结果对随机序列发生器生成序列的质量(简称随机质量)进行评估。

nist(美国国家标准与技术研究院)检测方法是目前较为常用的随机性检测方法。该方法提出了多种检测项目,包括:频率、累加和、游程、最长游程、矩阵秩、光谱的离散傅里叶变换、随机游动、随机游动状态频数、块内频数、重叠模块匹配、非重叠模块匹配、近似熵、线性复杂度、序列、通用等。nist检测方法在预设的显著水平下(例如a=0.01),针对样本集中的每个样本(每个样本都是随机序列发生器生成的序列,例如二进制序列),分别按照上述各检测项目进行随机性检测,并得到针对每个检测项目的p值(表征样本与随机序列的差异的显著程度),随后,利用所有样本针对各检测项目计算得到的p值,计算各检测项目的通过率pr,当计算得到的各通过率均大于或者等于预设置信区间的下限时,则认为样本集中的所有样本通过随机性检测。

nist检测方法针对各检测项目进行独立测试与评估,不可避免会出现以下情况:从各检测项目的角度出发认为样本集中的所有样本通过随机性检测(每个检测项目的通过率都大于或者等于置信区间的下限),但是从单一样本的角度看,却可能存在较大比例的样本并未通过随机性测试(不满足各检测项目的p值都大于显著水平的要求),因此nist检测方法在某种程度上降低了样本集通过随机性检测的门槛,导致对随机序列发生器的随机质量所做出的评估有可能是不准确的,并因此带来安全隐患。



技术实现要素:

本申请实施例提供一种随机性检测方法和装置,以解决现有的随机性检测方法仅从各检测项目的角度判断样本集是否通过随机性检测、可能导致对随机序列发生器的随机质量所作评估不准确的问题。本申请实施例还提供另一种随机性检测方法和装置。

本申请提供一种随机性检测方法,包括:

获取样本集中每个样本针对各预设检测项目进行随机性检测的p值;其中,所述样本集中的每个样本为随机序列发生器生成的序列,p值为表征样本与随机序列的差异的显著程度的数值;

获取所有样本针对各预设检测项目的通过率;

当获取的各通过率的最小值大于或等于预设第一置信区间的下限时,执行下述操作:

统计针对各预设检测项目的p值均大于或者等于预设显著水平的样本数目,作为样本总体通过数;

当所述样本总体通过数大于或者等于预设第二置信区间的下限时,视为所有样本通过随机性检测;否则未通过。

可选的,在获取样本集中每个样本针对各预设检测项目进行随机性检测的p值的过程中,采用预设方式记录至少有一项检测项目的p值小于预设显著水平的样本标识;

所述统计针对各预设检测项目的p值均大于或者等于预设显著水平的样本数目,作为样本总体通过数,包括:根据样本总数、以及已记录的样本标识,计算所述样本总体通过数。

可选的,所述采用预设方式记录至少有一项检测项目的p值小于预设显著水平的样本标识,包括:针对每次获取的p值判断所述p值是否小于预设显著水平,若是,记录所述p值对应的样本标识;

所述根据样本总数、以及已记录的样本标识,计算所述样本总体通过数,包括:统计已记录的样本标识中所包含的不同样本标识的数目,并将所述样本总数与所述不同样本标识的数目的差值作为所述样本总体通过数。

可选的,所述采用预设方式记录至少有一项检测项目的p值小于预设显著水平的样本标识,包括:针对每次获取的p值,判断所述p值是否小于预设显著水平、且尚未记录所述p值对应的样本标识,若是,记录所述p值对应的样本标识;

所述根据样本总数、以及已记录的样本标识,计算所述样本总体通过数,包括:将所述样本总数与已记录样本标识的数目的差值作为所述样本总体通过数。

可选的,所述预设检测项目包括以下所列的任意两个或者两个以上项目:频率、累加和、游程、最长游程、矩阵秩、光谱的离散傅里叶变换、随机游动、随机游动状态频数、块内频数、重叠模块匹配、非重叠模块匹配、近似熵、线性复杂度、序列、通用。

可选的,所述获取样本集中每个样本针对各预设检测项目进行随机性测试的p值,包括:

针对所述样本集中的每个样本,执行以下操作:针对每个预设检测项目,在根据当前样本计算相应检测统计量的基础上计算p值。

可选的,所述获取所有样本针对各预设检测项目的通过率,包括:

针对每个预设检测项目,执行下述操作:

将针对当前检测项目的p值大于或者等于预设显著水平的样本数目与样本总数的比值,作为当前检测项目的通过率。

可选的,所述第二置信区间的下限不小于所述第一置信区间下限与样本总数的乘积。

可选的,所述预设第二置信区间的下限为:针对所述第一置信区间下限与样本总数的乘积、执行向上取整操作得到的数值。

可选的,所述随机序列发生器生成的序列作为密钥应用于安全领域。

相应的,本申请还提供一种随机性检测装置,包括:

p值获取单元,用于获取样本集中每个样本针对各预设检测项目进行随机性检测的p值;其中,所述样本集中的每个样本为随机序列发生器生成的序列,p值为表征样本与随机序列的差异的显著程度的数值;

通过率获取单元,用于获取所有样本针对各预设检测项目的通过率;

第一置信区间判断单元,用于判断获取的各通过率的最小值是否大于或等于预设第一置信区间的下限;

样本总体通过数统计单元,用于当所述第一置信区间判断单元的输出为是时,统计针对各预设检测项目的p值均大于或者等于预设显著水平的样本数目,作为样本总体通过数;

第二置信区间判断单元,用于当所述样本总体通过数大于或者等于预设第二置信区间的下限时,视为所有样本通过随机性检测;否则未通过。

可选的,所述p值获取单元,具体用于在获取样本集中每个样本针对各预设检测项目进行随机性检测的p值的过程中,采用预设方式记录至少有一项检测项目的p值小于预设显著水平的样本标识;

所述样本总体通过数统计单元,具体用于根据样本总数、以及已记录的样本标识,计算所述样本总体通过数。

可选的,所述p值获取单元,具体用于在获取样本集中每个样本针对各预设检测项目进行随机性检测的p值的过程中,针对每次获取的p值判断所述p值是否小于预设显著水平,若是,记录所述p值对应的样本标识;

所述样本总体通过数统计单元,具体用于统计已记录的样本标识中所包含的不同样本标识的数目,并将所述样本总数与所述不同样本标识的数目的差值作为所述样本总体通过数。

可选的,所述p值获取单元,具体用于在获取样本集中每个样本针对各预设检测项目进行随机性检测的p值的过程中,针对每次获取的p值,判断所述p值是否小于预设显著水平、且尚未记录所述p值对应的样本标识,若是,记录所述p值对应的样本标识;

所述样本总体通过数统计单元,具体用于将所述样本总数与已记录样本标识的数目的差值作为所述样本总体通过数。

可选的,所述p值获取单元,具体用于针对所述样本集中的每个样本,执行以下操作:针对每个预设检测项目,在根据当前样本计算相应检测统计量的基础上计算p值。

可选的,所述通过率获取单元,具体用于针对每个预设检测项目,执行下述操作:将针对当前检测项目的p值大于或者等于预设显著水平的样本数目与样本总数的比值,作为当前检测项目的通过率。

可选的,所述第二置信区间判断单元所采用的第二置信区间的下限不小于所述第一置信区间判断单元所采用的第一置信区间下限与样本总数的乘积。

此外,本申请还提供另一种随机性检测方法,包括:

判断拟进行随机游动或者随机游动频数检测的特定样本的过零次数是否小于预设阈值;

若是,通过向所述特定样本中添加增补序列的方式,得到过零次数大于或等于所述预设阈值的可检测样本;并对所述可检测样本进行相应的随机游动检测或者随机游动频数检测;

其中,所述特定样本是参与随机性检测的样本集中的样本,所述样本集中的样本以及所述增补序列为同一随机序列发生器生成的序列。

可选的,当判断拟进行随机游动或者随机游动频数检测的特定样本的过零次数是否小于预设阈值的结果为否时,包括:

对所述特定样本进行相应的随机游动检测或者随机游动频数检测。

可选的,所述增补序列包括:从所述样本集包含的样本中提取的序列,或者,触发所述随机序列发生器实时输出的序列。

可选的,所述通过向所述特定样本中添加增补序列的方式,得到过零次数大于或等于所述预设阈值的可检测样本,包括:

按照预设策略选取增补序列;

采用预设方式将所选增补序列添加到当前的特定样本中;

统计执行添加操作后的特定样本的过零次数;

判断所述过零次数是否大于或者等于所述预设阈值,若是,将所述执行添加操作后的特定样本作为所述可检测样本;否则,将所述执行添加操作后的特定样本作为当前的特定样本,并转到所述按照预设策略选取增补序列的步骤执行。

可选的,所述按照预设策略选取增补序列包括:

从所述样本集包含的样本中选取序列作为增补序列;或者,

触发所述随机序列发生器实时输出序列,并将输出的序列作为增补序列。

可选的,所述采用预设方式将所选增补序列添加到当前的特定样本中,包括:

将所选增补序列拼接到当前的特定样本的尾部;或者,

将所选增补序列插入到当前的特定样本的头部。

可选的,所述随机序列发生器生成的序列作为密钥应用于安全领域。

相应的,本申请还提供另一种随机性检测装置,包括:

过零次数判断单元,用于判断拟进行随机游动或者随机游动频数检测的特定样本的过零次数是否小于预设阈值;其中,所述特定样本是参与随机性检测的样本集中的样本;

增补序列添加单元,用于当所述过零次数判断单元的输出为是时,通过向所述特定样本中添加增补序列的方式,得到过零次数大于或等于所述预设阈值的可检测样本;其中,所述增补序列与所述样本集中的样本为同一随机序列发生器生成的序列;

第一检测执行单元,用于对所述可检测样本进行相应的随机游动检测或者随机游动频数检测。

可选的,所述装置还包括:

第二检测执行单元,用于当所述过零次数判断单元的输出为否时,对所述特定样本进行相应的随机游动检测或者随机游动频数检测。

可选的,所述增补序列添加单元所采用的增补序列包括:从所述样本集包含的样本中提取的二进制序列,或者,触发所述随机序列发生器实时输出的二进制序列。

可选的,所述增补序列添加单元,包括:

增补序列选取子单元,用于按照预设策略选取增补序列;

添加执行子单元,用于采用预设方式将所选增补序列添加到当前的特定样本中;

过零次数统计子单元,用于统计执行添加操作后的特定样本的过零次数;

判断及控制子单元,用于判断所述过零次数是否大于或者等于所述预设阈值,若是,则将所述执行添加操作后的特定样本作为所述可检测样本;否则,将所述执行添加操作后的特定样本作为当前的特定样本,并触发所述增补序列选取子单元工作。

可选的,所述增补序列选取子单元,具体用于从所述样本集包含的样本中选取序列作为增补序列;或者,触发所述随机序列发生器实时输出序列,并将输出的序列作为增补序列。

可选的,所述添加执行子单元,具体用于将所选增补序列拼接到当前的特定样本的尾部;或者,将所选增补序列插入到当前的特定样本的头部。

与现有技术相比,本申请具有以下优点:

本申请提供的随机性检测方法,首先获取样本集中每个样本针对各预设检测项目进行随机性检测的p值,以及所有样本针对各预设检测项目的通过率,当各通过率的最小值大于或等于预设第一置信区间的下限时,进一步判断样本总体通过数是否大于或者等于预设的第二置信区间的下限,并在满足该要求的情况下视为所述样本集中的所有样本通过随机性检测,否则未通过。

本申请提供的上述方法,在现有随机性检测方法的基础上,不仅从检测项目的角度出发进行是否通过随机性检测的判定,还将这些检测项目关联起来、从通过所有检测项目的样本总体的角度进行是否通过随机性检测的判定,相当于在检测项目通过率这一维度的基础上,增加了从样本总体通过数进行判定的新维度,从而通过关联分析与判定,使得样本集通过随机性检测的判定过程更为严格,有助于对随机序列发生器的随机质量做出更为准确的评估。特别是在随机序列发生器生成的序列作为密钥应用于安全领域的场景下,采用本方法进行随机性检测能够提供更为有效的安全保障。

附图说明

图1是本申请的一种随机性检测方法的实施例的流程图;

图2是本申请的一种随机性检测装置的实施例的示意图;

图3是本申请的另一种随机性检测方法的实施例的流程图;

图4是本申请实施例提供的向特定样本中添加增补序列的处理流程图;

图5是本申请的另一种随机性检测装置的实施例的示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。

在本申请中,分别提供了一种随机性检测方法及装置,以及另一种随机性检测方法及装置。在下面的实施例中逐一进行详细说明。在描述具体的实施例之前,先对现有nist检测方法及其缺陷、以及本申请提供的技术方案作简要的说明。

在本申请提供的技术方案中,所述随机序列发生器是指,用于生成具有一定随机特性的序列的数据源,可以是基于硬件的伪随机序列发生器,也可以是随机函数或者密码算法等软件;所述随机性检测是指,通过概率统计的方法对随机序列发生器生成的序列的随机性进行检测的过程。

nist检测方法是目前应用比较普遍的随机性检测方法,该方法对样本集包含的m个样本,分别针对频率、累加和、游程、最长游程、矩阵秩、离散傅里叶变换、随机游动、随机游动状态频数、组内频率、重叠匹配、非重叠匹配、近似熵、线性复杂度、序列、通用这15个检测项目进行独立检测,即每个样本都会对15个检测项目进行检测,并且在检测之后,得到相应的p值,具体的测试流程及判别方法如下所示:

1)每个样本都会对15个检测项目进行检测。

2)对于单个样本是否通过某一检测项目的检测,评判标准为该样本针对该检测项目的p值≥a,其中a为显著水平。

3)对于单个样本是否满足随机性要求,看该样本的15个检测项目是否均满足p值≥a的要求,如果有一个或者一个以上检测项目的p值<a,则认为该样本不满足随机性要求,即该样本不随机。

4)所有样本针对某一检测项目的通过率pr=针对该检测项目的p值≥a的样本数目/样本总数;如果某一检测项目的通过率落在置信区间内(或者:大于或者等于置信区间的下限),则认为所有样本通过该检测项目的检测。

5)如果15个检测项目的通过率全部落在置信区间内(或者:均大于或者等于置信区间的下限),则认为所有样本通过随机性检测。

下面通过一个具体的例子说明nist检测方法存在的缺陷,在本例子中,给定显著水平a=0.01,样本集所包含的样本总数m=1000,在该条件下nist检测方法通常采用的置信区间的下限为0.98(0.9805607的近似值)。

已知1000个样本均就15个检测项目做了测试,且15个检测项目的通过率均为98%。其中,第1个检测项目是样本1到样本20未通过;第2个检测项目是样本21到样本40未通过;……;第15个检测项目是样本281到样本300未通过。由于每个检测项目的通过率均是980/1000=98%,因此nist检测方法得出结论:所有样本通过随机性检测。但是不难看出,从单一样本的角度出发,样本集中有15x20=300个样本并不满足随机性要求,即:1000个样本中实际有30%的样本不符合随机性。

由此可见,采用现有的nist检测方法,即使每个检测项目的通过率都落在置信区间内,总体样本中符合随机样本的概率却可能明显小于置信区间的下限,最小值可以达到70%,也就是说虽然利用nist检测方法得出了样本集整体通过随机性检测的结论,但是样本集中仍可能包含相当数量的不满足随机性要求的样本,因此根据nist检测方法的结论对随机序列发生器的随机质量做出的评估有可能是不准确的。而且通过上面给出的具体例子可以看出,未通过检测的样本重叠程度越高,风险越小,否则风险越大。

针对上述缺陷,本申请提供的随机性检测方法对现有的nist检测方法进行了改进,不仅从检测项目通过率的角度出发进行是否通过随机性检测的判定,还将这些检测项目关联起来、从通过所有检测项目的样本总体的角度进行是否通过随机性检测的判定,使得样本集通过随机性检测的判定过程更为严格,有助于对随机序列发生器的随机质量做出更为准确的评估。

下面对本申请提供的各实施例进行详细说明。

请参考图1,其为本申请的一种随机性检测方法的实施例的流程图。所述方法包括如下步骤:

步骤101、获取样本集中每个样本针对各预设检测项目进行随机性检测的p值。

为了对随机序列发生器生成序列的随机质量进行评估,可以从随机序列发生器输出的序列中抽取m个样本组成本实施例所述的样本集,其中每个样本都是一个待检测序列(例如:二进制序列),然后用本实施例提供的方法判别样本集中的所有样本是否通过随机性检测。

所述随机性检测是针对各个预设检测项目进行的,所述预设检测项目从不同的角度刻画样本与随机序列之间的差距。预设检测项目可以包括以下所列的任意两个或者两个以上项目:频率、累加和、游程、最长游程、矩阵秩、光谱的离散傅里叶变换、随机游动、随机游动状态频数、块内频数、重叠模块匹配、非重叠模块匹配、近似熵、线性复杂度、序列、通用。

预设检测项目越多,最终得到的检测结果越能够相对准确地反映随机序列发生器的随机质量,因此作为优选实施方式,预设检测项目可以包括上述所有15个检测项目。本实施例对这种优选实施方式进行描述。

本步骤获取样本集中每个样本针对各预设检测项目进行随机性检测的p值。所述p值为表征样本与随机序列的差异的显著程度的数值(也称为观察到的显著水平或者接受水平)。如果某样本针对某检测项目的p值大于或者等于预设的显著水平a,通常说明该样本与随机序列的差异并不显著,可以认为该样本通过该检测项目的检测,也就是说从该检测项目的角度出发可以认为该样本是随机序列;反之,如果p值小于预设的显著水平a,通常说明该样本与随机序列的差异显著,该样本未通过该检测项目的检测。

其中,显著水平a是预先设定的数值,例如:在随机性检测中通常可以预先设定显著水平a=0.01。

样本集中各个样本与各预设检测项目、以及p值的映射关系如表一所示:

表一、样本xi、检测项目yj以及p值的映射关系表

其中,表中的第一行对应15个测试项目,表中的第一列对应m个样本,此外其他单元格中的p_xiyj则代表对样本xi就检测项目yj进行检测得到的p值。如果p_xiyj≥a,则认为样本xi通过检测项目yj的随机性检测。

本步骤获取样本集中每个样本针对各预设检测项目进行随机性检测的p值,即获取上表中各个p_xiyj。p_xiyj的获取过程可以通过概率计算实现,由于不同的检测指标对应不同的检测统计量,针对某一检测指标,可以利用样本数据先计算检测统计量,然后再通过积分、或者误差函数等算法计算出相应的p值。基于上述基本原理,本步骤获取各个p_xiyj的具体过程可以为:针对所述样本集中的每个样本,执行以下操作:针对每个预设检测项目,在根据当前样本计算相应检测统计量的基础上计算p值。由于p值的计算方法属于现有技术,对于计算过程的实施细节此处不再赘述。

在具体实施时,作为一种简便易行的实施方式,也可以采用实现了nist检测方法的工具(简称nist工具),即:以样本集中的所有样本作为输入,由nist工具针对每个样本就15个检测项目分别进行随机性检测,并输出每个样本针对每个检测项目的p值,本步骤获取nist工具输出的上述信息即可。

为了便于在后续步骤104中统计样本总体通过数,本步骤在获取各p值的过程中,可以采用预设方式记录至少有一个检测项目的p值小于预设显著水平a的样本标识。

其中,所述样本标识是指能够区分样本集中各个样本的标识信息,例如:样本编号。在本实施例中,m个样本{x1,x2,......,xm}的编号分别为{1,2,......,m},那么各个样本就可以用其编号作为样本标识。

下面针对通过概率计算获取p值的方式,给出记录上述样本标识的两种具体的实施方式:

实施方式一:

针对所述样本集中的每个样本,执行以下操作:针对每个预设检测项目,在根据当前样本计算相应检测统计量的基础上计算p值,并当所述p值小于预设显著水平时,记录所述p值对应的样本标识。

实施方式二:

针对所述样本集中的每个样本,执行以下操作:针对每个预设检测项目,在根据当前样本计算相应检测统计量的基础上计算p值,并当所述p值小于预设显著水平、且尚未记录所述p值对应的样本标识时,记录所述p值对应的样本标识。

上述两种实施方式都记录了至少有一项检测项目的p值小于预设显著水平的样本标识,不同之处在于,实施方式一可以重复记录同一样本的样本标识,而实施方式二则不会出现重复记录的情况。例如,某一样本就5个检测项目分别计算得到的p值都小于预设显著水平,实施方式一将会记录该样本标识5次,而实施方式二则仅记录一次。

在具体实施时如果通过nist工具获取p值,在获取各个p值的过程中,同样可以采用上述类似的方式记录至少有一项检测项目的p值小于预设显著水平的样本标识。

步骤102、获取所有样本针对各预设检测项目的通过率。

本步骤可以根据样本总数、步骤101获取的每个样本针对各检测项目的p值、以及预设的显著水平a,计算所有样本针对各检测项目的通过率。

所有样本针对某一检测项目yj的通过率pr_yj,可以通过以下公式一计算得到:

pr_yj=cpr_xiyj/m,(1<=i<=m)-----公式1

其中,cpr_xiyj为所有样本就检测项目yj进行检测、得到的p_xiyj≥预设显著水平a的样本数目,m为样本集包含的样本总数。例如:在样本集包含的1000个样本中,只有10个样本针对随机游动这一检测项目的p值小于a,也就是说有990个样本针对该检测项目的p值都大于或者等于a,因此所有样本针对随机游动这一检测项目的通过率为:990/1000=99%。

本步骤采用上述公式一针对各预设检测项目分别进行计算,就获取了所有样本针对各预设检测项目的通过率pr_yj(1<=j<=15)。

在具体实施时,如果在步骤101中利用nist工具进行检测,并获取了nist工具输出的每个样本针对各预设检测项目的p值,那么本步骤也可以直接获取nist工具输出的各检测项目的通过率。

步骤103、判断获取的各通过率的最小值是否大于或等于预设第一置信区间的下限,若是,执行步骤104。

在随机性检测中,可以根据实际的安全性要求设置第一置信区间,在本实施例中采用随机性检测中对置信区间的常规定义方式,即:预设第一置信区间为:

其中,p=1-a,a为预设显著水平,m为样本集包含的样本总数。

本步骤可以先从步骤102获取的各预设检测项目的通过率中选择最小值,然后判断该最小值是否大于或者等于上述第一置信区间的下限,即:min(pr_yj)是否大于或者等于当m=1000,a=0.01时,该下限=0.9805607。

当各通过率的最小值min(pr_yj)大于或者等于第一置信区间的下限时,说明各通过率pr_yj(1<=j<=15)均大于第一置信区间的下限。在这种情况下,现有nist检测方法会得出样本集中的所有样本通过随机性检测的结论。

而在本实施例中,在min(pr_yj)大于或者等于第一置信区间下限的情况下,不会直接给出所有样本通过随机性检测的结论,而是在此基础上继续执行步骤104、以及后续的步骤105,对样本总体通过情况作进一步关联分析。

需要说明的是,在具体实施时,如果本步骤的判断结果为否,即:不满足各通过率的最小值大于或等于预设第一置信区间下限的要求,则认为所有样本未通过随机性检测,可以结束本方法的执行。

步骤104、统计针对各预设检测项目的p值均大于或者等于预设显著水平的样本数目,作为样本总体通过数。

本步骤通过统计得到样本总体通过数,即:针对各预设检测项目的p值均大于或者等于预设显著水平的样本数目,也即:从单个样本的角度考察,满足随机性要求的样本数目。

例如:样本集中总共有m=1000个样本,其中985个样本就各预设检测项目进行检测得到的p值都大于或者等于预设显著水平,而其余15个样本则存在一个或者一个以上检测项目的p值小于预设显著水平,那么样本总体通过数为985。

本步骤可以根据步骤101获取的每个样本针对各预设检测项目进行随机性检测的p值,对样本集中的所有样本进行筛选,筛选出各预设检测项目的p值均大于或者等于预设显著水平的样本,并统计出筛选出的样本数目,作为样本总体通过数。

优选地,如果在步骤101获取每个样本针对各预设检测项目的p值的过程中,已经采用预设方式记录了至少有一项检测项目的p值小于预设显著水平的样本标识,那么本步骤可以直接根据样本总数、以及已记录的样本标识,计算所述样本总体通过数,从而避免执行筛选过程,能够提高处理效率。

如果步骤101采用实施方式一记录样本标识,即:可能重复记录样本标识,那么本步骤可以统计已记录的样本标识中所包含的不同样本标识的数目diff_cpr,并将样本总数m与所述不同样本标识的数目的差值作为样本总体通过数diff_pr,即:diff_pr=m-diff_cpr。

例如:样本总数m=1000,已记录的样本标识为{1、1、3、5、8、8、8、20、20},那么说明这些样本标识对应的样本都至少存在一个测试项目的p值小于预设显著水平,本步骤可以从已记录的样本标识中统计出不同样本标识的数目diff_cpr=5,那么样本总体通过数diff_pr=1000-5=995。

如果步骤101采用实施方式二记录样本标识,即:不会重复记录样本标识,那么本步骤可以统计已记录样本标识的数目diff_cpr,并将样本总数m与diff_cpr的差值作为样本总体通过数diff_pr,即:diff_pr=m-diff_cpr。

例如:样本总数m=1000,已记录的样本标识为{1、3、5、8、20},那么说明这些样本标识对应的样本都至少存在一个测试项目的p值小于预设显著水平,本步骤统计已记录样本标识的数目diff_cpr=5,那么样本总体通过数diff_pr=m-diff_cpr=1000-5=995。

步骤105、当所述样本总体通过数大于或者等于预设第二置信区间的下限时,视为所有样本通过随机性检测;否则未通过。

步骤103中已经得出各检测项目通过率的最小值大于或者等于预设第一置信区间下限的结论,本步骤在此基础上,从样本总体通过数的角度作进一步的判断,如果样本总体通过数大于或者等于预设第二置信区间的下限,则说明样本总体通过数也满足预设的要求,在这种情况下,可以认为样本集中的所有样本通过随机性检测。

第二置信区间的范围可以根据具体的安全性要求进行设置,在具体实施时,为了与通过率的置信区间相匹配,可以采用以下设置方式:第二置信区间的下限为:第一置信区间下限与样本总数m的乘积,第二置信区间的上限为:第一置信区间上限与样本总数m的乘积。采用这种设置方式,相当于要求样本总体通过率(样本总体通过数与m的比值)也要落在第一置信区间内,才能认为样本集中的所有样本通过随机性测试。

在本实施例中,第一置信区间为:

相应的,第二置信区间为:

在本实施例中,如果步骤104得到的样本总体通过数大于或者等于上述第二置信区间的下限,则视为样本集中的所有样本通过随机性检测;否则未通过。

作为比较,此处沿用本说明书在描述具体实施例之前给出的具体例子进行分析。在具体例子中,显著水平a=0.01,样本总数m=1000,p=1-a=0.99,第一置信区间的下限为为了便于分析和对比,取其近似值0.98。在该例子中1000个样本均就15个检测项目做了测试,且15个检测项目的通过率均为98%。其中,第1个检测项目是样本1到样本20未通过;第2个检测项目是样本21到样本40未通过;……;第15个检测项目是样本281到样本300未通过。

采用现有的nist检测方法,由于15个检测项目的通过率都等于98%,因此得出结论:所有样本通过随机性检测。

采用本实施例提供的方法,第二置信区间的下限为第一置信区间下限与样本总数m的乘积,即:980,虽然在步骤103中判断出15个检测项目的通过率都大于等于第一置信区间的下限,但是由于步骤104计算得到的样本总体通过数为:1000-300=700,不满足步骤105所述的大于或者等于第二置信区间下限的要求,因此得出结论:所有样本未通过随机性检测。由此可见,本实施例提供的随机性检测方法更为严格,即使各检测项目通过率满足随机性要求,但是样本总体通过状况不满足预设要求,那么也不会认为样本总体通过随机性检测。

在具体实施时,由于步骤105中的判断对象是样本总体通过数,为了便于实际操作,当第二置信区间的下限不是整数时,通常可以对其进行取整处理,为了避免扩大第二置信区间,保证检测的严格性,可以采用对第二置信区间的下限进行向上取整的方式,即:预设第二置信区间为:

其中,符号代表向上取整。例如:980.5607向上取整为981。

此外,在具体实施时,在满足第二置信区间下限不小于的前提下,可以根据应用场景或者具体业务对序列随机性质量的需求,对第二置信区间的下限进行调整,例如:如果应用场景对随机性质量要求相对较低,可以将所述下限设置为或者与其比较接近的数值;如果对随机性质量要求相对较高,可以将所述下限设置为比较接近的数值,上述这些调整都是可以的。

至此,通过步骤101-105对本实施例提供的随机性检测方法的实施方式进行了详细描述。通过上述描述可以看出,该方法在现有随机性检测方法的基础上,不仅从检测项目的角度出发进行是否通过随机性检测的判定,还将这些检测项目关联起来、从通过所有检测项目的样本总体的角度进行是否通过随机性检测的判定,相当于在检测项目通过率这一维度的基础上,增加了从样本总体通过数进行判定的新维度,从而通过关联分析与判定,使得样本集通过随机性检测的判定过程更为严格,有助于对随机序列发生器的随机质量做出更为准确的评估。

特别是,当随机序列发生器生成的序列作为密钥应用于安全领域时,例如,应用于身份认证、数据加解密传输或者存储等具有安全需求的应用场景时,本实施例提供的方法由于有助于对随机序列发生器的随机质量作出更为严格、准确的评估,因此能够对密钥在安全领域的应用提供更有效的安全保障。

在上述的实施例中,提供了一种随机性检测方法,与之相对应的,本申请还提供一种随机性检测装置。请参看图2,其为本申请的一种随机性检测装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种随机性检测装置,包括:p值获取单元201,用于获取样本集中每个样本针对各预设检测项目进行随机性检测的p值;其中,所述样本集中的每个样本为随机序列发生器生成的序列,p值为表征样本与随机序列的差异的显著程度的数值;通过率获取单元202,用于获取所有样本针对各预设检测项目的通过率;第一置信区间判断单元203,用于判断获取的各通过率的最小值是否大于或等于预设第一置信区间的下限;样本总体通过数统计单元204,用于当所述第一置信区间判断单元的输出为是时,统计针对各预设检测项目的p值均大于或者等于预设显著水平的样本数目,作为样本总体通过数;第二置信区间判断单元205,用于当所述样本总体通过数大于或者等于预设第二置信区间的下限时,视为所有样本通过随机性检测;否则未通过。

可选的,所述p值获取单元,具体用于在获取样本集中每个样本针对各预设检测项目进行随机性检测的p值的过程中,采用预设方式记录至少有一项检测项目的p值小于预设显著水平的样本标识;

所述样本总体通过数统计单元,具体用于根据样本总数、以及已记录的样本标识,计算所述样本总体通过数。

可选的,所述p值获取单元,具体用于在获取样本集中每个样本针对各预设检测项目进行随机性检测的p值的过程中,针对每次获取的p值判断所述p值是否小于预设显著水平,若是,记录所述p值对应的样本标识;

所述样本总体通过数统计单元,具体用于统计已记录的样本标识中所包含的不同样本标识的数目,并将所述样本总数与所述不同样本标识的数目的差值作为所述样本总体通过数。

可选的,所述p值获取单元,具体用于在获取样本集中每个样本针对各预设检测项目进行随机性检测的p值的过程中,针对每次获取的p值,判断所述p值是否小于预设显著水平、且尚未记录所述p值对应的样本标识,若是,记录所述p值对应的样本标识;

所述样本总体通过数统计单元,具体用于将所述样本总数与已记录样本标识的数目的差值作为所述样本总体通过数。

可选的,所述p值获取单元,具体用于针对所述样本集中的每个样本,执行以下操作:针对每个预设检测项目,在根据当前样本计算相应检测统计量的基础上计算p值。

可选的,所述通过率获取单元,具体用于针对每个预设检测项目,执行下述操作:将针对当前检测项目的p值大于或者等于预设显著水平的样本数目与样本总数的比值,作为当前检测项目的通过率。

可选的,所述第二置信区间判断单元所采用的第二置信区间的下限不小于所述第一置信区间判断单元所采用的第一置信区间下限与样本总数的乘积。

此外,本申请还提供另一种随机性检测方法。所述方法针对随机性检测中的随机游动检测或者随机游动频数检测进行了改进。

现有的随机性检测方法(例如nist检测方法)针对样本集中的每个样本,都会对多个检测项目进行随机性检测,其中通常包括随机游动以及随机游动频数这两个检测项目,由于这两个检测项目对应的检测统计量的标准分布为卡方分布,因此在检测前会检查待检测样本的过零次数j(totalnumberofzerocrossing)是否满足卡方检验的要求,即j是否大于或者等于预设阈值λ,并且在满足上述要求的情况下,才继续执行随机游动或随机游动频数检测,否则不对待检测样本进行这两个检测项目的测试。如果因为上述原因对样本集中的部分样本没有进行这两项测试,通常也不会给出样本集中的所有样本是否通过随机性测试的结论,从而导致无法对生成样本集的随机序列发生器的随机质量进行评估。

针对这一问题,本申请提供了另一种随机性检测方法,本方法应用于对样本集进行随机性检测的过程中,对于不满足卡方检测要求的样本,通过增加样本长度使其满足检测要求,保证随机游动以及随机游动频数检测的顺利执行,从而可以保证整个检测过程的完整实施,并能够得出完善的随机性检测结论,为评估随机序列发生器的随机质量提供依据。

请参考图3,其为本申请提供的另一种随机性检测方法的实施例的流程图,本实施例与之前提供的各实施例内容相同的部分不再赘述,下面重点描述不同之处。本申请提供的另一种随机性检测方法包括:

步骤301、判断拟进行随机游动或者随机游动频数检测的特定样本的过零次数是否小于预设阈值,若是,执行步骤302。

所述特定样本是参与随机性检测的样本集中的样本,该样本集中的样本都是由随机序列发生器生成的序列。其中,所述随机序列发生器可以是基于硬件的伪随机序列发生器,也可以是随机函数或者密钥生成算法等软件。

在随机性检测过程中,对于样本集中的每个样本,都会针对多个预设检测项目进行随机性检测。当拟执行的检测项目为随机游动检测或者随机游动频数检测时,可以针对将要进行随机游动检测或者随机游动频数检测的特定样本,统计其过零次数。

以特定样本为二进制序列为例,可以通过以下方式统计特定样本的过零次数:先将特定样本所包含的二进制序列中的“0”和“1”相应地转化成“-1”和“+1”,然后计算由“-1”和“+1”组成的序列的部分累加和,并基于所述累加和生成一个新序列,该新序列中的过零点数目(第一个通常不计入)即为本实施例所述的特定样本的过零次数。由于样本过零次数的计算方法属于现有技术,此处仅给出基本原理,具体细节不再赘述。

由于随机游动或者随机游动频数这两个检测项目对应的检测统计量的标准分布为卡方分布,而卡方检验通常要求每个区间所包含样本值个数不小于5(通常也记做n*pi≥5),对应于随机性测试中则是要求样本的过零次数j不能小于预设数值λ,只有满足j≥λ,才满足卡方检验的可测性条件,才能够继续进行随机游动检测或者随机游动频数检测。

基于上述原理,在随机性测试中通常将λ设置为500,即:预设阈值为500。如果所述特定样本的过零次数小于λ,则执行步骤302增加所述特定样本的长度以满足卡方检验的可测试性条件,否则说明所述特定样本已经满足了该条件,可以直接对所述特定样本进行随机游动检测或者随机游动频数检测。

步骤302、通过向所述特定样本中添加增补序列的方式,得到过零次数大于或等于所述预设阈值的可检测样本。

本步骤的主要目的是:通过添加增补序列的方式增加所述特定样本的长度,以满足卡方检验的可测试性条件。所述增补序列是指,用于添加到特定样本中的序列,包括:从所述样本集包含的样本中提取的序列,或者,触发所述随机序列发生器实时输出的序列。

具体的处理过程可以包括如下所述的步骤302-1至步骤302-4,下面结合图4作进一步说明。

步骤302-1、按照预设策略选取增补序列。

在具体实施时,可以采用预设策略选取增补序列,只要所述增补序列是由生成所述样本集的同一个随机序列发生器生成的,就都是可以的。

具体的,可以从所述样本集包含的样本中选取序列作为增补序列,例如,可以从样本集中不同于所述特定样本的其他样本中提取预设长度的序列;或者,触发所述随机序列发生器实时输出序列,并将输出的序列作为增补序列。

步骤302-2、采用预设方式将所选增补序列添加到当前的特定样本中。

在具体实施时,可以采用不同的方式将所选增补序列添加到当前的特定样本中,例如,可以拼接到当前的特定样本的尾部,或者,插入到当前的特定样本的头部,也可以插入到当前的特定样本的中间,都是可以的。

步骤302-3、统计执行添加操作后的特定样本的过零次数。

本步骤针对执行添加操作后的特定样本,统计过零次数,具体统计过程请参见步骤301中的描述,此处不再赘述。

步骤302-4、判断所述过零次数是否大于或者等于预设阈值,若是,则将执行添加操作后的特定样本作为所述可检测样本;否则,将执行添加操作后的特定样本作为当前的特定样本,并转到步骤302-1执行。

如果步骤302-3统计得到的过零次数大于或者等于预设阈值,则说明已经满足了卡方检验的要求,因此可以将执行添加操作后的特定样本作为可检测样本,并执行后续步骤303;否则,说明仍未满足卡方检验的要求,因此可以将执行添加操作后的特定样本作为当前的特定样本,转到步骤303-1执行,继续选择增补序列,并执行后续的添加、统计过零次数等操作。

步骤303、对所述可检测样本进行相应的随机游动检测或者随机游动频数检测。

所述可检测样本是向所述特定样本中添加增补序列后生成的、已满足卡方检验要求的样本。本步骤可以对所述可检测样本进行相应的随机游动检测或者随机游动频数检测。

为了便于理解,下面针对上述实施过程给出一个简化后的具体例子。在本例子中,拟针对特定样本进行随机游动检测,所述特定样本为64位二进制比特组成的序列,记为{b1,b2,......,b64},步骤301判断出过零次数小于预设阈值,因此步骤302执行以下添加增补序列的操作:

触发随机序列发生器生成长度为64bit的增补序列,并将该增补序列拼接到当前的特定样本的尾部,即得到{b1,b2,......,b64,b65,......,b128},该样本的过零次数仍小于预设阈值,因此将上述样本作为当前的特定样本,继续执行下述操作:

触发随机序列发生器生成长度为64bit的增补序列,并将该增补序列拼接到当前的特定样本的尾部,即得到{b1,b2,......,b64,b65,......,b128,b129,......b192},该样本的过零次数大于预设阈值,因此将{b1,b2,......,b64,b65,......,b128,b129,......b192}作为可检测样本。

得到可检测样本后则可以执行步骤303,针对该可检测样本进行随机游动检测。

以上通过步骤301-303,以及一个具体的例子,对本实施例提供的随机性检测方法的实施方式进行了描述。通过上述描述可以看出,本实施例提供的方法,对于待执行随机游动或者随机游动频数检测的样本,如果不满足卡方检测的要求,则通过增加样本长度使其满足检测要求,从而保证了随机游动或者随机游动频数检测的顺利执行。在对样本集进行随机性检测的过程中采用本方法,可以为实施完整的检测过程提供保障,从而能够得出完善的随机性检测结论,为评估随机序列发生器的随机质量提供依据。特别是,当随机序列发生器生成的序列作为密钥应用于安全领域时,有助于提供更有效的安全保障。

在上述的实施例中,提供了另一种随机性检测方法,与之相对应的,本申请还提供另一种随机性检测装置。请参看图5,其为本申请的另一种随机性检测装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的另一种随机性检测装置,包括:过零次数判断单元501,用于判断拟进行随机游动或者随机游动频数检测的特定样本的过零次数是否小于预设阈值;其中,所述特定样本是参与随机性检测的样本集中的样本;增补序列添加单元502,用于当所述过零次数判断单元的输出为是时,通过向所述特定样本中添加增补序列的方式,得到过零次数大于或等于所述预设阈值的可检测样本;其中,所述增补序列与所述样本集中的样本为同一随机序列发生器生成的序列;第一检测执行单元503,用于对所述可检测样本进行相应的随机游动检测或者随机游动频数检测。

可选的,所述装置还包括:

第二检测执行单元,用于当所述过零次数判断单元的输出为否时,对所述特定样本进行相应的随机游动检测或者随机游动频数检测。

可选的,所述增补序列添加单元所采用的增补序列包括:从所述样本集包含的样本中提取的序列,或者,触发所述随机序列发生器实时输出的序列。

可选的,所述增补序列添加单元,包括:

增补序列选取子单元,用于按照预设策略选取增补序列;

添加执行子单元,用于采用预设方式将所选增补序列添加到当前的特定样本中;

过零次数统计子单元,用于统计执行添加操作后的特定样本的过零次数;

判断及控制子单元,用于判断所述过零次数是否大于或者等于所述预设阈值,若是,则将所述执行添加操作后的特定样本作为所述可检测样本;否则,将所述执行添加操作后的特定样本作为当前的特定样本,并触发所述增补序列选取子单元工作。

可选的,所述增补序列选取子单元,具体用于从所述样本集包含的样本中选取序列作为增补序列;或者,触发所述随机序列发生器实时输出序列,并将输出的序列作为增补序列。

可选的,所述添加执行子单元,具体用于将所选增补序列拼接到当前的特定样本的尾部;或者,将所选增补序列插入到当前的特定样本的头部。

本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1