一种具有单比特频数检测和块内频数检测的快速检测方法
【技术领域】
[0001] 本发明涉及数据通信和信息安全领域,尤其是涉及一种具有单比特频数检测和块 内频数检测的快速检测方法。
【背景技术】
[0002] 随机序列在密码应用技术中占有非常重要的地位,香农的完善保密系统以及现代 密码系统都将随机序列视为安全算法的根本。现在的计算机安全系统大量使用随机序列, 如密钥的产生、数字签名、身份认证等,这充分体现了随机数的应用价值。在应用密码学中, 随机性检测的目的是采用概率统计方法分析测试随机数发生器等生成的序列的随机性,判 断待检序列在统计上是否难以和真随机数区分开。不同的检测算法从不同的角度刻画待检 序列与真随机序列之间的差距。在经过多年的研究和发展后随机性检测已经取得了丰硕的 成果,目前已有大量的随机性检测算法,并且新的检测算法还在不断涌现。
[0003] 美国国家标准与技术研究院(Nat iona 1 Ins t i tute of Standards and Technology,NIST)发布的SP 800-22标准建议了 16种用于随机性测试的统计检验方法, 2009年,我国国家密码管理局发布了随机性检测规范建议了 15种用于随机性测试的统计检 验方法,其中单比特频数检测和块内频数检测是二者共有的检测项。单比特频数检测的目 的是检验η比特的待检序列中〇、1比特是否服从均匀分布,即保证〇、1比特的个数大致相同。 块内频数检测是检测η比特的待检序列的分组长度为m的子序列中1所占的比例。如果1的比 例接近于一半,则可以认为序列是随机的。当m取1时,块内频数检测退化为单比特频数检 测。频率测试是随机性测试的基础,应首先进行。如果频率检测都无法通过,那么不用进行 其他测试即可表明该序列不随机。因此,这两种检测具有非常重要的作用。必须具备极高的 检测效率,以便快速剔除那些明显不满足随机性特征的待检样本。
[0004] 在通常的实现方式中会先将输入的待检数据转化为单比特表示,以便两种算法进 行比特个数统计,然后对两种检测算法分别统计不同的统计量和P值,并与显著水平比较, 判断检序列是否通过检测。单比特频数检测算法中计算η比特序列的累加和需要执行η次查 表和η次加法,另外还需计算统计量的余差函数;块内频数检测算法中为了算出统计量需要 执行Ν次减法、Ν次平方、Ν次除法、mN+N次加法和2次乘法,其中Ν为完整的子序列的个数。以 上计算量说明这两个检测算法的效率并不高,实际检测工作中需要具有这两种检测算法的 更加高效快捷的检测方法,以增强这两种算法所起的筛选作用,进而大大提高整个随机性 检测规范的检测效率。
【发明内容】
[0005] 本发明的目的在于:针对现有技术存在的问题,提供一种具有单比特频数检测和 块内频数检测的快速检测方法,解决计算机在执行现有单比特频数检测方法或块内频数检 测方法时,效率低的问题。
[0006] 本发明的发明目的通过以下技术方案来实现:
[0007] -种具有单比特频数检测和块内频数检测的快速检测方法,其特征在于,该方法 包括步骤:
[0008] (1)将η比特待检序列按比特长度2m划分为N/2个非重叠的子序列对,每个子序列 对包含2个比特长度为m子序列;
[0009] (2)对所有子序列对,利用查表法得出其中的两个子序列分别包含的比特1个数;
[00?0] (3)计算特定统计量,步骤如下:
[0011] (3.1)若需要进行单比特频数检测,则对所有子序列累加比特1的个数得到Si,并 计算单比特频数检测的统计量累加和I Sn I = I η-2& I ;
[0012] (3.2)若需要进行块内频数检测,则对每个子序列计算其中比特1的个数与均值m/ 2之差的平方值,并将这些平方值累加得到&,然后计算块内频数检测的统计量V=4S 2/m;
[0013] ⑷比较特定统计量,步骤如下:
[0014] (4.1)若需要进行单比特频数检测,则利用累加和判断|Sn| 是否成立,s为利用 A I 事先计算出来的I Sn|的阈值,如I sn| < S成立则认为待检序列为通过单 比特频数检测;
[0015] (4.2)若需要进行块内频数检测,则利用统计量V判断是否成立,v为利用 igamc(N/2,V/2) 2 α事先计算出来的V的阈值,如果v成立则认为待检序列为通过块内频 数检测。
[0016] 作为进一步的技术方案,所述查表法为:对每个子序列,从头至尾依序取w个比 特_,并利用查表法直接得出该w个比特-中比特1的个数,以此类推。
[0017] 作为进一步的技术方案,所述查表法的w值取8最合适:8比特是完整的一个字节, 无需进行字节间的拼接或拆分;并且此时表的规模仅为256字节,适合绝大部分处理系统。
[0018] 作为进一步的技术方案,单比特频数检测中累计和的绝对值|Sn|的阈值s在检测 前计算出来,当样本比特数n = 1000000,显著水平α = 0.01时,整数s的值为2575。
[0019] 作为进一步的技术方案,块内频数检测中统计量V的阈值ν在检测前计算出来,当 样本比特数η = 1000000,子序列个数Ν= 10000,显著水平α = 〇. 〇1时,ν值取10331.933578 (保留六位小数)。
[0020] 作为进一步的技术方案,首先闭合开关1,断开开关2,启用快速检测方法的单比特 频数检测模式:待检数据在计算统计量模块中只将数据送入计算累加和S n子模块,在比较 统计量模块中只将数据送入比较累加和阈值子模块。
[0021] 作为进一步的技术方案,首先断开开关1,闭合开关2,启用快速检测方法的块内频 数检测模式:待检数据在计算统计量模块中只将数据送入计算统计量V子模块,在比较统计 量模块中只将数据送入比较计算统计量V与阈值子模块。
[0022] 作为进一步的技术方案,首先闭合开关1和开关2,启用快速检测方法的双检测模 式:待检数据在计算统计量模块中将数据送入计算累加和3"子模块和计算统计量V子模块, 在比较统计量模块中将数据送入比较累加和3"与阈值子模块和比较计算统计量V与阈值子 模块。
[0023] 与现有技术相比,本发明通过结合单比特频数检测和块内频数检测的特点,实现 了一种具有单比特频数检测和块内频数检测的快速检测方法,该系统具有检查效率高、占 用存储空间小、模块可重用等优点,而且该检测方法经过简单的配置后可以变更为只进行 单比特频数检测的比特检测模式、只进行块内频数检测的块检测模式和同时进行单比特频 数检测和块内频数检测的双检测模式。
【附图说明】
[0024] 图1是一种具有单比特频数检测和块内频数检测的快速检测方法的构架图;
[0025] 图2是一种具有单比特频数检测和块内频数检测的快速检测方法的单比特频数检 测模式的流程图;
[0026] 图3是一种具有单比特频数检测和块内频数检测的快速检测方法的块内频数检测 模式的流程图;
[0027] 图4是一种具有单比特频数检测和块内频数检测的快速检测方法的双检测模式的 流程图。
【具体实施方式】
[0028] 下面结合附图和具体实施例对本发明进行详细说明。
[0029]实施例
[0030] 本发明方法基于计算机实现,需建立如图1所示的软件模块,该系统包括开关1、开 关2、拆分子序列模块、查表统计各子序列中1的个数模块、计算统计量模块、比较统计量模 块;其中计算统计量模块又分为计算累加和S n子模块和计算统计量V子模块;比较统计量模 块又分为比较累加和Sn与阈值子模块和比较统计量V与阈值子模块。η比特待待检数据流经 过拆分子序列模块后进入查表统计各子序列中1的个数模块,后者统计各子序列中1的个数 并送入计算统计量模块,计算统计量模块根据开关1和开关2的状态决定是否将上一模块的 输出送入计算累加S n子模块和计算统计量V子模块,比较统计量模块的比较累加和Sn与阈值 子模块和比较统计量V与阈值子模块分别处理计算统计量模块的计算累加和S n子模块和计 算统计量V子模块的统计结果,比较结果作为最终的检测结果输出。
[0031] 拆分子序列模块:
[0032] 主要完成拆分子序列步骤S1:由于我国随机性检测规范规定块内频数检测的参数 m取100,所以将η比特待检序列按比特长度2m划分为非重叠的子序列对,共N/2对,其中每个 子序列对包含2个比特长度为m的子序列。
[0033] 此步骤中一次性取两个子序列,原因是块内频数检测的参数m取值为100,这使得 子序列没有按字节对齐,因此改为一次性取两个子序列保证按字节对齐。
[0034] 查表统计各子序列中1的个数模块:
[0035] 主要完成查表统计各子序列中1的个数步骤S2:对所有子序列对,利用查表法得出 其中的两个子序列分别包含的比特1个数。其基本思想是:首先,利用查表法直接得出比特1 的个数;其次,因为两个算法都要用比特统计,所以将两个检测算法结合在一起合并实现, 共享比特统计的结果。记B = Bi| |…| |Bl为连续多个字节形成的数组,其中为一 个字节。记g(B,t)表示计算Β = Βι| |…| |Bt这t个字节中比特1的总个数。如果t取1,则g(B,l) 表示计算字节Βι中比特1的个数,g(B,1)可通过一次查表实现,g(B,t)可通过多次查表实 现。查表统计各子序列中1的个数模块统计一个子序列对(含两个子序列)共2m = 200比特待 检数据流Ei,l < i < 25中比特1的个数,其步骤如下:
[0036] (1)计算各子序列对中的前一个子序列中的1的个数:见=8浪,12)+8泡3>>4,1)
[0037] (2)计算各子序列对中的后一个子序列中的1的个数:N2 = g(E14,12)+g(E13~0xF,l)
[0038] (3)计算各子序列对中的两个子序列中的1的总个数:此=见+他
[0039]查表的比特宽度记为w,则表中元素个数为2W。综合考虑连续w比特的获取难易度 以及表的规模后发现w取8比较合适。首先,8比特刚好是一个字节,无需做额外的处理即可 得到连续8比特数据;其次,无需将输入的待检数据拆分为单比特表示;第三,此时表的规模 为256字节,绝大部分处理器都能接受。
[0040] 此步骤将两种检测算法的比特统计过程进行了优化组合。考虑到传统的比特统计 结果可以在两个算法之间共享,所以可以将两个检测算法结合在一起进行合并优化实现: 块内频数检测中连续两个子序列的统计结果是块内频数检测所需的结果,而且其和值是这 两个子序列的比特1