[发明专利]国密SM4分组密码算法的检测方法有效
申请号: | 201811363642.2 | 申请日: | 2018-11-16 |
公开(公告)号: | CN109558706B | 公开(公告)日: | 2021-09-07 |
发明(设计)人: | 谢琪;黄凌锋;谭肖;牟航;吴彩霞;李克恒;舒琴 | 申请(专利权)人: | 杭州师范大学 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F8/41 |
代理公司: | 杭州天正专利事务所有限公司 33201 | 代理人: | 王兵;黄美娟 |
地址: | 311121 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 国密 sm4 分组 密码 算法 检测 方法 | ||
1.国密SM4分组密码算法的检测方法,包括如下步骤:
(1)打开测试代码工程文件,从左到右逐字符扫描,执行词法分析,对程序定义的字符流匹配,然后根据构词规则识别单词,并将其标识;在扫描过程中,词法分析程序对代码注释清理,对程序的关键词进行匹配操作的同时,若扫描的单词匹配置换盒Sbox的参数、系统参数FK和固定参数CK,则标记文件名及其行数;具体包括:
11)通过open打开SM4国密算法的代码文件和测试的工程文件;
12)在使用SM4国密算法的代码中提取置换盒Sbox、系统参数FK、固定参数CK的特征参数;Sbox特征参数为:
0 1 2 3 4 5 6 7 8 9 a b c d e f 0 d6 90 e9 fe cc e1 3d b7 16 b6 14 c2 28 fb 2c 05 1 2b 67 9a 76 2a be 04 c3 aa 44 13 26 49 86 06 99 2 9c 42 50 f4 91 ef 98 7a 33 54 0b 43 ed cf ac 62 3 e4 b3 1c a9 c9 08 e8 95 80 df 94 fa 75 8f 3f a6 4 47 07 a7 fc f3 73 17 ba 83 59 3c 19 e6 85 4f a8 5 68 6b 81 b2 71 64 da 8b f8 eb 0f 4b 70 56 9d 35 6 1e 24 0e 5e 63 58 d1 a2 25 22 7c 3b 01 21 78 87 7 d4 00 46 57 9f d3 27 52 4c 36 02 e7 a0 c4 c8 9e 8 ea bf 8a d2 40 c7 38 b5 a3 f7 f2 ce f9 61 15 a1 9 e0 ae 5d a4 9b 34 1a 55 ad 93 32 30 f5 8c b1 e3 a 1d f6 e2 2e 82 66 ca 60 c0 29 23 ab 0d 53 4e 6f b d5 db 37 45 de fd 8e 2f 03 ff 6a 72 6d 6c 5b 51 c 8d 1b af 92 bb dd bc 7f 11 d9 5c 41 1f 10 5a d8 d 0a c1 31 88 a5 cd 7b bd 2d 74 d0 12 b8 e5 b4 b0 e 89 69 97 4a 0c 96 77 7e 65 b9 f1 09 c5 6e c6 84 f 18 f0 7d ec 3a dc 4d 20 79 ee 5f 3e d7 cb 39 48
FK特征参数为:FK0=a3b1bac6,FK1=56aa3350,FK2=677d9197,FK3=b27022dc;
CK特征参数为:
00070e15 1c232a31 383f464d 545b6269 70777e85 8c939aa1 a8afb6bd c4cbd2d9 e0e7eef5 fc030a11 181f262d 343b4249 50575e65 6c737a81 888f969d a4abb2b9 c0c7ced5 dce3eaf1 f8ff060d 141b2229 30373e45 4c535a61 686f767d 848b9299 a0a7aeb5 bcc3cad1 d8dfe6ed f4fb0209 10171e25 2c333a41 484f565d 646b7279
13)利用词法分析器LEX,对测试的工程文件进行分析,注释清理;
14)LEX进行程序关键词、置换盒Sbox、系统参数FK、固定参数CK的特征参数匹配,进行粗略检测;
15)如果粗略检测成功,则标记当前测试的文件名和记录行数;
(2)在步骤(1)词法分析的结果上执行语法分析,把单词序列组合成一个个的语法短语,语法短语若是“数组”,且有步骤(1)的标记,则继续判断该数组是否置换盒Sbox、系统参数FK、固定参数CK的特征参数,如果是,则记录下数组名,否则继续下一个语法短语的组合;其结果形成具有国密SM4分组算法特征参数的抽象语法树;具体包括:
21)利用语法分析器YACC分析是否为“语句”、“表达式”、“数组”、“程序”;
22)判断是否为具有置换盒Sbox、系统参数FK、固定参数CK的特征参数的“数组”短语,如果是,继续执行23);否则回到21);
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链表的41)-45)相同,根据步骤(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算法检测。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州师范大学,未经杭州师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811363642.2/1.html,转载请声明来源钻瓜专利网。