CN112861121B - 一种块内最大1、0游程检测合并优化实现方法及装置 - Google Patents

一种块内最大1、0游程检测合并优化实现方法及装置 Download PDF

Info

Publication number
CN112861121B
CN112861121B CN202011536493.2A CN202011536493A CN112861121B CN 112861121 B CN112861121 B CN 112861121B CN 202011536493 A CN202011536493 A CN 202011536493A CN 112861121 B CN112861121 B CN 112861121B
Authority
CN
China
Prior art keywords
maximum
run
block
detection
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011536493.2A
Other languages
English (en)
Other versions
CN112861121A (zh
Inventor
罗影
张文科
郭晓玲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial Information Security Sichuan Innovation Center Co ltd
Original Assignee
Industrial Information Security Sichuan Innovation Center Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Industrial Information Security Sichuan Innovation Center Co ltd filed Critical Industrial Information Security Sichuan Innovation Center Co ltd
Priority to CN202011536493.2A priority Critical patent/CN112861121B/zh
Publication of CN112861121A publication Critical patent/CN112861121A/zh
Application granted granted Critical
Publication of CN112861121B publication Critical patent/CN112861121B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明提出了一种块内最大1、0游程检测方法,包括:步骤1、建立查找表;步骤2、将待检字节序列划分为N个子序列;步骤3、基于查找表通过查表法计算每个子序列中最大游程的长度,并归入对应游程长度集合;步骤4、根据集合计算统计值;步骤5、根据统计值计算P值;步骤6、将计算得出的P值与显著性水平α进行比较,若满足条件则表示待检序列通过块内最大游程检测。本发明直接对字节进行处理,并用查表的方式加速实现;对查找表进行充分的复用且规模仅768字节,在各类工业控制系统安全防护设备上均能毫无压力的实现;将块内最大1、0游程检测融合在一起检测,实现一次数据处理就能获得块内最大1游程检测结果和块内最大0游程检测结果。

Description

一种块内最大1、0游程检测合并优化实现方法及装置
技术领域
本发明涉及工业控制系统安全检测领域,特别涉及一种块内最大1、0游程检测合并优化实现方法及装置。
背景技术
近年来,大量增强工业控制系统安全的安全防护产品被研制出来,如工业防火墙、主机安全防护、纵向隔离装置、工业安全网关等。随机数发生器作为最基础的安全部件被集成到了这些产品中。这些工业控制系统安全防护产品的处理能力有的较强,有的则不如普通PC机,但基本采用32位/64位处理器。根据中华人民共和国国家质量监督检验检疫总局、中国国家标准化管理委员会颁布的国家标准GB/T 32915《信息安全技术二元序列随机性检测方法》以及国家密码管理局颁布的密码行业标准GM/T 0005《随机数检测规范》、GM/T0062 《密码产品随机数检测要求》,必须对随机数发生器产生的随机数的质量进行仔细检测。块内最大1游程检测和块内最大0游程检测,合称为块内最大游程检测,是非常重要的随机数质量检验方法。在这些工业控制系统安全防护产品中实现块内最大1游程检测和块内最大0游程检测时应充分考虑安全防护产品的实际处理能力的强弱。
块内最大游程检测是两个检测项——块内最大1游程检测和块内最大0游程检测的合称。块内最大1游程检测将待比特长度为n的检序列划分成个长度为m的子序列。统计各个子序列中的最长1游程长度,通过并将其归入相应的集合,根据各个子序列中最大1游程的分布来评价待检序列的随机性。块内最大0游程检测的检测原理和思路类似,只是将考察对象从1游程变更为0游程,根据各个子序列中最大0游程的分布来评价待检序列的随机性。
在传统实现中,块内最大1游程检测以NIST(National Institute of Standardsand Technology,美国国家标准与技术研究院)提供的随机性检测软件包NIST STS(下载地址为https://csrc.nist.gov/)为代表。块内最大0游程检测的传统实现是基于NIST提供的随机性检测软件包NIST STS的块内最大1游程检测为基础实现的。
传统块内最大1游程检测实现方法存在如下不足,导致其计算效率非常低:
传统块内最大1游程检测和传统块内最大0游程检测实现方法存在如下不足,导致其计算效率非常低:
1)字节型待检数据与检测实现所需的逐比特表示之间的矛盾。在工业控制系统的安全防护类产品中的待检数据通常是从随机数发生器产生,它们都是以字节型表示和存储,而传统做法采用基于比特的处理方式,即逐比特地处理待检数据。这就需要增加一个步骤,将字节型待检数据转为比特序列。此举既增加了检测的流程复杂度,又增加了检测的时间。
2)比特级的游程统计方式导致CPU计算资源的浪费。统计游程长度的时候,使用一比特、一比特地筛查的方式。对n=106比特级的待检序列,将进行百万级别的比特数据加载、比较和数值更新。因此传统实现方式未充分考虑工业控制系统安全设备的CPU处理能力,严重浪费了CPU的字宽。
3)块内最大1游程检测和传统块内最大0游程检测是两个执行过程相似的检测,但传统检测执行之时是分别执行其中一个检测,再执行另外一个检测,没有考虑二者之间的关系,大大增加了很多不必要的数据加载和存储开销。
发明内容
针对现有技术中存在的问题,提供了一种工控安全产品的块内最大1游程和块内最大0 游程检测合并优化实现方法和装置,通过综合两个检测流程、去除冗余操作、合并加载等方式,仅需执行一次检测流程就可以获取块内最大1游程和块内最大0游程检测的检测结果,解决块内最大1游程检测和块内最大0游程检测在工业控制系统的安全保护产品中实现时,执行流程复杂和检验效率低的问题。
本发明采用的技术方案如下:一种块内最大1、0游程检测合并优化实现方法,包括以下过程:
步骤1、进行预处理,建立查找表;
步骤2、进行序列分块,将待检字节序列划分为N个子序列;
步骤3、根据建立的查找表,基于字节统计分别进行每个子序列中最大游程长度计算,得到每个子序列的最大1游程长度和最大0游程长度,并分别归入最大1游程长度集合、最大0游程长度集合;
步骤4、分别计算块内最大1游程长度与最大0游程长度的统计值;
步骤5、分别计算块内最大1游程长度与最大0游程长度的P值;
步骤6、分别将计算得出的P值与显著性水平α进行比较,如果块内最大1游程长度的 P值≥α值,则表示待检序列通过块内最大游程检测;如果块内最大0游程长度的P值≥α值,则表示待检序列通过块内最大游程检测。
进一步的,所述步骤1中建立查找表过程包括:建立3个查找表,每个表的处理比特宽度为8;
当8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε0+26ε1+…+ε7时,三个表分别如下:
当8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε7+26ε6+…+ε0时,三个表分别如下:
其中,对于表T1:其中0≤Z≤255,T1(Z)表示8比特的Z中以比特1结尾的逆向1游程(从ε7开始往下标递减方向)的长度,其中0≤Z≤255;对于表T2:T2(Z)表示8比特的Z 中以比特1开始的顺向的1游程(从ε0开始往下标递增方向)的长度,其中0≤Z≤255;对于表T3:T3(Z)表示8比特的Z中最大1游程的长度,其中0≤Z≤255。
进一步的,所述步骤2具体方法为:所述步骤2具体方法为:将长度为n比特的待检字节序列划分为N个长度为m的非重叠子序列,舍弃多余的比特,其中,n为8 的整数倍,m为分块中最大游程检测的参数,表示每一个分块的大小,m取8或128或10000, GM/T0005规定m取10000。
进一步的,所述步骤3中每个子序列中最大游程长度计算过程为:
步骤3.1、将当前子序列的最大1游程长度rmax (1)、当前1游程长度r(1)、最大0游程长度rmax (0)、当前0游程长度r(0)均初始化为0,即rmax (1)=rmax (0)=r(1)=r(0)=0。
步骤3.2、判断当前子序列中是否还有未处理的字节,若是进入步骤3.3,若不是,则进入步骤3.8;
步骤3.3、读取子序列中未处理的第一个字节序为当前字节X,并计算字节Y=X⊕255;步骤3.4、分别对字节X和字节Y查T1表,并分别累加到当前1游程长度和当前0游程长度:
r(1)=r(1)+T1(X)
r(0)=r(0)+T1(Y);
步骤3.5、根据字节对X查T3表得到的值与当前1游程长度值更新最大1游程长度;根据字节Y查T3表得到的值与当前0游程长度值更新最大0游程长度:
rmax (1)=max(rmax (1),r(1),T3(X))
rmax (0)=max(rmax (0),r(0),T3(Y));
步骤3.6、若字节X值不等于255,则将当前1游程长度值重新设定为X查T2表的值,即r(1)=T2(X);若字节Y值不等于255,则将当前0游程长度值重新设定为Y查T2表的值,即r(0)=T2(Y);
步骤3.7、将当前字节标记为已处理字节;跳转到步骤3.2;
步骤3.8、返回当前子序列的最大长度1游程的长度rmax (1)和最大长度0游程的长度rmax (0)
进一步的,所述步骤4中计算块内最大1游程长度与最大0游程长度的统计值的具体过程为:将每个子序列的最大游程长度计算结果分别归入最大1游程长度集合与最大0游程长度集合,得到集合{v0 (1),v1 (1),…,v6 (1)}、{v0 (0),v1 (0),…,v6 (0)};
块内最大1游程检测的统计值V(1)
块内最大1游程检测的统计值V(0)
其中,0≤K≤6,GM/T 0005规定K的取值为:当m为8时,K取3,当m为128时, K取5,当m为10000时,K取6;
进一步的,所述步骤5中计算块内最大1游程长度与最大0游程长度的P值的具体过程为:
块内最大1游程检测的P值:
P_value(1)=igamc(3,V(1)/2)
块内最大0游程检测的P值:
P_value(0)=igamc(3,V(0)/2)
其中,igamc表示余不完全伽马函数。
本发明还提供了一种基于上述的块内最大1、0游程检测合并优化实现方法的检测装置,包括:
查找表建立模块,用于建立查找表;
块内最大游程统计模块,用于根据查找表统计输入的待检序列的所有子序列的最大1游程长度和最大0游程长度,并分别归入最大1游程长度集合、最大0游程长度集合;
统计值计算模块,用于根据块内最大1游程统计模块输出的集合分别块内最大1、0游程检测的V值;
结果判断模块,用于根据统计值分别计算块内最大1、0游程检测的P值,并将计算得出的P值与显著性水平α进行比较,返回块内最大1游程检测的结果和块内最大0游程检测的结果。
进一步的,所述检测装置的具体执行过程为:
步骤A、装置初始化,查找表建立模块建立三张查找表,查找表驻留内存中;
步骤B、将待检序列输入块内最大游程统计模块,由块内最大游程统计模块根据查找表统计待检序列的所有子序列的所有子序列的最大1游程长度和最大0游程长度,归入集合,并输出;
步骤C、统计值计算模块根据块内最大游程统计模块输出的集合计算得到统计值V(1)、 V(0)
步骤D、结果判断模块根据统计值计算模块得到的统计值计算P值P_value(1)、P_value(0),并与显著性水平α进行比较,若P_value(1)≥α,则块内最大1游程检测的结果为“检测通过”;否则,块内最大1游程检测的结果为“检测不通过”;若的P_value(0)≥α,则块内最大0游程检测的结果为“检测通过”;否则,块内最大0游程检测的结果为“检测不通过”。
与现有技术相比,采用上述技术方案的有益效果为:
1)本发明直接对字节数据处理,无需传统做法“字节转比特”的操作,既降低了计算量,又减少了计算复杂度。
2)本发明统计序列的最大游程长度采用字节处理方式,并对字节用查表的方式加速实现。
3)查找表的规模充分考虑了各类工业控制系统安全防护设备的能力,块内最大1游程和块内最大0游程的查找表进行了充分的复用,使得整个表只有3个,每个表256字节,表的总规模控制在1KB之内,在各类工业控制系统安全防护设备上均能毫无压力的实现。
4)查找表的建立可在具体执行前的任何阶段执行。一种最典型、最常见的方式为在设备启动时建立查找表。
5)将块内最大1游程检测和块内最大0游程检测充分融合在一起实现,做到一次数据加载就可以得到块内最大1游程检测的结果和块内最大0游程检测,既减少了计算的复杂度、有提升了检测性能。
6)计算量对比。使用传统实现方法,实现块内最大1游程检测时统计一个m比特的子序列的最大1游程长度,需要执行m次数据加载、3m/2次比较、m/2次加法以及一定的赋值运算,统计一个m比特的子序列的最大0游程长度的代价也是相同的,即统计一个m比特的子序列的最大1游程长度和最大0游程长度,需要执行2m次数据加载、3m次比较、 m次加法以及一定的赋值运算;而本算法中只需执行m/8次数据加载、3m/4次比较、m/4 次加法、约3m/4次查表运算和一定的赋值操作,大大降低了计算复杂度。
附图说明
图1为本发明提出的块内最大1、0游程检测合并优化实现方法流程图。
图2本发明提出的子序列的最大1、0游程长度的计算流程图。
图3为本发明提出的检测装置检测流程图。
具体实施方式
下面结合附图对本发明做进一步描述。
本发明提出一种工控安全产品的块内最大1游程和块内最大0游程检测合并优化实现方法和装置,通过综合两个检测流程、去除冗余操作、合并加载等方式,仅需执行一次检测流程就可以获取块内最大1游程和块内最大0游程检测的检测结果,解决块内最大1游程检测和块内最大0游程检测在工业控制系统的安全保护产品中实现时,执行流程复杂和检验效率低的问题。
在介绍本发明的具体方案之前,先对方案中记号、缩写与符号进行说明:
·n:待检数据的比特长度;实际中n为8的整数倍。
·m:块内最大游程检测的参数,表示每一个分块的大小,取值见表1。
·N:待检数据划分得到的分块的个数,
·B=B0B1...Bn/8-1:n比特待检序列的字节表示形式。
·ε=ε0ε1...εn-1:n比特待检序列的比特表示形式。
·α:显著性水平。通常取值为0.05、0.01、0.001、0.0001等,在密码行业标准GM/T0005-2012中规定显著性水平α取0.01。
·igamc:余不完全伽马函数。
·向下取整,表示小于x的最大整数,例如
表1 K的取值
m 8 128 10000
K 3 5
表2 vi的取值
表3 πi的取值
<![CDATA[π<sub>i</sub>]]> m=8 m=128 m=10000
<![CDATA[π<sub>0</sub>]]> 0.2148 0.1174 0.0882
<![CDATA[π<sub>1</sub>]]> 0.3672 0.2430 0.2092
<![CDATA[π<sub>2</sub>]]> 0.2305 0.2493 0.2483
<![CDATA[π<sub>3</sub>]]> 0.1875 0.1752 0.1933
<![CDATA[π<sub>4</sub>]]> 0.1027 0.1208
<![CDATA[π<sub>5</sub>]]> 0.1124 0.0675
<![CDATA[π<sub>6</sub>]]> 0.0727 
具体方案如下:
如图1所示,一种块内最大1、0游程检测合并优化实现方法,包括以下过程:
步骤1、进行预处理,建立查找表;
步骤2、进行序列分块,将待检字节序列划分为N个子序列;
步骤3、根据建立的查找表,基于字节统计分别进行每个子序列中最大游程长度计算,得到每个子序列的最大1游程长度和最大0游程长度,并分别归入最大1游程长度集合、最大0游程长度集合;
步骤4、分别计算块内最大1游程长度与最大0游程长度的统计值;
步骤5、分别计算块内最大1游程长度与最大0游程长度的P值;
步骤6、分别将计算得出的P值与显著性水平α进行比较,如果块内最大1游程长度的 P值≥α值,则表示待检序列通过块内最大游程检测;如果块内最大0游程长度的P值≥α值,则表示待检序列通过块内最大游程检测。
实施例1
本实施例中块内最大1、0游程检测合并优化实现方法步骤是以待检的n(n为8的整数倍)比特字节序列B=B1B2...Bn/8和显著性水平α为例,包括以下过程:
第一步:建立3个查找表,每个表的处理比特宽度为8;
当8个比特ε01,…,ε7和1个字节x之间的顺序关系是B=27ε0+26ε1+…+ε7时,三个表分别如下:
当8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε7+26ε6+…+ε0时,三个表分别如下:
其中,对于表T1:其中0≤Z≤255,T1(Z)表示8比特的Z中以比特1结尾的逆向1游程的长度,其中0≤Z≤255;对于表T2:T2(Z)表示8比特的Z中以比特1开始的顺向的1游程(从ε0开始往下标递增方向)的长度,其中0≤Z≤255;对于表T3:T3(Z)表示8比特的Z 中最大1游程的长度,其中0≤Z≤255。
为方便理解,对三张表进行举例说明:
假设8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε0+26ε1+…+ε7,则对Z=215,ε01,…,ε7=1,1,0,1,0,1,1,1。此时,
T1(Z)为3,表示从ε7至ε5有一个逆序的长度为3的1游程;
T2(Z)为2,表示从ε0至ε1有一个正序的长度为2的1游程;
T3(Z)为3,表示其中最大的1游程长度为3,是ε5至ε7的1游程。
假设8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε7+26ε6+…+ε0(刚好与上面相反),则对Z=215,ε01,…,ε7=1,1,1,0,1,0,1,1(刚好与上面相反),此时,
T1(Z)为2,表示从ε7至ε6有一个逆序的长度为2的1游程;
T2(Z)为3,表示从ε0至ε2有一个正序的长度为3的1游程;
T3(Z)为3,表示其中最大的1游程长度为3,是ε0至ε2的1游程。
第二步:将长度为n比特的待检字节序列划分为N个长度为m的非重叠子序列,舍弃多余的比特,其中,n为8的整数倍,m为分块中最大游程检测的参数,表示每一个分块的大小,m取8或128或10000,GM/T 0005规定m取10000。
第三步:如图2所示,计算每个子序列中最大1游程的长度,具体包括:
步骤3.1、将当前子序列的最大1游程长度rmax (1)、当前1游程长度r(1)、最大0游程长度rmax (0)、当前0游程长度r(0)均初始化为0,即rmax (1)=rmax (0)=r(1)=r(0)=0。
步骤3.2、判断当前子序列中是否还有未处理的字节,若是进入步骤3.3,若不是,则进入步骤3.8;
步骤3.3、读取子序列中未处理的第一个字节序为当前字节X,并计算字节Y=X⊕255;步骤3.4、分别对字节X和字节Y查T1表,并分别累加到当前1游程长度和当前0游程长度:
r(1)=r(1)+T1(X)
r(0)=r(0)+T1(Y);
步骤3.5、根据字节对X查T3表得到的值与当前1游程长度值更新最大1游程长度;根据字节Y查T3表得到的值与当前0游程长度值更新最大0游程长度:
rmax (1)=max(rmax (1),r(1),T3(X))
rmax (0)=max(rmax (0),r(0),T3(Y));
步骤3.6、若字节X值不等于255,则将当前1游程长度值重新设定为X查T2表的值,即r(1)=T2(X);若字节Y值不等于255,则将当前0游程长度值重新设定为Y查T2表的值,即r(0)=T2(Y);
步骤3.7、将当前字节标记为已处理字节;跳转到步骤3.2;
步骤3.8、返回当前子序列的最大长度1游程的长度rmax (1)和最大长度0游程的长度rmax (0)
第四步:计算统计值:将每个子序列的最大游程长度计算结果分别归入最大1游程长度集合与最大0游程长度集合,得到集合{v0 (1),v1 (1),…,v6 (1)}、{v0 (0),v1 (0),…,v6 (0)};其中,K, 0≤K≤6取值见表1,vi,0≤i≤K取值见表2;
块内最大1游程检测的统计值V(1)
块内最大1游程检测的统计值V(0)
其中,πi,0≤i≤K,0≤K≤6的取值见表3;GM/T 0005规定K的取值为:当m为8时, K取3,当m为128时,K取5,当m为10000时,K取6。
第五步:计算P值:
块内最大1游程检测的P值:
P_value(1)=igamc(3,V(1)/2)
块内最大0游程检测的P值:
P_value(0)=igamc(3,V(0)/2)
其中,igamc表示余不完全伽马函数。
第六步:将计算得出的P值结果与显著性水平α进行比较,若P_value(1)≥α,则块内最大1游程检测的结果为“检测通过”;否则,块内最大1游程检测的结果为“检测不通过”;若的P_value(0)≥α,则块内最大0游程检测的结果为“检测通过”;否则,块内最大0游程检测的结果为“检测不通过”。
本实施例提出的检测方法相较于传统方法的有益效果为:
1、本发明直接对字节数据处理,无需传统做法“字节转比特”的操作,既降低了计算量,又减少了计算复杂度。
2、本发明统计序列的最大游程长度采用字节处理方式,并对字节用查表的方式加速实现。
3、查找表的规模充分考虑了各类工业控制系统安全防护设备的能力,块内最大1游程和块内最大0游程的查找表进行了充分的复用,使得整个表只有3个,每个表256字节,表的总规模控制在1KB之内,在各类工业控制系统安全防护设备上均能毫无压力的实现。
4、查找表的建立可在具体执行前的任何阶段执行。一种最典型、最常见的方式为在设备启动时建立查找表。
5、将块内最大1游程检测和块内最大0游程检测充分融合在一起实现,做到一次数据加载就可以得到块内最大1游程检测的结果和块内最大0游程检测,既减少了计算的复杂度、有提升了检测性能。
6、计算量对比。使用传统实现方法,实现块内最大1游程检测时统计一个m比特的子序列的最大1游程长度,需要执行m次数据加载、3m/2次比较、m/2次加法以及一定的赋值运算,统计一个m比特的子序列的最大0游程长度的代价也是相同的,即统计一个m比特的子序列的最大1游程长度和最大0游程长度,需要执行2m次数据加载、3m次比较、 m次加法以及一定的赋值运算;而本算法中只需执行m/8次数据加载、3m/4次比较、m/4 次加法、约3m/4次查表运算和一定的赋值操作,大大降低了计算复杂度。
实施例2
在实施例1的基础上,本发明还提供了一种基于实施例1的块内最大1游程检测方法的检测装置,包括:
查找表建立模块,用于建立查找表;
块内最大1游程统计模块,用于根据查找表统计待检序列的所有子序列的块内最大1游程长度,并归入集合;
统计值计算模块,用于根据块内最大1游程统计模块输出的集合计算统计值;
结果判断模块,用于根据统计值计算P值,并将计算得出的P值与显著性水平α进行比较,若P≥α,则返回“检测通过”;否则,返回“检测不通过”。
如图3所示,本实施例提出的检测装置的具体执行过程为:
步骤A、装置初始化,查找表建立模块建立三张查找表,查找表驻留内存中;
步骤B、将待检序列输入块内最大1游程统计模块,由块内最大1游程统计模块根据查找表统计待检序列的所有子序列的块内最大1游程长度,归入集合{v0,v1,…,v6},并输出;
步骤C、统计值计算模块根据块内最大1游程统计模块输出的集合{v0,v1,…,v6}计算并得到统计值V;
步骤D、结果判断模块根据统计值计算模块得到的统计值V计算P值 P_value=igamc(3,V/2),并将计算得出的P值与显著性水平α进行比较,最终返回检测结果。
本发明提供了两种优选的查找表建立时机:
1、在写代码时就固定在代码中;装置启动/代码加载时就直接将表加载成功。
2、查找表在执行块内最大1游程检测前建立(比如装置上电时)。
本发明还提供了一种优先级较次的建立时机:查找表在具体执行块内最大游程检测算法是才临时建立,执行完释放。但该种查找表方式因建立时间计算到块内最大游程检测内,会降低检测速度。
以本发明提出的检测方法与传统方案为例进行对比:
表4传统做法和本发明的有益效果(与传统做法对比)
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。如果本领域技术人员,在不脱离本发明的精神所做的非实质性改变或改进,都应该属于本发明权利要求保护的范围。
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。

Claims (7)

1.一种块内最大1、0游程检测合并优化实现方法,其特征在于,包括以下过程:
步骤1、进行预处理,建立查找表;
步骤2、进行序列分块,将待检字节序列划分为N个子序列;
步骤3、根据建立的查找表,基于字节统计分别进行每个子序列中最大游程长度计算,得到每个子序列的最大1游程长度和最大0游程长度,并分别归入最大1游程长度集合、最大0游程长度集合;
步骤4、分别计算块内最大1游程长度与最大0游程长度的统计值;
步骤5、分别计算块内最大1游程长度与最大0游程长度的P值;
步骤6、分别将计算得出的P值与显著性水平α进行比较,如果块内最大1游程长度的P值≥α值,则表示待检序列通过块内最大游程检测;如果块内最大0游程长度的P值≥α值,则表示待检序列通过块内最大游程检测;
所述步骤5中计算块内最大1游程长度与最大0游程长度的P值的具体过程为:
块内最大1游程检测的P值:
P_value(1)=igamc(3,V(1)/2)
块内最大0游程检测的P值:
P_value(0)=igamc(3,V(0)/2)
其中,igamc表示余不完全伽马函数,V(1)为块内最大1游程检测的统计值,V(0)为块内最大0游程检测的统计值。
2.根据权利要求1所述的块内最大1、0游程检测合并优化实现方法,其特征在于,所述步骤1中建立查找表的过程包括:建立3个查找表,每个表的处理比特宽度为8;
当8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε0+26ε1+…+ε7时,三个表分别如下:
Figure FDA0004073335750000011
Figure FDA0004073335750000012
Figure FDA0004073335750000021
Figure FDA0004073335750000022
Figure FDA0004073335750000023
Figure FDA0004073335750000024
Figure FDA0004073335750000025
当8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε7+26ε6+…+ε0时,三个表分别如下:
Figure FDA0004073335750000026
Figure FDA0004073335750000027
Figure FDA0004073335750000031
Figure FDA0004073335750000032
Figure FDA0004073335750000033
Figure FDA0004073335750000034
Figure FDA0004073335750000035
其中,对于表T1:其中0≤Z≤255,T1(Z)表示8比特的Z中以比特1结尾的逆向1游程的长度,其中0≤Z≤255;对于表T2:T2(Z)表示8比特的Z中以比特1开始的顺向的1游程的长度,其中0≤Z≤255;对于表T3:T3(Z)表示8比特的Z中最大1游程的长度,其中0≤Z≤255。
3.根据权利要求2所述的块内最大1、0游程检测合并优化实现方法,其特征在于,所述步骤2具体方法为:将长度为n比特的待检字节序列划分为N个长度为m的非重叠子序列,舍弃多余的比特,其中,
Figure FDA0004073335750000041
n为8的整数倍,m为分块中最大游程检测的参数,表示每一个分块的大小,根据所需标准进行取值。
4.根据权利要求3所述的块内最大1、0游程检测合并优化实现方法,其特征在于,所述步骤3中每个子序列中最大游程长度计算过程为:
步骤3.1、将当前子序列的最大1游程长度rmax (1)、当前1游程长度r(1)、最大0游程长度rmax (0)、当前0游程长度r(0)均初始化为0,即rmax (1)=rmax (0)=r(1)=r(0)=0;
步骤3.2、判断当前子序列中是否还有未处理的字节,若是进入步骤3.3,若不是,则进入步骤3.8;
步骤3.3、读取子序列中未处理的第一个字节序为当前字节X,并计算字节Y=X⊕255;
步骤3.4、分别对字节X和字节Y查T1表,并分别累加到当前1游程长度和当前0游程长度:
r(1)=r(1)+T1(X)
r(0)=r(0)+T1(Y);
步骤3.5、根据字节对X查T3表得到的值与当前1游程长度值更新最大1游程长度;根据字节Y查T3表得到的值与当前0游程长度值更新最大0游程长度:
rmax (1)=max(rmax (1),r(1),T3(X))
rmax (0)=max(rmax (0),r(0),T3(Y));
步骤3.6、若字节X值不等于255,则将当前1游程长度值重新设定为X查T2表的值,即r(1)=T2(X);若字节Y值不等于255,则将当前0游程长度值重新设定为Y查T2表的值,即r(0)=T2(Y);
步骤3.7、将当前字节标记为已处理字节;跳转到步骤3.2;
步骤3.8、返回当前子序列的最大长度1游程的长度rmax (1)和最大长度0游程的长度rmax (0)
5.根据权利要求4所述的块内最大1、0游程检测合并优化实现方法,其特征在于,所述步骤4中计算块内最大1游程长度与最大0游程长度的统计值的具体过程为:将每个子序列的最大游程长度计算结果分别归入最大1游程长度集合与最大0游程长度集合,得到集合{v0 (1),v1 (1),…,v6 (1)}、{v0 (0),v1 (0),…,v6 (0)};
块内最大1游程检测的统计值V(1)
Figure FDA0004073335750000051
块内最大0游程检测的统计值V(0)
Figure FDA0004073335750000052
6.一种基于权利要求1-5任一所述的块内最大1、0游程检测合并优化实现方法的检测装置,其特征在于,包括:
查找表建立模块,用于建立查找表;
块内最大游程统计模块,用于根据查找表统计输入的待检序列的所有子序列的最大1游程长度和最大0游程长度,并分别归入最大1游程长度集合、最大0游程长度集合;
统计值计算模块,用于根据块内最大1游程统计模块输出的集合分别块内最大1、0游程检测的V值;
结果判断模块,用于根据统计值分别计算块内最大1、0游程检测的P值,并将计算得出的P值与显著性水平α进行比较,返回块内最大1游程检测的结果和块内最大0游程检测的结果。
7.根据权利要求6所述的检测装置,其特征在于,所述检测装置的具体执行过程为:
步骤A、装置初始化,查找表建立模块建立三张查找表,查找表驻留内存中;
步骤B、将待检序列输入块内最大游程统计模块,由块内最大游程统计模块根据查找表统计待检序列的所有子序列的所有子序列的最大1游程长度和最大0游程长度,归入集合,并输出;
步骤C、统计值计算模块根据块内最大游程统计模块输出的集合计算得到统计值V(1)、V(0)
步骤D、结果判断模块根据统计值计算模块得到的统计值计算P值P_value(1)、P_value(0),并与显著性水平α进行比较,若P_value(1)≥α,则块内最大1游程检测的结果为“检测通过”;否则,块内最大1游程检测的结果为“检测不通过”;若的P_value(0)≥α,则块内最大0游程检测的结果为“检测通过”;否则,块内最大0游程检测的结果为“检测不通过”。
CN202011536493.2A 2020-12-23 2020-12-23 一种块内最大1、0游程检测合并优化实现方法及装置 Active CN112861121B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011536493.2A CN112861121B (zh) 2020-12-23 2020-12-23 一种块内最大1、0游程检测合并优化实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011536493.2A CN112861121B (zh) 2020-12-23 2020-12-23 一种块内最大1、0游程检测合并优化实现方法及装置

Publications (2)

Publication Number Publication Date
CN112861121A CN112861121A (zh) 2021-05-28
CN112861121B true CN112861121B (zh) 2023-04-07

Family

ID=75996424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011536493.2A Active CN112861121B (zh) 2020-12-23 2020-12-23 一种块内最大1、0游程检测合并优化实现方法及装置

Country Status (1)

Country Link
CN (1) CN112861121B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1668995A (zh) * 2002-06-06 2005-09-14 克瑞迪科公司 用于改善伪随机数发生器的输出的不可预测性的方法
CN101888282A (zh) * 2010-04-22 2010-11-17 北京邮电大学 一种基于随机性分析的数据加密功能的检验方法
CN104038232A (zh) * 2014-05-09 2014-09-10 安庆师范学院 基于二次异或运算的测试数据压缩与解压缩方法
CN105678083A (zh) * 2016-01-11 2016-06-15 成都卫士通信息产业股份有限公司 一种具有单比特频数检测和块内频数检测的快速检测方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675113B2 (en) * 2002-03-26 2004-01-06 Koninklijke Philips Electronics N.V. Monobit-run frequency on-line randomness test
CN101452377A (zh) * 2007-12-07 2009-06-10 中国科学院软件研究所 一种快速的二元推导检测实现方法
JP2014075082A (ja) * 2012-10-05 2014-04-24 Renesas Electronics Corp 乱数生成器および乱数生成方法
CN105634728A (zh) * 2016-01-11 2016-06-01 成都卫士通信息产业股份有限公司 一种块内频数检测方法
CN108717353B (zh) * 2018-05-24 2021-04-06 太原理工大学 一种具有检测校正功能的真随机数产生方法与装置
CN110308892B (zh) * 2019-07-01 2023-08-22 湖南国科微电子股份有限公司 一种基于查表法的游程测试方法
CN110851113A (zh) * 2020-01-16 2020-02-28 江苏芯盛智能科技有限公司 字节序列随机性的检测方法、装置、存储介质及电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1668995A (zh) * 2002-06-06 2005-09-14 克瑞迪科公司 用于改善伪随机数发生器的输出的不可预测性的方法
CN101888282A (zh) * 2010-04-22 2010-11-17 北京邮电大学 一种基于随机性分析的数据加密功能的检验方法
CN104038232A (zh) * 2014-05-09 2014-09-10 安庆师范学院 基于二次异或运算的测试数据压缩与解压缩方法
CN105678083A (zh) * 2016-01-11 2016-06-15 成都卫士通信息产业股份有限公司 一种具有单比特频数检测和块内频数检测的快速检测方法

Also Published As

Publication number Publication date
CN112861121A (zh) 2021-05-28

Similar Documents

Publication Publication Date Title
CN109359439B (zh) 软件检测方法、装置、设备及存储介质
JP6055548B2 (ja) データストリームにおいてデータパターンを検出する装置、方法、及びネットワークサーバ
US7590916B2 (en) Cyclic redundancy checking value calculator
CN110308892B (zh) 一种基于查表法的游程测试方法
US8370274B2 (en) Apparatuses and methods for deterministic pattern matching
US11372929B2 (en) Sorting an array consisting of a large number of elements
US7886210B2 (en) Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs
CN105634728A (zh) 一种块内频数检测方法
CN111370064A (zh) 基于simd的哈希函数的基因序列快速分类方法及系统
CN110770725A (zh) 数据处理方法及装置
CN112861121B (zh) 一种块内最大1、0游程检测合并优化实现方法及装置
WO2020001638A1 (zh) 一种提高Turbo译码性能的方法、装置及计算机设备
Wang et al. Reliable and secure memories based on algebraic manipulation correction codes
CN112417474A (zh) 一种随机数双比特检验的优化实现方法及其装置
CN108270508B (zh) 一种循环冗余校验crc实现方法、装置及网络设备
CN105678083A (zh) 一种具有单比特频数检测和块内频数检测的快速检测方法
CN105681024A (zh) 一种单比特频数检测方法
US10171103B1 (en) Hardware data compression architecture including shift register and method thereof
JP2015103077A (ja) 演算処理装置、情報処理装置、及び、情報処理装置の制御方法
US8185572B2 (en) Data correction circuit
CN110147289B (zh) 异常消息筛选方法和装置以及计算机可读存储介质
CN112667395A (zh) 一种块内最大1游程检测方法及装置
CN112632558B (zh) 一种工控安全设备的分块中最长的零行程测试方法及装置
CN114942861A (zh) Crc计算方法、装置、计算机设备及存储介质
CN113741972A (zh) 一种sm3算法的并行处理方法及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant