CN116502140B - 一种基于控制流图相似性的加密算法识别方法及装置 - Google Patents

一种基于控制流图相似性的加密算法识别方法及装置 Download PDF

Info

Publication number
CN116502140B
CN116502140B CN202310728275.6A CN202310728275A CN116502140B CN 116502140 B CN116502140 B CN 116502140B CN 202310728275 A CN202310728275 A CN 202310728275A CN 116502140 B CN116502140 B CN 116502140B
Authority
CN
China
Prior art keywords
algorithm
variable
control flow
node
nodes
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
CN202310728275.6A
Other languages
English (en)
Other versions
CN116502140A (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.)
China Electric Power Research Institute Co Ltd CEPRI
Original Assignee
China Electric Power Research Institute Co Ltd CEPRI
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 China Electric Power Research Institute Co Ltd CEPRI filed Critical China Electric Power Research Institute Co Ltd CEPRI
Priority to CN202310728275.6A priority Critical patent/CN116502140B/zh
Publication of CN116502140A publication Critical patent/CN116502140A/zh
Application granted granted Critical
Publication of CN116502140B publication Critical patent/CN116502140B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • G06F18/232Non-hierarchical techniques
    • G06F18/2321Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
    • G06F18/23213Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于控制流图相似性的加密算法识别方法及装置,属于数据处理技术领域。本发明通过对控制流图进行简单图化,通过从输出进行回溯的方式过滤出有效路径,可以追溯所有直接或间接参与密文生成的变量,排除噪音变量,生成有效路径森林。提取森林的特征向量,从密码算法库中确定与输入程序对应的加密算法。本发明不仅可以高效率、高精度的识别出未经修改直接使用的密码算法,也可以识别出通过人工方式及自动识别技术难以判别的有噪音密码算法以及基于改写逻辑进行优化的密码算法。解决了目前程序识别算法对于加密算法识别,尤其是人为修改了部分分支逻辑或是添加了无关变量的情况下,存在效率较低以及识别精度差的技术问题。

Description

一种基于控制流图相似性的加密算法识别方法及装置
技术领域
本发明涉及数据处理技术领域,并且更具体地,涉及一种基于控制流图相似性的加密算法识别方法及装置。
背景技术
基于知识表示的程序识别方法是对程序中的逻辑结构以及数据属性进行抽象化描述,再进一步利用匹配搜索及推理等方法,在程序库中寻找和这些概念相匹配的程序描述模板,从而达到对程序算法进行识别的目的。如Proust项目中使用框架表示程序知识,并基于该框架描述程序库从而建立程序片段库,识别代码时先使用框架转化源程序,然后在程序片段库中进行模板匹配从而识别程序所用算法;Woods提出通过将程序片段库识别转换为图与子图的同构识别问题,引入限制条件来约束程序片段库识别的问题域空间,从而获得更为准确的识别结果。Barthou通过使用编译优化技术中常用的仿射空间表示,使用递归方程系统形式化描述算法中的数据流,进一步提高识别效率。该种方法需要人工对规则或者程序模板进行描述,对于算法设计时针对的程序类型识别效率较高,但是逻辑复杂,并且难以扩展到其他种类的程序识别上。
基于信息检索的方法是利用源代码中非程序代码部分,如说明文档、代码注释、变量名称及函数名称等来辅助完成程序理解和算法识别工作,通过将非程序代码部分抽象为用户视图特征集合,将代码中的计算单元抽象为程序视图特征结合,使用信息检索的方式来在两个集合的元素中建立映射关系,通过信息检索的方式完成这一映射过程就可以实现对关键代码进行识别的目的。Marcus等按照代码模块和文件之间的关系生成图,利用潜在语义分析技术抽取能够说明含义的关键字向量来定义语义相似边,利用函数在文件中的相对位置定义结构相似边,再基于此图进行聚类从而达到对指定模块进行识别的目的;Zhao等提出面向目标的程序理解策略,将源代码中的方法及其参数与外部需求文档通过向量空间检索技术建立关联,再将该检索信息与程序分支调用图建立映射,通过多种信息源提高识别准确度。这种方法易于扩展,且可以较好定位编程人员的思路,具有较高准确度,但依赖于规范的代码格式以及外部描述文档,对于纯粹的代码文件识别效率低甚至无法识别。
基于程序特征的分类方法是通过程序控制流图结构、抽象符号树结构、变量个数等特征,将这些特征抽象为特征向量,再使用向量相似度、聚类算法、深度学习、神经网络等方式对输入特征向量进行分类,从而达到识别算法的目的。Tahekhani通过分析程序结构建立数值属性和描述属性组成的特征向量,其中描述属性包括是否递归、是否有冗余数组等信息,在使用C4.5决策树分类算法完成对排序算法的分类;Kontogiannis针对代码中的变量个数、函数调用、IO操作、参数和控制流图建立代码特征向量,使用欧氏距离进行相似代码识别;Fake等通过检测代码对应的抽象符号树和语法后缀树来进行程序相似度识别,进一步提高了识别的准确度。这种方法在效率和识别精度上都有不错的表现,但效果依赖于训练集大小,且对于识别所用模型需要较长的训练时间。
对于密码算法的识别,则是在现有算法自动识别技术的基础上,基于密码算法的特征做出一定的优化。早期的方式是通过检测程序中是否存在密码算法的静态特征,比如检测程序中是否存在S盒、残差矩阵等只应用于少数密码算法的特征,从而输出算法的名字。在这之上,Caballero J等通过加密函数位运算占总指令比例较大的特征来进行识别,Wondracek G等通过计算缓冲区的信息熵来判断是否出现加密后的密文。Calvet J等通过记录程序的轨迹信息,识别循环里的轨迹结构,提取循环结构的输入输出参数,最后将输入输出内存数据和已知算法进行匹配来进行检验。但以上的方法,通过特征匹配进行识别适用性有限,且只对少量特定复杂密码算法识别精度较高,通过密码函数的指令特征进行分类的方式难以找到一个通用的分类模型,同时对于算法优化过程中破坏循环结构的情况极容易产生漏报。
专利申请CN115659376 A公开了一种基于符号执行生成数据流图的加密算法识别装置及方法,该方法步骤如下:将加密算法对应的签名语言转换为相应的数据流图;构造与指令集体系架构无关的数据流图;加密算法识别模块得到的签名的数据流图,以及得到的二进制数据流图作为输入,通过乌尔曼子图同构对二进制进行加密算法的识别;判断二进制中是否存在加密算法中的任意一个实现或两种加密算法都存在于二进制中,若是,则在二进制数据流图中将识别到的加密算法对应的数据流图部分标红显示,否则,不对二进制数据流图做任何操作;输出二进制的数据流图。
但是,上述方法存在以下缺点:1)对优化逻辑识别效率低。该方法主要使用的识别方式是乌尔曼子图同构,这种方法可以有效识别图中的子图,亦即若程序A中原封不动的调用了算法B,可以识别到A中使用了B,但如果程序A在使用B的时候,并不是完整调用而是将B的逻辑分散到A中,或者结合于A的逻辑中,或者通过改写B的逻辑从而优化B的执行效率,这几种情况下A中没有B的同构子图,因此识别不到A中使用了B。2)对噪音抗性低。该方法对数据流图进行整体的特征匹配,因此如果在程序中有不参与实际运算的变量,比如按照时间戳控制运行阶段的变量,这部分变量会在控制流图中显示为嵌入密码算法控制流图内部的循环分支,增加了输入变量并且改变了图结构,会导致程序流图的相似性极大下降,从而降低匹配精度。
因此,目前程序识别算法对于加密算法识别,尤其是人为修改了部分分支逻辑或是添加了无关变量的情况下,存在效率较低以及识别精度差的问题。
发明内容
针对现有技术的不足,本发明提供一种基于控制流图相似性的加密算法识别方法及装置。
根据本发明的一个方面,提供了一种基于控制流图相似性的加密算法识别方法,包括:
根据输入程序的二进制程序或者程序源代码生成控制流图;
按照运行等效规则,将控制流图转化为最大出度为2的简单图;
使用深度优先算法从输出节点开始对简单图回溯,确定实际参与生成密文C运算的目标变量,将目标变量参与密文运算形成的路径确定为有效路径,形成有效路径森林;
提取有效路径森林的特征向量,基于提取的特征向量以及经密码算法库训练的K-means特征平面,从密码算法库中确定与输入程序对应的加密算法。
可选地,所述控制流图以ACG=(V,E,Σ)来表征,其中ACG表示带属性控制流图,V表示一段连续执行的代码所构成的节点的集合,E表示存在调用关系的节点所形成的有向边的集合,Σ表示节点的多维特征的集合。
可选地,所述按照运行等效规则,将控制流图转化为最大出度为2的简单图,包括:
使用广度优先搜索算法对控制流图进行遍历;
在遍历过程中如果遇到自环节点则通过添加空节点,将循环判定转移成空节点指向原节点的边,以消除自环;若遇到一个目标节点存在三个及以上的子节点,则通过添加空节点,将除第一个子节点之外的其他判定条件转移到空节点上,以此将目标节点的出度降低为2;
当广度优先搜索算法结束时,得到最大出度为2的简单图。
可选地,所述使用深度优先算法从输出节点开始对简单图回溯,确定实际参与生成密文C运算的目标变量,将目标变量参与密文运算形成的路径确定为有效路径,形成有效路径森林,包括:
翻转简单图中边的方向,使用深度优先算法从输出节点开始对简单图回溯,维护影响输出变量的表M,其中表M初始只有输出变量密文C;
若回溯时遇到影响表M中任一变量的变量n,则将变量n确定为实际参与生成密文C运算的目标变量,将变量n加入表M,同时记录变量n和表M中变量所对应的路径;
将逆途径中起点为初始节点、终点为输出节点的不重复生成树分别记录,并删除路径中不含表M内变量的节点,得到目标变量参与密文运算形成的有效路径,组成有效路径森林。
可选地,所述提取有效路径森林的特征向量,包括:
提取有效路径森林的结构特征作为函数第一特征,其中函数第一特征包括有效路径森林中树的数量、最大深度、节点总数、复用节点数;
提取有效路径森林中的节点特征作为函数第二特征,其中函数第二特征包括有效路径森林中的节点入度、节点出度、节点中语义信息、节点中使用的系统调用数;
将函数第一特征和函数第二特征拼接为一个多维向量,作为有效路径森林的特征向量。
可选地,所述基于提取的特征向量以及经密码算法库训练的K-means特征平面,从密码算法库中确定与输入程序对应的加密算法,包括:
使用预设的对称协方差矩阵对特征向量进行运算,确定特征向量在坐标平面上的目标位置,其中对称协方差矩阵能够区分不同的密码算法;
将目标位置输入经密码算法库训练的K-means特征平面,通过K-means算法计算目标位置与密码算法库中的各种加密算法的相似度;
根据相似度,从密码算法库中确定与输入程序对应的加密算法。
根据本发明的另一个方面,提供了一种基于控制流图相似性的加密算法识别装置,包括:
控制流图生成模块,用于根据输入程序的二进制程序或者程序源代码生成控制流图;
控制流图转化模块,用于按照运行等效规则,将控制流图转化为最大出度为2的简单图;
有效路径森林确定模块,用于使用深度优先算法从输出节点开始对简单图回溯,确定实际参与生成密文C运算的目标变量,将目标变量参与密文运算形成的路径确定为有效路径,形成有效路径森林;
加密算法识别模块,用于提取有效路径森林的特征向量,基于提取的特征向量以及经密码算法库训练的K-means特征平面,从密码算法库中确定与输入程序对应的加密算法。
可选地,所述控制流图以ACG=(V,E,Σ)来表征,其中ACG表示带属性控制流图,V表示一段连续执行的代码所构成的节点的集合,E表示存在调用关系的节点所形成的有向边的集合,Σ表示节点的多维特征的集合。
根据本发明的又一个方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行本发明上述任一方面所述的方法。
根据本发明的又一个方面,提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述可执行指令以实现本发明上述任一方面所述的方法。
本发明首先根据输入程序的二进制程序或者程序源代码生成控制流图,然后通过对控制流图进行简单图化,并且通过从输出进行回溯的方式过滤有效路径。通过回溯的方式,可以精确识别出实际参与生成密文运算的变量,以及在这些变量最后一次参与密文运算之前涉及到的其他变量,从而可以追溯所有直接或间接参与密文生成的变量,排除噪音变量,并且生成实际参与密文运算的有效路径森林。最后,本发明提取有效路径森林的特征向量,基于提取的特征向量以及经密码算法库训练的K-means特征平面,从密码算法库中确定与输入程序对应的加密算法,有效提升对密码算法的识别精度,更好的辅助编程人员和维护人员理解代码,提高工作效率。从而,本发明不仅可以高效率的识别出未经修改直接使用的密码算法,同时也可以识别出通过人工方式及现有自动识别技术难以判别的有噪音密码算法以及基于改写逻辑进行优化的密码算法,有效提升识别加密算法的效率与准确率。进而解决了目前程序识别算法对于加密算法识别,尤其是人为修改了部分分支逻辑或是添加了无关变量的情况下,存在效率较低以及识别精度差的技术问题。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1是本发明一示例性实施例提供的基于控制流图相似性的加密算法识别方法的流程示意图;
图2是本发明一示例性实施例提供的从输出节点开始对简单图回溯的流程示意图;
图3是本发明一示例性实施例提供的有效路径森林的示意图;
图4是本发明一示例性实施例提供的基于控制流图相似性的加密算法识别装置的结构示意图;
图5是本发明一示例性实施例提供的电子设备的结构。
具体实施方式
下面,将参考附图详细地描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
本领域技术人员可以理解,本发明实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本发明实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本发明实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本发明中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本发明中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本发明对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于通信终端、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与通信终端、计算机系统、服务器等电子设备一起使用的众所周知的通信终端、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
通信终端、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
本发明涉及的缩略语和关键术语定义:
ACG:attributed control flow graph,带属性控制流图。
最大出度:有向图中,以同一节点为起点的边的集合中的最大数量。
简单图:不含以同一节点为起点和终点的边的图。
逆途径:在图翻转之后所得的路径,即为一条原始图的逆路径。
Mahalanobis距离:又称作马氏距离,是在欧氏距离的基础上,通过引入协方差矩阵的方式,为向量的不同维度赋予不同权重,之后再计算向量间距离的方式。
K-means算法:一种聚类算法,通过计算特征点在特征平面上与迭代运算的各类别中心点的最小距离的方式来判定特征点所代表的内容所属分类。
示例性方法
考虑到在编程人员、维护人员、安全分析人员拿到待处理源代码后,对其进行安全性分析所需进行的前期工作之一便是识别其中是否使用了加密算法,使用了哪种加密算法,但通过人工分析的方法不仅需要很长时间,同时也依赖人员知识深度,准确度无法保证。本发明提出了一种基于控制流图相似性的加密算法识别方法。
图1是本发明一示例性实施例提供的基于控制流图相似性的加密算法识别方法的一个流程示意图。如图1所示,基于控制流图相似性的加密算法识别方法包括以下步骤:
步骤S101:根据输入程序的二进制程序或者程序源代码生成控制流图;
可选地,所述控制流图以ACG=(V,E,Σ)来表征,其中V表示一段连续执行的代码所构成的节点的集合,E表示存在调用关系的节点所形成的有向边的集合,Σ表示节点的多维特征的集合。
在本发明实施例中,可以根据输入程序的二进制程序或原始代码生成控制流图G,其控制流图以ACG=(V,E,Σ)来表征,其中ACG表示带属性控制流图,V表示一段连续执行的代码所构成的节点的集合,E表示存在调用关系的节点所形成的有向边的集合,Σ表示所述函数节点的多维特征的集合。
步骤S102:按照运行等效规则,将控制流图转化为最大出度为2的简单图;
可选地,所述按照运行等效规则,将控制流图转化为最大出度为2的简单图,包括:使用广度优先搜索算法对控制流图进行遍历;在遍历过程中如果遇到自环节点则通过添加空节点,将循环判定转移成空节点指向原节点的边,以消除自环;若遇到一个目标节点存在三个及以上的子节点,则通过添加空节点,将除第一个子节点之外的其他判定条件转移到空节点上,以此将目标节点的出度降低为2;当广度优先搜索算法结束时,得到最大出度为2的简单图。
在本发明实施例中,可以使用广度优先搜索算法,对控制流图G进行遍历,在遍历过程中如果遇到自环节点则通过添加空节点,将循环判定转移成空节点指向原节点的边以消除自环;若遇到出度大于2的节点,则通过添加空节点,将除第一个之外的其他判定条件转移到空节点上,以此将该节点的出度降低为2。
具体来说,根据生成的控制流图G,通过添加冗余空节点的方式将控制流图转化为最大出度为2的简单图,由于向空节点转移没有单独的条件要求,同时空节点内部不含有对数据流的操作以及控制流的转移,其输出也是原有节点本身的分支,因此这样的冗余节点不会改变程序的运行结果,即运行等效。使用广度优先搜索对所述控制流图进行遍历,当一个节点n存在边<n,n>即存在自环时,增加空节点k,删除边<n,n>并增加边<n,k>和边<k,n>;当一个节点n存在三个及以上的子节点,编号为N[0],N[1],N[2],…,N[q],则保留N[0],增加空节点k,将k连接N中剩余其他节点。当广度优先搜索结束时,图就被格式化为了最大出度为2的简单图G’。
从而,本发明采取了增加冗余节点数从而将所有条件判断改写成为数个结构与条件判断相似的出度为2的节点,实现将不同逻辑实现的代码的控制流图进行归一化。
步骤S103:使用深度优先算法从输出节点开始对简单图回溯,确定实际参与生成密文C运算的目标变量,将目标变量参与密文运算形成的路径确定为有效路径,形成有效路径森林;
可选地,所述使用深度优先算法从输出节点开始对简单图回溯,确定实际参与生成密文C运算的目标变量,将目标变量参与密文运算形成的路径确定为有效路径,形成有效路径森林,包括:翻转简单图中边的方向,使用深度优先算法从输出节点开始对简单图回溯,维护影响输出变量的表M,其中表M初始只有输出变量密文C;若回溯时遇到影响表M中任一变量的变量n,则将变量n确定为实际参与生成密文C运算的目标变量,将变量n加入表M,同时记录变量n和表M中变量所对应的路径;将逆途径中起点为初始节点、终点为输出节点的不重复生成树分别记录,并删除路径中不含表M内变量的节点,得到目标变量参与密文运算形成的有效路径,组成有效路径森林。
在本发明实施例中,使用深度优先算法从输出节点开始对简单图G’回溯,维护影响输出变量的表M,表M初始只有输出变量,若回溯时遇到影响表M中任一变量的变量n,则将n加入表M,同时记录和表中变量所对应的途径。然后将所述逆途径中起点为初始节点、终点为输出节点的不重复生成树分别记录下来,并删除路径中不含M内变量的节点。简化之后,对于森林中的树,若其存在包括输出节点的同构子图,则将其合并,最后得到的生成树集合即组成有效生成森林F。
具体为,翻转简单图G’中边的方向,然后使用深度优先算法从输出节点开始对G’回溯,维护影响输出变量的表H,表H初始只有输出变量(输出节点)密文C,在遍历过程中,如图2所示,x,M,k(变量)都与参与了C的数值变换,因此是有效变量,也被加入到H中,在遍历完毕后,表H中只有M,C,x,k四个变量,然后分别检查三条路径,经过整理后,M,C,x和M,C,k各自形成了1条不重复有效路径,删除其中不含有对应变量的节点,得到了如图3所示的有效路径森林F,可见与密文生成过程无关的TCP包封装与服务器认证过程被消除掉了。由此可见本发明对于增加无关变量造成的影响有显著效果。
从而,本发明通过回溯的方式,能够精确识别出实际参与生成密文运算的变量,以及在这些变量最后一次参与密文运算之前涉及到的其他变量,从而可以追溯所有直接或间接参与密文生成的变量,排除噪音变量,并且生成实际参与密文运算的有效路径森林。
步骤S104:提取有效路径森林的特征向量,基于提取的特征向量以及经密码算法库训练的K-means特征平面,从密码算法库中确定与输入程序对应的加密算法。
可选地,所述提取有效路径森林的特征向量,包括:提取有效路径森林的结构特征作为函数第一特征,其中函数第一特征包括有效路径森林中树的数量、最大深度、节点总数、复用节点数;提取有效路径森林中的节点特征作为函数第二特征,其中函数第二特征包括有效路径森林中的节点入度、节点出度、节点中语义信息、节点中使用的系统调用数;将函数第一特征和函数第二特征拼接为一个多维向量,作为有效路径森林的特征向量。
在本发明实施例中,在获得森林F之后,提取其森林结构特征作为函数第一特征,提取森林中节点特征作为函数第二特征。提取森林中树的数量、最大深度、节点总数、复用节点数等结构信息作为第一特征,提取森林中的节点入度、节点出度、节点中语义信息、节点中使用的系统调用数等节点信息结合节点复用次数加权得到第二特征。将第一特征和第二特征拼接为一个多维向量,输出整个森林的特征向量V。
可选地,所述基于提取的特征向量以及经密码算法库训练的K-means特征平面,从密码算法库中确定与输入程序对应的加密算法,包括:使用预设的对称协方差矩阵对特征向量进行运算,确定特征向量在坐标平面上的目标位置,其中对称协方差矩阵能够区分不同的密码算法;将目标位置输入经密码算法库训练的K-means特征平面,通过K-means算法计算目标位置与密码算法库中的各种加密算法的相似度;根据相似度,从密码算法库中确定与输入程序对应的加密算法。
在本发明实施例中,使用各种已知密码算法代码,同种密码算法收录不同语言的多个版本,按步骤上述步骤提取其特征向量,通过神经网络拟合,计算出一个能够显著区分不同密码算法的对称协方差矩阵。然后使用该协方差矩阵计算各个特征向量与原点的距离,之后使用K-means训练算法对特征平面内代表同种算法的点进行聚类,从而得到用于判断类别的K-means特征平面。
利用训练完成的K-means特征平面,对于未知的待测程序(对应于输入程序),按照上述步骤生成其特征向量V,特征向量V经由对称协方差矩阵Σ运算,得到其在坐标平面上的位置,将该位置输入经密码算法库训练的K-means特征平面,通过K-means算法计算其与各种已知算法的相似度,并得到最接近的已知算法。在一个示例中,经过运算该算法与椭圆曲线加密、PSA等算法的相似度均低于与SM2算法的相似度,因此将其判定为SM2算法。
目前现有密码算法识别工具,包括Findcrypt2,KANAL,DRACA等,对SM2密码算法识别的准确度普遍低于80%,通过本发明可以明显提高识别精度。
综上所述,本发明首先根据输入程序的二进制程序或者程序源代码生成控制流图,然后通过对控制流图进行简单图化,并且通过从输出进行回溯的方式过滤有效路径。通过回溯的方式,可以精确识别出实际参与生成密文运算的变量,以及在这些变量最后一次参与密文运算之前涉及到的其他变量,从而可以追溯所有直接或间接参与密文生成的变量,排除噪音变量,并且生成实际参与密文运算的有效路径森林。最后,本发明提取有效路径森林的特征向量,基于提取的特征向量以及经密码算法库训练的K-means特征平面,从密码算法库中确定与输入程序对应的加密算法,有效提升对密码算法的识别精度,更好的辅助编程人员和维护人员理解代码,提高工作效率。从而,本发明不仅可以高效率的识别出未经修改直接使用的密码算法,同时也可以识别出通过人工方式及现有自动识别技术难以判别的有噪音密码算法以及基于改写逻辑进行优化的密码算法,有效提升识别加密算法的效率与准确率。进而解决了目前程序识别算法对于加密算法识别,尤其是人为修改了部分分支逻辑或是添加了无关变量的情况下,存在效率较低以及识别精度差的技术问题。
示例性装置
图4是本发明一示例性实施例提供的基于控制流图相似性的加密算法识别装置400的结构示意图。如图4所示,该装置400包括:
控制流图生成模块410,用于根据输入程序的二进制程序或者程序源代码生成控制流图;
控制流图转化模块420,用于按照运行等效规则,将控制流图转化为最大出度为2的简单图;
有效路径森林确定模块430,用于使用深度优先算法从输出节点开始对简单图回溯,确定实际参与生成密文C运算的目标变量,将目标变量参与密文运算形成的路径确定为有效路径,形成有效路径森林;
加密算法识别模块440,用于提取有效路径森林的特征向量,基于提取的特征向量以及经密码算法库训练的K-means特征平面,从密码算法库中确定与输入程序对应的加密算法。
可选地,所述控制流图以ACG=(V,E,Σ)来表征,其中ACG表示带属性控制流图,V表示一段连续执行的代码所构成的节点的集合,E表示存在调用关系的节点所形成的有向边的集合,Σ表示节点的多维特征的集合。
本发明的实施例的基于控制流图相似性的加密算法识别装置与本发明的另一个实施例的基于控制流图相似性的加密算法识别方法相对应,在此不再赘述。
示例性电子设备
图5是本发明一示例性实施例提供的电子设备的结构。如图5所示,电子设备50包括一个或多个处理器51和存储器52。
处理器51可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器52可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器51可以运行所述程序指令,以实现上文所述的本发明的各个实施例的软件程序的方法以及/或者其他期望的功能。在一个示例中,电子设备还可以包括:输入装置53和输出装置54,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入装置53还可以包括例如键盘、鼠标等等。
该输出装置54可以向外部输出各种信息。该输出装置54可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图5中仅示出了该电子设备中与本发明有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本发明的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本发明的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,在本发明中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明中涉及的器件、系统、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、系统、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
还需要指出的是,在本发明的系统、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (9)

1.一种基于控制流图相似性的加密算法识别方法,其特征在于,包括:
根据输入程序的二进制程序或者程序源代码生成控制流图;
按照运行等效规则,将控制流图转化为最大出度为2的简单图;
使用深度优先算法从输出节点开始对简单图回溯,确定实际参与生成密文C运算的目标变量,将目标变量参与密文运算形成的路径确定为有效路径,形成有效路径森林;
提取有效路径森林的特征向量,基于提取的特征向量以及经密码算法库训练的K-means特征平面,从密码算法库中确定与输入程序对应的加密算法;其中
所述使用深度优先算法从输出节点开始对简单图回溯,确定实际参与生成密文C运算的目标变量,将目标变量参与密文运算形成的路径确定为有效路径,形成有效路径森林,包括:
翻转简单图中边的方向,使用深度优先算法从输出节点开始对简单图回溯,维护影响输出变量的表M,其中表M初始只有输出变量密文C;
若回溯时遇到影响表M中任一变量的变量n,则将变量n确定为实际参与生成密文C运算的目标变量,将变量n加入表M,同时记录变量n和表M中变量所对应的路径;
将逆途径中起点为初始节点、终点为输出节点的不重复生成树分别记录,并删除路径中不含表M内变量的节点,得到目标变量参与密文运算形成的有效路径,组成有效路径森林。
2.根据权利要求1所述的方法,其特征在于,所述控制流图以ACG=(V,E,Σ)来表征,其中ACG表示带属性控制流图,V表示一段连续执行的代码所构成的节点的集合,E表示存在调用关系的节点所形成的有向边的集合,Σ表示节点的多维特征的集合。
3.根据权利要求1所述的方法,其特征在于,所述按照运行等效规则,将控制流图转化为最大出度为2的简单图,包括:
使用广度优先搜索算法对控制流图进行遍历;
在遍历过程中如果遇到自环节点则通过添加空节点,将循环判定转移成空节点指向原节点的边,以消除自环;若遇到一个目标节点存在三个及以上的子节点,则通过添加空节点,将除第一个子节点之外的其他判定条件转移到空节点上,以此将目标节点的出度降低为2;
当广度优先搜索算法结束时,得到最大出度为2的简单图。
4.根据权利要求1所述的方法,其特征在于,所述提取有效路径森林的特征向量,包括:
提取有效路径森林的结构特征作为函数第一特征,其中函数第一特征包括有效路径森林中树的数量、最大深度、节点总数、复用节点数;
提取有效路径森林中的节点特征作为函数第二特征,其中函数第二特征包括有效路径森林中的节点入度、节点出度、节点中语义信息、节点中使用的系统调用数;
将函数第一特征和函数第二特征拼接为一个多维向量,作为有效路径森林的特征向量。
5.根据权利要求1所述的方法,其特征在于,所述基于提取的特征向量以及经密码算法库训练的K-means特征平面,从密码算法库中确定与输入程序对应的加密算法,包括:
使用预设的对称协方差矩阵对特征向量进行运算,确定特征向量在坐标平面上的目标位置,其中对称协方差矩阵能够区分不同的密码算法;
将目标位置输入经密码算法库训练的K-means特征平面,通过K-means算法计算目标位置与密码算法库中的各种加密算法的相似度;
根据相似度,从密码算法库中确定与输入程序对应的加密算法。
6.一种基于控制流图相似性的加密算法识别装置,其特征在于,包括:
控制流图生成模块,用于根据输入程序的二进制程序或者程序源代码生成控制流图;
控制流图转化模块,用于按照运行等效规则,将控制流图转化为最大出度为2的简单图;
有效路径森林确定模块,用于使用深度优先算法从输出节点开始对简单图回溯,确定实际参与生成密文C运算的目标变量,将目标变量参与密文运算形成的路径确定为有效路径,形成有效路径森林;
加密算法识别模块,用于提取有效路径森林的特征向量,基于提取的特征向量以及经密码算法库训练的K-means特征平面,从密码算法库中确定与输入程序对应的加密算法;
所述使用深度优先算法从输出节点开始对简单图回溯,确定实际参与生成密文C运算的目标变量,将目标变量参与密文运算形成的路径确定为有效路径,形成有效路径森林,包括:
翻转简单图中边的方向,使用深度优先算法从输出节点开始对简单图回溯,维护影响输出变量的表M,其中表M初始只有输出变量密文C;
若回溯时遇到影响表M中任一变量的变量n,则将变量n确定为实际参与生成密文C运算的目标变量,将变量n加入表M,同时记录变量n和表M中变量所对应的路径;
将逆途径中起点为初始节点、终点为输出节点的不重复生成树分别记录,并删除路径中不含表M内变量的节点,得到目标变量参与密文运算形成的有效路径,组成有效路径森林。
7.根据权利要求6所述的装置,其特征在于,所述控制流图以ACG=(V,E,Σ)来表征,其中ACG表示带属性控制流图,V表示一段连续执行的代码所构成的节点的集合,E表示存在调用关系的节点所形成的有向边的集合,Σ表示节点的多维特征的集合。
8.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-5任一所述的方法。
9.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述可执行指令以实现上述权利要求1-5任一所述的方法。
CN202310728275.6A 2023-06-20 2023-06-20 一种基于控制流图相似性的加密算法识别方法及装置 Active CN116502140B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310728275.6A CN116502140B (zh) 2023-06-20 2023-06-20 一种基于控制流图相似性的加密算法识别方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310728275.6A CN116502140B (zh) 2023-06-20 2023-06-20 一种基于控制流图相似性的加密算法识别方法及装置

Publications (2)

Publication Number Publication Date
CN116502140A CN116502140A (zh) 2023-07-28
CN116502140B true CN116502140B (zh) 2023-09-01

Family

ID=87318631

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310728275.6A Active CN116502140B (zh) 2023-06-20 2023-06-20 一种基于控制流图相似性的加密算法识别方法及装置

Country Status (1)

Country Link
CN (1) CN116502140B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109698835A (zh) * 2019-01-19 2019-04-30 郑州轻工业学院 一种面向https隐蔽隧道的加密木马检测方法
CN114722932A (zh) * 2022-04-02 2022-07-08 武汉理工大学 一种商用密码算法识别方法、系统、介质、设备及终端
CN115544490A (zh) * 2022-09-29 2022-12-30 山东大学 一种检测二进制文件中密码常量的方法及系统
CN115659376A (zh) * 2022-11-10 2023-01-31 西安电子科技大学 基于符号执行生成数据流图的加密算法识别装置及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109698835A (zh) * 2019-01-19 2019-04-30 郑州轻工业学院 一种面向https隐蔽隧道的加密木马检测方法
CN114722932A (zh) * 2022-04-02 2022-07-08 武汉理工大学 一种商用密码算法识别方法、系统、介质、设备及终端
CN115544490A (zh) * 2022-09-29 2022-12-30 山东大学 一种检测二进制文件中密码常量的方法及系统
CN115659376A (zh) * 2022-11-10 2023-01-31 西安电子科技大学 基于符号执行生成数据流图的加密算法识别装置及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Cryptographic Function Detection in Obfuscated Binaries via Bit-precise Symbolic Loop Mapping;Dongpeng Xu et al.;《2017 IEEE Symposium on Security and Privacy》;全文 *

Also Published As

Publication number Publication date
CN116502140A (zh) 2023-07-28

Similar Documents

Publication Publication Date Title
CN108446540B (zh) 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统
US11816078B2 (en) Automatic entity resolution with rules detection and generation system
CN111611586B (zh) 基于图卷积网络的软件漏洞检测方法及装置
CN111460472B (zh) 一种基于深度学习图网络的加密算法识别方法
KR102310487B1 (ko) 속성 단위 리뷰 분석 장치 및 방법
AU2019204444B2 (en) System and method for enrichment of ocr-extracted data
CN111092894A (zh) 一种基于增量学习的webshell检测方法、终端设备及存储介质
CN115174231A (zh) 一种基于AI Knowledge Base的网络欺诈分析方法及服务器
CN115146279A (zh) 程序漏洞检测方法、终端设备及存储介质
CN113722719A (zh) 针对安全拦截大数据分析的信息生成方法及人工智能系统
CN113297580B (zh) 基于代码语义分析的电力信息系统安全防护方法及装置
CN111694570A (zh) 一种基于静态程序分析的JavaScript函数参数不匹配检测方法
CN116502140B (zh) 一种基于控制流图相似性的加密算法识别方法及装置
CN111737694A (zh) 一种基于行为树的恶意软件同源性分析方法
CN111831624A (zh) 数据表创建方法、装置、计算机设备及存储介质
CN116361788A (zh) 一种基于机器学习的二进制软件漏洞预测方法
Sinpang et al. Detecting ambiguity in requirements analysis using Mamdani fuzzy inference
CN112230895B (zh) 一种el表达式解析方法、装置、设备及存储介质
CN113869398A (zh) 一种不平衡文本分类方法、装置、设备及存储介质
Kim et al. Research on autoencdoer technology for malware feature purification
CN117668237B (zh) 用于智能模型训练的样本数据处理方法、系统及智能模型
CN116136866B (zh) 基于知识图谱的中文新闻摘要事实性知识校正方法和装置
CN115037648B (zh) 基于数据流约简的智能合约测试用例生成方法及系统
US20240069538A1 (en) Systems and methods for harnessing label semantics to extract higher performance under noisy label for company to industry matching
CN116204877A (zh) 一种基于图对比学习的代码漏洞检测方法

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