正在加载图片...
第4期 杨先伟,等:随机序列的扑克检测优化研究 .515. 1),因此以下分析执行一组样本检测时1)所需的运 数据并更新频数,即 算量。在m=4和m=8时1)需分别执行n次 SHIFT、n次LOAD和2n次ADD,即合计总共需执行 C[E]=c[E]+1,0≤i≤g-1(5) 2n次SHIFT、2n次LOAD和4n次ADD。1)进行一 参数m=4时的频数统计方式为先加载字节数 组样本检测所需执行的操作数详情如表1。 据,接着获取高半字节和低半字节, 表1扑克检测算法的操作数量 Table 1 The calculation of poker test H=E≥4L=E,N0F,0≤i≤ -1(6) 步骤1 运算量 最后利用获取的高半字节和低半字节更新对应 m=4 nSHIFT nLOAD +2nADD 的频数,即 m=8 nSHIFT +nLOAD +2nADD C4[H]=C4[H]+1,C4[L]=C4[L]+1(7) 合计 2nSHIFT +2nLOAD +4nADD 参数m=4时和m=8时的统计过程分开实现 会使得待检数据序列重复加载,这也是扑克检测效 按我国随机性检测规范规定一组样本的大小n为 率不高的主要原因之一。如果能更进一步将参数在 10bit,因此由表1的统计结果可知,算法的运算量不 两种不同取值时的统计过程合并在一起,则可以减 小,执行效率不会太快。在实际检测中,需要加快扑克 少大量的数据重复加载。参数m取4和8合并实 检测的执行速度,以增强它的基础筛选作用。 现时的频数统计方式为先加载字节数据,然后获取 3 优化思想和优化算法 高半字节和低半字节,最后更新m=4的频数和m= 8的频数,合并式(5)~(7),可得 根据上一节的分析可知,扑克检测的效率不高 的主要原因是计算统计量时出现了以下问题: H=E:≥4,L=E:∧0xF,0≤i≤n/8-1 1)采用了单比特统计方式,每次仅仅处理一个 C4[H]=C4[H]+1,C4[L]=C4[L]+1 比特,CPU的字长没有得到充分利用:如果一次处 Cs[E:]=Cs[E;]+1 (8) 理多个比特则处理速度将有明显的提升: 统计量的计算和判断过程还可以进行精简和优 2)对参数m=4和m=8,传统实现方式会各执 化:可根据余不完全伽马函数的性质预先求出 行一遍算法中的1)~4)的操作,存在相同数据反复 P.le≥a时统计量V的阈值,让统计值V直接和此 加载的情况: 阈值比较,如此可以减少余不完全伽马函数的计算 3)算法的统计量计算和判断过程没有精简和 次数。 优化,存在不必要的余不完全伽马函数的计算。 记m=4时的统计量为V,即 15 针对扑克检测原算法出现的效率不高问题,下 -642c,[)-4 (9) 面有针对性地提出几点优化想法。具体的优化想法 n 0 如下: 记m=8时的统计量为V,即 255 1)一次处理多个比特,比如一个字节或半个字 -2048 (10) 节,加快频数统计过程: n =0 2)对m=4和m=8整合在一起实现,减少不必 计算统计值所用的余不完全伽马函数满足性质 要的数据加载: igame(a,0)=1,igamc(a,o)=0。经简单计算可 3)精简并优化统计量的计算和判断过程,事先 知,当显著水平α=0.01,m=4时,统计量V,的阈值 计算P≥a时统计量V的阈值,让统计值直接和 为入4=30.577914:当显著水平a=0.01,m=8时, 此阈值比较,避免每个样本都计算两次余不完全伽 统计量V.的阈值为入g=310.457388。即如果V,< 马函数。 入,且'。<入g则认为待检序列通过检测。根据以上 记待检序列为n/8字节的字节数据E:,E:= 描述,优化实现的扑克检测算法如下。 E+:‖E数+2‖…‖eg:+8,0≤i≤n/8-1。为区分两 算法1优化实现的扑克检测算法 种不同参数取值时各种序列模式出现的频数,记 输入n/8字节的数据E:,0≤i≤n/8-1: C.[],0≤i≤15为m=4时各种序列模式出现的 输出检测结果。 频数,记Cg[i],0≤i≤255为m=8时各种序列模 1)初始化数据:i=0。 式出现的频数。 C4[j]=0,0≤j≤15, 参数m=8时的频数统计方式为直接加载字节 Cg[j]=0,0≤j≤255。1),因此以下分析执行一组样本检测时 1)所需的运 算量。 在 m = 4 和 m = 8 时 1) 需分别执行 n 次 SHIFT、n 次 LOAD 和 2n 次 ADD,即合计总共需执行 2n 次 SHIFT、2n 次 LOAD 和 4n 次 ADD。 1)进行一 组样本检测所需执行的操作数详情如表 1。 表 1 扑克检测算法的操作数量 Table 1 The calculation of poker test 步骤 1 运算量 m = 4 nSHIFT + nLOAD +2nADD m = 8 nSHIFT +nLOAD +2nADD 合计 2nSHIFT +2nLOAD +4nADD 按我国随机性检测规范规定一组样本的大小 n 为 10 6 bit,因此由表 1 的统计结果可知,算法的运算量不 小,执行效率不会太快。 在实际检测中,需要加快扑克 检测的执行速度,以增强它的基础筛选作用。 3 优化思想和优化算法 根据上一节的分析可知,扑克检测的效率不高 的主要原因是计算统计量时出现了以下问题: 1)采用了单比特统计方式,每次仅仅处理一个 比特,CPU 的字长没有得到充分利用;如果一次处 理多个比特则处理速度将有明显的提升; 2)对参数 m = 4 和 m = 8,传统实现方式会各执 行一遍算法中的 1) ~4)的操作,存在相同数据反复 加载的情况; 3)算法的统计量计算和判断过程没有精简和 优化,存在不必要的余不完全伽马函数的计算。 针对扑克检测原算法出现的效率不高问题,下 面有针对性地提出几点优化想法。 具体的优化想法 如下: 1)一次处理多个比特,比如一个字节或半个字 节,加快频数统计过程; 2)对 m = 4 和 m = 8 整合在一起实现,减少不必 要的数据加载; 3)精简并优化统计量的计算和判断过程,事先 计算 Pvalue ≥ α 时统计量 V 的阈值,让统计值直接和 此阈值比较,避免每个样本都计算两次余不完全伽 马函数。 记待检序列为 n / 8 字节的字节数据 Εi , Εi = ε8i+1‖ε8i+2‖…‖ε8i+8 , 0 ≤ i ≤ n / 8 - 1。 为区分两 种不同参数取值时各种序列模式出现的频数,记 C4 [i],0 ≤ i ≤ 15 为 m = 4 时各种序列模式出现的 频数,记 C8 [i],0 ≤ i ≤ 255 为 m = 8 时各种序列模 式出现的频数。 参数 m = 8 时的频数统计方式为直接加载字节 数据并更新频数,即 C8 [Ei] = C8 [Ei] + 1,0 ≤ i ≤ n 8 - 1 (5) 参数 m = 4 时的频数统计方式为先加载字节数 据,接着获取高半字节和低半字节, H = Ei ≫ 4,L = Ei ∧ 0xF,0 ≤ i ≤ n 8 - 1 (6) 最后利用获取的高半字节和低半字节更新对应 的频数,即 C4 [H] = C4 [H] + 1,C4 [L] = C4 [L] + 1 (7) 参数 m = 4 时和 m = 8 时的统计过程分开实现 会使得待检数据序列重复加载,这也是扑克检测效 率不高的主要原因之一。 如果能更进一步将参数在 两种不同取值时的统计过程合并在一起,则可以减 少大量的数据重复加载。 参数 m 取 4 和 8 合并实 现时的频数统计方式为先加载字节数据,然后获取 高半字节和低半字节,最后更新 m = 4 的频数和 m = 8 的频数,合并式(5) ~ (7),可得 H = Ei ≫ 4,L = Ei ∧ 0xF,0 ≤ i ≤ n / 8 - 1 C4 [H] = C4 [H] + 1,C4 [L] = C4 [L] + 1 C8 [Ei] = C8 [Ei] + 1 (8) 统计量的计算和判断过程还可以进行精简和优 化:可根 据 余 不 完 全 伽 马 函 数 的 性 质 预 先 求 出 Pvalue ≥α 时统计量 V 的阈值,让统计值 V 直接和此 阈值比较,如此可以减少余不完全伽马函数的计算 次数。 记 m = 4 时的统计量为 V4 ,即 V4 = 64 n ∑ 15 i = 0 C4 [i] 2 ( ) - n 4 (9) 记 m = 8 时的统计量为 V8 ,即 V8 = 2 048 n ∑ 255 i = 0 C8 [i] 2 ( ) - n 8 (10) 计算统计值所用的余不完全伽马函数满足性质 igamc(α,0) = 1, igamc(α,¥) = 0。 经简单计算可 知,当显著水平 α = 0.01, m = 4 时,统计量 V4 的阈值 为 λ4 = 30.577 914;当显著水平 α = 0.01, m = 8 时, 统计量 V8 的阈值为 λ8 = 310.457 388。 即如果 V4 < λ4 且 V8 < λ8 则认为待检序列通过检测。 根据以上 描述,优化实现的扑克检测算法如下。 算法 1 优化实现的扑克检测算法 输入 n / 8 字节的数据 Εi,0 ≤ i ≤ n / 8 - 1; 输出 检测结果。 1)初始化数据: i = 0。 C4 [j] = 0, 0 ≤ j ≤ 15, C8 [j] = 0, 0 ≤ j ≤ 255。 第 4 期 杨先伟,等:随机序列的扑克检测优化研究 ·515·
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有