CN102195773A - 一种分组密码算法分析方法及系统 - Google Patents
一种分组密码算法分析方法及系统 Download PDFInfo
- Publication number
- CN102195773A CN102195773A CN2010101161638A CN201010116163A CN102195773A CN 102195773 A CN102195773 A CN 102195773A CN 2010101161638 A CN2010101161638 A CN 2010101161638A CN 201010116163 A CN201010116163 A CN 201010116163A CN 102195773 A CN102195773 A CN 102195773A
- Authority
- CN
- China
- Prior art keywords
- block cipher
- analysis
- test
- unit
- basic module
- 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.)
- Granted
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种分组密码算法分析方法及系统。该方法包括:首先定义高级描述语言,其次用户根据高级描述语言,将分组密码算法描述成多个分组密码算法基本组件的组合,然后将分组密码算法基本组件解析成可被计算机识别的C语言代码,再将C语言代码编译、链接,生成可执行的分组密码算法待测组件,最后根据用户的操作请求配置测试计划,选择所需的分组密码算法待测组件,并根据测试计划,对选择的分组密码算法待测组件进行测试分析,得到分析结果。该分组密码算法分析方法及系统,将对分组密码的安全性分析转换成只需对可被计算机识别的、可执行的分组密码待测组件进行安全性分析即可,可以实现对目前大多数分组密码算法的安全性进行统一分析。
Description
技术领域
本申请涉及密码分析领域,特别是涉及一种分组密码算法分析方法及系统。
背景技术
分组密码是现代密码学的一个重要组成部分。它具有速度快、易于标准化和便于软硬件实现等优点,通常是信息与网络安全中实现数据加密、数字签名、认证及密钥管理的核心体制,广泛应用于计算机通信和信息系统安全领域。因此,对分组密码的安全性分析具有重要意义。
分组密码算法实际上就是密钥控制下,通过某个置换来实现对明文分组的加密变换,分组密码的分析技术与这些分组密码算法的设计结构密切相关。
通过对现有技术研究,申请人发现目前很多分组密码算法分析方法都是针对一个具体的分组密码算法来进行的,而随着分组密码研究的不断深入,涌现出了大量新的算法,算法的结构也越来越复杂,因此目前的分组密码算法分析方法无法对多种分组密码的进行统一的安全性分析。
发明内容
为解决上述技术问题,本申请实施例提供一种分组密码算法分析方法及系统,以实现对目前大部分分组密码算法的安全性进行统一分析,技术方案如下:
一种分组密码算法分析方法,包括:
定义面向用户的、能够描述分组密码算法的高级描述语言;
用户根据所述高级描述语言,将分组密码算法描述成多个分组密码算法基本组件的组合;
将所述分组密码算法基本组件解析成可被计算机识别的C语言代码;
将所述C语言代码编译、链接,生成可执行的分组密码算法待测组件;
根据用户的操作请求配置测试计划,根据所述测试计划选择所需的分组密码算法待测组件;
根据所述测试计划,对所述选择的分组密码算法待测组件进行测试分析,得到分析结果。
优选地,所述定义具体实现为:
定义高级描述语言的基本语法,包括:特殊符号、标识符、标记、常量、变量声明、关系表达式、基本语句以及低级函数;
根据所述高级描述语言语法,定义分组密码算法基本组件的描述语法。
优选地,所述分组密码算法基本组件包括:置换组件、S盒组件、矩阵乘组件、一般函数组件、密钥参与的函数组件、以函数形式出现的S盒、轮函数组件、密钥扩展组件、Feistel结构组件和完整加密组件。
优选地,所述解析具体实现为:
对所述分组密码算法基本组件进行词法分析;
对所述词法分析后的分组密码算法基本组件进行语法分析;
对所述语法分析后的分组密码算法基本组件进行语义分析;
将所述语义分析后的分组密码算法转换成可被计算机识别的C语言代码。
优选地,所述测试计划包括:关键组件测试、缩减轮函数测试和完整算法测试。
优选地,所述测试分析具体实现为:
对所述所需分组密码算法待测组件进行输入输出测试;
调用预先针对不同分组密码算法待测组件编写的分析程序;
利用所述分析程序对所述输入输出测试的输入数据及相对应的输出数据进行分析。
优选地,该方法进一步包括:输出分析结果。
优选地,所述输出分析结果具体实现为:将分析结果输出到可视装置和/或存储到预设位置或用户指定位置。
一种分组密码安全性分析系统,包括:
定义单元,用于定义面向用户的、能够描述分组密码算法的高级描述语言;
描述单元,用户根据所述高级描述语言,将分组密码算法描述成多个分组密码算法基本组件的组合;
解析单元,用于将所述分组密码算法基本组件解析成可被计算机识别的C语言代码;
编译和链接单元,用于将所述C语言代码编译、链接,生成可执行的分组密码算法待测组件;
配置单元,用于根据用户的操作请求配置测试计划,根据所述测试计划选择所需的分组密码算法待测组件;
测试分析单元,用于对所选择的分组密码算法待测组件进行测试分析,得到分析结果。
优选地,所述定义单元包括:
基本语法定义单元,用于定义高级描述语言的语法,包括:特殊符号、标识符、标记、常量、变量声明、关系表达式、基本语句以及低级函数;
描述语法定义单元,用于根据所述高级描述语言基本语法,定义分组密码算法基本组件的描述语法。
优选地,所述解析单元包括:
词法分析单元,用于对所述分组密码算法基本组件进行词法分析;
语法分析单元,用于对所述词法分析后的分组密码算法基本组件进行语法分析;
语义分析单元,用于对所述语法分析后的分组密码算法基本组件进行语义分析;
代码生成单元,用于将所述语义分析后的分组密码算法基本组件转换成可被计算机识别的C语言代码。
优选地,所述测试和分析单元包括:
测试单元,用于对所述所需分组密码算法待测组件进行输入输出测试;
调用单元,用于调用预先针对不同分组密码安全性分析组件编写的分析程序;
分析单元,用于利用所述分析程序对所述输入输出测试的输入数据及相对应的输出数据进行分析。
优选地,该系统进一步包括:输出单元,用于输出分析结果。
本申请实施例提供的技术方案:首先定义的高级描述语言,并利用其将分组密码算法描述成多个分组密码算法基本组件的组合,所定义的高级描述语言包含有分组密码算法基本组件的描述语法,这些基本组件包含了目前大多数分组密码算法中所使用的组件,并且该高级描述语言是面向用户的高级语言,便于用户理解和使用,所以用户使用上述高级描述语言,可以方便、快捷地将目前大多数分组密码算法中每一个分组密码算法都描述成一些分组密码算法基本组件的组合。
描述完成后,对分组密码算法基本组件进行解析,将不能被计算机识别的高级描述语言解析成可以被计算机识别的C语言代码,再将C语言代码编译、链接成具有可执行接口的分组密码待测组件,设计各待测组件的测试内容和测试步骤,形成各待测组件的测试用例,最后根据配置计划对分组密码安全性组件进行相应的测试用例及测试分析,得到分析结果,完成整个分析过程。
因此,该分组密码算法分析方法及系统,将对分组密码的安全性分析转换成只需对可被计算机识别的、可执行的分组密码待测组件进行安全性分析即可,可以实现对目前大多数分组密码算法的安全性进行统一分析。
此外,该分组密码算法分析方法,其解析过程、编译过程、链接过程和测试分析过程都可以在计算机上自动执行,可以实现分组密码算法安全性分析过程自动化。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种分组密码算法分析方法的流程示意图;
图2为本申请实施例定义高级描述语言的流程示意图;
图3为本申请实施例分组密码基本组件解析的流程示意图;
图4为本申请实施例分组密码待测组件测试分析的流程示意图;
图5为本申请实施例提供的另一种分组密码算法分析方法的流程示意图;
图6为本申请实施例提供的一种分组密码算法分析系统的结构示意图;
图7为本申请实施例定义单元的结构示意图;
图8为本申请实施例解析单元的结构示意图;
图9为本申请实施例测试分析单元的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
实施例一:
图1为本申请实施例提供的一种分组密码算法分析方法的流程示意图,如图所示,该方法包括:
步骤100:定义面向用户的、能够描述分组密码算法的高级描述语言。
该高级描述语言只是面向用户的,不能被计算机直接识别,但其描述内容可以被解析成能够被计算机识别的语言。如图2所示,其定义过程具体包括:
步骤101:定义高级描述语言的基本语法。
分组密码描述语言与其它现有的高级语言(如C语言)类似,首先要定义描述语言所使用的特殊符号、标识符、全局标记、常量、变量声明、关系表达式、基本语句以及低级函数等。
本申请实施例中,分组密码算法描述语言的基本语法有:
1、特殊符号:
“*”:放在一些语法定义的后面,代表该语法定义可以出现0次或多次,且由空格与其前面的语法定义分隔开;
“+”:放在一些语法定义的后面,代表该语法定义可以出现1次或多次,且由空格与其前面的语法定义分隔开;
“++”:放在一些语法定义的后面,代表该语法定义可出现1次或多次,且由逗号与其前面的语法定义分隔开;
“#”:表示以次开头的行为注释行。
2、标识符:
通常有两种标识符:一、一般的标识符,可以由用户定义,规定其命名规则是:以字母开头,有字母、数字和下划线“_”,其中字母有大小写区分;二、保留标识符,这种保留标识符需要预先定义。
保留标识符如下表所示;
保留标识符 | 含义 | 保留标识符 | 含义 |
UNIT_nBIT | 数据操作单元 | PHT | 伪哈达玛变换 |
BlockLength | 加密块大小 | PAD | 修补函数 |
KeyLength | 初始密钥长度 | AND | 与操作 |
Subkey | 子密钥 | OR | 或操作 |
bitvector | 变量声明 | XOR | 异或操作 |
vardef | 变量标记 | ADD | 模加 |
IF...ELSE | 条件语句 | SUBS | 模减 |
Loop | 循环语句 | MULT | 模乘 |
Begin | 结构开始标记 | ROL | 循环左移 |
Keyscheduling | 密钥扩展 | ROR | 循环右移 |
End | 结构结束标记 | Selection | 置换 |
Line | Bit串连接 | In | 输入标记 |
SBox | S盒 | Out | 输出标记 |
Metric | 矩阵乘 | Input | 默认输入变量 |
Function | 函数 | Output | 默认输出变量 |
Function_keyed | 密钥参与的函数 | Feistel | Feistel结构函数 |
FSBox | 函数形式的S盒 | Feistel_Func | Feistel的控制策略 |
Round | 轮函数 | Control | 控制端 |
Cipher | 完整加密组件 | Controled | 被控制端 |
Key | 初始密钥 | Exchan | Feistel的交换策略 |
另外,用户自定义的标识符不能与保留标识符相冲突。
3、全局标记:
主要是指一些重要参数的声明,其语法形式如下:
BlockLength num:声明了待加密的明文分组大小;
KeyLength num:声明了初始密钥大小;
Subkey m*n:声明了从初始密钥生成的子密钥的规模,其中m代表子密钥操作单元的长度,n代表加密中实际需要的子密钥单元的个数。
4、常量:其数值通常以十进制或十六进制的形式表达。
5、变量:
常量在分组密码描述语言中通常都声明成一定长度的比特串,声明的语法形式一般如下:
Bitvector(num)ident;
其中num代表变量的比特长度,ident代表变量的名称。
6、关系表达式:
关系表达式一般由变量、常量和函数组成。在本申请实施例中,为了方便条件判断,定义了一些关系运算符及相应的关系表达式,其中关系运算符如表3所示:
关系运算符 | 含义 | 关系运算符 | 含义 |
== | 等于 | <= | 小于或等于 |
!= | 不等于 | > | 大于 |
>= | 大于或等于 | < | 小于 |
关系表达式就是用任意关系运算符连接起来的式子,其定义语法形式为:
exp1关系运算符exp2;
其中exp1和exp2均为参与关系运算的一般表达式,所表达的意思是:如果关系表达式为真,则返回1,否则返回0。
7、基本语句:
基本语句包括:赋值语句、条件判断语句、多分支判断执行语句、循环语句等。
8、低级别函数:
低级别函数包括:
AND,OR,XOR:主要用于完成两个变量间的布尔操作。
ADD,SUBS,MULT,MOD:主要用于完成两个变量之间的加、减、乘、模运算。
ROL,ROR:主要用于完成一个向量的循环左移和循环右移。
SHIFTL,SHIFTR:主要用于完成一个向量的逻辑左移和逻辑右移。
PAD:主要用于在一个向量的左边添加若干比特的0,增加其比特长度。
PHT:主要用于完成两个向量间的伪哈达玛转换操作。
Len:主要用于完成计算变量比特长度的操作。
Line:主要用于完成连接两个向量而组合成更长向量的操作。
步骤102:根据所述高级描述语言语法,定义分组密码算法基本组件的描述语法。
分组密码算法基本组件即分组密码算法中某一功能运算单元的抽象定义,分组密码的基本组件大体上可以分为两种类型:表类型组件和函数类型组件。
表类型组件是指通过查表或矩阵乘运算来实现的运算单元,包括:置换组件、S盒组件、矩阵乘组件。
(1)、置换组件对应的是分组密码算法中实现一个向量到另一个向量的变化的运算单元。
(2)、S盒组件对应的是分组密码算法中使用代替表运算单元。
(3)、矩阵矩阵乘组件对应的是分组密码算法中一个输入向量通过与一个矩阵的模乘运算得到新的向量的运算单元。
函数类型组件是指除了通过查表和矩阵运算来实现的运算单元之外的所有那些具有输入和输出的运算单元,主要包括:一般函数组件、密钥参与的函数组件、以函数形式出现的S盒组件、轮函数组件和密钥扩展组件等。
(1)、一般函数组件对应的是分组密码算法中一般性的函数变换运算单元,其可以有多个输入和多个输出。
(2)密钥参与的函数组件是指在某些分组密码算法中有密钥的参与的函数,将这种函数单独提出作为一种组件,以区别于一般函数组件。
(3)以函数形式出现的S盒组件是指在某些分组密码算法中,以函数形式出现的、实现非线性操作的S盒。
(4)轮函数组件,该组件是许多分组密码算法都有的组件,也是迭代型分组密码算法必须具备的组件,是加密算法的核心。
(5)密钥扩展组件是指分组密码算法中完成由原始密钥生成所有子密钥的变换过程的一类特殊函数。
(6)Feistel结构组件,在现代分组密码体制中,Feistel类型的分组密码是最常见的,且其结构的具体表现形式变得越来越复杂的一种组件。
(7)完整加密组件是指分组密码算法中在密钥的参与下输入明文与输入密文相等的运算单元。
步骤200:用户根据所述高级描述语言的定义,将某一分组密码算法用该高级描述语言描述。
用户利用步骤100中所定义的高级描述语言,针对某一具体的分组密码算法,根据具体算法的文字描述或代码描述,将其用高级描述语言重新描述。描述后的算法将包括高级描述语言所定义的全局标记、基本组件。
步骤300:对所述的分组密码算法基本组件进行解析,将所述分组密码算法基本组件解析成可被计算机识别的C语言代码。
由于高级描述语言是面向用户的,无法被计算机识别,因此在分析前需要将由高级描述语言描述的分组密码算法基本组件进行解析。
如图3所示,该步骤具体包括:
步骤301:对所述分组密码算法基本组件进行词法分析。
词法分析是解析的第一阶段,将高级语言源程序的字符序列识别为单个具有独立意义的最小语法单位,即单词,例如关键字(Selection、Loop、Feistel等)、标识符、常数、运算符和界符(标点符号、左右括号等)。
具体地,词法分析程序所完成的工作主要有:
1)预处理工作:去掉空白字符、制表符、换行符和注释等无效字符;
2)识别专用字符,将如“、”、“,”、“=”、“>=”、“!=”等专用字符识别为相应的TOKEN码;
3)识别保留标识符,为当前保留标识符指定相应的属性值,并将相应的TOKEN码交给语法分析程序处理;
4)识别非保留标识符的字母或字母与数字的混合串作为标识符,并将标识符的TOKEN码交给语法分析程序处理,同时保留着当前标识符的值;
5)识别数字串为数,保存该数,并将对应的TOKEN码交给语法分析程序处理;
6)识别文件结束符,并交给语法分析程序处理。
步骤302:对所述词法分析后的分组密码算法基本组件进行语法分析。
语法分析是解析的第二阶段,根据上述高级语言的语法规则,把词法分析的结果分解成各种语法单元,同时检查语法错误。
语法分析程序是解析过程的核心部分,它从词法分析中获取TOKEN码,并根据高级描述语言的语法规则将TOKEN码序列分解成各类语法单位(如表达式、语句、子过程等),这与自然语言中关于某篇文章的句子的语法分析是类似的。
由于高级语言的语法结构是用上下文无关文法描述的。因此,语法分析程序实质上就是按照文法的产生式,识别输入符号串是否为一个句子。这里的输入串就是词法分析所识别的TOKEN串。
语法分析完成的主要功能有:
1)按照高级描述语言的上下文无关文法,从词法分析的结果(即TOKEN序列)中识别出各类语法成分;
2)进行语法检查,包括标识符和常量单词错误、括号类错误、分隔符错误等等;
3)为语义分析和代码生成做准备。
步骤303:对所述语法分析后的分组密码算法基本组件进行语义分析。
大多数程序设计语言具有在执行之前被确定语义的特征,这些特征不容易用语法结构表示,更无法用词法分析程序进行分析,这些特征被称为静态语义。语义分析的任务是对语法分析所识别出的各类语法范畴,分析其含义,并进行静态语义检查,如变量是否定义、类型是否匹配等,为代码生成阶段搜集相关的语义信息。
语义分析的主要工作有:
1)构造全局信息表;
2)构造函数信息表;
3)构造函数声明信息表;
4)表类型组件信息表;
5)构造Feistel组件信息表;
6)构造新组件函数信息表。
步骤304:将所述语义分析后的分组密码算法转换成可被计算机识别的C语言代码。
目标代码生成阶段,是将语义分析得来的信息按照一定的规则进行代码的生成,在这个过程中,会有语义的二次分析和二次处理,为生成规范的目标代码服务。本申请实施例中是以组件的C语言函数形式作为最终的目标代码,不应构成对本申请的限制。
目标代码的主要工作有:
1)生成名为out.h的头文件;
2)生成名为out.cpp的目标文件。
步骤400:将所述C语言代码编译、链接,生成可执行的分组密码算法待测组件。
根据已生成的目标文件(含有自定义的关键字及组件),添加相关的配置信息,形成中间文件,对中间文件进行编译,生成动态链接库,再将动态链接库中的基本组件导出,形成具有可执行接口的待测组件,供后续的测试使用。
步骤500:根据用户的操作请求配置测试计划,根据所述测试计划选择所需的分组密码算法待测组件。
根据分组密码算法待测组件的特点,设计相应的测试内容及测试用例,从多个方面评估组件的安全性。在分组密码的安全性理论中,不同分组密码组件的安全性设计需求是不一样的,不断涌现的攻击方法也从不同的角度对基本组件提出新的安全性要求,因此,目前对于各基本组件并没有统一的测试计划。本申请实施例提出了测试计划包括三个层次上的测试,分别为:关键组件测试、缩减轮测试和完整算法测试,其中:
(1)关键组件测试包括:S盒组件测试、P置换组件测试和密钥扩展组件测试。
S盒组件的测试内容主要有:平衡性、严格雪崩、严格雪崩距离、扩散性、差分均匀度、线性结构、鲁棒度、代数次数、非线性度、不动点、周期性和循环特征十种测试方法。
P置换组件的测试内容主要有:支持差分分支数、线性分指数和不动点三种测试方法。
密钥扩展组件的测试内容主要有:独立性测试和灵敏性测试两种测试方法。
(2)缩减轮组件测试包括:缩减轮函数的最大差分概率及路径测试和缩减轮函数的最佳线性逼近优势测试两种测试方法。
(3)完整算法测试包括:随机性测试和依赖性测试。
随机性测试的内容主要有:频率测试、块内频率测试、游程测试、块内最长连1串测试、二元矩阵秩测试、离散傅立叶变换测试、非重叠模板匹配测试、重叠模板匹配测试、Universal测试、Lempel-Ziv压缩测试、线性复杂度测试、连续性测试、近似熵测试、部分和测试、随机游走测试、随机游走变量测试、重叠子序列测试、游程分布测试、扑克测试和自相关测试二十种随机性测试方法。
依赖性测试的内容主要有:密文独立性测试、明文扩散性测试、密钥的扩散性测试三种测试方法。
步骤600:根据用户的操作请求配置测试计划,对所述选择的分组密码算法组件进行测试分析,得到分析结果,完成安全性的测试。
本系统提供的测试内容是分别独立的,用户可以独立地选取一种或几种或全部的测试内容进行监测。
参见图4所示,该步骤具体包括:
步骤601:对所述所需分组密码算法组件进行输入输出测试。
步骤602:调用预先针对不同分组密码算法待测组件编写的分析程序。
针对用户选择的待测组件及测试内容,调用相应的分析程序,完成测试。
步骤603:调用完成后,利用该分析程序选择特殊的输入,记录待测组件相应的输出,并进行一定的统计、分析,得到待测组件的测试评估结果。
实施例二:
图5为本申请实施例提供的另一种分组密码算法分析方法的流程示意图,如图所示,在实施例一的基础上,该方法还包括:
步骤700:输出分析结果。
输出分析结果具体实现可以为:将分析结果输出到可视装置和/或存储到预设位置或用户指定位置。
实施例三:
图6为本申请实施例提供的一种分组密码算法分析系统的结构示意图,如图所示,该系统包括:
定义单元61,用于定义面向用户的、能够描述分组密码算法的高级描述语言。
如图7中所示,定义单元61包括:基本语法定义单元611和描述语法定义单元612,其中:
基本语法定义单元611,用于定义高级描述语言的语法,包括:特殊符号、标识符、标记、常量、变量声明、关系表达式、基本语句以及低级函数。
描述语法定义单元612,用于根据所述高级描述语言基本语法,定义分组密码算法基本组件的描述语法。
描述单元62,用于根据所述高级描述语言,将分组密码算法描述成多个分组密码算法基本组件的组合。
解析单元63,用于将所述分组密码算法基本组件解析成可被计算机识别的C语言代码。
在本申请实施例中解析单元63为预设的解析器,其功能就是将一种高级语言程序转换成另一种高级语言程序,在本申请实施例中,源程序是:由高级描述语言描述的分组密码算法基本组件;目标程序是:可以被计算机识别的C语言代码。
如图8所示,解析单元63具体包括:
词法分析单元631,用于对所述分组密码算法基本组件进行词法分析。
语法分析单元632,用于对所述词法分析后的分组密码算法基本组件进行语法分析。
语义分析单元633,用于对所述语法分析后的分组密码算法基本组件进行语义分析。
代码生成单元634,用于将所述语义分析后的分组密码算法转换成可被计算机识别的C语言代码。
编译和链接单元64,用于将所述C语言代码编译、链接,生成可执行的分组密码算法待测组件;
配置单元65,用于根据用户的操作请求配置测试计划,根据所述测试计划选择所需的分组密码算法待测组件。
测试分析单元66,用于对所选择的分组密码算法待测组件测试分析,得到分析结果。
参见图9所示,测试和分析单元66包括:
测试单元661,用于对所述所需分组密码算法待测组件进行输入输出测试;
调用单元662,用于调用预先针对不同分组密码安全性分析组件编写的分析程序;
分析单元663,用于利用所述分析程序对所述输入输出测试的输入数据及相对应的输出数据进行分析。
实施例四:
如图6所示,本申请实施例提供的另一种分组密码算法分析系统还包括:
输出单元67,用于输出分析结果。输出单元67可以将分析结果输出到可视装置和/或存储到预设位置或用户指定位置。
本申请实施例,首先定义的高级描述语言,并利用其将分组密码算法描述成多个分组密码算法基本组件的组合,所定义的高级描述语言包含有分组密码算法基本组件的描述语法,这些基本组件包含了目前大多数分组密码算法中所使用的组件,并且该高级描述语言是面向用户的高级语言,便于用户理解和使用,所以用户使用上述高级描述语言,可以方便、快捷地将目前大多数分组密码算法中每一个分组密码算法都描述成一些分组密码算法基本组件的组合。
描述完成后,对分组密码算法基本组件进行解析,将不能被计算机识别的高级描述语言解析成可以被计算机识别的C语言代码,再将C语言代码编译、链接成具有可执行接口的分组密码待测组件,设计各待测组件的测试内容和测试步骤,形成各组件的测试用例,最后根据配置计划对分组密码安全性组件进行相应的测试用例及测试分析,得到分析结果,完成整个分析过程。
因此,该分组密码算法分析方法及系统,将对分组密码的安全性分析转换成只需对可被计算机识别的、可执行的分组密码待测组件进行安全性分析即可,可以实现对目前大多数分组密码算法的安全性进行统一分析。
此外,该分组密码算法分析方法,其解析过程、编译过程、链接过程、测试过程和分析过程都可以在计算机上自动执行,可以实现分组密码算法安全性分析过程自动化。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (13)
1.一种分组密码算法分析方法,其特征在于,包括:
定义面向用户的、能够描述分组密码算法的高级描述语言;
用户根据所述高级描述语言,将分组密码算法描述成多个分组密码算法基本组件的组合;
将所述分组密码算法基本组件解析成可被计算机识别的C语言代码;
将所述C语言代码编译、链接,生成可执行的分组密码算法待测组件;
根据用户的操作请求配置测试计划,根据所述测试计划选择所需的分组密码算法待测组件;
根据所述测试计划,对所述选择的分组密码算法待测组件进行测试分析,得到分析结果。
2.根据权利要求1所述的方法,其特征在于,所述定义具体实现为:
定义高级描述语言的基本语法,包括:特殊符号、标识符、标记、常量、变量声明、关系表达式、基本语句以及低级函数;
根据所述高级描述语言语法,定义分组密码算法基本组件的描述语法。
3.根据权利要求1所述的方法,其特征在于,所述分组密码算法基本组件包括:置换组件、S盒组件、矩阵乘组件、一般函数组件、密钥参与的函数组件、以函数形式出现的S盒、轮函数组件、密钥扩展组件、Feistel结构组件和完整加密组件。
4.根据权利要求1所述的方法,其特征在于,所述解析具体实现为:
对所述分组密码算法基本组件进行词法分析;
对所述词法分析后的分组密码算法基本组件进行语法分析;
对所述语法分析后的分组密码算法基本组件进行语义分析;
将所述语义分析后的分组密码算法转换成可被计算机识别的C语言代码。
5.根据权利要求1所述的方法,其特征在于,所述测试计划包括:关键组件测试、缩减轮函数测试和完整算法测试。
6.根据权利要求1所述的方法,其特征在于,所述测试分析具体实现为:
对所述所需分组密码算法待测组件进行输入输出测试;
调用预先针对不同分组密码算法待测组件编写的分析程序;
利用所述分析程序对所述输入输出测试的输入数据及相对应的输出数据进行分析。
7.根据权利要求1所述的方法,其特征在于,进一步包括:输出分析结果。
8.根据权利要求7所述的方法,其特征在于,所述输出分析结果具体实现为:将分析结果输出到可视装置和/或存储到预设位置或用户指定位置。
9.一种分组密码安全性分析系统,其特征在于,包括:
定义单元,用于定义面向用户的、能够描述分组密码算法的高级描述语言;
描述单元,用户根据所述高级描述语言,将分组密码算法描述成多个分组密码算法基本组件的组合;
解析单元,用于将所述分组密码算法基本组件解析成可被计算机识别的C语言代码;
编译和链接单元,用于将所述C语言代码编译、链接,生成可执行的分组密码算法待测组件;
配置单元,用于根据用户的操作请求配置测试计划,根据所述测试计划选择所需的分组密码算法待测组件;
测试分析单元,用于对所选择的分组密码算法待测组件进行测试分析,得到分析结果。
10.根据权利要求9所述的系统,其特征在于,所述定义单元包括:
基本语法定义单元,用于定义高级描述语言的语法,包括:特殊符号、标识符、标记、常量、变量声明、关系表达式、基本语句以及低级函数;
描述语法定义单元,用于根据所述高级描述语言基本语法,定义分组密码算法基本组件的描述语法。
11.根据权利要求9所述的系统,其特征在于,所述解析单元包括:
词法分析单元,用于对所述分组密码算法基本组件进行词法分析;
语法分析单元,用于对所述词法分析后的分组密码算法基本组件进行语法分析;
语义分析单元,用于对所述语法分析后的分组密码算法基本组件进行语义分析;
代码生成单元,用于将所述语义分析后的分组密码算法基本组件转换成可被计算机识别的C语言代码。
12.根据权利要求9所述的系统,其特征在于,所述测试和分析单元包括:
测试单元,用于对所述所需分组密码算法待测组件进行输入输出测试;
调用单元,用于调用预先针对不同分组密码安全性分析组件编写的分析程序;
分析单元,用于利用所述分析程序对所述输入输出测试的输入数据及相对应的输出数据进行分析。
13.根据权利要求9所述的系统,其特征在于,进一步包括:输出单元,用于输出分析结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010116163 CN102195773B (zh) | 2010-03-03 | 2010-03-03 | 一种分组密码算法分析方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010116163 CN102195773B (zh) | 2010-03-03 | 2010-03-03 | 一种分组密码算法分析方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102195773A true CN102195773A (zh) | 2011-09-21 |
CN102195773B CN102195773B (zh) | 2013-09-11 |
Family
ID=44603201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010116163 Expired - Fee Related CN102195773B (zh) | 2010-03-03 | 2010-03-03 | 一种分组密码算法分析方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102195773B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455318A (zh) * | 2012-12-28 | 2013-12-18 | 深圳信息职业技术学院 | 一种算法转换的方法及装置 |
CN104750533A (zh) * | 2013-12-31 | 2015-07-01 | 上海海尔集成电路有限公司 | C程序编译方法及编译器 |
CN105391546A (zh) * | 2015-12-16 | 2016-03-09 | 南京航空航天大学 | 基于双伪随机变换和Feistel结构的轻量级分组密码技术VHF |
CN106027226A (zh) * | 2016-05-13 | 2016-10-12 | 西安电子科技大学 | 一种分组密码相关密钥不可能差分路径的搜索方法 |
CN106033338A (zh) * | 2015-03-13 | 2016-10-19 | 上海爱韦讯信息技术有限公司 | 基于fog数据的源代码导入及解析的方法和装置 |
CN106789058A (zh) * | 2016-12-09 | 2017-05-31 | 南京理工大学 | 一种代理重加密算法描述及解析方法 |
CN108200060A (zh) * | 2018-01-03 | 2018-06-22 | 深圳壹账通智能科技有限公司 | 基于web子系统的单点登录验证方法、服务器及存储介质 |
CN109558706A (zh) * | 2018-11-16 | 2019-04-02 | 杭州师范大学 | 国密sm4分组密码算法的检测方法 |
CN110784307A (zh) * | 2019-11-05 | 2020-02-11 | 衡阳师范学院 | 轻量级密码算法scenery实现方法、装置及存储介质 |
CN111522556A (zh) * | 2020-04-29 | 2020-08-11 | 铁道警察学院 | 一种分组密码编程语言及编译基础设施的设计方法 |
CN113037487A (zh) * | 2021-03-10 | 2021-06-25 | 中国工商银行股份有限公司 | 文件加密数据处理方法及装置 |
CN114189324A (zh) * | 2021-11-12 | 2022-03-15 | 湖南遥昇通信技术有限公司 | 一种消息安全签名方法、系统、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1417678A (zh) * | 2001-11-07 | 2003-05-14 | 华为技术有限公司 | Ttcn测试用例执行方法 |
CN101266571A (zh) * | 2008-04-22 | 2008-09-17 | 中国科学院软件研究所 | 一种可信密码模块的测试用例生成方法及其测试系统 |
CN101499015A (zh) * | 2009-03-18 | 2009-08-05 | 北京和利时系统工程有限公司 | 一种高级语言转换成其它高级语言的方法及转换器 |
-
2010
- 2010-03-03 CN CN 201010116163 patent/CN102195773B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1417678A (zh) * | 2001-11-07 | 2003-05-14 | 华为技术有限公司 | Ttcn测试用例执行方法 |
CN101266571A (zh) * | 2008-04-22 | 2008-09-17 | 中国科学院软件研究所 | 一种可信密码模块的测试用例生成方法及其测试系统 |
CN101499015A (zh) * | 2009-03-18 | 2009-08-05 | 北京和利时系统工程有限公司 | 一种高级语言转换成其它高级语言的方法及转换器 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455318B (zh) * | 2012-12-28 | 2017-04-19 | 深圳信息职业技术学院 | 一种算法转换的方法及装置 |
CN103455318A (zh) * | 2012-12-28 | 2013-12-18 | 深圳信息职业技术学院 | 一种算法转换的方法及装置 |
CN104750533B (zh) * | 2013-12-31 | 2018-10-19 | 上海东软载波微电子有限公司 | C程序编译方法及编译器 |
CN104750533A (zh) * | 2013-12-31 | 2015-07-01 | 上海海尔集成电路有限公司 | C程序编译方法及编译器 |
CN106033338A (zh) * | 2015-03-13 | 2016-10-19 | 上海爱韦讯信息技术有限公司 | 基于fog数据的源代码导入及解析的方法和装置 |
CN105391546A (zh) * | 2015-12-16 | 2016-03-09 | 南京航空航天大学 | 基于双伪随机变换和Feistel结构的轻量级分组密码技术VHF |
CN106027226A (zh) * | 2016-05-13 | 2016-10-12 | 西安电子科技大学 | 一种分组密码相关密钥不可能差分路径的搜索方法 |
CN106027226B (zh) * | 2016-05-13 | 2019-03-15 | 西安电子科技大学 | 一种分组密码相关密钥不可能差分路径的搜索方法 |
CN106789058B (zh) * | 2016-12-09 | 2020-11-13 | 南京理工大学 | 一种代理重加密算法描述及解析方法 |
CN106789058A (zh) * | 2016-12-09 | 2017-05-31 | 南京理工大学 | 一种代理重加密算法描述及解析方法 |
CN108200060A (zh) * | 2018-01-03 | 2018-06-22 | 深圳壹账通智能科技有限公司 | 基于web子系统的单点登录验证方法、服务器及存储介质 |
CN108200060B (zh) * | 2018-01-03 | 2020-07-14 | 深圳壹账通智能科技有限公司 | 基于web子系统的单点登录验证方法、服务器及存储介质 |
CN109558706A (zh) * | 2018-11-16 | 2019-04-02 | 杭州师范大学 | 国密sm4分组密码算法的检测方法 |
CN109558706B (zh) * | 2018-11-16 | 2021-09-07 | 杭州师范大学 | 国密sm4分组密码算法的检测方法 |
CN110784307A (zh) * | 2019-11-05 | 2020-02-11 | 衡阳师范学院 | 轻量级密码算法scenery实现方法、装置及存储介质 |
CN110784307B (zh) * | 2019-11-05 | 2020-06-09 | 衡阳师范学院 | 轻量级密码算法scenery实现方法、装置及存储介质 |
CN111522556A (zh) * | 2020-04-29 | 2020-08-11 | 铁道警察学院 | 一种分组密码编程语言及编译基础设施的设计方法 |
CN111522556B (zh) * | 2020-04-29 | 2023-11-24 | 铁道警察学院 | 一种分组密码编程语言及编译基础设施的设计方法 |
CN113037487A (zh) * | 2021-03-10 | 2021-06-25 | 中国工商银行股份有限公司 | 文件加密数据处理方法及装置 |
CN114189324A (zh) * | 2021-11-12 | 2022-03-15 | 湖南遥昇通信技术有限公司 | 一种消息安全签名方法、系统、设备及存储介质 |
CN114189324B (zh) * | 2021-11-12 | 2024-03-22 | 湖南遥昇通信技术有限公司 | 一种消息安全签名方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102195773B (zh) | 2013-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102195773B (zh) | 一种分组密码算法分析方法及系统 | |
Liao et al. | Soliaudit: Smart contract vulnerability assessment based on machine learning and fuzz testing | |
CN109992970B (zh) | Java反序列化漏洞检测系统和方法 | |
CN106970820A (zh) | 代码存储方法及代码存储装置 | |
CN112039730B (zh) | 一种加密算法的性能评估方法及存储介质 | |
Gadelha et al. | SMT-based refutation of spurious bug reports in the clang static analyzer | |
CN110825363A (zh) | 智能合约获取方法、装置、电子设备及存储介质 | |
CN109376021A (zh) | 接口调用的响应方法及服务器 | |
US20210406004A1 (en) | System and method for implementing a code audit tool | |
Lertbanjongngam et al. | An empirical evaluation of competitive programming ai: A case study of alphacode | |
CN112685738A (zh) | 一种基于多级投票机制的恶意混淆脚本静态检测方法 | |
CN103530209A (zh) | 一种密码键盘自动化测试方法 | |
Huang et al. | Large language models based fuzzing techniques: A survey | |
Hamer et al. | Just another copy and paste? Comparing the security vulnerabilities of ChatGPT generated code and StackOverflow answers | |
Villalobos-Arias et al. | Evaluation of a model‐based testing platform for Java applications | |
Seifi et al. | Analysis of two authorization protocols using Colored Petri Nets | |
CN114547560A (zh) | 一种处理方法、装置及电子设备 | |
Zhu et al. | Determining the image base of arm firmware by matching function addresses | |
Sorsa | Protocol fuzz testing as a part of secure software development life cycle | |
Bernard et al. | An approximation-based approach for the random exploration of large models | |
CN114547590A (zh) | 代码检测方法、装置及非瞬时性计算机可读存储介质 | |
Damasceno et al. | Family-Based Fingerprint Analysis: A Position Paper | |
Babenko et al. | Translation of cryptographic protocols description from Alice-Bob format to CAS+ specification language | |
Rezaei et al. | Detecting encrypted metamorphic viruses by hidden Markov Models | |
Al‐Sarayreh et al. | A reference measurement framework of software security product quality (SPQNFSR) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130911 Termination date: 20200303 |