基于符号执行生成数据流图的加密算法识别装置及方法制造方法及图纸

技术编号:36502389 阅读:16 留言:0更新日期:2023-02-01 15:25
一种基于符号执行生成数据流图的加密算法识别装置及方法,二进制抽象模块利用反汇编工具和处理器模型将指令集体系架构下的二进制指令转化为数据流图结点;签名构造模块利用签名语言规范和签名语言转换方式,将加密算法对应的签名语言转换为相应的数据流图;符号执行模块利用符号执行构造二进制数据流图;加密算法识别模块通过乌尔曼子图同构在二进制中识别加密算法并输出二进制数据流图。本发明专利技术解决了现有技术不具有编译器和源代码无关性、一对多识别结果的问题,在提升识别加密算法精准度的同时,能够在没有源代码的前提下对含有加密算法的可执行文件或程序函数库进行加密算法识别分析。法识别分析。法识别分析。

【技术实现步骤摘要】
(专利申请号CN202010200633.2,申请公布号CN111460472A)中公开了一种基于深度学习图网络与二进制相似性检测的加密算法识别方法。该方法通过爬虫工具爬取的方式获取加密算法实现源码相关的信息从而构建相应的基础源码库,通过对基础源码库进行交叉编译预处理,得到二进制代码库,在交叉变异预处理的过程中,该方法认为不同优化级别、不同编译器种类产生的代码是相似的。然后基于二进制加密算法的统计特征与结构特征生成加密算法图,应用神经网络和向量比较来进行加密算法的识别。该方法存在的不足之处是,在收集信息阶段依旧需要加密算法实现源码的相关信息,不能够完全独立于加密算法实现源码而去实现加密算法的识别;在识别过程中,该方法仅仅认为将不同优化级别、不同编译器种类产生的代码是相似的,未做更进一步的处理,导致该方法在本质上依旧受限于编译器及其相应的优化级别,无法实现方法的编译器无关性。

技术实现思路

[0005]本专利技术的目的在于针对上述已有技术中存在的不足,提出一种基于符号执行生成数据流图的加密算法识别装置及方法,用于解决现有技术不具有编译器无关性的问题,解决现有技术不具有源码无关性的问题,解决现有技术一对多识别结果的问题以及解决现有技术实现较难的问题。
[0006]实现本专利技术目的的具体思路是,本专利技术的装置由二进制抽象模块、签名构造模块、符号执行模块、加密算法识别模块构成。二进制抽象模块利用反汇编工具得到指令集体系架构下的每一条二进制指令的反汇编形式,利用指令集体系架构对应的处理器模型,将每一条二进制指令的反汇编形式中有关数据的操作码和操作数转换成数据流图中对应的图结点,签名构造模块用于按照签名语言规范,将加密算法中有关数据的操作翻译为相应的签名语言,按照签名语言转换方式,将签名语言转换为签名数据流图,符号执行模块用于将二进制中所有的条件跳转指令和所有的位于条件跳转指令之后的指令按照指令地址构成一个路径集合;判断从路径集合中所选元素对应的路径是否为复制路径,若是,则用所选元素的前一个元素对应的执行路径符号化所选元素对应的条件跳转指令,用所选元素对应的执行路径符号化所选元素对应的位于条件跳转指令之后的指令;否则,再判断所选元素对应的路径是跟踪路径,还是忽略路径;若是跟踪路径,对所选元素对应的条件跳转指令进行符号化,否则,对所选元素对应的位于条件跳转指令之后的指令进行符号化;将所有元素对应的符号表达式组成二进制符号执行图,按照数据流图转换方式,将二进制符号执行图转换为二进制数据流图,加密算法识别模块用于将签名的数据流图和二进制数据流图作为输入,通过乌尔曼子图同构识别加密算法。由于本专利技术的装置存在二进制抽象模块,使得本专利技术的装置可以不受架构和编译器的影响就可以完成对加密算法的识别,解决了现有技术不具有编译器无关性的问题。由于本专利技术的装置只使用到二进制,使得本专利技术的装置可以不依赖加密算法的源码实现即可完成加密算法的识别,解决了现有技术不具有源码无关性的特点。由于本专利技术的装置存在符号执行模块,使得本专利技术的装置能够完全覆盖二进制文件的代码,加密算法识别处理更为全面。由于本专利技术的装置存在签名构造模块和加密算法识别模块,使得本专利技术的装置更加注重文件和加密算法中数据的传递和流向过程,数据本身并不起决定性因素,故本专利技术的装置可以更加精准地识别SM3、SM4加密算法,定位其在二进制文件中出现的位置,解决了现有技术一对多识别结果的问题。由于本专利技术的装置存在签
名构造模块、符号执行模块和加密算法识别模块,使得本专利技术的装置采用签名数据流图与二进制数据流图子图同构的形式来进行二进制中加密算法的识别,而加密算法的签名只需要根据标准文档进行撰写即可,无需额外的专业知识,相较于要使用到密文编码和解码知识的专利技术,本专利技术的装置更简便且更易实现,解决了现有技术实现较难的问题。本专利技术的方法中对不同指令集体系架构及不同编译器下产生的二进制进行反汇编,将其包含的指令的反汇编形式转换为与架构无关的数据流图结点,利用签名语言规范、签名语言转换方式将签名转换为数据流图,利用符号执行生成二进制数据流图,利用乌尔曼子图同构对GmSSL公开密码库中的SM3、SM4国密算法的二进制实现进行识别,判断具体算法在一个具体二进制中是否出现,如果出现,则定位出该算法在二进制中出现的位置。由于本专利技术的方法对不同指令集体系架构及不同编译器下产生的二进制使用反汇编工具得到二进制指令的反汇编形式,并使用指令集体系架构对应的处理器模型将每一条二进制指令的反汇编形式中有关数据的操作码和操作数转换成数据流图中对应的图结点,使得本专利技术的方法具有架构无关性和编译器无关性,解决了现有技术不具有编译器无关性的问题。由于本专利技术方法只使用到二进制文件,使得本专利技术方法解决了现有技术不具有源码无关性的问题。由于本专利技术的方法使用符号执行,使得本专利技术的方法对二进制文件和加密算法的数据流向覆盖更为广泛,相应生成的数据流图更加精准。由于本专利技术的方法使用数据流图作为识别依据,使得在本专利技术的方法中数据本身的重要程度并不高,而整体数据的传递和流向过程在本专利技术的方法中起决定因素,故本专利技术的方法可以更加精准地识别SM3、SM4加密算法,定位其在二进制中出现的位置,解决了现有技术一对多识别结果的问题。由于本专利技术的方法采用签名数据流图与二进制数据流图子图同构的形式来进行二进制中加密算法的识别,而加密算法的签名编写简单且无需额外的专业知识,相较于要使用到密文编码和解码知识的专利技术,本专利技术的方法更简便且更易实现,解决了现有技术实现较难的问题。
[0007]为实现上述目的,本专利技术的装置包括二进制抽象模块,签名构造模块,符号执行模块,加密算法识别模块。其中:
[0008]所述二进制抽象模块,用于利用反汇编工具得到指令集体系架构下的每一条二进制指令的反汇编形式;利用指令集体系架构对应的处理器模型,将每一条二进制指令的反汇编形式中有关数据的操作码和操作数转换成数据流图中对应的图结点;
[0009]所述签名构造模块,用于按照签名语言规范,将加密算法中有关数据的操作翻译为相应的签名语言,按照签名语言转换方式,将签名语言转换为签名数据流图;
[0010]所述符号执行模块,用于将二进制中所有的条件跳转指令和所有的位于条件跳转指令之后的指令按照指令地址构成一个路径集合;判断从路径集合中所选元素对应的路径是否为复制路径,若是,则用所选元素的前一个元素对应的执行路径符号化所选元素对应的条件跳转指令,用所选元素对应的执行路径符号化所选元素对应的位于条件跳转指令之后的指令;否则,再判断所选元素对应的路径是跟踪路径,还是忽略路径;若是跟踪路径,对所选元素对应的条件跳转指令进行符号化,否则,对所选元素对应的位于条件跳转指令之后的指令进行符号化;将所有元素对应的符号表达式组成二进制符号执行图,按照数据流图转换方式,将二进制符号执行图转换为二进制数据流图;
[0011]所述加密算法识别模块,用于将签名的数据流图和二进制数据流图作为输入,通过乌尔曼子图同构识别加密算法;判断二进制中是否存在加密算法中的任意一个实现或两
种加密算法都存在于二进制中,若是,则在二进制数据流图中将识别到的加本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于符号执行生成数据流图的加密算法识别装置,其特征在于,该识别装置包括二进制抽象模块、签名构造模块、符号执行模块、加密算法识别模块,其中:所述二进制抽象模块,用于利用反汇编工具得到指令集体系架构下的每一条二进制指令的反汇编形式;利用指令集体系架构对应的处理器模型,将每一条二进制指令的反汇编形式中有关数据的操作码和操作数转换成数据流图中对应的图结点;所述签名构造模块,用于按照签名语言规范,将加密算法中有关数据的操作翻译为相应的签名语言,按照签名语言转换方式,将签名语言转换为签名数据流图;所述符号执行模块,用于将二进制中所有的条件跳转指令和所有的位于条件跳转指令之后的指令按照指令地址构成一个路径集合;判断从该集合中所选元素对应的路径是否为复制路径,若是,则用所选元素的前一个元素对应的执行路径符号化所选元素对应的条件跳转指令,用所选元素对应的执行路径符号化所选元素对应的位于条件跳转指令之后的指令;否则,再判断所选元素对应的路径是跟踪路径,还是忽略路径;若是跟踪路径,对所选元素对应的条件跳转指令进行符号化,否则,对所选元素对应的位于条件跳转指令之后的指令进行符号化;将所有元素对应的符号表达式组成二进制符号执行图,按照数据流图转换方式,将二进制符号执行图转换为二进制数据流图;所述加密算法识别模块,用于将签名的数据流图和二进制数据流图作为输入,通过乌尔曼子图同构识别加密算法;判断二进制中是否存在加密算法中的任意一个实现或两种加密算法都存在于二进制中,若是,则在二进制数据流图中将识别到的加密算法对应的数据流图部分标红显示,否则,不对二进制数据流图做任何操作;输出二进制的数据流图。2.根据权利要求1所述加密算法识别装置的一种基于符号执行生成数据流图的加密算法识别方法,其特征在于:使用符号执行构造与指令集体系架构无关的数据流图,以数据流图为识别依据,通过乌尔曼子图同构识别加密算法;该识别方法的步骤包括如下:步骤1,将指令集体系架构下的二进制指令转化为数据流图结点:二进制抽象模块利用反汇编工具,得到指令集体系架构下的每一条二进制指令的反汇编形式;利用指令集体系架构对应的处理器模型,将每一条二进制指令的反汇编形式中有关数据的操作码和操作数转换成数据流图中对应的图结点;步骤2,将加密算法对应的签名语言转换为相应的数据流图:签名构造模块按照签名语言规范,将加密算法中有关数据的操作翻译为相应的签名语言,按照签名语言转换方式,将签名语言转换为签名数据流图;步骤3,构造与指令集体系架构无关的数据流图:步骤3.1,符号执行模块将二进制中所有的条件跳转指令和所有的位于条件跳转指令之后的指令按照指令地址构成一个路径集合;步骤3.2,从路径集合中选取一个未选取的元素;步骤3.3,判断所选元素对应的路径是否为复制路径,若是,则执行步骤3.4,否则,执行步骤3.5;步骤3.4,用所选元素的前一个元素对应的执行路径符号化所选元素对应的条件跳转指令,用所选元素对应的执行路径符号化所选元素对应的位于条件跳转指令之后的指令后执行步骤3.6;步骤3.5,判断所选元素对应的路径是跟踪路径,还是忽略路径;若是跟踪路径,对所选
元素对应的条件跳转指令进行符号化,否则,对所选元素对应的位于条...

【专利技术属性】
技术研发人员:孙聪李宗臻刘乔森马建峰
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1