[发明专利]国密SM4分组密码算法的检测方法有效
申请号: | 201811363642.2 | 申请日: | 2018-11-16 |
公开(公告)号: | CN109558706B | 公开(公告)日: | 2021-09-07 |
发明(设计)人: | 谢琪;黄凌锋;谭肖;牟航;吴彩霞;李克恒;舒琴 | 申请(专利权)人: | 杭州师范大学 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F8/41 |
代理公司: | 杭州天正专利事务所有限公司 33201 | 代理人: | 王兵;黄美娟 |
地址: | 311121 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种国密SM4分组密码算法的检测方法,本发明将词法、语法和语义分析的方法应用于国密SM4算法检测,把输入的测试源代码搜索国密SM4算法的特征值来进行匹配,由于国密SM4算法的特征值都是固定参数,因此算法结构具有一定的规律性。然后设计一个程序语言的词句分析方法,先运用词法分析方法逐字符扫描源代码文件,识别程序关键字和国密SM4算法的特征参数;再运用语法分析方法,对处理过的源代码文件组合成语法短语,并生成抽象语法树和记录SM4特征参数的数组名;然后利用语义分析进行类型审查,根据语法树和SM4特征数组名构造SM4链表;最终根据SM4链表完成国密SM4算法的检测。 | ||
搜索关键词: | 国密 sm4 分组 密码 算法 检测 方法 | ||
【主权项】:
1.国密SM4分组密码算法的检测方法,包括如下步骤:(1)打开测试代码工程文件,从左到右逐字符扫描,执行词法分析,对程序定义的字符流匹配,然后根据构词规则识别单词,并将其标识。在扫描过程中,词法分析程序对代码注释清理,对程序的关键词进行匹配等操作的同时,若扫描的单词匹配置换盒Sbox的参数、系统参数FK和固定参数CK,则标记文件名及其行数;具体包括:11)通过open打开SM4国密算法的代码文件和测试的工程文件;12)在使用SM4国密算法的代码中提取置换盒Sbox、系统参数FK、固定参数CK的特征参数;Sbox特征参数为:
FK特征参数为:FK0=a3b1bac6,FK1=56aa3350,FK2=677d9197,FK3=b27022dc;CK特征参数为:
13)利用词法分析器LEX,对测试的工程文件进行分析,注释清理;14)LEX进行程序关键词、置换盒Sbox、系统参数FK、固定参数CK的特征参数匹配,进行粗略检测;15)如果粗略检测成功,则标记当前测试的文件名和记录行数;(2)在步骤(1)词法分析的结果上执行语法分析,把单词序列组合成一个个的语法短语,语法短语若是“数组”,且有步骤(1)的标记,则继续判断该数组是否置换盒Sbox、系统参数FK、固定参数CK的特征参数,如果是,则记录下数组名,否则继续下一个语法短语的组合。其结果形成具有国密SM4分组算法特征参数的抽象语法树;具体包括:21)利用语法分析器YACC分析是否“语句”、“表达式”、“数组”、“程序”等等;22)判断是具有置换盒Sbox、系统参数FK、固定参数CK的特征参数的“数组”短语,如果是,继续执行3);否则回到1);23)执行到测试文件末尾,形成具有国密SM4分组算法特征参数的抽象语法树;(3)在步骤(2)所得的抽象语法树进行语义分析,对结构上的源程序进行上下文有关性质的审查,包括进行置换盒Sbox、系统参数FK和固定参数CK的特征参数的类型审查;若特征的类型审查不合规,则删除该特征的节点及节点下面所有层的节点;(4)利用自下而上的LR分析法遍历查询根据步骤(2)、步骤(3)生成的语法树,找到具有置换盒Sbox、系统参数FK和固定参数CK的特征参数的数组名节点,然后向上层层查询和记录直到语法树的根节点,分别构造Sbox链表、FK链表和CK链表;具体是:41)新建Sbox空链表;42)利用自下而上的LR分析法遍历查询根据步骤(2)(3)生成的语法树;43)根据步骤(2)记录的Sbox数组名,匹配具有置换盒Sbox特征参数的数组名节点,并记录在Sbox链表的头节点上;44)查询语法树中置换盒Sbox数组名节点的上一层节点,并记录在Sbox链表的下一节点;45)继续查询语法树上一层节点并记录到Sbox链表,循环执行该步骤,直至查询到语法树的根节点,Sbox链表构造完成;46)与构造Sbox链表的1‑5)相同,根据步骤(2)记录的FK数组名和CK数组名,分别构造以上两个数组名为头节点的,系统参数FK特征的FK链表和固定参数CK特征的CK链表;(5)构造SM4链表,将步骤(4)生成的Sbox链表、FK链表、CK链表进行查询对比,匹配一个节点则记录到SM4链表,循环执行此过程直到Sbox链表、FK链表和CK链表的末结点;具体是:51)新建一个S1和SM4空链表;52)以FK链表为参考链表,从CK链表头节点开始,依次比较FK链表的节点名,并把节点名匹配的节点依次记录到S1链表,直到FK链表末尾;53)以S1链表为参考链表,从Sbox链表的头节点开始,依次比较S1链表的节点名,并把节点名匹配的节点依次记录到SM4链表,直到S1链表末尾;(6)在步骤(5)形成的SM4链表上,提取所有节点的函数名,并在测试代码文件上进行搜索,记录其文件名和行数,循环执行此过程直到末节点,即可完成国密SM4算法检测。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州师范大学,未经杭州师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201811363642.2/,转载请声明来源钻瓜专利网。