用于检测侧信道攻击的方法和装置与流程

文档序号:17360114发布日期:2019-04-09 22:00阅读:270来源:国知局
用于检测侧信道攻击的方法和装置与流程

本申请实施例涉及计算机技术领域,具体涉及信息安全技术领域,尤其涉及用于检测侧信道攻击(sca,sidechannelattack)的方法和装置。



背景技术:

侧信道攻击,是指利用电子设备在运行过程中的时间消耗、功率消耗或电磁辐射之类的侧信道信息泄露而对电子设备进行攻击的方法。侧信道攻击的成本低而且破解效率高,己经对电子设备的安全性造成了严重的威胁。

为了提高电子设备的安全性,需要及时检测是否存在针对电子设备的侧信道攻击。目前的侧信道攻击检测方法大都需要依赖额外的硬件。



技术实现要素:

本申请实施例的目的在于提出一种用于检测侧信道攻击的方法和装置。

第一方面,本申请实施例提供了一种用于检测侧信道攻击的方法,该方法包括:清空目标内存保护区域的状态保存区中的数据;按序执行上述目标内存保护区域中的指令序列;获取上述状态保存区中的数据;响应于确定所获取的状态保存区中的数据指示上述目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,确定存在针对上述目标内存保护区域的侧信道攻击。

在一些实施例中,在按序执行上述目标内存保护区域中的指令序列之前,上述方法还包括:获取执行上述目标内存保护区域中的指令序列的处理器中的时间戳计数器的值作为初始时间戳计数;以及在按序执行上述目标内存保护区域中的指令序列之后,上述方法还包括:获取上述时间戳计数器的值作为结束时间戳计数;响应于确定上述结束时间戳计数与上述初始时间戳计数的差大于与上述目标内存保护区域对应的预设总执行时间戳计数阈值,确定存在针对上述目标内存保护区域的侧信道攻击。

在一些实施例中,上述指令序列包括至少一个关键指令子序列。

在一些实施例中,上述按序执行上述目标内存保护区域中的指令序列,包括:对于上述至少一个关键指令子序列中的每个关键指令子序列,执行以下检测步骤:获取上述时间戳计数器的值作为与该关键指令子序列对应的执行前时间戳计数;执行该关键指令子序列;获取上述时间戳计数器的值作为与该关键指令子序列对应的执行后时间戳计数;响应于确定与该关键指令子序列对应的执行时间戳计数大于与该关键指令子序列对应的预设执行时间戳计数阈值,确定存在针对上述目标内存保护区域的侧信道攻击,其中,与该关键指令子序列对应的执行时间戳计数为与该关键指令子序列对应的执行后时间戳计数减去与该关键指令子序列对应的执行前时间戳计数的差。

在一些实施例中,上述检测步骤还包括:在执行该关键指令子序列之后,获取上述状态保存区中的数据,以及响应于确定所获取的状态保存区中的数据指示上述目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,确定存在针对上述目标内存保护区域的侧信道攻击。

在一些实施例中,在清空目标内存保护区域的状态保存区中的数据之后,上述方法还包括:将退出次数设置为预设数目;以及上述检测步骤还包括:在获取上述状态保存区中的数据之后,响应于确定所获取的状态保存区中的数据指示上述目标内存保护区域发生退出原因为中断退出的异步内存保护区域退出,将上述状态保存区中的数据清空,用上述退出次数与预设增量的和更新上述退出次数,以及响应于确定上述更新后的退出次数大于与上述目标内存保护区域对应的预设退出次数阈值,确定存在针对上述目标内存保护区域的侧信道攻击。

在一些实施例中,上述检测步骤还包括:在用上述退出次数与预设增量的和更新上述退出次数之后,响应于确定上述更新后的退出次数除以退出时间戳计数的比值大于与上述目标内存保护区域对应的预设退出频率阈值,确定存在针对上述目标内存保护区域的侧信道攻击,其中,上述退出时间戳计数是与该关键指令子序列对应的执行后时间戳计数减去上述初始时间戳计数的差。

在一些实施例中,上述目标内存保护区域存储有保护数据;以及上述方法还包括:响应于确定存在针对上述目标内存保护区域的侧信道攻击,删除上述目标内存保护区域中所存储的保护数据,以及重新生成保护数据并存储到上述目标内存保护区域中。

在一些实施例中,上述方法还包括:响应于确定存在针对上述目标内存保护区域的侧信道攻击,生成并输出提示信息,其中,上述提示信息用于指示存在针对上述目标内存保护区域的侧信道攻击。

第二方面,本申请实施例提供了一种用于检测侧信道攻击的装置,该装置包括:清空单元,配置用于清空目标内存保护区域的状态保存区中的数据;执行单元,配置用于按序执行上述目标内存保护区域中的指令序列;第一获取单元,配置用于获取上述状态保存区中的数据;第一确定单元,配置用于响应于确定所获取的状态保存区中的数据指示上述目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,确定存在针对上述目标内存保护区域的侧信道攻击。

在一些实施例中,上述装置还包括:第二获取单元,配置用于在按序执行上述目标内存保护区域中的指令序列之前,获取执行上述目标内存保护区域中的指令序列的处理器中的时间戳计数器的值作为初始时间戳计数;第三获取单元,配置用于在按序执行上述目标内存保护区域中的指令序列之后,获取上述时间戳计数器的值作为结束时间戳计数;第二确定单元,配置用于响应于确定上述结束时间戳计数与上述初始时间戳计数的差大于与上述目标内存保护区域对应的预设总执行时间戳计数阈值,确定存在针对上述目标内存保护区域的侧信道攻击。

在一些实施例中,上述指令序列包括至少一个关键指令子序列。

在一些实施例中,上述执行单元进一步配置用于:对于上述至少一个关键指令子序列中的每个关键指令子序列,执行以下检测步骤:获取上述时间戳计数器的值作为与该关键指令子序列对应的执行前时间戳计数;执行该关键指令子序列;获取上述时间戳计数器的值作为与该关键指令子序列对应的执行后时间戳计数;响应于确定与该关键指令子序列对应的执行时间戳计数大于与该关键指令子序列对应的预设执行时间戳计数阈值,确定存在针对上述目标内存保护区域的侧信道攻击,其中,与该关键指令子序列对应的执行时间戳计数为与该关键指令子序列对应的执行后时间戳计数减去与该关键指令子序列对应的执行前时间戳计数的差。

在一些实施例中,上述检测步骤还包括:在执行该关键指令子序列之后,获取上述状态保存区中的数据,以及响应于确定所获取的状态保存区中的数据指示上述目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,确定存在针对上述目标内存保护区域的侧信道攻击。

在一些实施例中,上述装置还包括:设置单元,配置用于将退出次数设置为预设数目;以及上述检测步骤还包括:在获取上述状态保存区中的数据之后,响应于确定所获取的状态保存区中的数据指示上述目标内存保护区域发生退出原因为中断退出的异步内存保护区域退出,将上述状态保存区中的数据清空,用上述退出次数与预设增量的和更新上述退出次数,以及响应于确定上述更新后的退出次数大于与上述目标内存保护区域对应的预设退出次数阈值,确定存在针对上述目标内存保护区域的侧信道攻击。

在一些实施例中,上述检测步骤还包括:在用上述退出次数与预设增量的和更新上述退出次数之后,响应于确定上述更新后的退出次数除以退出时间戳计数的比值大于与上述目标内存保护区域对应的预设退出频率阈值,确定存在针对上述目标内存保护区域的侧信道攻击,其中,上述退出时间戳计数是与该关键指令子序列对应的执行后时间戳计数减去上述初始时间戳计数的差。

在一些实施例中,上述目标内存保护区域存储有保护数据;以及上述装置还包括:数据生成单元,配置用于响应于确定存在针对上述目标内存保护区域的侧信道攻击,删除上述目标内存保护区域中所存储的保护数据,以及重新生成保护数据并存储到上述目标内存保护区域中。

在一些实施例中,上述装置还包括:信息生成单元,配置用于响应于确定存在针对上述目标内存保护区域的侧信道攻击,生成并输出提示信息,其中,上述提示信息用于指示存在针对上述目标内存保护区域的侧信道攻击。

第三方面,本申请实施例提供了一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如第一方面中任一实现方式描述的方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如第一方面中任一实现方式描述的方法。

本申请实施例提供的用于检测侧信道攻击的方法和装置,通过清空目标内存保护区域的状态保存区中的数据,再按序执行目标内存保护区域中的指令序列,而后获取上述状态保存区中的数据,最后响应于确定所获取的状态保存区中的数据指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,确定存在针对目标内存保护区域的侧信道攻击。从而在不增加硬件的基础上实现了对内存保护区域进行侧信道攻击检测。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请可以应用于其中的示例性系统架构图;

图2是根据本申请的用于检测侧信道攻击的方法的一个实施例的流程图;

图3是根据本申请的用于检测侧信道攻击的方法的又一个实施例的流程图;

图4是根据本申请的用于检测侧信道攻击的方法的再一个实施例的流程图;

图5是根据本申请的检测步骤的一个实施例的流程图;

图6是根据本申请的用于检测侧信道攻击的装置的一个实施例的结构示意图;

图7是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的用于检测侧信道攻击的方法或用于检测侧信道攻击的装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括电子设备101,电子设备101可以包括中央处理器cpu1,…,cpui,…,cpun,这里,n为正整数。例如,当n为1的时候,电子设备101中可以只有一个处理器cpu1,当n为2的时候,电子设备101中可以有2个处理器cpu1和cpu2。

电子设备101中可以安装有操作系统(os,operatingsystem)。

电子设备101中还可以安装有至少一个应用(apps),其中,有些应用可以包括两部分:内存保护区域(enclave)和非内存保护区域(non-enclave)。

电子设备101中的灰色部分为可信部分,包括中央处理器cpu1,…,cpui,…,cpun和各个应用中的内存保护区域部分。

需要说明的是,本申请实施例所提供的用于检测侧信道攻击的方法一般由电子设备101执行,相应地,用于检测侧信道攻击的装置一般设置于电子设备101中。

应该理解,图1中的处理器、操作系统、应用和内存保护区域的数目仅仅是示意性的。根据实现需要,可以具有任意数目的处理器、操作系统、应用和内存保护区域。

继续参考图2,其示出了根据本申请的用于检测侧信道攻击的方法的一个实施例的流程200。本实施例主要以该方法应用于有一定运算能力的电子设备中来举例说明。该用于检测侧信道攻击的方法,包括以下步骤:

步骤201,清空目标内存保护区域的状态保存区中的数据。

intelsgx(intelsoftwareguardextensions,英特尔软件保护扩展)技术是一种新的基于硬件的可信计算技术。intelsgx技术将合法软件的安全操作封装在内存保护区域中,保护其不受恶意软件的攻击,使得特权或者非特权的软件都无法访问内存保护区域。也就是说,一旦软件和数据位于内存保护区域中,即便操作系统或者虚拟机监控器也无法影响内存保护区域里面的代码和数据。鉴于无法直接读取内存保护区域中的内容,攻击者提出了大量侧信道攻击来间接获取内存保护区域中的数据(比如隐私数据,加密密钥等等)。

为了保护内存保护区域的安全,需要及时检测是否存在针对内存保护区域的侧信道攻击。目前检测针对内存保护区域的侧信道攻击的方法,大都依赖于特殊硬件功能(例如,需要依赖于支持inteltsx(transactionalsynchronizationextensions)功能的硬件)并且需要占用大量缓存资源来存储临时信息。

在本实施例中,用于检测侧信道攻击的方法执行于其上的电子设备(例如图1所示的电子设备101)可以将目标内存保护区域的状态保存区中的数据清空,经过清空操作后,目标内存保护区域的状态保存区中没有数据。其中,上述电子设备可以包括至少一个内存保护区域,目标内存保护区域可以是上述至少一个内存保护区域中的一个内存保护区域,这里,仅以目标内存保护区域为例来说明用于检测侧信道攻击的方法。可以理解的是,用于检测侧信道攻击的方法可以应用于上述至少一个内存保护区域中的每个内存保护区域。

这里,内存保护区域的状态保存区(ssa,statesavearea)是内存保护区域中的一块区域,该区域可以在内存保护区域发生异步内存保护区域退出(aex,asynchronousenclaveexits)时记录相关信息。这里,相关信息可以包括:是否发生异步内存保护区域退出以及所发生的异步内存保护区域退出的退出原因等。其中,异步内存保护区域退出的退出原因可以为异常(exception)退出或者中断(interrupt)退出。

这里,在对目标内存保护区域进行侧信道攻击检测之前,将目标内存保护区域的状态保存区中的数据清空,相当于认为在对目标内存保护区域进行侧信道攻击检测之前,目标内存保护区域没有发生异步内存保护区域退出。

步骤202,按序执行目标内存保护区域中的指令序列。

在本实施例中,目标内存保护区域中可以存储有可执行代码和/或数据。例如,目标内存保护区域中存储的可执行代码可以是用于对目标内存保护区域中存储的数据进行操作的可执行代码。目标内存保护区域中的指令序列则是加载目标内存保护区域中的可执行代码所生成的至少一条按序排列的指令。这样,上述电子设备可以按序执行目标内存保护区域中的指令序列。

步骤203,获取状态保存区中的数据。

在本实施例中,上述电子设备可以获取目标内存保护区域的状态保存区中的数据,用于后续确定目标内存保护区域是否发生了异步内存保护区域退出。

步骤204,响应于确定所获取的状态保存区中的数据指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,确定存在针对目标内存保护区域的侧信道攻击。

在本实施例中,上述电子设备可以通过步骤203中所获取的状态保存区中的数据来确定目标内存保护区域是否发生退出原因为异常退出的异步内存保护区域退出,如果确定是,则可以确定存在针对目标内存保护区域的侧信道攻击。

在本实施例中,目标内存保护区域中的指令序列在没有侧信道攻击的情况下执行的过程中不会出现各种异常。作为示例,各种异常可以包括以下至少一项:任何内存引用或其他保护异常、缺页异常、除零异常、断点异常、越界异常、无效指令异常、双故障异常、x87浮点数异常、对齐异常、simd浮点异常等等。例如,为保证目标内存保护区域中的指令序列在没有侧信道攻击的情况下执行的过程中不会发生缺页异常,可以在执行目标内存保护区域中的指令序列之前建立好页表,而不是在指令序列运行的过程中边执行边申请页表。又例如,可以在执行目标内存保护区域中的指令序列之前清除目标内存保护区域中的指令序列中的断点指令,以保证目标内存保护区域中的指令序列在没有侧信道攻击的情况下执行的过程中不会发生调试异常。这样,当检测到目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出时,则表明是针对目标内存保护区域的侧信道攻击导致了目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,因此,可以确定存在针对目标内存保护区域的侧信道攻击。

在本实施例的一些可选的实现方式中,目标内存保护区域中可以存储有保护数据,目标内存保护区域中的保护数据仅对处理器和目标内存保护区域自身可见,即,只有处理器和目标内存保护区域自身可以访问目标内存保护区域中的保护数据。作为示例,保护数据可以包括隐私数据或者密钥数据等。由于保护数据很重要,因此将保护数据存储在目标内存保护区域中,可以提高其安全性。但如果已经检测到存在针对目标内存保护区域的侧信道攻击,则表明目标内存保护区域中的保护数据已经不再安全。因此,上述电子设备可以在步骤204中确定存在针对目标内存保护区域的侧信道攻击之后,删除目标内存保护区域中所存储的保护数据,以及重新生成保护数据并存储到目标内存保护区域中。

在本实施例的一些可选的实现方式中,上述电子设备还可以在步骤204中确定存在针对目标内存保护区域的侧信道攻击之后,生成并输出提示信息,其中,上述提示信息用于指示存在针对目标内存保护区域的侧信道攻击。作为示例,上述提示信息可以包括以下至少一项:文字、图像和音频。上述电子设备的用户在接收到上述提示信息后,可以相应的做出下一步的操作。例如,用户可以终止目标内存保护区域中的指令序列的运行。

本申请的上述实施例提供的方法通过在执行目标内存保护区域中的指令序列之前,清空目标内存保护区域的状态保存区中的数据,以及在执行完目标内存保护区域中的指令序列之后获取目标内存保护区域的状态保存区的数据,并在确定所获取的状态保存区中的数据指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出的情况下,确定存在针对目标内存保护区域的侧信道攻击,实现了在不增加硬件的基础上,对内存保护区域进行侧信道攻击检测。

进一步参考图3,其示出了用于检测侧信道攻击的方法的又一个实施例的流程300。该用于检测侧信道攻击的方法的流程300,包括以下步骤:

步骤301,清空目标内存保护区域的状态保存区中的数据。

在本实施例中,步骤301的具体操作与图2所示的实施例中步骤201的操作基本相同,在此不再赘述。

步骤302,获取执行目标内存保护区域中的指令序列的处理器中的时间戳计数器的值作为初始时间戳计数。

在本实施例中,用于检测侧信道攻击的方法执行于其上的电子设备(例如图1所示的电子设备101)可以在执行目标内存保护区域中的指令序列之前,获取执行目标内存保护区域中的指令序列的处理器中的时间戳计数器(tsc,timestampcounter)的值作为初始时间戳计数。

作为示例,上述电子设备可以通过在用户态执行“rdtsc”或者“rdtscp”指令来获取执行目标内存保护区域中的指令序列的处理器中的时间戳计数器的值。

在本实施例的一些可选的实现方式中,上述电子设备中的操作系统可以作为最高权限软件管理系统资源。即,上述电子设备中不支持硬件虚拟化,因为硬件虚拟化可以对时间戳计数器的值进行修改,从而造成所获取的时间戳计数器的值不准确。

步骤303,按序执行目标内存保护区域中的指令序列。

在本实施例中,步骤303的具体操作与图2所示的实施例中步骤202的操作基本相同,在此不再赘述。

步骤304,获取时间戳计数器的值作为结束时间戳计数。

在本实施例中,上述电子设备可以在执行完目标内存保护区域中的指令序列之后,获取上述时间戳计数器的值作为结束时间戳计数。

步骤305,确定结束时间戳计数与初始时间戳计数的差是否大于与目标内存保护区域对应的预设总执行时间戳计数阈值。

在本实施例中,上述电子设备可以首先计算上述结束时间戳计数与上述初始时间戳计数的差值,然后,确定上述计算所得的差值是否大于与目标内存保护区域对应的预设总执行时间戳计数阈值,如果确定大于,则转到步骤306,如果确定不大于,则转到步骤306’。

这里,上述电子设备可以预先存储有与目标内存保护区域对应的预设总执行时间戳计数阈值。其中,与目标内存保护区域对应的预设总执行时间戳计数阈值可以是由技术人员针对目标内存保护区域预先设定的,也可以是由上述电子设备预先执行总执行时间戳计数阈值确定步骤所得到的,其中,总执行时间戳计数阈值确定步骤可以如下进行:

首先,可以多次执行目标内存保护区域中的指令序列,并在每次执行目标内存保护区域中的指令序列之前获取执行目标内存保护区域中的指令序列的处理器中的时间戳计数器的值作为第一时间戳计数,在执行完目标内存保护区域中的指令序列之后,再次获取执行目标内存保护区域中的指令序列的处理器中的时间戳计数器的值作为第二时间戳计数,以及将第二时间戳计数减去第一时间戳计数的差作为该次执行目标内存保护区域中的指令序列的执行总时间戳计数。

然后,可以根据多次执行目标内存保护区域中的指令序列中每次执行目标内存保护区域中的指令序列的执行总时间戳计数,确定与目标内存保护区域对应的预设总执行时间戳计数阈值。

例如,可以将多次执行目标内存保护区域中的指令序列的各个执行总时间戳计数中的最大执行总时间戳计数作为与目标内存保护区域对应的预设总执行时间戳计数阈值。

又例如,还可以利用统计学规律,根据多次执行目标内存保护区域中的指令序列的各个执行总时间戳计数,确定与目标内存保护区域对应的预设总执行时间戳计数阈值。作为示例,可以将多次执行目标内存保护区域中的指令序列的各个执行总时间戳计数按照从小到大的顺序排序,并根据排序结果进行第一预设数目(例如,10分位数)的分位数化操作,生成第一预设数目个分位数结果,再将第一预设分位(例如,90%)的分位数结果确定为与目标内存保护区域对应的预设总执行时间戳计数阈值。

步骤306,确定存在针对目标内存保护区域的侧信道攻击。

在本实施例中,上述电子设备可以在步骤305中确定结束时间戳计数与初始时间戳计数的差大于与目标内存保护区域对应的预设总执行时间戳计数阈值的情况下,或者在步骤307’中确定所获取的状态保存区中的数据指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出的情况下,确定存在针对目标内存保护区域的侧信道攻击。

在本实施例中,为保证不会出现因为执行指令序列的处理器的工作频率变低,导致执行目标内存保护区域中的指令序列的执行时间增加,从而导致结束时间戳计数与初始时间戳计数的差大于与目标内存保护区域对应的预设总执行时间戳计数阈值,继而导致确定存在针对目标内存保护区域的侧信道攻击,执行指令序列的处理器在按序执行目标内存保护区域中的指令序列期间可以一直工作在该处理器的最高频率上,并且,预先执行总执行时间戳计数阈值确定步骤的处理器也可以在执行总执行时间戳计数阈值确定步骤过程中一直工作在最高频率上。

步骤306’,获取状态保存区中的数据。

在本实施例中,上述电子设备可以在步骤305中确定结束时间戳计数与初始时间戳计数的差不大于与目标内存保护区域对应的预设总执行时间戳计数阈值的情况下,获取目标内存保护区域的状态保存区中的数据。在执行完步骤306’后转到步骤307’。

步骤307’,确定所获取的状态保存区中的数据是否指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出。

在本实施例中,上述电子设备可以确定步骤306’中所获取的状态保存区中的数据是否指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,如果确定是,则转到步骤306。

从图3中可以看出,与图2对应的实施例相比,本实施例中的用于检测侧信道攻击的方法的流程300多出了在执行目标内存保护区域中的指令序列之前获取时间戳计数器的值作为初始时间戳计数、在执行目标内存保护区域中的指令序列之后获取时间戳计数器的值作为结束时间戳计数,以及在确定结束时间戳计数与初始时间戳计数的差大于与目标内存保护区域对应的预设总执行时间戳计数阈值的情况下,确定存在针对目标内存保护区域的侧信道攻击的步骤。由此,本实施例描述的方案可以引入目标内存保护区域中的指令序列的执行时间,从而实现更全面的检测针对目标内存保护区域的侧信道攻击。

进一步参考图4,其示出了用于检测侧信道攻击的方法的再一个实施例的流程400。该用于检测侧信道攻击的方法的流程400,包括以下步骤:

步骤401,清空目标内存保护区域的状态保存区中的数据。

在本实施例中,步骤401的具体操作与图3所示的实施例中步骤301的操作基本相同,在此不再赘述。

步骤402,获取执行目标内存保护区域中的指令序列的处理器中的时间戳计数器的值作为初始时间戳计数。

在本实施例中,步骤402的具体操作与图3所示的实施例中步骤302的操作基本相同,在此不再赘述。

步骤403,按序执行目标内存保护区域中的指令序列。

在本实施例中,目标内存保护区域中可以存储有可执行代码和/或数据。目标内存保护区域中的指令序列则是加载目标内存保护区域中的可执行代码所生成的至少一条按序排列的指令。其中,目标内存保护区域中的指令序列可以包括至少一个关键指令子序列。

在本实施例的一些可选的实现方式中,目标内存保护区域中的指令序列可以只包括至少一个关键指令子序列,而不包括非关键指令子序列。

在本实施例的一些可选的实现方式中,目标内存保护区域中的指令序列除包括至少一个关键指令子序列以外,还可以包括至少一个非关键指令子序列。

其中,关键指令子序列可以是涉及到对敏感数据进行操作的至少一条按序排列的指令。例如,敏感数据可以是目标内存保护区域中存储的保护数据。作为示例,对敏感数据进行的操作可以是:读取目标内存保护区域中存储的密钥、对目标内存保护区域中存储的保护数据进行加密或者解密操作、读取目标内存保护区域中存储的用户名和密码等等。

其中,非关键指令子序列可以是不涉及到对敏感数据进行操作的至少一条按序排列的指令。作为示例,非关键指令子序列所涉及的操作可以是:获取文本长度、对文本进行切词或者将数据进行输出等等。

在本实施例中,上述电子设备可以按序执行目标内存保护区域中的指令序列中的关键指令子序列和非关键指令子序列。其中,由于关键指令子序列涉及到对敏感数据进行操作,更大可能受到侧信道攻击,为此,上述电子设备可以在按序执行目标内存保护区域中的指令序列中的关键指令子序列和非关键指令子序列的过程中,可以对于目标内存保护区域中的指令序列所包括的至少一个关键指令子序列中的每个关键指令子序列,执行检测步骤。请参考图5,其示出了检测步骤的一个实施例的流程500,该检测步骤包括以下步骤:

步骤501,获取时间戳计数器的值作为与该关键指令子序列对应的执行前时间戳计数。

这里,上述电子设备可以在执行该关键指令子序列之前,获取执行该关键指令子序列的处理器中的时间戳计数器的值作为与关键指令子序列对应的执行前时间戳计数。

步骤502,执行该关键指令子序列。

步骤503,获取时间戳计数器的值作为与该关键指令子序列对应的执行后时间戳计数。

步骤504,响应于确定与该关键指令子序列对应的执行时间戳计数大于与关键指令子序列对应的预设执行时间戳计数阈值,确定存在针对目标内存保护区域的侧信道攻击。

其中,与关键指令子序列对应的执行时间戳计数为与关键指令子序列对应的执行后时间戳计数减去与关键指令子序列对应的执行前时间戳计数的差。

这里,对于目标内存保护区域中的指令序列中的每个关键指令子序列,上述电子设备可以预先存储有与该关键指令子序列对应的预设时间戳计数阈值。其中,与目标内存保护区域中的指令序列中的每个关键指令子序列对应的预设时间戳计数阈值可以是由技术人员针对每个关键指令子序列预先设定的,也可以是由上述电子设备对于目标内存保护区域中的指令序列中的每个关键指令子序列,针对该关键指令子序列预先执行时间戳计数阈值确定步骤所得到的,其中,时间戳计数阈值确定步骤可以如下进行:

首先,可以多次执行该关键指令子序列,并在每次执行该关键指令子序列之前获取执行该关键指令子序列的处理器中的时间戳计数器的值作为第三时间戳计数,以及在执行完该关键指令子序列之后再次获取执行该关键指令子序列的处理器中的时间戳计数器的值作为第四时间戳计数,以及将第四时间戳计数减去第三时间戳计数的差作为该次执行该关键指令子序列的执行时间戳计数。

然后,可以根据多次执行该关键指令子序列中每次执行该关键指令子序列的执行时间戳计数,确定与该关键指令子序列对应的预设时间戳计数阈值。

例如,可以将多次执行该关键指令子序列的各个执行时间戳计数中的最大执行时间戳计数作为与该关键指令子序列对应的预设时间戳计数阈值。

又例如,还可以利用统计学规律,根据多次执行该关键指令子序列的各个执行时间戳计数,确定与该关键指令子序列对应的预设时间戳计数阈值。作为示例,可以将多次执行该关键指令子序列的各个执行时间戳计数按照从小到大的顺序排序,并根据排序结果进行第二预设数目(例如,10)的分位数化操作,生成第二预设数目个分位数结果,再将第二预设分位(例如,90%)的分位数结果确定为与该关键指令子序列对应的预设时间戳计数阈值。

在本实施例的一些可选的实现方式中,检测步骤500还可以包括:

在步骤502之后,执行以下步骤505和步骤506:

步骤505,获取状态保存区中的数据。

步骤506,响应于确定所获取的状态保存区中的数据指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,确定存在针对目标内存保护区域的侧信道攻击。

在本实施例的一些可选的实现方式中,上述电子设备还可以在步骤401之后,执行以下步骤401’:

步骤401’,将退出次数设置为预设数目。

例如,可以将退出次数设置为0。即,相当于在执行目标内存保护区域中的指令序列之前将退出次数初始化为预设数目。

在执行步骤401’的基础上,检测步骤500还可以包括:

在步骤505之后,执行以下步骤507、步骤508和步骤509:

步骤507,响应于确定所获取的状态保存区中的数据指示目标内存保护区域发生退出原因为中断退出的异步内存保护区域退出,将状态保存区中的数据清空。

步骤508,用退出次数与预设增量的和更新退出次数。

例如,预设增量可以为1。即,每检测到一次中断退出就将退出次数加一。

步骤509,响应于确定更新后的退出次数大于与目标内存保护区域对应的预设退出次数阈值,确定存在针对目标内存保护区域的侧信道攻击。

在本实施例的一些可选的实现方式中,检测步骤500还可以包括:

在步骤508之后,执行以下步骤510:

步骤510,响应于确定更新后的退出次数除以退出时间戳计数的比值大于与目标内存保护区域对应的预设退出频率阈值,确定存在针对目标内存保护区域的侧信道攻击。

其中,退出时间戳计数是与该关键指令子序列对应的执行后时间戳计数减去初始时间戳计数的差。

步骤404,获取时间戳计数器的值作为结束时间戳计数。

在本实施例中,步骤404的具体操作与图3所示的实施例中步骤304的操作基本相同,在此不再赘述。

步骤405,获取状态保存区中的数据。

在本实施例中,用于检测侧信道攻击的方法执行于其上的电子设备(例如图1所示的电子设备101)可以获取目标内存保护区域的状态保存区中的数据。

步骤406,确定所获取的状态保存区中的数据是否指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出。

在本实施例中,上述电子设备可以确定步骤405中所获取的状态保存区中的数据是否指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,如果确定是,则转到步骤407,如果确定否,则转到步骤407’。

步骤407,确定存在针对目标内存保护区域的侧信道攻击。

在本实施例中,上述电子设备可以在步骤406中确定所获取的状态保存区中的数据指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出的情况下,或者可以在步骤407’中确定结束时间戳计数与初始时间戳计数的差大于与目标内存保护区域对应的预设总执行时间戳计数阈值的情况下,确定存在针对目标内存保护区域的侧信道攻击。

步骤407’,确定结束时间戳计数与初始时间戳计数的差是否大于与目标内存保护区域对应的预设总执行时间戳计数阈值。

在本实施例中,上述电子设备可以在步骤406中确定所获取的状态保存区中的数据没有指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出的情况下,首先计算上述结束时间戳计数与上述初始时间戳计数的差值,然后,确定上述计算所得的差值是否大于与目标内存保护区域对应的预设总执行时间戳计数阈值,如果确定大于,则转到步骤407。

这里,上述电子设备可以预先存储有与目标内存保护区域对应的预设总执行时间戳计数阈值。其中,关于与目标内存保护区域对应的预设总执行时间戳计数阈值具体描述可以参考图3所示的实施例中步骤305中的相关说明,在此不再赘述。

从图4中可以看出,与图3对应的实施例相比,本实施例中的用于检测侧信道攻击的方法的流程400改变了确定所获取的状态保存区中的数据是否指示目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,以及确定结束时间戳计数与初始时间戳计数的差是否大于与目标内存保护区域对应的预设总执行时间戳计数阈值的先后顺序,从而实现多种方式检测针对目标内存保护区域的侧信道攻击。另外,本实施例中的用于检测侧信道攻击的方法的流程400中,增加了在按序执行目标内存保护区域中的指令序列时,对指令序列中的关键指令子序列也进行侧信道攻击检测的步骤,从而可以实现多层次对目标内存保护区域进行侧信道检测。

进一步参考图6,作为对上述各图所示方法的实现,本申请提供了一种用于检测侧信道攻击的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图6所示,本实施例的用于检测侧信道攻击的装置600包括:清空单元601、执行单元602、第一获取单元603和第一确定单元604。其中,清空单元601,配置用于清空目标内存保护区域的状态保存区中的数据;执行单元602,配置用于按序执行上述目标内存保护区域中的指令序列;第一获取单元603,配置用于获取上述状态保存区中的数据;而第一确定单元604,配置用于响应于确定所获取的状态保存区中的数据指示上述目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,确定存在针对上述目标内存保护区域的侧信道攻击。

在本实施例中,用于检测侧信道攻击的装置600的清空单元601、执行单元602、第一获取单元603和第一确定单元604的具体处理及其所带来的技术效果可分别参考图2对应实施例中步骤201、步骤202、步骤203和步骤204的相关说明,在此不再赘述。

在本实施例的一些可选的实现方式中,上述装置600还可以包括:第二获取单元605,配置用于在按序执行上述目标内存保护区域中的指令序列之前,获取执行上述目标内存保护区域中的指令序列的处理器中的时间戳计数器的值作为初始时间戳计数;第三获取单元606,配置用于在按序执行上述目标内存保护区域中的指令序列之后,获取上述时间戳计数器的值作为结束时间戳计数;第二确定单元607,配置用于响应于确定上述结束时间戳计数与上述初始时间戳计数的差大于与上述目标内存保护区域对应的预设总执行时间戳计数阈值,确定存在针对上述目标内存保护区域的侧信道攻击。第二获取单元605、第三获取单元606和第二确定单元607的具体处理及其所带来的技术效果可分别参考图3对应实施例中步骤302、步骤304、步骤305和步骤306的相关说明,在此不再赘述。

在本实施例的一些可选的实现方式中,上述指令序列可以包括至少一个关键指令子序列。

在本实施例的一些可选的实现方式中,上述执行单元602可以进一步配置用于:对于上述至少一个关键指令子序列中的每个关键指令子序列,执行以下检测步骤:获取上述时间戳计数器的值作为与该关键指令子序列对应的执行前时间戳计数;执行该关键指令子序列;获取上述时间戳计数器的值作为与该关键指令子序列对应的执行后时间戳计数;响应于确定与该关键指令子序列对应的执行时间戳计数大于与该关键指令子序列对应的预设执行时间戳计数阈值,确定存在针对上述目标内存保护区域的侧信道攻击,其中,与该关键指令子序列对应的执行时间戳计数为与该关键指令子序列对应的执行后时间戳计数减去与该关键指令子序列对应的执行前时间戳计数的差。执行单元602的具体处理及其所带来的技术效果可参考图4对应实施例中步骤403以及图5对应实施例中的相关说明,在此不再赘述。

在本实施例的一些可选的实现方式中,上述检测步骤还可以包括:在执行该关键指令子序列之后,获取上述状态保存区中的数据,以及响应于确定所获取的状态保存区中的数据指示上述目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,确定存在针对上述目标内存保护区域的侧信道攻击。检测步骤的具体处理及其所带来的技术效果可参考图5对应实施例中的相关说明,在此不再赘述。

在本实施例的一些可选的实现方式中,上述装置600还可以包括:设置单元608,配置用于将退出次数设置为预设数目;以及上述检测步骤还可以包括:在获取上述状态保存区中的数据之后,响应于确定所获取的状态保存区中的数据指示上述目标内存保护区域发生退出原因为中断退出的异步内存保护区域退出,将上述状态保存区中的数据清空,用上述退出次数与预设增量的和更新上述退出次数,以及响应于确定上述更新后的退出次数大于与上述目标内存保护区域对应的预设退出次数阈值,确定存在针对上述目标内存保护区域的侧信道攻击。设置单元608的具体处理及其所带来的技术效果可参考图4对应实施例中步骤401’中的相关说明,在此不再赘述。

在本实施例的一些可选的实现方式中,上述检测步骤还可以包括:在用上述退出次数与预设增量的和更新上述退出次数之后,响应于确定上述更新后的退出次数除以退出时间戳计数的比值大于与上述目标内存保护区域对应的预设退出频率阈值,确定存在针对上述目标内存保护区域的侧信道攻击,其中,上述退出时间戳计数是与该关键指令子序列对应的执行后时间戳计数减去上述初始时间戳计数的差。检测步骤的具体处理及其所带来的技术效果可参考图5对应实施例中的相关说明,在此不再赘述。

在本实施例的一些可选的实现方式中,上述目标内存保护区域可以存储有保护数据;以及上述装置600还可以包括:数据生成单元609,配置用于响应于确定存在针对上述目标内存保护区域的侧信道攻击,删除上述目标内存保护区域中所存储的保护数据,以及重新生成保护数据并存储到上述目标内存保护区域中。数据生成单元609的具体处理及其所带来的技术效果可参考图2对应实施例中的相关说明,在此不再赘述。

在本实施例的一些可选的实现方式中,上述装置600还可以包括:信息生成单元610,配置用于响应于确定存在针对上述目标内存保护区域的侧信道攻击,生成并输出提示信息,其中,上述提示信息用于指示存在针对上述目标内存保护区域的侧信道攻击。信息生成单元610的具体处理及其所带来的技术效果可参考图2对应实施例中的相关说明,在此不再赘述。

下面参考图7,其示出了适于用来实现本申请实施例的电子设备的计算机系统700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图7所示,计算机系统700包括中央处理单元(cpu,centralprocessingunit)701,其可以根据存储在只读存储器(rom,readonlymemory)702中的程序或者从存储部分706加载到随机访问存储器(ram,randomaccessmemory)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有系统700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o,input/output)接口705也连接至总线704。

以下部件连接至i/o接口705:包括硬盘等的存储部分706;以及包括诸如lan(局域网,localareanetwork)卡、调制解调器等的网络接口卡的通信部分707。通信部分707经由诸如因特网的网络执行通信处理。。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分707从网络上被下载和安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括清空单元、执行单元、第一获取单元和第一确定单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,清空单元还可以被描述为“清空目标内存保护区域的状态保存区中的数据的单元”。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:清空目标内存保护区域的状态保存区中的数据;按序执行上述目标内存保护区域中的指令序列;获取上述状态保存区中的数据;响应于确定所获取的状态保存区中的数据指示上述目标内存保护区域发生退出原因为异常退出的异步内存保护区域退出,确定存在针对上述目标内存保护区域的侧信道攻击。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1