CN115718696A - 源码密码学误用检测方法、装置、电子设备和存储介质 - Google Patents
源码密码学误用检测方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115718696A CN115718696A CN202211273176.5A CN202211273176A CN115718696A CN 115718696 A CN115718696 A CN 115718696A CN 202211273176 A CN202211273176 A CN 202211273176A CN 115718696 A CN115718696 A CN 115718696A
- Authority
- CN
- China
- Prior art keywords
- character string
- source code
- node
- characteristic character
- data dependency
- 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
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种源码密码学误用检测方法、装置、电子设备和存储介质,其中,该方法包括:获取待检测的源码;根据源码的抽象语法树和数据依赖图提取源码中与密码学有关的特征,得到特征字符串;对特征字符串进行分词和去噪,得到特征字符串数组;将特征字符串数组对应的多个向量输入目标模型,得到特征字符串数组对应的密码学误用类型。通过本发明,解决了相关技术中存在的密码学误用检测漏报率较高的问题。
Description
技术领域
本发明涉及信息安全中的应用安全领域,尤其涉及一种源码密码学误用检测方法、装置、电子设备和存储介质。
背景技术
在使用软件同互联网进行通信时,要满足信息安全的可用性、保密性和完整性。随着密码学应用的发展,不同的语言逐渐开始支持现有的各种密码学原语和安全通信框架,如JAVA提供了JCA(Java Cryptography Architecture,Java加密体系结构)和JSSE(JavaSecure Sockets Extension,Java安全套接字扩展包)作为JAVA软件中安全通信的工具。这些密码学库为软件开发提供了相关密码学原语的接口供开发者使用。然而,由于大多数开发者对于密码学以及应用并不了解,导致引入了密码学误用。在电力领域,电力低功耗宽窄融合无线传感网络环境,在正确使用密码学原语的基础上还需考虑密码算法的功耗问题。在现阶段,数据加密、消息摘要生成、SSL(Secure Sockets Layer,安全套接字协议)框架的使用上存在大量的误用问题,以使用了过时的密码学算法、不正确配置算法、错误的验证逻辑为主。
现有的通过规则匹配的方式对密码学误用进行检测需要人为制定复杂的规则,人为制定规则往往难以覆盖所有用例,并且偏向于出现频繁的误用样例。另外,基于规则检测的方法难以准确检测存在对抗策略的误用问题,导致漏报率较高;基于机器学习的密码学检测技术由于对源码的处理不够精细,也难以准确检测加入了对抗策略的密码学误用问题。因此,现有技术中存在密码学误用检测漏报率较高的问题。
发明内容
本发明提供了一种源码密码学误用检测方法、装置、电子设备和存储介质,以至少解决相关技术中存在的密码学误用检测漏报率较高的问题。
根据本发明实施例的第一方面,提供了一种源码密码学误用检测方法,该方法包括:获取待检测的源码;根据所述源码的抽象语法树和数据依赖图提取所述源码中与密码学有关的特征,得到特征字符串;对所述特征字符串进行分词和去噪,得到特征字符串数组;将所述特征字符串数组对应的多个向量输入目标模型,得到所述特征字符串数组对应的密码学误用类型。
可选地,所述根据所述源码的抽象语法树和数据依赖图提取所述源码中与密码学有关的特征,得到特征字符串包括:遍历数据依赖图确定关键节点和与关键节点有数据依赖关系的相关节点,其中,所述关键节点为调用目标函数的函数调用节点;根据所述关键节点和与关键节点有数据依赖关系的相关节点遍历抽象语法树,得到特征字符串。
可选地,所述遍历数据依赖图确定关键节点和与关键节点有数据依赖关系的相关节点,其中,所述关键节点为调用目标函数的函数调用节点包括:从数据依赖图的根节点开始遍历,若任一节点属于目标函数,将所述任一节点存入关键节点列表;根据所述关键节点列表遍历数据依赖图,将与关键节点有数据依赖关系的相关节点存入相关节点集合。
可选地,所述根据所述关键节点和与关键节点有数据依赖关系的相关节点遍历抽象语法树,得到特征字符串包括:初始化特征字符串;若抽象语法树中任一子树的根节点是与关键节点有数据依赖关系的相关节点,根据目标遍历方式遍历所述任一子树的叶子结点,将属性为字符串常量的叶子节点的值存入所述特征字符串。
可选地,所述对所述特征字符串进行分词和去噪,得到特征字符串数组包括:根据贪心匹配和目标词典对特征字符串进行分词;若所述特征字符串在目标词典中匹配不到结果,则对所述特征字符串进行去噪处理;对去噪处理后的特征字符串根据贪心匹配和目标词典继续分词,得到特征字符串数组。
可选地,所述若所述特征字符串在目标词典中匹配不到结果,则对所述特征字符串进行去噪处理,包括:从特征字符串起始位置向后依次进行匹配,得到噪声子串;根据编辑距离确定噪声子串中是否包含目标词典中的字符串参数;若噪声子串中包含目标词典中的字符串参数,通过逐字匹配进行去噪。
可选地,在所述将所述特征字符串数组对应的多个向量输入目标模型,得到所述特征字符串数组对应的密码学误用类型之前,所述方法还包括:根据扩充后的对抗性攻击策略对源码进行突变,生成突变后的源码的特征字符串数组;根据词嵌入模型生成所述突变后的源码的特征字符串数组对应的多个向量;根据所述特征字符串数组对应的多个向量训练神经网络模型得到目标模型。
可选地,所述方法还包括:根据仿真实验和物理实验确定多种加密算法的功耗;根据所述密码学误用类型确定源码使用的加密算法;根据所述加密算法和所述多种加密算法的功耗确定所述源码对应的加密算法的功耗。
根据本发明实施例的第二方面,还提供了一种源码密码学误用检测装置,所述装置包括:获取模块,用于获取待检测的源码;第一得到模块,用于根据所述源码的抽象语法树和数据依赖图提取所述源码中与密码学有关的特征,得到特征字符串;第二得到模块,用于对所述特征字符串进行分词和去噪,得到特征字符串数组;第三得到模块,用于将所述特征字符串数组对应的多个向量输入目标模型,得到所述特征字符串数组对应的密码学误用类型。
可选地,所述第一得到模块包括:确定单元,用于遍历数据依赖图确定关键节点和与关键节点有数据依赖关系的相关节点,其中,所述关键节点为调用目标函数的函数调用节点;得到单元,用于根据所述关键节点和与关键节点有数据依赖关系的相关节点遍历抽象语法树,得到特征字符串。
可选地,所述确定单元包括:第一存储子模块,用于从数据依赖图的根节点开始遍历,若任一节点属于目标函数,将所述任一节点存入关键节点列表;第二存储子模块,用于根据所述关键节点列表遍历数据依赖图,将与关键节点有数据依赖关系的相关节点存入相关节点集合。
可选地,所述得到单元包括:初始化子模块,用于初始化特征字符串;存储子模块,用于当抽象语法树中任一子树的根节点是与关键节点有数据依赖关系的相关节点,根据目标遍历方式遍历所述任一子树的叶子结点,将属性为字符串常量的叶子节点的值存入所述特征字符串。
可选地,所述第二得到模块包括:分词单元,用于根据贪心匹配和目标词典对特征字符串进行分词;去噪单元,用于当所述特征字符串在目标词典中匹配不到结果,则对所述特征字符串进行去噪处理;得到单元,用于对去噪处理后的特征字符串根据贪心匹配和目标词典继续分词,得到特征字符串数组。
可选地,所述去噪单元包括:得到子模块,用于从特征字符串起始位置向后依次进行匹配,得到噪声子串;确定子模块,用于根据编辑距离确定噪声子串中是否包含目标词典中的字符串参数;去噪子模块,用于若噪声子串中包含目标词典中的字符串参数,通过逐字匹配进行去噪。
可选地,所述装置还包括:第一生成模块,用于根据扩充后的对抗性攻击策略对源码进行突变,生成突变后的源码的特征字符串数组;第二生成模块,用于根据词嵌入模型生成所述突变后的源码的特征字符串数组对应的多个向量;第四得到模块,用于根据所述特征字符串数组对应的多个向量训练神经网络模型得到目标模型。
可选地,所述装置还包括:第一确定模块,用于根据仿真实验和物理实验确定多种加密算法的功耗;第二确定模块,用于根据所述密码学误用类型确定源码使用的加密算法;第三确定模块,用于根据所述加密算法和所述多种加密算法的功耗确定所述源码对应的加密算法的功耗。
根据本发明实施例的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。
根据本发明实施例的第四方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
在本发明实施例中,通过获取待检测的源码;根据源码的抽象语法树和数据依赖图提取源码中与密码学有关的特征,得到特征字符串;对特征字符串进行分词和去噪,得到特征字符串数组;将特征字符串数组对应的多个向量输入目标模型,得到特征字符串数组对应的密码学误用类型。由于对源码中与密码学有关的字符串进行了特征提取,并且通过分词和去噪去除了对抗性攻击策略,结合神经网络模型的处理能力,解决了相关技术中存在的密码学误用检测漏报率较高的问题。
在本发明实施例中,通过仿真实验和物理实验确定多种加密算法的功耗,根据密码学误用类型确定源码使用的加密算法,从而确定源码对应的加密算法的功耗,实现了在电力低功耗宽窄融合无线传感网络环境下确定源码功耗的目的。
在本发明实施例中,通过扩充后的对抗性攻击策略对源码进行突变,生成突变后的源码的特征字符串数组,根据词嵌入模型生成其对应的向量,训练神经网络模型得到目标模型,更好的解决了由于对抗性攻击带来的漏报问题。另外,在现有工具所覆盖的基础上扩充了不常见的密码学算法误用问题,最终总结出50种密码学算法误用类型,较全面地覆盖了密码学算法误用问题,提高了检测结果的准确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种可选的源码密码学误用检测方法的硬件环境的示意图;
图2是根据本发明实施例的一种可选的源码密码学误用检测方法的流程示意图;
图3是根据本发明实施例的一种可选的DDG关键节点提取的流程示意图;
图4是根据本发明实施例的一种可选的DDG相关节点提取的流程示意图;
图5是根据本发明实施例的一种可选的目标模型的整体架构示意图;
图6是根据本发明实施例的一种可选的源码密码学误用检测装置的结构框图;
图7是根据本发明实施例的一种可选的电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的第一方面,提供了一种源码密码学误用检测方法。可选地,在本实施例中,上述源码密码学误用检测方法可以应用于如图1所示的硬件环境中。如图1所示,终端102中可以包含有存储器104、处理器106和显示器108(可选部件)。终端102可以通过网络110与服务器112进行通信连接,该服务器112可用于为终端或终端上安装的客户端提供服务(如应用服务等),可在服务器112上或独立于服务器112设置数据库114,用于为服务器112提供数据存储服务。此外,服务器112中可以运行有处理引擎116,该处理引擎116可以用于执行由服务器112所执行的步骤。
可选地,终端102可以但不限于为可以计算数据的终端,如移动终端(例如手机、平板电脑)、笔记本电脑、PC(Personal Computer,个人计算机)机等终端上,上述网络可以包括但不限于无线网络或有线网络。其中,该无线网络包括:蓝牙、WIFI(Wireless Fidelity,无线保真)及其他实现无线通信的网络。上述有线网络可以包括但不限于:广域网、城域网、局域网。上述服务器112可以包括但不限于任何可以进行计算的硬件设备。
此外,在本实施例中,上述源码密码学误用检测方法还可以但不限于应用于处理能力较强大的独立的处理设备中,而无需进行数据交互。例如,该处理设备可以但不限于为处理能力较强大的终端设备,即,上述源码密码学误用检测方法中的各个操作可以集成在一个独立的处理设备中。上述仅是一种示例,本实施例中对此不作任何限定。
可选地,在本实施例中,上述源码密码学误用检测方法可以由服务器112来执行,也可以由终端102来执行,还可以是由服务器112和终端102共同执行。其中,终端102执行本发明实施例的源码密码学误用检测方法也可以是由安装在其上的客户端来执行。
以源码密码学误用检测方法应用于中央处理单元为例,图2是根据本发明实施例的一种可选的源码密码学误用检测方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:
步骤S201,获取待检测的源码。可选地,要对源码密码学误用情况进行检测,首先要获取源码即源代码,指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。本发明中以JAVA源码为例,对本方法进行详细描述。步骤S202,根据源码的抽象语法树和数据依赖图提取源码中与密码学有关的特征,得到特征字符串。需要说明的是,源码的抽象语法树和数据依赖图可以使用现有工具对源码提取得到,如joern工具,本实施例不对提取工具做具体限定。可选地,抽象语法树(Abstract SyntaxTree,AST)是源代码语法结构的一种抽象表示,它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。数据依赖图(Data flow dependency graph,DDG)以最简单的形式表示各个指令之间的数据依赖关系,这样的图中的每个节点代表一条指令。根据AST和DDG提取源代码中与密码学有关的字符串,从而得到特征字符串,其中,特征字符串包含了调用目标函数时的传参情况等信息。步骤S203,对特征字符串进行分词和去噪,得到特征字符串数组。可选地,分词和去噪能够处理对抗性攻击策略,将处理后的特征字符串数组作为机器学习模型的输入,能够得到更加准确的结果。步骤S204,将特征字符串数组对应的多个向量输入目标模型,得到特征字符串数组对应的密码学误用类型。可选地,将处理后的特征字符串数组转换成向量输入目标模型,得到相应的密码学误用类型。优选地,目标模型使用Bi-LSTM模型,由于Bi-LSTM能够处理长期依赖,并且将输入从两个方向进行计算,从而得到更加准确的特征。
在本发明实施例中,通过获取待检测的源码;根据源码的抽象语法树和数据依赖图提取源码中与密码学有关的特征,得到特征字符串;对特征字符串进行分词和去噪,得到特征字符串数组;将特征字符串数组对应的多个向量输入目标模型,得到特征字符串数组对应的密码学误用类型。由于对源码中与密码学有关的字符串进行了特征提取,并且通过分词和去噪去除了对抗性攻击策略,从而解决了相关技术中存在的密码学误用检测漏报率较高的问题。
作为一种可选实施例,根据源码的抽象语法树和数据依赖图提取源码中与密码学有关的特征,得到特征字符串包括:遍历数据依赖图确定关键节点和与关键节点有数据依赖关系的相关节点,其中,关键节点为调用目标函数的函数调用节点;根据关键节点和与关键节点有数据依赖关系的相关节点遍历抽象语法树,得到特征字符串。可选地,通过遍历数据依赖图找到关键节点,根据关键节点在数据依赖图中找到与关键节点有数据依赖的相关节点,然后根据数据依赖图中关键节点和与关键节点有数据依赖关系的相关节点按照一定顺序遍历抽象语法树,查找抽象语法树中的关键节点和相关节点,提取其中的字符串常量,得到特征字符串。需要说明的是,数据依赖图中的关键节点为调用目标函数的函数调用节点,在JAVA源代码中可以是JCA(Java Cryptography Architecture,Java加密体系结构)相关函数,如MessageDigest.getInstance()、Crypto.getInstance()等。在本实施例中,通过分析源代码的数据依赖图和抽象语法树,提取了源代码中与密码学有关的特征。
作为一种可选实施例,遍历数据依赖图确定关键节点和与关键节点有数据依赖关系的相关节点,其中,关键节点为调用目标函数的函数调用节点包括:从数据依赖图的根节点开始遍历,若任一节点属于目标函数,将任一节点存入关键节点列表;根据关键节点列表遍历数据依赖图,将与关键节点有数据依赖关系的相关节点存入相关节点集合。可选地,如图3所示,遍历DDG,查找关键节点,其中,关键节点在本实施例中的定义为:DDG或AST中的函数调用节点且调用的是JCA相关函数。具体地,从DDG根节点开始,遍历DDG,直到遍历完DDG,对于任一节点i,判断节点i是否为关键节点,即该节点是否属于关键函数,若是,则将节点i保存到关键节点列表,若不是,则继续遍历DDG。需要说明的是,关键节点可以存储在列表中,在列表中记录关键节点的编号,即通过遍历DDG,可以获得一个关键节点列表。在提取关键节点之后,再次遍历DDG查找与关键节点有依赖的节点,其中,依赖指的是关键节点所依赖的节点,因为这些关键函数的调用结果,取决于在这些函数出现前并与之有数据依赖的节点。提取相关节点的流程如图4所示,具体地,遍历DDG,直到遍历完DDG结束,对于任一节点k,判断关键节点i是否依赖于节点k,若是,则将节点k保存到关键节点i对应的集合中,若不是,则继续遍历DDG。在本实施例中,通过遍历数据依赖图,得到了数据依赖图中的关键节点和与关键节点有数据依赖关系的相关节点。
作为一种可选实施例,根据关键节点和与关键节点有数据依赖关系的相关节点遍历抽象语法树,得到特征字符串包括:初始化特征字符串;若抽象语法树中任一子树的根节点是与关键节点有数据依赖关系的相关节点,根据目标遍历方式遍历任一子树的叶子结点,将属性为字符串常量的叶子节点的值存入特征字符串。可选地,在获得关键节点和与关键节点有数据依赖关系的相关节点后,根据关键节点和与关键节点有数据依赖关系的相关节点从抽象语法树中提取特征字符串。需要说明的是,为了保证提取的字符串顺序一致,要用统一的方式遍历抽象语法树提取其中的字符串,根据抽象语法树的特点,代表字符串的节点均为叶子节点,即如果某棵子树的根节点是与关键节点有数据依赖关系的相关节点,则遍历这颗子树的所有叶子节点,提取所有属性为字符串常量的叶子节点的值。
具体地,提取特征字符串的过程如下:首先,初始化特征字符串S为空。其次,以目标遍历方式为递归遍历为例,即对于一棵抽象语法树先访问父节点,再依次访问左节点、右节点。需要说明的是,目标遍历方式也可以使用递归遍历以外的其他遍历方式,本实施例不做具体限定。对于非叶子节点,如果该节点属于某个关键节点的相关节点,则以从左到右的顺序遍历以该节点为根节点的抽象语法树子树的所有叶子节点,将属性为字符串常量的叶子节点的值存入特征字符串S尾部;如果该节点不属于某个关键节点的相关节点,则从左到右递归地处理该节点的所有子节点。
作为一种可选实施例,对特征字符串进行分词和去噪,得到特征字符串数组包括:根据贪心匹配和目标词典对特征字符串进行分词;若特征字符串在目标词典中匹配不到结果,则对特征字符串进行去噪处理;对去噪处理后的特征字符串根据贪心匹配和目标词典继续分词,得到特征字符串数组。可选地,在得到特征字符串后对需要对特征字符串进行去噪、分词,对于JAVA源码,根据JCA的相关说明文档,分析JCA中相关函数的合法参数值,确定目标词典,将该词典作为特征字符串分词的依据,其中,合法指的是函数能够接受参数正确调用,并不代表对密码学原语的正确使用。分词采用贪心匹配模式,即在有二义的情况下,它会匹配最长的字符串。具体地,每次从特征字符串S的开头进行匹配,查找能在目标词典中匹配到的最长的单词,对特征字符串S分割,得到特征字符串数组。在本发明实施例中,通过分词和去噪,对特征字符串进行了处理,去除了添加噪影响的对抗性攻击策略,从而使误用类型的判断更加准确。
作为一种可选实施例,若特征字符串在目标词典中匹配不到结果,则对特征字符串进行去噪处理包括:从特征字符串起始位置向后依次进行匹配,得到噪声子串;根据编辑距离确定噪声子串中是否包含目标词典中的字符串参数;若噪声子串中包含目标词典中的字符串参数,通过逐字匹配进行去噪。可选地,如果特征字符串在目标词典中匹配不到结果,则认为特征字符串中存在噪声,根据去噪算法进行去噪,去噪算法如下:
去噪算法的具体步骤为:从特征字符串S的第i个位置开始与目标词典进行匹配,i的初始值为0,若匹配不成功,将i向后移动一位继续与目标词典进行匹配,若匹配成功,说明噪声位于特征字符串的第i位之前,即S[0:i)为噪声子串。此时可能有两种情况:一种是整个子串S[0:i)为噪声;另一种情况是存在一个子序列s'∈S[0:i),s'是目标词典中的词语,s'以外的字符为噪声字符。根据编辑距离区别这两种情况,编辑距离也叫莱文斯坦距离(Levenshtein),是针对两个字符串的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串。具体地,在本实施例中规定:对于噪声子串s,如果s与目标词典中的某个匹配词w的编辑距离小于两个词的长度平均值,则认为噪声子串s是添加了噪声的目标词典中的词语,否则s整个为噪声。对于第一种情况,根据匹配词w通过逐字匹配,找出添加的噪声,从而去除噪声子串s中的噪声,在此基础上继续分词,匹配s剩下的部分。在本发明实施例中,通过去噪算法去除了特征字符串中的噪声,提高了密码学误用检测的准确性和可靠性。
作为一种可选实施例,在将特征字符串数组对应的多个向量输入目标模型,得到特征字符串数组对应的密码学误用类型之前,方法还包括:根据扩充后的对抗性攻击策略对源码进行突变,生成突变后的源码的特征字符串数组;根据词嵌入模型生成突变后的源码的特征字符串数组对应的多个向量;根据特征字符串数组对应的多个向量训练神经网络模型得到目标模型。
可选地,常见的对抗性攻击突变策略包括:用小写字符替换原参数、添加噪声、不安全算法替换安全算法以及通过变量传参,本发明扩充的突变策略包括:随机字符串替换和变量拼接,举例来说,突变前代码Cipher.getInstance(“DES”);根据随机字符串替换进行突变后代码为Cipher.getInstance(“2345”.replace(“2345”,DES));根据变量拼接突变后代码为String a=“D”;String b=“E”;根据扩充后的对抗性攻击策略对源码进行突变,生成突变后的源码的特征字符串数组,使用词嵌入模型生成对应的向量,根据生成的向量训练神经网络模型得到目标模型。本实施例中采用基于Bi-LSTM的神经网络模型对特征字符串数组分类,目标模型的整体架构如图5所示,其中word1、word2...wordn代表特征字符串数组对应的n个向量,将这些向量作为双向LSTM的输入,对该神经网络训练,得到一个多分类模型,训练时使用交叉熵作为损失函数,具体公式如下所示:
式中,yic为符号函数,如果i样本的标签为c则yic=1否则为yic=0,其中标签即为误用类型,M是分类总数,pic为预测样本i标签为c的概率,N是样本总数。
需要说明的是,现有的工具往往通过经验归纳密码学误用类型,不具有普遍性。本发明通过调研大量综述性文章,结合大量真实的密码学误用样例总结出50种密码学误用类型,这50种密码学误用问题覆盖了常见的密码学原语应用和一些冷门的密码学原语,如RC2,BLOWFISH等,能够满足电力低功耗宽窄融合无线传感网络环境中不常见密码学原语使用的检测。
作为一种可选实施例,方法还包括:根据仿真实验和物理实验确定多种加密算法的功耗;根据密码学误用类型确定源码使用的加密算法;根据加密算法和多种加密算法的功耗确定源码对应的加密算法的功耗。可选地,通过仿真实验和物理实验得到多种加密算法的功耗,以JAVA源码中常用的加密算法为例,可以包括MD5信息摘要算法(MD5 Message-Digest Algorithm),SHA(Secure Hash Algorithm,安全散列算法),DES(Data EncryptionStandard,数据加密算法)等。在通过目标模型识别源码中使用算法的具体类型后,根据多种加密算法的功耗确定源码对应的加密算法的功耗。在本发明实施例中,实现了在电力低功耗宽窄融合无线传感网络环境下确定源码功耗的目的,从而帮助开发者研判代码功耗的优化方案。
根据本发明实施例的第二方面,还提供了一种用于实施上述源码密码学误用检测方法的源码密码学误用检测装置。图6是根据本发明实施例的一种可选的源码密码学误用检测装置的结构框图,如图6所示,该装置可以包括:获取模块601,用于获取待检测的源码;第一得到模块602,用于根据源码的抽象语法树和数据依赖图提取源码中与密码学有关的特征,得到特征字符串;第二得到模块603,用于对特征字符串进行分词和去噪,得到特征字符串数组;第三得到模块604,用于将特征字符串数组对应的多个向量输入目标模型,得到特征字符串数组对应的密码学误用类型。
需要说明的是,该实施例中的获取模块601可以用于执行上述步骤S201,该实施例中的第一得到模块602可以用于执行上述步骤S202,该实施例中的第二得到模块603可以用于执行上述步骤S203,该实施例中的第三得到模块604可以用于执行上述步骤S204。
通过上述模块对源码中与密码学有关的字符串进行了特征提取,并且通过分词和去噪去除了对抗性攻击策略,从而解决了相关技术中存在的密码学误用检测漏报率较高的问题。
作为一种可选实施例,第一得到模块包括:确定单元,用于遍历数据依赖图确定关键节点和与关键节点有数据依赖关系的相关节点,其中,关键节点为调用目标函数的函数调用节点;得到单元,用于根据关键节点和与关键节点有数据依赖关系的相关节点遍历抽象语法树,得到特征字符串。
作为一种可选实施例,确定单元包括:第一存储子模块,用于从数据依赖图的根节点开始遍历,若任一节点属于目标函数,将任一节点存入关键节点列表;第二存储子模块,用于根据关键节点列表遍历数据依赖图,将与关键节点有数据依赖关系的相关节点存入相关节点集合。
作为一种可选实施例,得到单元包括:初始化子模块,用于初始化特征字符串;存储子模块,用于当抽象语法树中任一子树的根节点是与关键节点有数据依赖关系的相关节点,根据目标遍历方式遍历任一子树的叶子结点,将属性为字符串常量的叶子节点的值存入特征字符串。
作为一种可选实施例,第二得到模块包括:分词单元,用于根据贪心匹配和目标词典对特征字符串进行分词;去噪单元,用于当特征字符串在目标词典中匹配不到结果,则对特征字符串进行去噪处理;得到单元,用于对去噪处理后的特征字符串根据贪心匹配和目标词典继续分词,得到特征字符串数组。
作为一种可选实施例,去噪单元包括:得到子模块,用于从特征字符串起始位置向后依次进行匹配,得到噪声子串;确定子模块,用于根据编辑距离确定噪声子串中是否包含目标词典中的字符串参数;去噪子模块,用于若噪声子串中包含目标词典中的字符串参数,通过逐字匹配进行去噪。
作为一种可选实施例,装置还包括:第一生成模块,用于根据扩充后的对抗性攻击策略对源码进行突变,生成突变后的源码的特征字符串数组;第二生成模块,用于根据词嵌入模型生成突变后的源码的特征字符串数组对应的多个向量;第四得到模块,用于根据特征字符串数组对应的多个向量训练神经网络模型得到目标模型。
作为一种可选实施例,装置还包括:第一确定模块,用于根据仿真实验和物理实验确定多种加密算法的功耗;第二确定模块,用于根据密码学误用类型确定源码使用的加密算法;第三确定模块,用于根据加密算法和多种加密算法的功耗确定源码对应的加密算法的功耗。
根据本发明实施例的第三方面,还提供了一种用于实施上述源码密码学误用检测方法的电子设备,该电子设备可以是服务器、终端、或者其组合。
图7是根据本发明实施例的一种可选的电子设备的结构框图,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701、通信接口702和存储器703通过通信总线704完成相互间的通信,其中,存储器703,用于存储计算机程序;处理器701,用于执行存储器703上所存放的计算机程序时,实现如下步骤:
获取待检测的源码;根据源码的抽象语法树和数据依赖图提取源码中与密码学有关的特征,得到特征字符串;对特征字符串进行分词和去噪,得到特征字符串数组;将特征字符串数组对应的多个向量输入目标模型,得到特征字符串数组对应的密码学误用类型。
可选地,在本实施例中,上述的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
作为一种示例,如图7所示,上述存储器703中可以但不限于包括上述源码密码学误用检测装置中的获取模块601、第一得到模块602、第二得到模块603以及第三得到模块604。此外,还可以包括但不限于上述源码密码学误用检测装置中的其他模块单元,本示例中不再赘述。
上述处理器可以是通用处理器,可以包含但不限于:CPU(Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(DigitalSignal Processing,数字信号处理器)、ASIC(Application Specific IntegratedCircuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
此外,上述电子设备还包括:显示器,用于显示源码密码学误用检测结果。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图7所示的结构仅为示意,实施上述源码密码学误用检测方法的设备可以是终端设备,该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图7并不对上述电子设备的结构造成限定。例如,终端设备还可包括比图7中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图7所示的不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
根据本发明实施例的第四方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行源码密码学误用检测方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
获取待检测的源码;根据源码的抽象语法树和数据依赖图提取源码中与密码学有关的特征,得到特征字符串;对特征字符串进行分词和去噪,得到特征字符串数组;将特征字符串数组对应的多个向量输入目标模型,得到特征字符串数组对应的密码学误用类型。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
根据本发明实施例的又一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中;计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一个实施例中的源码密码学误用检测方法步骤。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例源码密码学误用检测方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本发明所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (18)
1.一种源码密码学误用检测方法,其特征在于,所述方法包括:
获取待检测的源码;
根据所述源码的抽象语法树和数据依赖图提取所述源码中与密码学有关的特征,得到特征字符串;
对所述特征字符串进行分词和去噪,得到特征字符串数组;
将所述特征字符串数组对应的多个向量输入目标模型,得到所述特征字符串数组对应的密码学误用类型。
2.根据权利要求1所述的方法,其特征在于,所述根据所述源码的抽象语法树和数据依赖图提取所述源码中与密码学有关的特征,得到特征字符串包括:
遍历数据依赖图确定关键节点和与关键节点有数据依赖关系的相关节点,其中,所述关键节点为调用目标函数的函数调用节点;
根据所述关键节点和与关键节点有数据依赖关系的相关节点遍历抽象语法树,得到特征字符串。
3.根据权利要求2所述的方法,其特征在于,所述遍历数据依赖图确定关键节点和与关键节点有数据依赖关系的相关节点,其中,所述关键节点为调用目标函数的函数调用节点包括:
从数据依赖图的根节点开始遍历,若任一节点属于目标函数,将所述任一节点存入关键节点列表;
根据所述关键节点列表遍历数据依赖图,将与关键节点有数据依赖关系的相关节点存入相关节点集合。
4.根据权利要求2所述的方法,其特征在于,所述根据所述关键节点和与关键节点有数据依赖关系的相关节点遍历抽象语法树,得到特征字符串包括:
初始化特征字符串;
若抽象语法树中任一子树的根节点是与关键节点有数据依赖关系的相关节点,根据目标遍历方式遍历所述任一子树的叶子结点,将属性为字符串常量的叶子节点的值存入所述特征字符串。
5.根据权利要求1所述的方法,其特征在于,所述对所述特征字符串进行分词和去噪,得到特征字符串数组包括:
根据贪心匹配和目标词典对特征字符串进行分词;
若所述特征字符串在目标词典中匹配不到结果,则对所述特征字符串进行去噪处理;
对去噪处理后的特征字符串根据贪心匹配和目标词典继续分词,得到特征字符串数组。
6.根据权利要求5所述的方法,其特征在于,所述若所述特征字符串在目标词典中匹配不到结果,则对所述特征字符串进行去噪处理包括:
从特征字符串起始位置向后依次进行匹配,得到噪声子串;
根据编辑距离确定噪声子串中是否包含目标词典中的字符串参数;
若噪声子串中包含目标词典中的字符串参数,通过逐字匹配进行去噪。
7.根据权利要求1所述的方法,其特征在于,在所述将所述特征字符串数组对应的多个向量输入目标模型,得到所述特征字符串数组对应的密码学误用类型之前,所述方法还包括:
根据扩充后的对抗性攻击策略对源码进行突变,生成突变后的源码的特征字符串数组;
根据词嵌入模型生成所述突变后的源码的特征字符串数组对应的多个向量;
根据所述特征字符串数组对应的多个向量训练神经网络模型得到目标模型。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据仿真实验和物理实验确定多种加密算法的功耗;
根据所述密码学误用类型确定源码使用的加密算法;
根据所述加密算法和所述多种加密算法的功耗确定所述源码对应的加密算法的功耗。
9.一种源码密码学误用检测装置,其特征在于,所述装置包括:
获取模块,用于获取待检测的源码;
第一得到模块,用于根据所述源码的抽象语法树和数据依赖图提取所述源码中与密码学有关的特征,得到特征字符串;
第二得到模块,用于对所述特征字符串进行分词和去噪,得到特征字符串数组;
第三得到模块,用于将所述特征字符串数组对应的多个向量输入目标模型,得到所述特征字符串数组对应的密码学误用类型。
10.根据权利要求9所述的装置,其特征在于,所述第一得到模块包括:
确定单元,用于遍历数据依赖图确定关键节点和与关键节点有数据依赖关系的相关节点,其中,所述关键节点为调用目标函数的函数调用节点;
得到单元,用于根据所述关键节点和与关键节点有数据依赖关系的相关节点遍历抽象语法树,得到特征字符串。
11.根据权利要求10所述的装置,其特征在于,所述确定单元包括:
第一存储子模块,用于从数据依赖图的根节点开始遍历,若任一节点属于目标函数,将所述任一节点存入关键节点列表;
第二存储子模块,用于根据所述关键节点列表遍历数据依赖图,将与关键节点有数据依赖关系的相关节点存入相关节点集合。
12.根据权利要求10所述的装置,其特征在于,所述得到单元包括:
初始化子模块,用于初始化特征字符串;
存储子模块,用于当抽象语法树中任一子树的根节点是与关键节点有数据依赖关系的相关节点,根据目标遍历方式遍历所述任一子树的叶子结点,将属性为字符串常量的叶子节点的值存入所述特征字符串。
13.根据权利要求9所述的装置,其特征在于,所述第二得到模块包括:
分词单元,用于根据贪心匹配和目标词典对特征字符串进行分词;
去噪单元,用于当所述特征字符串在目标词典中匹配不到结果,则对所述特征字符串进行去噪处理;
得到单元,用于对去噪处理后的特征字符串根据贪心匹配和目标词典继续分词,得到特征字符串数组。
14.根据权利要求13所述的装置,其特征在于,所述去噪单元包括:
得到子模块,用于从特征字符串起始位置向后依次进行匹配,得到噪声子串;
确定子模块,用于根据编辑距离确定噪声子串中是否包含目标词典中的字符串参数;
去噪子模块,用于若噪声子串中包含目标词典中的字符串参数,通过逐字匹配进行去噪。
15.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第一生成模块,用于根据扩充后的对抗性攻击策略对源码进行突变,生成突变后的源码的特征字符串数组;
第二生成模块,用于根据词嵌入模型生成所述突变后的源码的特征字符串数组对应的多个向量;
第四得到模块,用于根据所述特征字符串数组对应的多个向量训练神经网络模型得到目标模型。
16.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第一确定模块,用于根据仿真实验和物理实验确定多种加密算法的功耗;
第二确定模块,用于根据所述密码学误用类型确定源码使用的加密算法;
第三确定模块,用于根据所述加密算法和所述多种加密算法的功耗确定所述源码对应的加密算法的功耗。
17.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,其特征在于,
所述存储器,用于存储计算机程序;
所述处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行权利要求1至8中任一项所述的方法步骤。
18.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1至8中任一项中所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211273176.5A CN115718696B (zh) | 2022-10-18 | 2022-10-18 | 源码密码学误用检测方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211273176.5A CN115718696B (zh) | 2022-10-18 | 2022-10-18 | 源码密码学误用检测方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115718696A true CN115718696A (zh) | 2023-02-28 |
CN115718696B CN115718696B (zh) | 2023-06-13 |
Family
ID=85254209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211273176.5A Active CN115718696B (zh) | 2022-10-18 | 2022-10-18 | 源码密码学误用检测方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115718696B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN104933362A (zh) * | 2015-06-15 | 2015-09-23 | 福州大学 | Android应用软件API误用类漏洞自动化检测方法 |
US20200349052A1 (en) * | 2019-05-03 | 2020-11-05 | International Business Machines Corporation | Representing source code in vector space to detect errors |
CN112115053A (zh) * | 2020-09-16 | 2020-12-22 | 北京京航计算通讯研究所 | 基于序列模式匹配的api误用缺陷检测方法 |
CN113722218A (zh) * | 2021-08-23 | 2021-11-30 | 南京审计大学 | 一种基于编译器中间表示的软件缺陷预测模型构建方法 |
CN114253860A (zh) * | 2021-12-27 | 2022-03-29 | 中国电信股份有限公司 | 接口误用缺陷检测方法、装置、可读介质及电子设备 |
-
2022
- 2022-10-18 CN CN202211273176.5A patent/CN115718696B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN104933362A (zh) * | 2015-06-15 | 2015-09-23 | 福州大学 | Android应用软件API误用类漏洞自动化检测方法 |
US20200349052A1 (en) * | 2019-05-03 | 2020-11-05 | International Business Machines Corporation | Representing source code in vector space to detect errors |
CN112115053A (zh) * | 2020-09-16 | 2020-12-22 | 北京京航计算通讯研究所 | 基于序列模式匹配的api误用缺陷检测方法 |
CN113722218A (zh) * | 2021-08-23 | 2021-11-30 | 南京审计大学 | 一种基于编译器中间表示的软件缺陷预测模型构建方法 |
CN114253860A (zh) * | 2021-12-27 | 2022-03-29 | 中国电信股份有限公司 | 接口误用缺陷检测方法、装置、可读介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115718696B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109271521B (zh) | 一种文本分类方法及装置 | |
CN109063055B (zh) | 同源二进制文件检索方法和装置 | |
CN110990273B (zh) | 克隆代码检测方法及装置 | |
CN111885000B (zh) | 一种基于图神经网络的网络攻击检测方法、***及装置 | |
TW202020691A (zh) | 特徵詞的確定方法、裝置和伺服器 | |
CN110175851B (zh) | 一种作弊行为检测方法及装置 | |
CN111144548A (zh) | 抽油机井工况的识别方法及装置 | |
CN113254649B (zh) | 敏感内容识别模型的训练方法、文本识别方法及相关装置 | |
CN112052451A (zh) | 一种webshell检测方法和装置 | |
CN109783805B (zh) | 一种网络社区用户识别方法、装置和可读存储介质 | |
CN109067708B (zh) | 一种网页后门的检测方法、装置、设备及存储介质 | |
CN110472659B (zh) | 数据处理方法、装置、计算机可读存储介质和计算机设备 | |
CN116361788A (zh) | 一种基于机器学习的二进制软件漏洞预测方法 | |
WO2016093839A1 (en) | Structuring of semi-structured log messages | |
CN112926647A (zh) | 模型训练方法、域名检测方法及装置 | |
CN109902162B (zh) | 基于数字指纹的文本相似性的识别方法、存储介质及装置 | |
CN115858776B (zh) | 一种变体文本分类识别方法、***、存储介质和电子设备 | |
CN110929506A (zh) | 一种垃圾信息检测方法、装置、设备及可读存储介质 | |
CN115718696B (zh) | 源码密码学误用检测方法、装置、电子设备和存储介质 | |
CN113688240B (zh) | 威胁要素提取方法、装置、设备及存储介质 | |
CN115099344A (zh) | 模型训练方法和装置、用户画像生成方法和装置、设备 | |
CN114528908A (zh) | 网络请求数据分类模型训练方法、分类方法及存储介质 | |
CN116628695A (zh) | 基于多任务学习的漏洞挖掘方法及装置 | |
CN109947891B (zh) | 文书解析方法及装置 | |
CN112163217A (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 |