CN112632558B - 一种工控安全设备的分块中最长的零行程测试方法及装置 - Google Patents

一种工控安全设备的分块中最长的零行程测试方法及装置 Download PDF

Info

Publication number
CN112632558B
CN112632558B CN202011536636.XA CN202011536636A CN112632558B CN 112632558 B CN112632558 B CN 112632558B CN 202011536636 A CN202011536636 A CN 202011536636A CN 112632558 B CN112632558 B CN 112632558B
Authority
CN
China
Prior art keywords
byte
longest
longest zero
length
calculating
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
CN202011536636.XA
Other languages
English (en)
Other versions
CN112632558A (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 CN202011536636.XA priority Critical patent/CN112632558B/zh
Publication of CN112632558A publication Critical patent/CN112632558A/zh
Application granted granted Critical
Publication of CN112632558B publication Critical patent/CN112632558B/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明提出了一种工控安全设备的分块中最长零行程测试方法,包括:步骤1、建立查找表并计算判断阈值;步骤2、进行待检字节序列分块;步骤3、通过查表法计算每个子序列中最长零游程长度,并归入最长零游程长度集合;步骤4、根据最长零游程长度集合计算统计值;步骤5、将计算得出的统计值与判断阈值进行比较,如果统计值小于等于判断阈值,则表示待检序列通过块内最长零行程测试。本发明直接对字节数据处理,无需传统做法“字节转比特”的操作,既降低了计算量,又减少了计算复杂度,采用字节处理方式,并用查表的方式加速实现;查找表可复用其它检测项的查找表,不占用额外的存储空间,在各类工业控制系统安全防护设备上均能毫无压力的实现。

Description

一种工控安全设备的分块中最长的零行程测试方法及装置
技术领域
本发明涉及工业控制系统安全检测领域,特别涉及一种工控安全设备的分块中最长的零行程测试方法及装置。
背景技术
随着工业控制系统向数字化、网络化的发展,随着两化的深入融合和产业转型升级,工业控制的生产环境已由封闭型向开放型转变,流程已从自动化转向智能,这也带来了很多安全问题。联网的工业控制设备和系统继续增加,中高风险工业控制安全漏洞继续增加。由于工业控制系统固有的安全漏洞和网络的开放性,它们所面临的信息安全威胁不断扩大。近年来,针对工业控制系统的网络攻击也层出不穷。为此,国家也相继颁布一系列安全相关的政策法规和标准,其中《中华人民共和国网络安全法》作为国家层面网络安全法律依据,要求网络数据采用措施,防止网络数据泄露或者被窃取、篡改;《中华人民共和国密码法》明确规定关键信息基础设施应当依照法律、法规和密码相关国家标准的要求进行保护。
许多公司投入巨资开发工业控制系统安全保护产品,例如工业防火墙,主机安全保护,垂直隔离设备,工业安全网关等,以确保工业控制系统的安全。随机数发生器,作为工业控制系统安全保护产品中最基本和最核心的安全组件之一,已集成到这些产品中。这些工业控制系统安全保护产品中,有些具有强大的处理能力,而有些则稍弱,但基本上使用32位/64位处理器。根据国家密码管理局发布的密码工业标准GM/T 0005《随机数检测规范》的技术要求,必须仔细测试由随机数生成器生成的随机数的质量。块中最长的零行程测试(Test for the Longest Run of Zeros in a Block)是最常见的随机数质量检查方法之一。在这些工业控制系统安全防护产品中,在块中实现最长的零行程测试时,应充分考虑安全防护产品的实际处理能力。
传统分块中最长的零行程测试实现方法存在如下不足,导致其计算效率非常低:
1)待检数据的字节型表示与测试实现的逐比特执行之间的矛盾。在工业控制系统的安全防护类产品中的待检数据通常是从随机数发生器产生的字节型数据,而不可能比特型数据。而传统做法采用基于比特的处理方式,即逐比特地处理待检数据。这就需要增加一个步骤,将字节型待检数据转为比特序列。此举既增加了测试的流程复杂度,又增加了测试的时间。对n=106比特级的待检序列,此举需要n/8次字节数据加载,n次算数运算(移位)和n次数据存储,这些都是百万级别的数值处理次数。
2)比特级的最长零行程统计实现方式严重浪费CPU计算资源。传统实现在统计最长零行程长度的时候,使用逐比特筛查的方式。对n=106比特级的待检序列,将进行百万级别的比特数据加载、比较和数值更新。传统实现方式未充分考虑工业控制系统安全设备的CPU已经具备32位甚至64位的处理能力,严重浪费了CPU的字宽,32比特/64比特的处理器每次仅处理1比特数据。
发明内容
针对现有技术中存在的问题,提供了一种工业控制系统安全防护产品的分块中最长的零行程测试方法、装置,解决分块中最长的零行程测试在工业控制系统的安全保护产品中实现时,执行流程复杂和检验效率低的问题。
本发明采用的技术方案如下:一种工控安全设备的分块中最长零行程测试方法,包括以下过程:
步骤1、进行预处理,建立三个查找表,并计算基于显著性水平α的判断阈值Tα
步骤2、进行待检字节序列分块,将待检字节序列划分为N个子序列;
步骤3、对每个子序列中每个字节进行转换,并基于预处理建立的查找表,通过查表法计算每个子序列中最长零游程的长度,并将每个子序列的计算结果归入最长零游程长度集合;
步骤4、根据最长零游程长度集合计算统计值V;
步骤5、将计算得出的统计值V与判断阈值Tα进行比较,如果V≤Thα值,则表示待检序列通过块内最长零行程测试,否则表示不通过。
进一步的,所述步骤1中建立查找表过程包括:建立三个查找表,每个表的处理比特宽度为8;
当8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε0+26ε1+…+ε7时,三个表分别如下:
表T1={
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,8
};
表T2={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8
};
表T3={
0,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,2,2,2,2,2,2,2,3,3,3,3,3,4,4,5,6,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
2,2,2,2,2,2,2,3,2,2,2,2,2,2,3,4,3,3,3,3,3,3,3,3,4,4,4,4,5,5,6,7,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,2,2,2,2,2,2,2,3,3,3,3,3,4,4,5,6,
2,2,2,2,2,2,2,3,2,2,2,2,2,2,3,4,2,2,2,2,2,2,2,3,2,2,2,2,3,3,4,5,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8
};
当8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε7+26ε6+…+ε0时,三个表分别如下:
表T1={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8
};
表T2={
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,8
};
表T3={
0,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,2,2,2,2,2,2,2,3,3,3,3,3,4,4,5,6,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
2,2,2,2,2,2,2,3,2,2,2,2,2,2,3,4,3,3,3,3,3,3,3,3,4,4,4,4,5,5,6,7,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,2,2,2,2,2,2,2,3,3,3,3,3,4,4,5,6,
2,2,2,2,2,2,2,3,2,2,2,2,2,2,3,4,2,2,2,2,2,2,2,3,2,2,2,2,3,3,4,5,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8
};
其中,对于表T1:其中0≤Z≤255,T1(Z)表示8比特的Z中以比特1结尾的逆向壹行程(从ε7开始往下标递减方向)的长度,其中0≤Z≤255;对于表T2:T2(Z)表示8比特的Z中以比特1开始的顺向的壹行程(从ε0开始往下标递增方向)的长度,其中0≤Z≤255;对于表T3:T3(Z)表示8比特的Z中最大壹行程的长度,其中0≤Z≤255。
进一步的,所述步骤1中判断阈值计算方法为:
Tα=max{z|igamc(3,z/2)≥α}
其中,igamc为余不完全伽马函数。
进一步的,所述步骤2中待检字节序列分块的具体方法为:将长度为n比特的待检字节序列划分为N个长度为m的非重叠子序列,舍弃多余的比特,其中,
Figure GDA0002963542320000052
n为8的整数倍,m为分块中最长的零行程测试的参数,表示每一个分块的大小,m取8或128或10000。
进一步的,所述步骤3中计算每个子序列中最长零游程的长度具体过程为:
步骤3.1、将当前子序列的最长零行程的长度R和当前行程长度r初始化为0。
步骤3.2、判断子序列中是否还有未处理的字节,若是进入步骤3.3,若不是,则进入步骤3.8。
步骤3.3、读取子序列中未处理的第一个字节序为当前字节E,并对字节E进行转换,
F=E⊕255;
步骤3.4、对字节F查T1表,并累加到当前零行程长度:
r=r+T1(F);
步骤3.5、根据字节F查T3表得到的值与当前零行程长度值更新最大零行程长度:
R=max(R,r,T3(F));
步骤3.6、若字节值F不等于255,则将当前零行程长度值重新设定为F查T2表的值:
r=T2(X)
步骤3.7、将当前字节标记为已处理字节;跳转到步骤3.2。
步骤3.8、返回当前子序列的最长零行程的长度R,并归入最长零行程长度集合。
进一步的,所述步骤4中计算统计值的具体过程为:将每一个子序列中最长零行程长度的计算结果归入长零行程长度集合,得到集合{v0,v1,…,vK},其中,0≤K≤6,GM/T0005规定K的取值为:当m为8时,K取3,当m为128时,K取5,当m为10000时,K取6;根据集合的值计算统计值:
Figure GDA0002963542320000051
本发明还提供了一种基于上述的工控安全设备的分块中最长零行程测试方法的测试装置,包括:
查找表建立模块,用于建立查找表;
判断阈值计算模块,用于计算判断阈值;
块内最长零行程统计模块,用于根据查找表统计待检序列的所有子序列的块内最长零行程长度,并归入集合;
统计值计算模块,用于根据块内最长零行程统计模块输出的集合计算统计值;
结果判断模块,用于将统计值V与判断阈值Thα进行比较,若V≤Thα,则返回“测试通过”;否则,返回“测试不通过”。
进一步的,所述测试装置的具体执行过程为:
步骤A、装置初始化,查找表建立模块建立三张查找表,查找表驻留内存中;
步骤B、判断阈值计算模块根据输入的显著性水平α计算判断阈值Thα
步骤C、将待检序列输入块内最长零行程统计模块,由块内最长零行程统计模块根据查找表统计待检序列的所有子序列的块内最长零行程统计,归入集合,并输出;
步骤D、统计值计算模块根据块内最长零行程统计模块的集合计算并得到统计值V;
步骤E、结果判断模块根据统计值计算模块得到的统计值V与判断阈值计算模输出的判断阈值Thα进行比较,最终返回测试结果。
与现有技术相比,采用上述技术方案的有益效果为:
1)本发明直接对字节数据处理,无需传统做法“字节转比特”的操作,既降低了计算量,又减少了计算复杂度。
2)本发明统计序列的最长零行程长度采用字节处理方式,并对字节用查表的方式加速实现,避免了逐比特统计的方法。
3)三个表是复用的随机性检测的其它检测项的查找表,因此不占用额外的存储空间;即使要计算这三个表的大小,也非常小,仅占用768字节,不足1KB。因此,查找表的规模充分考虑了各类工业控制系统安全防护设备的能力,在各类工业控制系统安全防护设备上均能毫无压力的实现。
4)将统计值V和利用显著性水平α导出的阈值Thα直接比较,减少了计算步骤。
5)传统实现方法统计一个m比特的子序列的最长零行程长度,需要执行m次数据加载、3m/2次比较、m/2次加法以及一定的赋值运算;而本算法中只需执行m/8次数据加载、3m/8次比较、m/8次异或、m/4次加法、约3m/8次查表以及一定的赋值运算。相比之下,本发明的计算量小得多。
附图说明
图1为本发明提出的工业控制系统安全防护产品的分块中最长零行程测试方法流程图。
图2本发明提出的子序列的最长零行程的计算流程图。
图3为本发明提出的测试装置测试流程图。
具体实施方式
下面结合附图对本发明做进一步描述。
本发明提出一种工业控制系统安全防护产品的分块中最长的零行程测试方法、装置,解决分块中最长的零行程测试在工业控制系统的安全保护产品中实现时,执行流程复杂和检验效率低的问题。
在介绍本发明的具体方案之前,先对方案中记号、缩写与符号进行说明:
·n:待检数据的比特长度;实际中n为8的整数倍。
·m:分块中最长的零行程测试的参数,表示每一个分块的大小,取值见表1。
·N:待检数据划分得到的分块的个数,
Figure GDA0002963542320000071
·B=B0B1...Bn/8-1:n比特待检序列的字节表示形式。
·ε=ε0ε1...εn-1:n比特待检序列的比特表示形式。
·α:显著性水平。通常取值为0.05、0.01、0.001、0.0001等。
·igamc:余不完全伽马函数。
·
Figure GDA0002963542320000072
向下取整,
Figure GDA0002963542320000073
表示小于x的最大整数,例如
Figure GDA0002963542320000074
表1测试参数取值
Figure GDA0002963542320000075
Figure GDA0002963542320000081
具体方案如下:
如图1所示,一种工控安全设备的分块中最长零行程测试方法,包括以下过程:
步骤1、进行预处理,建立三个查找表,并计算基于显著性水平α的判断阈值Tα;步骤2、进行待检字节序列分块,将待检字节序列划分为N个子序列;
步骤3、对每个子序列中每个字节进行转换,并基于预处理建立的查找表,通过查表法计算每个子序列中最长零游程的长度,并将每个子序列的计算结果归入最长零游程长度集合;
步骤4、根据最长零游程长度集合计算统计值V;
步骤5、将计算得出的统计值V与判断阈值Tα进行比较,如果V≤Thα值,则表示待检序列通过块内最长零行程测试,否则表示不通过。
实施例1
本实施例中块内最长零行程检测方法步骤是以待检的n(n为8的整数倍)比特字节序列B=B1B2...Bn/8和显著性水平α为例,包括以下过程:
第一步:建立三个查找表,每个表的处理比特宽度为8;
当8个比特ε01,…,ε7和1个字节x之间的顺序关系是B=27ε0+26ε1+…+ε7时,三个表分别如下:
表T1={
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,8
};
表T2={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8
};
表T3={
0,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,2,2,2,2,2,2,2,3,3,3,3,3,4,4,5,6,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
2,2,2,2,2,2,2,3,2,2,2,2,2,2,3,4,3,3,3,3,3,3,3,3,4,4,4,4,5,5,6,7,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,2,2,2,2,2,2,2,3,3,3,3,3,4,4,5,6,
2,2,2,2,2,2,2,3,2,2,2,2,2,2,3,4,2,2,2,2,2,2,2,3,2,2,2,2,3,3,4,5,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8
};
当8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε7+26ε6+…+ε0时,三个表分别如下:
表T1={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8
};
表T2={
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,8
};
表T3={
0,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,2,2,2,2,2,2,2,3,3,3,3,3,4,4,5,6,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
2,2,2,2,2,2,2,3,2,2,2,2,2,2,3,4,3,3,3,3,3,3,3,3,4,4,4,4,5,5,6,7,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,1,1,1,2,1,1,2,3,2,2,2,2,3,3,4,5,
1,1,1,2,1,1,2,3,1,1,1,2,2,2,3,4,2,2,2,2,2,2,2,3,3,3,3,3,4,4,5,6,
2,2,2,2,2,2,2,3,2,2,2,2,2,2,3,4,2,2,2,2,2,2,2,3,2,2,2,2,3,3,4,5,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8
};
其中,对于表T1:其中0≤Z≤255,T1(Z)表示8比特的Z中以比特1结尾的逆向壹行程的长度,其中0≤Z≤255;对于表T2:T2(Z)表示8比特的Z中以比特1开始的顺向的壹行程(从ε0开始往下标递增方向)的长度,其中0≤Z≤255;对于表T3:T3(Z)表示8比特的Z中最大壹行程的长度,其中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的壹行程;
T2(Z)为2,表示从ε0至ε1有一个正序的长度为2的壹行程;
T3(Z)为3,表示其中最大的壹行程长度为3,是ε5至ε7的壹行程。
假设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的壹行程;
T2(Z)为3,表示从ε0至ε2有一个正序的长度为3的壹行程;
T3(Z)为3,表示其中最大的壹行程长度为3,是ε0至ε2的壹行程。
在建立查找表的同时,基于显著性水平α的判断阈值Tα,Tα=max{z|igamc(3,z/2)≥α},其中,igamc为余不完全伽马函数。本实施例中,根据标准GM/T 0005中规定显著性水平取0.01,此时,Tα≈16.811894(保留六位小数)。
第二步:将长度为n比特的待检字节序列划分为N个长度为m的非重叠子序列,舍弃多余的比特,其中,
Figure GDA0002963542320000111
n为8的整数倍,m为分块中最长的零行程测试的参数,表示每一个分块的大小,m取8或128或10000。
第三步:如图2所示,计算每个子序列中最长零行程的长度,具体包括:
计算每个子序列中最长零游程的长度具体过程为:
步骤3.1、将当前子序列的最长零行程的长度R和当前行程长度r初始化为0。
步骤3.2、判断子序列中是否还有未处理的字节,若是进入步骤3.3,若不是,则进入步骤3.8。
步骤3.3、读取子序列中未处理的第一个字节序为当前字节E,并对字节E进行转换,
Figure GDA0002963542320000112
步骤3.4、对字节F查T1表,并累加到当前零行程长度:
r=r+T1(F);
步骤3.5、根据字节F查T3表得到的值与当前零行程长度值更新最大零行程长度:
R=max(R,r,T3(F));
步骤3.6、若字节值F不等于255,则将当前零行程长度值重新设定为F查T2表的值:
r=T2(X)
步骤3.7、将当前字节标记为已处理字节;跳转到步骤3.2。
步骤3.8、返回当前子序列的最长零行程的长度R,并归入最长零行程长度集合。
第四步:计算统计值:将每一个子序列中最长零行程长度的计算结果归入长零行程长度集合,得到集合{v0,v1,…,vK},;根据集合的值计算统计值:
Figure GDA0002963542320000121
其中,πi,vi,0≤i≤K,0≤K≤6的取值见表1,GM/T 0005规定K的取值为:当m为8时,K取3,当m为128时,K取5,当m为10000时,K取6。
第五步:将统计值V与判断阈值Thα进行比较,若V≤Thα,则返回“测试通过”;否则,返回“测试不通过”。
实施例2
在实施例1的基础上,本发明还提供了一种基于实施例1的工控安全设备的分块中最长零行程测试方法的测试装置,包括:
查找表建立模块,用于建立查找表;
判断阈值计算模块,用于计算判断阈值;
块内最长零行程统计模块,用于根据查找表统计待检序列的所有子序列的块内最长零行程长度,并归入集合;
统计值计算模块,用于根据块内最长零行程统计模块输出的集合计算统计值;
结果判断模块,用于将统计值V与判断阈值Thα进行比较,若V≤Thα,则返回“测试通过”;否则,返回“测试不通过”。
如图3所示,本实施例提出的测试装置的具体执行过程为:
步骤A、装置初始化,查找表建立模块建立三张查找表,查找表驻留内存中;
步骤B、判断阈值计算模块根据输入的显著性水平α计算判断阈值Thα
步骤C、将待检序列输入块内最长零行程统计模块,由块内最长零行程统计模块根据查找表统计待检序列的所有子序列的块内最长零行程统计,归入集合,并输出;
步骤D、统计值计算模块根据块内最长零行程统计模块的集合计算并得到统计值V;
步骤E、结果判断模块根据统计值计算模块得到的统计值V与判断阈值计算模输出的判断阈值Thα进行比较,最终返回测试结果。
以本发明提出的检测方法与传统方案为例进行对比:
表2传统做法和本发明的有益效果(与传统做法对比)
Figure GDA0002963542320000131
本发明提出的检测方法相较于传统方法的有益效果为:
1、本发明直接对字节数据处理,无需传统做法“字节转比特”的操作,既降低了计算量,又减少了计算复杂度。
2、本发明统计序列的最长零行程长度采用字节处理方式,并对字节用查表的方式加速实现,避免了逐比特统计的方法。
3、三个表是复用的随机性检测的其它检测项的查找表,因此不占用额外的存储空间;即使要计算这三个表的大小,也非常小,仅占用768字节,不足1KB。因此,查找表的规模充分考虑了各类工业控制系统安全防护设备的能力,在各类工业控制系统安全防护设备上均能毫无压力的实现。
4、查找表的建立可在具体执行前的任何阶段执行。一种最典型、最常见的方式为在设备启动时建立查找表。
5、将统计值V和利用显著性水平α导出的阈值Thα直接比较,减少了计算步骤。
6、传统实现方法统计一个m比特的子序列的最长零行程长度,需要执行m次数据加载、3m/2次比较、m/2次加法以及一定的赋值运算;而本算法中只需执行m/8次数据加载、3m/8次比较、m/8次异或、m/4次加法、约3m/8次查表以及一定的赋值运算。相比之下,本发明的计算量小得多。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。如果本领域技术人员,在不脱离本发明的精神所做的非实质性改变或改进,都应该属于本发明权利要求保护的范围。
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。

Claims (8)

1.一种工控安全设备的分块中最长零行程测试方法,其特征在于,包括以下过程:
步骤1、进行预处理,建立三个查找表,并计算基于显著性水平α的判断阈值Thα;
步骤2、进行待检字节序列分块,将待检字节序列划分为N个子序列;
步骤3、对每个子序列中每个字节进行转换,并基于预处理建立的查找表,通过查表法计算每个子序列中最长零游程的长度,并将每个子序列的计算结果归入最长零游程长度集合;
步骤4、根据最长零游程长度集合计算统计值V;
步骤5、将计算得出的统计值V与判断阈值Thα进行比较,如果V≤Thα值,则表示待检序列通过块内最长零行程测试,否则表示不通过;
所述步骤1预处理建立查找表的过程包括:建立三个查找表T1、T2、T3,每个表的处理比特宽度为8;对于表T1:T1(Z)表示8比特的Z中以比特1结尾的逆向壹行程的长度,其中0≤Z≤255;对于表T2:T2(Z)表示8比特的Z中以比特1开始的顺向的壹行程的长度,其中0≤Z≤255;对于表T3:T3(Z)表示8比特的Z中最大壹行程的长度,其中0≤Z≤255。
2.根据权利要求1所述的工控安全设备的分块中最长零行程测试方法,其特征在于,
当8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε0+26ε1+…+ε7时,三个表分别如下:
Figure FDA0003119203280000011
Figure FDA0003119203280000012
Figure FDA0003119203280000013
Figure FDA0003119203280000014
Figure FDA0003119203280000021
Figure FDA0003119203280000022
Figure FDA0003119203280000023
当8个比特ε01,…,ε7和1个字节Z之间的顺序关系是Z=27ε7+26ε6+…+ε0时,三个表分别如下:
Figure FDA0003119203280000024
Figure FDA0003119203280000025
Figure FDA0003119203280000026
Figure FDA0003119203280000027
Figure FDA0003119203280000031
Figure FDA0003119203280000032
Figure FDA0003119203280000033
3.根据权利要求2所述的工控安全设备的分块中最长零行程测试方法,其特征在于,所述步骤1中判断阈值计算方法为:
Thα=max{z|igamc(3,z/2)≥α}
其中,igamc为余不完全伽马函数。
4.根据权利要求3所述的工控安全设备的分块中最长零行程测试方法,其特征在于,所述步骤2中待检字节序列分块的具体方法为:将长度为n比特的待检字节序列划分为N个长度为m的非重叠子序列,舍弃多余的比特,其中,
Figure FDA0003119203280000034
n为8的整数倍,m为分块中最长的零行程测试的参数,表示每一个分块的大小,根据所需标准进行取值。
5.根据权利要求3所述的工控安全设备的分块中最长零行程测试方法,其特征在于,所述步骤3中计算每个子序列中最长零游程的长度具体过程为:
步骤3.1、将当前子序列的最长零行程的长度R和当前行程长度r初始化为0;
步骤3.2、判断子序列中是否还有未处理的字节,若是进入步骤3.3,若不是,则进入步骤3.8;
步骤3.3、读取子序列中未处理的第一个字节序为当前字节E,并对字节E进行转换,
Figure FDA0003119203280000041
步骤3.4、对字节F查T1表,并累加到当前零行程长度:
r=r+T1(F);
步骤3.5、根据字节F查T3表得到的值与当前零行程长度值更新最大零行程长度:
R=max(R,r,T3(F));
步骤3.6、若字节值F不等于255,则将当前零行程长度值重新设定为F查T2表的值:
r=T2(X)
步骤3.7、将当前字节标记为已处理字节;跳转到步骤3.2;
步骤3.8、返回当前子序列的最长零行程的长度R,并归入最长零行程长度集合。
6.根据权利要求4所述的工控安全设备的分块中最长零行程测试方法,其特征在于,所述步骤4中计算统计值的具体过程为:将每一个子序列中最长零行程长度的计算结果归入长零行程长度集合,得到集合{v0,v1,…,vK};根据集合的值计算统计值:
Figure FDA0003119203280000042
7.一种基于权利要求1-6任一所述的工控安全设备的分块中最长零行程测试方法的测试装置,其特征在于,包括:
查找表建立模块,用于建立查找表;
判断阈值计算模块,用于计算判断阈值;
块内最长零行程统计模块,用于根据查找表统计待检序列的所有子序列的块内最长零行程长度,并归入集合;
统计值计算模块,用于根据块内最长零行程统计模块输出的集合计算统计值;
结果判断模块,用于将统计值V与判断阈值Thα进行比较,若V≤Thα,则返回“测试通过”;否则,返回“测试不通过”。
8.根据权利要求7所述的测试装置,其特征在于,所述测试装置的具体执行过程为:
步骤A、装置初始化,查找表建立模块建立三张查找表,查找表驻留内存中;
步骤B、判断阈值计算模块根据输入的显著性水平α计算判断阈值Thα
步骤C、将待检序列输入块内最长零行程统计模块,由块内最长零行程统计模块根据查找表统计待检序列的所有子序列的块内最长零行程统计,归入集合,并输出;
步骤D、统计值计算模块根据块内最长零行程统计模块的集合计算并得到统计值V;
步骤E、结果判断模块根据统计值计算模块得到的统计值V与判断阈值计算模输出的判断阈值Thα进行比较,最终返回测试结果。
CN202011536636.XA 2020-12-23 2020-12-23 一种工控安全设备的分块中最长的零行程测试方法及装置 Active CN112632558B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011536636.XA CN112632558B (zh) 2020-12-23 2020-12-23 一种工控安全设备的分块中最长的零行程测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011536636.XA CN112632558B (zh) 2020-12-23 2020-12-23 一种工控安全设备的分块中最长的零行程测试方法及装置

Publications (2)

Publication Number Publication Date
CN112632558A CN112632558A (zh) 2021-04-09
CN112632558B true CN112632558B (zh) 2021-08-10

Family

ID=75321501

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011536636.XA Active CN112632558B (zh) 2020-12-23 2020-12-23 一种工控安全设备的分块中最长的零行程测试方法及装置

Country Status (1)

Country Link
CN (1) CN112632558B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110798230A (zh) * 2019-11-06 2020-02-14 成都卫士通信息产业股份有限公司 一种游程检测方法、装置及电子设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1668995A (zh) * 2002-06-06 2005-09-14 克瑞迪科公司 用于改善伪随机数发生器的输出的不可预测性的方法
CN101692344B (zh) * 2009-09-15 2011-05-25 中国科学院上海光学精密机械研究所 用于光盘机系统的具有检错功能的efm+数据译码方法
NO336215B1 (no) * 2012-12-27 2015-06-15 Pexip AS Simultan og sløyfefri vektorberegning av alle run-level par i videokomprimering.
CN104038233B (zh) * 2014-05-09 2017-02-22 安庆师范学院 基于相邻位异或运算的测试数据压缩与解压缩方法
CN105678083A (zh) * 2016-01-11 2016-06-15 成都卫士通信息产业股份有限公司 一种具有单比特频数检测和块内频数检测的快速检测方法
CN105681024A (zh) * 2016-01-11 2016-06-15 成都卫士通信息产业股份有限公司 一种单比特频数检测方法
CN105634728A (zh) * 2016-01-11 2016-06-01 成都卫士通信息产业股份有限公司 一种块内频数检测方法
CN108259042A (zh) * 2018-01-23 2018-07-06 程飞 基于公共码表和间隔划分的测试数据压缩与解压缩方法
CN110308892B (zh) * 2019-07-01 2023-08-22 湖南国科微电子股份有限公司 一种基于查表法的游程测试方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110798230A (zh) * 2019-11-06 2020-02-14 成都卫士通信息产业股份有限公司 一种游程检测方法、装置及电子设备

Also Published As

Publication number Publication date
CN112632558A (zh) 2021-04-09

Similar Documents

Publication Publication Date Title
Alawida et al. An image encryption scheme based on hybridizing digital chaos and finite state machine
CN111050020B (zh) 基于压缩感知和双随机加密机制的彩色图像压缩加密方法
CN109359439B (zh) 软件检测方法、装置、设备及存储介质
CN111105339B (zh) 一种基于多维混沌系统和约瑟夫置乱的图像加密方法
CN110308892B (zh) 一种基于查表法的游程测试方法
CN104978521A (zh) 一种实现恶意代码标注的方法及系统
CN116071164B (zh) 一种基于区块链管理的数字资产溯源方法
CN111259397A (zh) 一种基于马尔科夫图和深度学习的恶意软件分类方法
CN105634728A (zh) 一种块内频数检测方法
Bhattacharjee et al. Unified GPU technique to boost confidentiality, integrity and trim data loss in big data transmission
Elmanfaloty et al. A finite precision implementation of an image encryption scheme based on DNA encoding and binarized chaotic cores
CN114374775A (zh) 基于Julia集和DNA编码的图像加密方法
Shakir et al. A new four-dimensional hyper-chaotic system for image encryption
CN112632558B (zh) 一种工控安全设备的分块中最长的零行程测试方法及装置
US6374278B1 (en) Method and apparatus for the generation of statistically random numbers
CN112417474A (zh) 一种随机数双比特检验的优化实现方法及其装置
Lu et al. Cryptanalysis and Improvement of a Chaotic Map-Control-Based and the Plain Image-Related Cryptosystem.
US11921623B2 (en) Device and method for testing a sequence generated by a random number generator
CN105678083A (zh) 一种具有单比特频数检测和块内频数检测的快速检测方法
CN112769545A (zh) 基于相邻像素约瑟夫变换和Mealy状态机的图像加密方法
Kabin et al. Horizontal Attacks using K-Means: Comparison with Traditional Analysis Methods
CN105681024A (zh) 一种单比特频数检测方法
CN113438067B (zh) 一种压缩密钥猜测空间的侧信道攻击方法
CN109559269A (zh) 一种图像加密的方法及终端
CN112667395A (zh) 一种块内最大1游程检测方法及装置

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