CN115361206A - 加密程序的分析方法、装置及电子设备 - Google Patents

加密程序的分析方法、装置及电子设备 Download PDF

Info

Publication number
CN115361206A
CN115361206A CN202210995129.5A CN202210995129A CN115361206A CN 115361206 A CN115361206 A CN 115361206A CN 202210995129 A CN202210995129 A CN 202210995129A CN 115361206 A CN115361206 A CN 115361206A
Authority
CN
China
Prior art keywords
value
program
determining
correlation
key
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.)
Pending
Application number
CN202210995129.5A
Other languages
English (en)
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.)
Hillstone Networks Co Ltd
Original Assignee
Hillstone Networks Co Ltd
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 Hillstone Networks Co Ltd filed Critical Hillstone Networks Co Ltd
Priority to CN202210995129.5A priority Critical patent/CN115361206A/zh
Publication of CN115361206A publication Critical patent/CN115361206A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种加密程序的分析方法、装置及电子设备。其中,该方法包括:获取加密程序的N个运行轨迹以及N个输出结果,其中,输出结果为加密程序加密后的文件,每个输出结果对应一个运行轨迹,输出结果包括至少一个字节,运行轨迹中至少包含有加密程序在运算过程中生成的J个中间值;穷举输出结果中第M个字节所对应的K个密钥;根据预先构建的选择函数以及密钥对输出结果进行逆向分析,得到模拟值,其中,模拟值为选择函数根据输出结果以及密钥预测的预测中间值;确定模拟值与中间值之间的相关度;根据相关度确定第M个字节的正确密钥。本申请解决了现有技术中对加密程序的分析效率低的技术问题。

Description

加密程序的分析方法、装置及电子设备
技术领域
本申请涉及信息安全领域,具体而言,涉及一种加密程序的分析方法、装置及电子设备。
背景技术
目前,在针对软件层面的加密程序的分析方法主要采用的是通过DBI(DynamicBinary Instrumentation)等二进制插桩工具获取加密程序在运行过程的内存读写轨迹,并针对密码算法的首轮进行逐字节密钥穷举分析,进而提取密钥。
但是,通过二进制插桩工具获取密钥的过程中需要加密程序的输入没有被保护,换言之,需要确保加密程序没有被外部输入编码组件所编码,并且加密程序中密码算法的首轮没有被混淆(冗余轮、混淆轮)等影响,否则,二进制插桩工具是无法获取得到正确的密码的。
然而,随着近年来针对密码算法的首轮的保护力度加大,编码技术、反调试技术被应用于保护加密程序。例如:通过针对加密程序进行外部输入编码,将加密程序的真实输入隐藏,从而导致二进制插桩工具无法进行侧信道攻击,或者,在密码算法的首轮增加冗余轮等混淆组件,从而也会导致二进制插桩工具无法提取密钥或提取的密钥为假密钥。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种加密程序的分析方法、装置及电子设备,以至少解决现有技术中对加密程序的分析效率低的技术问题。
根据本申请实施例的一个方面,提供了一种加密程序的分析方法,包括:获取加密程序的N个运行轨迹以及N个输出结果,其中,输出结果为加密程序加密后的文件,每个输出结果对应一个运行轨迹,输出结果包括至少一个字节,运行轨迹中至少包含有加密程序在运算过程中生成的J个中间值;穷举输出结果中第M个字节所对应的K个密钥;根据预先构建的选择函数以及密钥对输出结果进行逆向分析,得到模拟值,其中,模拟值为选择函数根据输出结果以及密钥预测的预测中间值,K个密钥对应K个模拟值,每个密钥对应一个模拟值;确定模拟值与中间值之间的相关度;根据相关度确定第M个字节的正确密钥。
进一步地,加密程序的分析方法还包括:步骤1,获取未加密的文件;步骤2,依据模拟器运行加密程序,并根据加密程序对未加密的文件进行加密,得到运行轨迹以及输出结果,其中,模拟器为一种调用加密程序进行模拟加密操作的应用程序;步骤3,循环执行N次步骤1与步骤2,得到N个运行轨迹以及N个输出结果。
进一步地,加密程序的分析方法还包括:确定模拟值为第一比特序列,中间值为第二比特序列,其中,第一比特序列与第二比特序列均为由数值1和/或数值0组成的序列;在第一比特序列的C位置上为数值0时,确定第二比特序列的C位置上的值为第一集合中的值;在第一比特序列的C位置上为数值1时,确定第二比特序列的C位置上的值为第二集合中的值;根据第一集合与第二集合确定相关度。
进一步地,加密程序的分析方法还包括:确定第一集合中数值1的数量为第一数量,第二集合中数值1的数量为第二数量;确定第一集合中所有数值的总数量为第三数量,第二集合中所有数值的数量为第四数量;计算第一数量与第三数量的比值,得到第一比值;计算第二数量与第四数量的比值,得到第二比值;根据第一比值与第二比值确定相关度。
进一步地,加密程序的分析方法还包括:计算第一比值与第二比值的绝对值;确定差值的绝对值,得到相关度,其中,J个中间值对应J个相关度,每个中间值对应一个相关度。
进一步地,加密程序的分析方法还包括:检测模拟值对应的J个相关度中是否存在至少一个相关度大于预设阈值;在模拟值对应的J个相关度中存在至少一个相关度大于预设阈值的情况下,确定模拟值对应的密钥为第M个字节的候选密钥;根据候选密钥确定第M个字节的正确密钥。
进一步地,加密程序的分析方法还包括:从N*K个密钥中确定所有的候选密钥,其中,N*K个密钥为N个输出结果中在第M个字节对应的全部密钥;根据每个候选密钥的相关度对所有的候选密钥进行排序,得到排序结果;根据排序结果,确定相关度最大的候选密钥为第M个字节的正确密钥。
根据本申请实施例的另一方面,还提供了一种加密程序的分析装置,包括:获取模块,用于获取加密程序的N个运行轨迹以及N个输出结果,其中,输出结果为加密程序加密后的文件,每个输出结果对应一个运行轨迹,输出结果包括至少一个字节,运行轨迹中至少包含有加密程序在运算过程中生成的J个中间值;穷举模块,用于穷举输出结果中第M个字节所对应的K个密钥;分析模块,用于根据预先构建的选择函数以及密钥对输出结果进行逆向分析,得到模拟值,其中,模拟值为选择函数根据输出结果以及密钥预测的预测中间值,K个密钥对应K个模拟值,每个密钥对应一个模拟值;第一确定模块,用于确定模拟值与中间值之间的相关度;第二确定模块,用于根据相关度确定第M个字节的正确密钥。
根据本申请实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的加密程序的分析方法。
根据本申请实施例的另一方面,还提供了一种电子设备,电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的加密程序的分析方法。
在本申请的技术方案中,采用根据选择函数以及密钥对加密程序的输出结果进行逆向分析的方式,首先获取加密程序的N个运行轨迹以及N个输出结果,然后穷举输出结果中第M个字节所对应的K个密钥,随后根据预先构建的选择函数以及密钥对输出结果进行逆向分析,得到模拟值,并确定模拟值与中间值之间的相关度,最后根据相关度确定第M个字节的正确密钥。其中,输出结果为加密程序加密后的文件,每个输出结果对应一个运行轨迹,输出结果包括至少一个字节,运行轨迹中至少包含有加密程序在运算过程中生成的J个中间值;模拟值为选择函数根据输出结果以及密钥预测的预测中间值,K个密钥对应K个模拟值,每个密钥对应一个模拟值。
由上述内容可知,本申请根据预先构建的选择函数以及穷举得到的密钥对输出结果进行逆向分析,从而逆向模拟出加密程序的密码算法在对文件进行加密时生成的中间值,由于本申请是逆向分析的方式,因此可以规避由于加密程序进行了外部输入编码后导致的无法准确获取得到正确密钥的问题,同时由于逆向分析时是分析的加密过程中的末轮,因此还可以规避由于密码算法在首轮增加了冗余轮等混淆组件导致的无法提取正确密钥的问题,从而提高了正确密钥的获取效率,进而提升了对加密程序的分析效率。
由此可见,通过本申请的技术方案,达到了确保获取加密程序的正确密钥的目的,实现了提高正确密钥的获取效率的效果,进而解决了现有技术中对加密程序的分析效率低的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种可选的加密程序分析方法的流程图;
图2是根据本申请实施例的一种可选的加密程序的分析方法的示意图;
图3是根据本申请实施例的一种可选的获取运行轨迹的流程图;
图4是根据本申请实施例的一种可选的生成模拟值的流程图;
图5是根据本申请实施例的另一种可选的生成模拟值的流程图;
图6是根据本申请实施例的一种可选的对运行轨迹进行分类的流程图;
图7是根据本申请实施例的一种可选的加密程序分析系统的结构示意图;
图8是根据本申请实施例的一种可选的加密程序的分析装置示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
另外,还需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
实施例1
根据本申请实施例,提供了一种加密程序的分析方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
可选的,一种加密程序分析系统可作为本申请实施例中的加密程序分析方法的执行主体。
图1是根据本申请实施例的一种可选的加密程序分析方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,获取加密程序的N个运行轨迹以及N个输出结果。
在步骤S101中,输出结果为加密程序加密后的文件,每个输出结果对应一个运行轨迹,输出结果包括至少一个字节,运行轨迹中至少包含有加密程序在运算过程中生成的J个中间值。
可选的,上述的加密程序为一种二进制程序。上述的运行轨迹用于表征加密程序对文件进行加密时的加密过程,换言之,运行轨迹可以理解为是对加密过程的记录,其中,加密轨迹中至少包含加密程序在运算过程中生成的J个中间值。需要说明的是,上述的N个以及J个可以理解为是至少一个,N的值与J的值可以相同,也可以不同,具体根据实际情况进行设置,本申请在此不作过多限定。
此外,上述的中间值可以理解为是加密过程的中间状态,举例而言,加密程序在将明文A加密成密文A的过程中,可能会经过多次转换,例如,明文A先后转换为密文1、密文2、密文3、密文A,其中,中间过程中的密文1、密文2以及密文3即为中间状态。
步骤S102,穷举输出结果中第M个字节所对应的K个密钥。
可选的,输出结果至少包括一个字节,其中,第M个字节可以是至少一个字节中的任意一个字节。加密程序分析系统可通过穷举的方式得到第M个字节所对应的K个密码,其中,由于密钥空间为0-255共256个选择,因此,本申请中的K的值可以确定最大为256个。为了方便描述,第M个字节可以用kh表示,即kh表示穷举的单字节密钥。
步骤S103,根据预先构建的选择函数以及密钥对输出结果进行逆向分析,得到模拟值。
在步骤S103中,模拟值为选择函数根据输出结果以及密钥预测的预测中间值,K个密钥对应K个模拟值,每个密钥对应一个模拟值。
具体的,选择函数的作用,如果从结果来看,是为了将运行轨迹区分为两个不同的集合以便后期对运行轨迹进行分析,如果从动机来看,则是为了能够在数学上模拟二进制程序在运行时所产生的关键的中间值。与现有技术中的DBI分析技术不同,本申请的选择函数不在依赖与输入,而是依赖于二进制程序的输出结果,进而根据输出结果对加密程序进行逆向分析。
其中,选择函数如下:
Figure BDA0003805320170000061
其中,oe表示的是二进制程序的输出结果,该输出结果在加密程序分析系统获取运行轨迹时便可以一并获得。invSBox是密码算法的S盒的逆操作。kh表示穷举的单字节密钥,该密钥空间为0-255共256个选择。j表示的是产生的中间值的第j位,所以取值范围为0或1。
另外,该选择函数表示的含义为:根据输出结果oe并通过穷举密钥kh的方式,预测二进制程序(加密程序)最后的S盒的输入信息(即最后一轮的中间值)。需要注意到的是,假设kh是正确的密钥,那么选择函数的输出结果就是二进制程序最后的S盒的输入信息。假设kh是错误的密钥,那么选择函数的输出结果和二进制密码程序最后的S盒的输入将无任何关联。
步骤S104,确定模拟值与中间值之间的相关度。
在步骤S104中,上述的相关度用于表征模拟值与中间值之间的关联性,相关度越大,则两者的关联性越强,换言之,如果一个模拟值与一个中间值的相关度越大,则说明该模拟值与该中间值越接近,两者的相似性越高。
步骤S105,根据相关度确定第M个字节的正确密钥。
在步骤S105中,由于共获取了N个运行轨迹以及N个输出结果,并且每个输出结果的第M个字节对应了K个密钥,因此,针对第M个字节而言。N个输出结果共对应了N*K个密钥。在此基础上,加密程序分析系统可以根据相关度从N*K个密钥中确定正确密钥,例如,将相关度最大的密钥作为正确密钥。
基于上述步骤S101至步骤S105的内容可知,在本申请的技术方案中,采用根据选择函数以及密钥对加密程序的输出结果进行逆向分析的方式,首先获取加密程序的N个运行轨迹以及N个输出结果,然后穷举输出结果中第M个字节所对应的K个密钥,随后根据预先构建的选择函数以及密钥对输出结果进行逆向分析,得到模拟值,并确定模拟值与中间值之间的相关度,最后根据相关度确定第M个字节的正确密钥。其中,输出结果为加密程序加密后的文件,每个输出结果对应一个运行轨迹,输出结果包括至少一个字节,运行轨迹中至少包含有加密程序在运算过程中生成的J个中间值;模拟值为选择函数根据输出结果以及密钥预测的预测中间值,K个密钥对应K个模拟值,每个密钥对应一个模拟值。
由上述内容可知,本申请根据预先构建的选择函数以及穷举得到的密钥对输出结果进行逆向分析,能够逆向模拟出加密程序的密码算法在对文件进行加密时生成的中间值,由于本申请是逆向分析的方式,因此可以规避由于加密程序进行了外部输入编码后导致的无法准确获取得到正确密钥的问题,同时由于逆向分析时是分析的加密过程中的末轮,因此还可以规避由于密码算法在首轮增加了冗余轮等混淆组件导致的无法提取正确密钥的问题,从而提高了正确密钥的获取效率,进而提升了对加密程序的分析效率。
由此可见,通过本申请的技术方案,达到了确保获取加密程序的正确密钥的目的,实现了提高正确密钥的获取效率的效果,进而解决了现有技术中对加密程序的分析效率低的技术问题。
在一种可选的实施例中,图2示出了根据本申请实施例的一种加密程序的分析方法的示意图,如图2所示,加密程序的分析方法主要分为四个部分,分别为收集加密程序的运行轨迹、构造选择函数、分析运行轨迹以及确定正确密钥。
可选的,在收集加密程序的运行轨迹时,加密程序分析系统主要执行以下步骤:步骤1,获取未加密的文件;步骤2,依据模拟器运行加密程序,并根据加密程序对未加密的文件进行加密,得到运行轨迹以及输出结果,其中,模拟器为一种调用加密程序进行模拟加密操作的应用程序;步骤3,循环执行N次步骤1与步骤2,得到N个运行轨迹以及N个输出结果。
具体的,上述的模拟器是一种通过构造基于Qiling框架的自动化密码程序模拟装置,该装置主要由输入输出适配器、反调试绕过组件、密码程序模拟组件、能量轨迹获取组件组成。通过简单的配置,即可自动化的模拟密码程序并收集运行轨迹。其中,该装置中的反调试绕过组件用于规避反调试检测。
需要说明的是,Qiling框架是一款跨平台、支持多CPU架构的轻量级模拟器。该轻量级模拟器能够对任意指令使用钩子函数,通过钩子函数可以实现绕过反调试组件、随机数组件的功能,并且还能够获取到加密程序在运行过程中的内存读写轨迹。
需要注意到的是,传统的DBI分析工具通过对操作系统中执行的二进制程序进行插桩,从而实现监听运行轨迹,但是这种传统的方法容易受到反调试的干扰。
而在本申请中,使用CPU模拟框架(即Qiling框架),模拟器能够直接对二进制程序提取指令,并在模拟运行之后收集运行轨迹,由于是在轻量级虚拟机上运行,因此运行轨迹的收集将不再是监听的模式,而是直接以主动的方式收集运行轨迹,这种主动收集的方式能够收集到完整的运行轨迹。
另外,记录的运行轨迹se是比特序列,序列的长度与具体算法和过滤规则有关,设序列的长度为X位。使用时se[i]表示比特序列的第i位,其中i<X。
可选的,如图3所示,加密程序分析系统通过调用模拟器收集运行轨迹的过程可参考如下:
步骤一:初始化模拟器,其中,模拟器的初始化工作主要是根据配置文件启动模拟器。
步骤二:初始化e和N,其中,e=0,N表示需要收集的运行轨迹数量,一般来说,100<N<256,一方面,如果N太小,则可能导致最终的密钥分析不准确。而n太大则会导致运行轨迹占用的空间太大。
步骤三:随机选择输入(即未加密的文件)并运行加密程序,通过模拟器相应的接口获取到运行轨迹记为se,并且记录模拟器的输出结果为oe
步骤四:对e进行累加1次。
步骤五:重复执行步骤三与步骤四,直到e>n,则停止,并退出虚拟机。
在一种可选的实施例中,每一条运行轨迹中都包含了加密程序在运算过程中的所有中间值,这些真实的中间值和选择函数所产生的模拟值存在一定的关联,当kh是正确的密钥时,那么选择函数产生的模拟值则和运行轨迹所隐藏的中间值会有较强的相关度,反之,如果kh不是正确的密钥,那么相关度较低。本申请结合统计学中皮尔逊相关系数的度量方法,使用差分中值法计算运行轨迹和选择函数的皮尔逊相关系数,即相关度。
具体的,加密程序分析系统首先确定模拟值为第一比特序列,中间值为第二比特序列,其中,第一比特序列与第二比特序列均为由数值1或数值0组成的序列。然后在第一比特序列的C位置上为数值0时,加密程序分析系统确定第二比特序列的C位置上的值为第一集合中的值;在第一比特序列的C位置上为数值1时,加密程序分析系统确定第二比特序列的C位置上的值为第二集合中的值,最后加密程序分析系统根据第一集合与第二集合确定相关度。
可选的,加密程序分析系统首先确定第一集合中数值1的数量为第一数量,第二集合中数值1的数量为第二数量;确定第一集合中所有数值的总数量为第三数量,第二集合中所有数值的数量为第四数量。然后加密程序分析系统计算第一数量与第三数量的比值,得到第一比值;计算第二数量与第四数量的比值,得到第二比值。最后,加密程序分析系统根据第一比值与第二比值确定相关度。
可选的,加密程序分析系统计算第一比值与第二比值的差值,并确定差值的绝对值,得到相关度,其中,J个中间值对应J个相关度,每个中间值对应一个相关度。
其中,图4示出了根据本申请实施例的一种生成模拟值的流程图。如图4所示,针对输出结果的第M个字节,加密程序分析系统首先穷举猜解密钥kh,然后针对每个kh根据选择函数Sel以及输出结果oe,计算模拟值,由于kh从0-255共256个密钥,因此针对每一个kh,都要将每一个oe所对应的模拟值记录。
如图4所示,图4中的i用于对密钥计数,表征当前为第i个密钥,从i=0开始,分别计算每个密钥kh对应的模拟值,直至i大于255之后退出计算模拟值。
另外,加密程序分析系统会将得到的模拟值记录到三维表Sim[256][n][8]。具体如图5所示,由于模拟值是8位二进制的格式,因此,按照位次分别每位上的值存入对应的位置,例如,图5中的Sel(oe,kh,0)表示的是密钥kh所对应的模拟值的第一位上的值(8位中的第一位上的值),Sel(oe,kh,0)会对应存储至Sim[kh][e][0]中。在一个输出结果对应的所有模拟值都存储完成之后,加密程序分析系统将会继续存储下一个输出结果对应的模拟值,直至将N个输出结果对应的模拟值全部存储至三维表中。
可选的,在得到模拟值之后,加密程序分析系统接下来要对运动轨迹进行分类。首先加密程序分析系统会初始化两个空的集合,分别为第一集合A0和第二集合A1,然后加密程序分析系统再根据Sim三维表中的数据向该两个集合填充数据,具体做法如图6所示,针对每一个kh,运行轨迹se的每一位se[i]进行分类,当flag=Sim[kh][e][j]=1时,v=se[i]的值则进入第二集合A1,当flag=Sim[kh][e][j]=0时,se[i]的值则进入第一集合A0。当第i位的所有运行轨迹分类完成以后,分别计算集合A0,A1的平均值
Figure BDA0003805320170000101
计算其差分
Figure BDA0003805320170000102
并将结果保存到三维表M[kh][j][i]中。
其中,表1示出了一种对运动轨迹进行分类的示意表。
表1
模拟值 中间值A 中间值B
0 0 1
1 1 0
0 0 1
1 1 1
0 0 0
0 0 0
0 0 0
如表1所示,按照中间值中,每个值放在哪一个集合取决于对应位置的模拟值是0还是1的原则,中间值A中放入第一集合A0的值为(0,0,0,0,0),放入第二集合A1中的值为(1,1),所以对中间值A而言,第一集合A0的平均值(对应第一比值)为0,第二集合A1的平均值(对应第二比值)为1,相关度等于第一比值与第二比值的差值的绝对值,因此中间值A与表1中的模拟值的相关度为1。
同理,中间值B中放入第一集合A0的值为(1,1,0,1,0),放入第二集合A1中的值为(0,1),所以对中间值B而言,第一集合A0的平均值为3/5,第二集合A1的平均值为1/2,相关度等于3/5与1/2的差值的绝对值,因此中间值B与表1中的模拟值的相关度为0.1。
在一种可选的实施例中,加密程序分析系统会检测模拟值对应的J个相关度中是否存在至少一个相关度大于预设阈值。在模拟值对应的J个相关度中存在至少一个相关度大于预设阈值的情况下,确定模拟值对应的密钥为第M个字节的候选密钥,并根据候选密钥确定第M个字节的正确密钥。
可选的,上述的预设阈值可以自定义设置,通常而言,相关度在0.7-1之间,则说明模拟值与中间值之间的相关性较强,相关度在0.3以下,则说明模拟值与中间值之间不存在相关性。因此,预设阈值可以设置为0.7。
在一种可选的实施例中,加密程序分析系统从N*K个密钥中确定所有的候选密钥,其中,N*K个密钥为N个输出结果中在第M个字节对应的全部密钥。然后,加密程序分析系统根据每个候选密钥的相关度对所有的候选密钥进行排序,得到排序结果,并根据排序结果,确定相关度最大的候选密钥为第M个字节的正确密钥。
可选的,在加密程序分析系统将所有kh对应的模拟值与运行轨迹的相关度计算完毕后,加密程序分析系统将得到一个完整的三维数组M[256][8][m]。在此基础上,加密程序分析系统会对M[kh]所代表的二维数组进行展开,统计相关度大于预设阈值0.7的密钥个数,并将这些密钥存入数组Corr[kh]中,最后,加密程序分析系统会检查数组Corr[kh]中相关度最高的kh为第M个字节的正确密钥。容易注意到的是,当所有字节的正确密钥被确定之后,加密程序分析系统即可获取得到加密程序的轮密钥。
在一种可选的实施例中,图7示出了一种加密程序分析系统的结构示意图,其中,如图7所示,加密程序分析系统包括:初始化模块、程序模拟运行模块、运行轨迹接收模块、运行轨迹分析模块。
具体的,初始化模块是加密程序分析系统最开始的模块,主要功能为通过配置信息生成Qiling模拟器、导入待模拟运行的加密程序、以及对待运行的加密程序做输入输出的适配。配置信息主要包括以下基本信息:
表2
Figure BDA0003805320170000111
Figure BDA0003805320170000121
可选的,程序模拟运行模块即在CPU模拟器上通过每次随机构造的未加密的文件运行密码程序,在运行结束后将输出oe内容保存,共执行N次。
可选的,运行轨迹接收模块用于利用Qiling框架的hook功能,在每一次程序模拟运行时,基于配置中的filter对内存的读写细节进行收集。将收集到的读写值以比特序列的形式按时间先后顺序存入se中,最后保存se
可选的,运行轨迹分析模块用于对运行轨迹进行分析,最后输出正确密钥。
需要注意到的是,现有技术中通过DBI等二进制插桩工具获取加密程序的密钥。其之所以能够成功的原因主要如下:一方面是密码程序(即加密程序)是基于特定操作系统和架构编译的,并且该密码程序的运行环境支持调试,所以可以很轻松的使用DBI等二进制插桩工具能够顺利获得运行过程的内存读写轨迹。另一方面是密码程序的输入没有被保护,也就是没有被外部输入编码组件所编码,并且密码程序中密码算法的首轮没有被混淆(冗余轮、混淆轮)等影响,所以可以构造分析程序去穷举密钥进而提取密钥。
但是,近年来由于针对密码算法的首轮的保护力度加大,编码技术、反调试技术被应用于保护密码程序。例如:外部输入编码,则会将密码程序的真实输入隐藏,从而导致通过DBI等二进制插桩工具无法进行侧信道攻击,在密码算法的首轮增加冗余轮等混淆组件,也会导致通过DBI等二进制插桩工具无法提取密钥或提取的密钥为假密钥。而操作系统层面的反调试技术的应用将导致DBI等二进制插桩工具在获取运行轨迹时受阻,也会导致无法进行进一步的密钥提取。而且,为了满足应用,密码程序一般都是跨平台使用,在Linux、Windows、macOS、android等平台都存在应用,而传统的DBI框架需要针对不同的操作系统和CPU架构重新构建环境,导致在前期投入的成本非常大,不利于密码程序的安全性测评的开展。
而在本申请中,基于输出逆向的加密程序分析方法能够通过密码程序的输出逆向分析密码程序的末轮执行时的中间过程,并结合运行轨迹提取密钥,不仅可以规避由于加密程序进行了外部输入编码或者在首轮增加了冗余轮等混淆组件后导致的无法准确获取得到正确密钥的问题,还可以绕开反调试组件,从而提高了正确密钥的获取效率。其次,自动化的加密程序分析系统利用跨架构、跨操作系统的QilingCPU模拟程序模拟密码程序的运行,进而获取到密码程序的运行轨迹,可以解决现有技术中需要针对不同的操作系统和CPU架构重新构建环境,导致在前期投入的成本非常大的问题,进而实现了降低研发成本的效果。
实施例2
根据本申请实施例,还提供了一种加密程序的分析装置实施例,其中,图8是根据本申请实施例的一种可选的加密程序的分析装置示意图,如图8所示,该装置包括:获取模块801、穷举模块802、分析模块803、第一确定模块804以及第二确定模块805。
其中,获取模块801,用于获取加密程序的N个运行轨迹以及N个输出结果,其中,输出结果为加密程序加密后的文件,每个输出结果对应一个运行轨迹,输出结果包括至少一个字节,运行轨迹中至少包含有加密程序在运算过程中生成的J个中间值。
可选的,上述的加密程序为一种二进制程序。上述的运行轨迹用于表征加密程序对文件进行加密时的加密过程,换言之,运行轨迹可以理解为是对加密过程的记录,其中,加密轨迹中至少包含加密程序在运算过程中生成的J个中间值。需要说明的是,上述的N个以及J个可以理解为是至少一个,N的值与J的值可以相同,也可以不同,具体根据实际情况进行设置,本申请在此不作过多限定。
此外,上述的中间值可以理解为是加密过程的中间状态,举例而言,加密程序在将明文A加密成密文A的过程中,可能会经过多次转换,例如,明文A先后转换为密文1、密文2、密文3、密文A,其中,中间过程中的密文1、密文2以及密文3即为中间状态。
穷举模块802,用于穷举输出结果中第M个字节所对应的K个密钥。
可选的,输出结果至少包括一个字节,其中,第M个字节可以是至少一个字节中的任意一个字节。分析装置可通过穷举的方式得到第M个字节所对应的K个密码,其中,由于密钥空间为0-255共256个选择,因此,本申请中的K的值可以确定最大为256个。为了方便描述,第M个字节可以用kh表示,即kh表示穷举的单字节密钥。
分析模块803,用于根据预先构建的选择函数以及密钥对输出结果进行逆向分析,得到模拟值,其中,模拟值为选择函数根据输出结果以及密钥预测的预测中间值,K个密钥对应K个模拟值,每个密钥对应一个模拟值。
可选的,模拟值为选择函数根据输出结果以及密钥预测的预测中间值,K个密钥对应K个模拟值,每个密钥对应一个模拟值。
具体的,选择函数的作用,如果从结果来看,是为了将运行轨迹区分为两个不同的集合以便后期对运行轨迹进行分析,如果从动机来看,则是为了能够在数学上模拟二进制程序在运行时所产生的关键的中间值。与现有技术中的DBI分析技术不同,本申请的选择函数不在依赖与输入,而是依赖于二进制程序的输出结果,进而根据输出结果对加密程序进行逆向分析。
其中,选择函数如下:
Figure BDA0003805320170000141
其中,oe表示的是二进制程序的输出结果,该输出结果在分析装置在获取运行轨迹时便可以一并获得。invSBox是密码算法的S盒的逆操作。kh表示穷举的单字节密钥,该密钥空间为0-255共256个选择。j表示的是产生的中间值的第j位,所以取值范围为0或1。
另外,该选择函数表示的含义为:根据输出结果oe并通过穷举密钥kh的方式,预测二进制程序(加密程序)最后的S盒的输入信息(即最后一轮的中间值)。需要注意到的是,假设kh是正确的密钥,那么选择函数的输出结果就是二进制程序最后的S盒的输入信息。假设kh是错误的密钥,那么选择函数的输出结果和二进制密码程序最后的S盒的输入将无任何关联。
第一确定模块804,用于确定模拟值与中间值之间的相关度。
可选的,上述的相关度用于表征模拟值与中间值之间的关联性,相关度越大,则两者的关联性越强,换言之,如果一个模拟值与一个中间值的相关度越大,则说明该模拟值与该中间值越接近,两者的相似性越高。
第二确定模块805,用于根据相关度确定第M个字节的正确密钥。
可选的,由于共获取了N个运行轨迹以及N个输出结果,并且每个输出结果的第M个字节对应了K个密钥,因此,针对第M个字节而言。N个输出结果共对应了N*K个密钥。在此基础上,分析装置可以根据相关度从N*K个密钥中确定正确密钥,例如,将相关度最大的密钥作为正确密钥。
在本申请中,采用根据选择函数以及密钥对加密程序的输出结果进行逆向分析的方式,首先获取加密程序的N个运行轨迹以及N个输出结果,然后穷举输出结果中第M个字节所对应的K个密钥,随后根据预先构建的选择函数以及密钥对输出结果进行逆向分析,得到模拟值,并确定模拟值与中间值之间的相关度,最后根据相关度确定第M个字节的正确密钥。其中,输出结果为加密程序加密后的文件,每个输出结果对应一个运行轨迹,输出结果包括至少一个字节,运行轨迹中至少包含有加密程序在运算过程中生成的J个中间值;模拟值为选择函数根据输出结果以及密钥预测的预测中间值,K个密钥对应K个模拟值,每个密钥对应一个模拟值。
由上述内容可知,本申请根据预先构建的选择函数以及穷举得到的密钥对输出结果进行逆向分析,能够逆向模拟出加密程序的密码算法在对文件进行加密时生成的中间值,由于本申请是逆向分析的方式,因此可以规避由于加密程序进行了外部输入编码后导致的无法准确获取得到正确密钥的问题,同时由于逆向分析时是分析的加密过程中的末轮,因此还可以规避由于密码算法在首轮增加了冗余轮等混淆组件导致的无法提取正确密钥的问题,从而提高了正确密钥的获取效率,进而提升了对加密程序的分析效率。
由此可见,通过本申请的技术方案,达到了确保获取加密程序的正确密钥的目的,实现了提高正确密钥的获取效率的效果,进而解决了现有技术中对加密程序的分析效率低的技术问题。
可选的,上述获取模块还包括:第一执行单元、第二执行单元以及第三执行单元。其中,第一执行单元,用于执行步骤1,获取未加密的文件;第二执行单元,用于执行步骤2,依据模拟器运行加密程序,并根据加密程序对未加密的文件进行加密,得到运行轨迹以及输出结果,其中,模拟器为一种调用加密程序进行模拟加密操作的应用程序;第三执行单元,用于执行步骤3,循环执行N次步骤1与步骤2,得到N个运行轨迹以及N个输出结果。
具体的,上述的模拟器是一种通过构造基于Qiling框架的自动化密码程序模拟装置,该装置主要由输入输出适配器、反调试绕过组件、密码程序模拟组件、能量轨迹获取组件组成。通过简单的配置,即可自动化的模拟密码程序并收集运行轨迹。其中,该装置中的反调试绕过组件用于规避反调试检测。
需要说明的是,Qiling框架是一款跨平台、支持多CPU架构的轻量级模拟器。该轻量级模拟器能够对任意指令使用钩子函数,通过钩子函数可以实现绕过反调试组件、随机数组件的功能,并且还能够获取到加密程序在运行过程中的内存读写轨迹。
需要注意到的是,传统的DBI分析工具通过对操作系统中执行的二进制程序进行插桩,从而实现监听运行轨迹,但是这种传统的方法容易受到反调试的干扰。
而在本申请中,使用CPU模拟框架(即Qiling框架),模拟器能够直接对二进制程序提取指令,并在模拟运行之后收集运行轨迹,由于是在轻量级虚拟机上运行,因此运行轨迹的收集将不再是监听的模式,而是直接以主动的方式收集运行轨迹,这种主动收集的方式能够收集到完整的运行轨迹。
另外,记录的运行轨迹se是比特序列,序列的长度与具体算法和过滤规则有关,设序列的长度为X位。使用时se[i]表示比特序列的第i位,其中i<X。
可选的,如图3所示,分析装置通过调用模拟器收集运行轨迹的过程可参考如下:
步骤一:初始化模拟器,其中,模拟器的初始化工作主要是根据配置文件启动模拟器。
步骤二:初始化e和N,其中,e=0,N表示需要收集的运行轨迹数量,一般来说,100<N<256,一方面,如果N太小,则可能导致最终的密钥分析不准确。而n太大则会导致运行轨迹占用的空间太大。
步骤三:随机选择输入(即未加密的文件)并运行加密程序,通过模拟器相应的接口获取到运行轨迹记为se,并且记录模拟器的输出结果为oe
步骤四:对e进行累加1次。
步骤五:重复执行步骤三与步骤四,直到e>n,则停止,并退出虚拟机。
可选的,上述的第一确定模块还包括:第一确定单元、第二确定单元、第三确定单元以及第四确定单元。其中,第一确定单元,用于确定模拟值为第一比特序列,中间值为第二比特序列,其中,第一比特序列与第二比特序列均为由数值1和/或数值0组成的序列;第二确定单元,用于在第一比特序列的C位置上为数值0时,确定第二比特序列的C位置上的值为第一集合中的值;第三确定单元,用于在第一比特序列的C位置上为数值1时,确定第二比特序列的C位置上的值为第二集合中的值;第四确定单元,用于根据第一集合与第二集合确定相关度。
可选的,上述的第四确定单元还包括:第一确定子模块、第二确定子模块、第一计算子模块、第二计算子模块以及第三确定子模块。其中,第一确定子模块,用于确定第一集合中数值1的数量为第一数量,第二集合中数值1的数量为第二数量;第二确定子模块,用于确定第一集合中所有数值的总数量为第三数量,第二集合中所有数值的数量为第四数量;第一计算子模块,用于计算第一数量与第三数量的比值,得到第一比值;第二计算子模块,用于计算第二数量与第四数量的比值,得到第二比值;第三确定子模块,用于根据第一比值与第二比值确定相关度。
可选的,上述的第三确定子模块还包括:差值计算子单元以及绝对值计算子单元,其中,差值计算子单元,用于计算第一比值与第二比值的差值;绝对值计算子单元,用于确定差值的绝对值,得到相关度,其中,J个中间值对应J个相关度,每个中间值对应一个相关度。
如图4所示,针对输出结果的第M个字节,分析装置首先穷举猜解密钥kh,然后针对每个kh根据选择函数Sel以及输出结果oe,计算模拟值,由于kh从0-255共256个密钥,因此针对每一个kh,都要将每一个oe所对应的模拟值记录。
如图4所示,图4中的i用于对密钥计数,表征当前为第i个密钥,从i=0开始,分别计算每个密钥kh对应的模拟值,直至i大于255之后退出计算模拟值。
另外,分析装置会将得到的模拟值记录到三维表Sim[256][n][8]。具体如图5所示,由于模拟值是8位二进制的格式,因此,按照位次分别每位上的值存入对应的位置,例如,图5中的Sel(oe,kh,0)表示的是密钥kh所对应的模拟值的第一位上的值(8位中的第一位上的值),Sel(oe,kh,0)会对应存储至Sim[kh][e][0]中。在一个输出结果对应的所有模拟值都存储完成之后,分析装置将会继续存储下一个输出结果对应的模拟值,直至将N个输出结果对应的模拟值全部存储至三维表中。
可选的,在得到模拟值之后,分析装置接下来要对运动轨迹进行分类。首先分析装置会初始化两个空的集合,分别为第一集合A0和第二集合A1,然后分析装置再根据Sim三维表中的数据向该两个集合填充数据,具体做法如图6所示,针对每一个kh,运行轨迹se的每一位se[i]进行分类,当flag=Sim[kh][e][j]=1时,v=se[i]的值则进入第二集合A1,当flag=Sim[kh][e][j]=0时,se[i]的值则进入第一集合A0。当第i位的所有运行轨迹分类完成以后,分别计算集合A0,A1的平均值
Figure BDA0003805320170000171
计算其差分
Figure BDA0003805320170000172
并将结果保存到三维表M[kh][j][i]中。
其中,表1示出了一种对运动轨迹进行分类的示意表。
表1
模拟值 中间值A 中间值B
0 0 1
1 1 0
0 0 1
1 1 1
0 0 0
0 0 0
0 0 0
如表1所示,按照中间值中,每个值放在哪一个集合取决于对应位置的模拟值是0还是1的原则,中间值A中放入第一集合A0的值为(0,0,0,0,0),放入第二集合A1中的值为(1,1),所以对中间值A而言,第一集合A0的平均值(对应第一比值)为0,第二集合A1的平均值(对应第二比值)为1,相关度等于第一比值与第二比值的差值的绝对值,因此中间值A与表1中的模拟值的相关度为1。
同理,中间值B中放入第一集合A0的值为(1,1,0,1,0),放入第二集合A1中的值为(0,1),所以对中间值B而言,第一集合A0的平均值为3/5,第二集合A1的平均值为1/2,相关度等于3/5与1/2的差值的绝对值,因此中间值B与表1中的模拟值的相关度为0.1。
可选的,上述的第二确定模块还包括:检测单元、第五确定单元以及第六确定单元。其中,检测单元,用于检测模拟值对应的J个相关度中是否存在至少一个相关度大于预设阈值;第五确定单元,用于在模拟值对应的J个相关度中存在至少一个相关度大于预设阈值的情况下,确定模拟值对应的密钥为第M个字节的候选密钥;第六确定单元,用于根据候选密钥确定第M个字节的正确密钥。
可选的,上述的预设阈值可以自定义设置,通常而言,相关度在0.7-1之间,则说明模拟值与中间值之间的相关性较强,相关度在0.3以下,则说明模拟值与中间值之间不存在相关性。因此,预设阈值可以设置为0.7。
可选的,上述第六确定单元还包括:第四确定子模块、排序子模块以及第五确定子模块。其中,第四确定子模块,用于从N*K个密钥中确定所有的候选密钥,其中,N*K个密钥为N个输出结果中在第M个字节对应的全部密钥;排序子模块,用于根据每个候选密钥的相关度对所有的候选密钥进行排序,得到排序结果;第五确定子模块,用于根据排序结果,确定相关度最大的候选密钥为第M个字节的正确密钥。
可选的,在分析装置将所有kh对应的模拟值与运行轨迹的相关度计算完毕后,分析装置将得到一个完整的三维数组M[256][8][m]。在此基础上,分析装置会对M[kh]所代表的二维数组进行展开,统计相关度大于预设阈值0.7的密钥个数,并将这些密钥存入数组Corr[kh]中,最后,分析装置会检查数组Corr[kh]中相关度最高的kh为第M个字节的正确密钥。容易注意到的是,当所有字节的正确密钥被确定之后,分析装置即可获取得到加密程序的轮密钥。
由上述内容可知,在本申请中,基于输出逆向的加密程序分析方法能够通过密码程序的输出逆向分析密码程序的末轮执行时的中间过程,并结合运行轨迹提取密钥,不仅可以规避由于加密程序进行了外部输入编码或者在首轮增加了冗余轮等混淆组件后导致的无法准确获取得到正确密钥的问题,还可以绕开反调试组件,从而提高了正确密钥的获取效率。其次,自动化的分析装置利用跨架构、跨操作系统的QilingCPU模拟程序模拟密码程序的运行,进而获取到密码程序的运行轨迹,可以解决现有技术中需要针对不同的操作系统和CPU架构重新构建环境,导致在前期投入的成本非常大的问题,进而实现了降低研发成本的效果。
实施例3
根据本申请实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述实施例1中的加密程序的分析方法。
实施例4
根据本申请实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述实施例1中的加密程序的分析方法。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种加密程序的分析方法,其特征在于,包括:
获取加密程序的N个运行轨迹以及N个输出结果,其中,所述输出结果为所述加密程序加密后的文件,每个所述输出结果对应一个所述运行轨迹,所述输出结果包括至少一个字节,所述运行轨迹中至少包含有所述加密程序在运算过程中生成的J个中间值;
穷举所述输出结果中第M个字节所对应的K个密钥;
根据预先构建的选择函数以及所述密钥对所述输出结果进行逆向分析,得到模拟值,其中,所述模拟值为所述选择函数根据所述输出结果以及所述密钥预测的预测中间值,所述K个密钥对应K个模拟值,每个密钥对应一个模拟值;
确定所述模拟值与所述中间值之间的相关度;
根据所述相关度确定所述第M个字节的正确密钥。
2.根据权利要求1所述的方法,其特征在于,获取加密程序的N个运行轨迹以及N个输出结果,包括:
步骤1,获取未加密的文件;
步骤2,依据模拟器运行所述加密程序,并根据所述加密程序对所述未加密的文件进行加密,得到所述运行轨迹以及所述输出结果,其中,所述模拟器为一种调用所述加密程序进行模拟加密操作的应用程序;
步骤3,循环执行N次步骤1与步骤2,得到所述N个运行轨迹以及所述N个输出结果。
3.根据权利要求2所述的方法,其特征在于,确定所述模拟值与所述中间值之间的相关度,包括:
确定所述模拟值为第一比特序列,所述中间值为第二比特序列,其中,所述第一比特序列与所述第二比特序列均为由数值1和/或数值0组成的序列;
在所述第一比特序列的C位置上为所述数值0时,确定所述第二比特序列的C位置上的值为第一集合中的值;
在所述第一比特序列的C位置上为所述数值1时,确定所述第二比特序列的C位置上的值为第二集合中的值;
根据所述第一集合与所述第二集合确定所述相关度。
4.根据权利要求3所述的方法,其特征在于,根据所述第一集合与所述第二集合确定所述相关度,包括:
确定所述第一集合中所述数值1的数量为第一数量,所述第二集合中所述数值1的数量为第二数量;
确定所述第一集合中所有数值的总数量为第三数量,所述第二集合中所有数值的数量为第四数量;
计算所述第一数量与所述第三数量的比值,得到第一比值;
计算所述第二数量与所述第四数量的比值,得到第二比值;
根据所述第一比值与所述第二比值确定所述相关度。
5.根据权利要求4所述的方法,其特征在于,根据所述第一比值与所述第二比值确定所述相关度,包括:
计算所述第一比值与所述第二比值的差值;
确定所述差值的绝对值,得到所述相关度,其中,所述J个中间值对应J个相关度,每个所述中间值对应一个所述相关度。
6.根据权利要求4所述的方法,其特征在于,根据所述相关度确定所述第M个字节的正确密钥,包括:
检测所述模拟值对应的J个相关度中是否存在至少一个相关度大于预设阈值;
在所述模拟值对应的J个相关度中存在至少一个相关度大于所述预设阈值的情况下,确定所述模拟值对应的密钥为所述第M个字节的候选密钥;
根据所述候选密钥确定所述第M个字节的正确密钥。
7.根据权利要求6所述的方法,其特征在于,根据所述候选密钥确定所述第M个字节的正确密钥,包括:
从N*K个密钥中确定所有的候选密钥,其中,所述N*K个密钥为所述N个输出结果中在所述第M个字节对应的全部密钥;
根据每个所述候选密钥的相关度对所述所有的候选密钥进行排序,得到排序结果;
根据所述排序结果,确定所述相关度最大的候选密钥为所述第M个字节的正确密钥。
8.一种加密程序的分析装置,其特征在于,包括:
获取模块,用于获取加密程序的N个运行轨迹以及N个输出结果,其中,所述输出结果为所述加密程序加密后的文件,每个所述输出结果对应一个所述运行轨迹,所述输出结果包括至少一个字节,所述运行轨迹中至少包含有所述加密程序在运算过程中生成的J个中间值;
穷举模块,用于穷举所述输出结果中第M个字节所对应的K个密钥;
分析模块,用于根据预先构建的选择函数以及所述密钥对所述输出结果进行逆向分析,得到模拟值,其中,所述模拟值为所述选择函数根据所述输出结果以及所述密钥预测的预测中间值,所述K个密钥对应K个模拟值,每个密钥对应一个模拟值;
第一确定模块,用于确定所述模拟值与所述中间值之间的相关度;
第二确定模块,用于根据所述相关度确定所述第M个字节的正确密钥。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1-7任一项中所述的加密程序的分析方法。
10.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现用于运行程序,其中,所述程序被设置为运行时执行所述权利要求1-7任一项中所述的加密程序的分析方法。
CN202210995129.5A 2022-08-18 2022-08-18 加密程序的分析方法、装置及电子设备 Pending CN115361206A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210995129.5A CN115361206A (zh) 2022-08-18 2022-08-18 加密程序的分析方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210995129.5A CN115361206A (zh) 2022-08-18 2022-08-18 加密程序的分析方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN115361206A true CN115361206A (zh) 2022-11-18

Family

ID=84003116

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210995129.5A Pending CN115361206A (zh) 2022-08-18 2022-08-18 加密程序的分析方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN115361206A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116070250A (zh) * 2023-03-07 2023-05-05 卓望数码技术(深圳)有限公司 一种安卓系统应用程序的密码算法测评方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116070250A (zh) * 2023-03-07 2023-05-05 卓望数码技术(深圳)有限公司 一种安卓系统应用程序的密码算法测评方法及装置
CN116070250B (zh) * 2023-03-07 2023-06-23 卓望数码技术(深圳)有限公司 一种安卓系统应用程序的密码算法测评方法及装置

Similar Documents

Publication Publication Date Title
Oswald et al. Template attacks on masking—resistance is futile
EP2608190B1 (en) Secret sharing system, secret sharing apparatus, secret sharing method, secret sorting method and secret sharing program
CN111222880A (zh) 一种基于生物识别的区块链密钥生成方法
CN115361206A (zh) 加密程序的分析方法、装置及电子设备
US20160019211A1 (en) A process for obtaining candidate data from a remote storage server for comparison to a data to be identified
CN111475690B (zh) 字符串的匹配方法和装置、数据检测方法、服务器
CN110084599A (zh) 密钥处理方法、装置、设备和存储介质
Longo et al. How low can you go? Using side-channel data to enhance brute-force key recovery
Hao et al. Automatic generation of benchmarks for I/O-intensive parallel applications
CN104751042B (zh) 基于密码哈希与生物特征识别的可信性检测方法
Wang et al. Single-Trace Side-Channel Attacks on CRYSTALS-Dilithium: Myth or Reality?
CN117714613A (zh) 一种图像加密方法、装置、电子设备和存储介质
CN116305294B (zh) 数据泄露溯源方法、装置、电子设备及存储介质
CN116821925A (zh) 一种随机数检验方法、装置、电子设备及存储介质
CN113051587B (zh) 一种隐私保护智能交易推荐方法、系统和可读介质
CN105988980A (zh) 信息处理设备和数据管理方法
CN112615714B (zh) 侧信道分析方法、装置、设备及存储介质
CN116599639A (zh) 一种基于聚类的密码芯片侧信息泄露量化度量方法与系统
CN109325369A (zh) 一种建筑结构试验数据时间字段加密存储与检索的方法
Li et al. One factor cancellable fingerprint scheme based on novel minimum hash signature and secure extended feature vector
Aftowicz et al. Non-Profiled Unsupervised Horizontal Iterative Attack against Hardware Elliptic Curve Scalar Multiplication Using Machine Learning
Khanduja et al. A scheme for robust biometric watermarking in web databases for ownership proof with identification
EP3502903A1 (en) Method of testing resistance of a software program to a side-channel analysis
CN113032756A (zh) 一种数据访问授权认证系统及方法
Dangwal et al. Trace wringing for program trace privacy

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