用于对中央处理器CPU进行安全检测的方法、装置和系统与流程

文档序号:15076557发布日期:2018-08-01 01:52阅读:197来源:国知局

本发明涉及一种用于对中央处理器cpu进行安全检测的方法、装置和系统。



背景技术:

随着网络信息化等新技术的大规模应用,信息安全成为日益严峻的问题。通常我们讨论的信息安全都局限于网络安全、软件安全等方面,但是随着近年来研究表明,硬件安全也应受到关注。

硬件设计的规模随着硬件设计水平的提升日渐提升,使得硬件木马成为可能:当前以cpu(中央处理器)为代表的大规模电路中用到的硬件ip(知识产权)的来源多样化,硬件设计的流程复杂化,设计制造流程分工细化等因素造成了硬件最终产品的安全可控性下降。在设计中被注入恶意木马或者漏洞(下文简称木马)的可能性增加,同时硬件规模的增加也增加了木马被识别和发现的困难。近年来,随着信息安全概念的发展,硬件的安全性逐渐成为信息安全的研究热点。



技术实现要素:

发明人发现,由于读操作响应触发输入输出记录装置自动发送数据包,而使记录日志文件(即log文件)记录的操作执行顺序与中央处理器cpu实际执行顺序不一致,进而导致检测处理器无法进行有效的安全检测的问题

本发明的一个方面提供了一种用于对中央处理器cpu进行安全检测的方法。所述方法应用于检测处理器。所述方法包括:当所述检测处理器检测分析到读操作指令时,确定所述读操作指令是否对应于读外设的操作;当所述读操作指令对应于读外设的操作时,暂停检测分析所述读操作指令,并确定是否有尚未检测分析的、在所述cpu执行的所述读操作指令对应的读操作响应之前的至少一个外设发起的读写操作;如有尚未检测分析的所述至少一个外设发起的读写操作,检测分析所述至少一个外设发起的读写操作后,再检测分析所述读操作指令;或者,如没有尚未检测分析的所述至少一个外设发起的读写操作,恢复检测分析所述读操作指令。

可选地,所述确定所述读操作指令是否对应于读外设的操作,包括判断所述读操作指令中的地址是否落在外设地址空间范围内,以及当落在外设地址空间范围内时,确定所述读操作指令对应于读外设的操作。

可选地,所述确定是否有尚未检测分析的、在所述cpu执行的所述读操作指令对应的读操作响应之前的至少一个外设发起的读写操作,包括:根据所述读操作指令的指令长度,确定是否有标记为自动刷新类型的记录;以及,当有标记为自动刷新类型的记录时,确定存在尚未检测分析的、在所述cpu执行的所述读操作指令对应的读操作响应之前的至少一个外设发起的读写操作。

可选地,所述根据所述读操作指令的指令长度,确定是否有标记为自动刷新类型的记录,包括:根据所述读操作指令的指令长度,确定下一条指令的指令位置;以及,根据下一条指令的指令位置,检索是否存在对应的标记为自动刷新类型的记录。

可选地,所述检测分析所述至少一个外设发起的读写操作,包括:根据所述标记为自动刷新类型的记录中所述至少一个外设发起的读写操作的顺序,依次检测分析所述至少一个外设发起的读写操作。

可选地,所述至少一个外设发起的读写操作包括dma直接内存存取操作,和/或设备间通信的读写操作。

可选地,所述读外设的操作为内存映射读写mmio操作。

本发明的另一个方面提供了一种用于对中央处理器cpu进行安全检测的装置。所述装置包括第一确定模块、第二确定模块、和检测分析模块。第一确定模块用于当所述检测处理器检测分析到读操作指令时,确定所述读操作指令是否对应于读外设的操作。第二确定模块用于当所述读操作指令对应于读外设的操作时,暂停检测分析所述读操作指令,并确定是否有尚未检测分析的、在所述cpu执行的所述读操作指令对应的读操作响应之前的至少一个外设发起的读写操作。检测分析模块用于如有尚未检测分析的所述至少一个外设发起的读写操作,检测分析所述至少一个外设发起的读写操作后,再检测分析所述读操作指令;或者,用于如没有尚未检测分析的所述至少一个外设发起的读写操作,恢复检测分析所述读操作指令。

可选地,第一确定模块包括判断子模块和确定子模块。判断子模块用于判断所述读操作指令中的地址是否落在外设地址空间范围内。确定子模块用于当落在外设地址空间范围内时,确定所述读操作指令对应于读外设的操作。

可选地,第二确定模块包括自动刷新记录确定子模块和外设发起的读写操作确定子模块。自动刷新记录确定子模块用于根据所述读操作指令的指令长度,确定是否有标记为自动刷新类型的记录。外设发起的读写操作确定子模块用于当有标记为自动刷新类型的记录时,确定存在尚未检测分析的、在所述cpu执行的所述读操作指令对应的读操作响应之前的至少一个外设发起的读写操作。

可选地,所述自动刷新记录确定子模块具体用于,根据所述读操作指令的指令长度确定下一条指令的指令位置,以及根据下一条指令的指令位置,检索是否存在对应的标记为自动刷新类型的记录。

可选地,所述检测分析模块具体用于,根据所述标记为自动刷新类型的记录中所述至少一个外设发起的读写操作的顺序,依次检测分析所述至少一个外设发起的读写操作。

可选地,所述至少一个外设发起的读写操作包括dma直接内存存取操作,和/或设备间通信的读写操作。

可选地,所述读外设的操作为内存映射读写mmio操作。

本发明的另一方面提供了一种用于对中央处理器cpu进行安全检测的系统,包括存储单元以及耦接至所述存储器的处理单元。所述处理单元被配置为基于存储在所述存储单元中的指令,执行如上所述的用于对中央处理器cpu进行安全检测的方法。

本发明的另一方面提供了一种非易失性存储介质,存储有计算机可执行指令,所述指令在被执行时如上所述的用于对中央处理器cpu进行安全检测的方法。

本发明的另一方面提供了一种计算机程序。所述计算机程序包括计算机可执行指令。所述指令在被执行时用于实现如上所述的方法。

根据本发明实施例的技术方案,检测处理器对cpu进行安全检测时,能够按照cpu实际执行操作的顺序进行检测分析,有效地保证检测分析结果的可靠性。

附图说明

为了更完整地理解本发明及其优势,现在将参考结合附图的以下描述,其中:

图1示意性示出了根据本发明实施例的用于对中央处理器cpu进行安全检测的方法、装置及系统的应用场景;

图2示意性示出了根据本发明实施例的用于对中央处理器cpu进行安全检测的方法的流程图;

图3示意性示出了根据本发明实施例的确定所述读操作指令是否对应于读外设的操作的流程图;

图4示意性示出了根据本发明实施例的确定是否有尚未检测分析的至少一个外设发起的读写操作的流程图;

图5示意性示出了根据本发明实施例的确定是否有标记为自动刷新类型的记录的方法流程图;

图6示意性示出了根据本发明实施例的用于对中央处理器cpu进行安全检测的装置的方框图;以及

图7示意性示出了根据本发明实施例的用于对中央处理器cpu进行安全检测的系统的框图。

具体实施方式

以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“a或b”应当被理解为包括“a”或“b”、或“a和b”的可能性。

附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。

因此,本发明的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本发明的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本发明的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

在对中央处理器cpu进行安全检测的过程中,检测处理器重新执行cpu运行过程中的任务,以检测分析中央处理器cpu的指令行为,从而确定cpu的硬件安全性。在这个过程中,需要确保检测处理器执行的操作顺序与cpu的执行顺序一致,才能保证检测分析结果的可靠性。

在安全检测过程中,将输入输出记录装置设置于中央处理器cpu与外设之间,以记录该中央处理器cpu与该外设之间的数据读写操作,输入输出记录装置还用于请求中央处理器cpu处理外设发起的数据读写操作,以及在接收到中央处理器cpu发送的指示时,将所述外设发起的数据读写操作的数据包发送至中央处理器cpu,以将外设发起的数据读写操作对齐至中央处理器cpu的指令位置。同时,在中央处理器cpu响应输入输出记录装置发送的请求时,使用log文件记录中央处理器cpu将要处理的数据读写操作。这样,检测处理器得以根据log文件及输入输出记录装置记录的数据读写操作,重新执行中央处理器cpu运行过程中的任务。在以上数据读写操作记录过程中,为了防止i/o(input/output,输入输出)事件错序以及中央处理器cpu死锁的问题,当有中央处理器cpu发起的读操作响应数据包到达时,会触发输入输出记录装置将该读操作响应数据包及其之前到达输入输出记录装置的外设发起的数据读写操作的数据包发送至中央处理器cpu,这使得中央处理器cpu在响应输入输出记录装置发送的请求之前就先处理了外设发起的数据读写操作。

为了使检测处理器能够得到中央处理器cpu实际上执行操作的顺序,本发明的实施例提供了一种用于对中央处理器cpu进行安全检测的方法、装置和系统。该方法可以应用于检测处理器。该方法包括:当该检测处理器检测分析到读操作指令时,确定该读操作指令是否对应于读外设的操作;当该读操作指令对应于读外设的操作时,暂停检测分析该读操作指令,并确定是否有尚未检测分析的、在该中央处理器cpu执行的该读操作指令对应的读操作响应之前的至少一个外设发起的读写操作;如有尚未检测分析的该至少一个外设发起的读写操作,检测分析该至少一个外设发起的读写操作后,再检测分析该读操作指令;或者,如没有尚未检测分析的该至少一个外设发起的读写操作,恢复检测分析该读操作指令。

根据本发明的实施例,当检测分析到读操作指令时,判断是不是读外设的操作。如果为读外设的操作,检测处理器需要暂停执行该读外设的操作,同时确定否有尚未检测分析的、在该中央处理器cpu执行的该读操作指令对应的读操作响应之前的至少一个外设发起的读写操作。如果有尚未检测分析的、在该中央处理器cpu执行的该读操作指令对应的读操作响应之前的至少一个外设发起的读写操作,先对该尚未检测分析的该至少一个外设发起的读写操作进行检测分析,之后再对该读操作指令进行检测分析。如果没有尚未检测分析的至少一个外设发起的读写操作,则直接恢复对该读操作指令的检测分析。

以此方式,避免了由于读操作响应触发输入输出记录装置自动发送数据包,而使log文件记录的操作执行顺序与中央处理器cpu实际执行顺序不一致,进而导致检测处理器无法进行有效的安全检测的问题。根据本发明实施例,检测处理器对中央处理器cpu进行安全检测时,能够按照中央处理器cpu实际执行操作的顺序进行检测分析,有效地保证检测分析结果的可靠性。

图1示意性示出了根据本发明实施例的用于对中央处理器cpu进行安全检测的方法、装置及系统的应用场景。

需要注意的是,图1所示仅为可以应用本发明实施例的场景的示例,以帮助本领域技术人员理解本发明的技术内容,但并不意味着本发明实施例不可以用于其他设备、系统、环境或场景。

如图1所示,本发明实施例的应用场景包括输入输出记录装置101、中央处理器cpu(以下简称cpu)102、外设103和检测处理器104。外设103可以是显卡103、声卡103、或硬盘103等任意一种或多种外设103。输入输出记录装置101设置于cpu102与外设103之间,用于记录cpu102与外设103之间的数据读写操作,形成i/o事件序列。该数据读写操作包括外设103发起的数据读写操作和cpu102发起的数据读写操作。应理解的是,输入输出记录装置101逻辑上可以属于检测装置的一部分,与检测处理器104及其它组成部分一起构成检测装置。

在一些实施例中,输入输出记录装置101还可以请求cpu102处理外设103发起的数据读写操作,以及在接收到cpu102发送的指示时,将外设103发起的数据读写操作的数据包发送至cpu102。基于以上技术方案,输入输出记录装置101在记录cpu102与外设103之间的数据读写操作的同时,能将外设发起的数据读写操作对齐至cpu102的指令位置,为处理器安全检测做好准备。

在一些实施例中,当有该cpu102发起的读操作响应数据包到达输入输出记录装置101时,输入输出记录装置101可以自动向cpu102发送在该cpu102发起的读操作响应数据包之前到达的该输入输出记录装置101的该外设103发起的数据读写操作的数据包、以及该cpu102发起的读操作响应数据包。同时,记录以上步骤中输入输出记录装置101自动发送的外设103发起的数据读写操作的数据包的标识,并标记为自动刷新类型。检测处理器104还可以根据获取到的cpu102的输入/输出数据和内部状态等数据、以及i/o事件序列,分析cpu102的运行过程中的指令行为,以确定cpu硬件是否安全。

这样,检测处理器104可以根据内存记录器核输入输出记录装置101记录的信息对cpu102进行安全检测。例如,根据cpu102在目标运行过程的初始运行状态信息设置检测处理器104的初始运行状态,将cpu102在目标运行过程中的输入信息作为检测处理器104的输入信息。使检测处理器104以符合预定义行为的方式执行目标运行过程中的任务,得到检测处理器104的输出信息和/或终止运行状态信息。其中,预定义行为是cpu102的硬件行为标准,硬件行为标准是指在解析与执行软件指令流的过程中cpu102的行为标准。在一个实施例中,cpu102的硬件行为标准可以是cpu102说明书或其它规范化文档中规定的行为标准。例如,对于指令集cpu102而言,预定义行为可以包括但不限于:cpu102所实现的指令集中规定的指令行为,对中断的响应和处理行为,以及cpu102的输入输出端口的行为等行为。当检测处理器104执行完目标运行过程中的任务时,根据检测处理器104的输出信息和/或终止运行状态信息,确定cpu102在目标运行过程中是否安全,并输出检测结果。

输入输出记录装置101可以记录该cpu102与该外设103之间的数据读写操作,包括记录cpu102发起的数据读写操作、和记录外设103发起的数据读写操作。其中,cpu102发起的数据读写操作例如可以包括:mmio(memorymappedi/o,内存映射输入输出)等类型的数据读写操作。外设103发起的数据读写操作例如可以包括:dma(directmemoryaccess,直接内存存取)、p2p(peertopeer,设备间通信)等类型的数据读写操作。应理解的是,输入输出记录装置101可以只记录经过cpu102的p2p数据读写操作,而不必记录不经过cpu102的p2p数据读写操作。还应理解的是,对于不同类型的处理器,cpu102发起的数据读写操作可以包括mmio类型以外的读写操作,外设103发起的数据读写操作也可以包括dma和p2p类型以外的读写操作。本发明实施例可以应用于不同类型的处理器,以上列举类型外的其它类型的读写操作也应落在本发明实施例的保护范围内。

在输入输出记录装置101记录cpu102发起的数据读写操作和外设103发起的数据读写操作的过程中,按照发起方的不同可以分为cpu102发起的数据读写操作和外设103发起的数据读写操作两类。其中,相对cpu102而言,外设103发起的数据读写操作为异步事件。在记录过程中,输入输出记录装置101可以拦截pci(peripheralcomponentinterconnect,外部设备互连标准)总线中每个链路上发生的数据读写操作,并按照这些数据读写操作发生的顺序暂存在输入输出记录装置101中,形成i/o事件序列。

根据pci总线中每个链路上发生的i/o事件的数据流向,可以将i/o事件分为“下行”i/o事件和“上行”i/o事件两大类。结合图1所示,其中,“下行”i/o事件中数据流来自cpu102,从cpu102流向外设。“上行”i/o事件中数据流的终点为cpu102。

对于pci总线中每个链路,输入输出记录装置101可以拦截的i/o事件包括“下行”i/o事件和“上行”i/o事件。对于不同类型的处理器,其中定义的“下行”i/o事件和“上行”i/o事件可能会有所不同,本发明实施例对此不作限定。下面举例说明“下行”i/o事件和“上行”i/o事件。

例如,“下行”i/o事件可以包括以下的任意一项或多项:mmio写操作,其数据包可以包括地址、数据长度和数据;mmio读请求,其数据包可以包括地址和数据长度;dma读应答,其数据包可以包括数据长度和数据;p2p读请求,其数据包可以包括地址和数据长度;p2p读响应,其数据包可以包括数据长度和数据;p2p写操作,其数据包可以包括地址、数据长度和数据。

又如,“上行”i/o事件可以包括以下的任意一项或多项:dma写操作,其数据包可以包括地址、数据长度和数据;dma读请求,其数据包可以包括地址和数据长度;mmio读响应,其数据包可以包括数据长度和数据;p2p读请求,其数据包可以包括地址和数据长度;p2p读响应,其数据包可以包括数据长度和数据;p2p写操作,其数据包可以包括地址、数据长度和数据。

根据本发明的实施例,检测处理器104根据输入输出记录装置101中记录的i/o事件序列,对cpu102进行安全检测时,当检测分析到读操作指令时,会确定该读操作指令是否对应于读外设的操作。若该读操作指令对应于读外设的操作时,检测处理器104会暂停检测分析该读操作指令,并确定是否有尚未检测分析的、在该cpu执行的该读操作指令对应的读操作响应之前的至少一个外设发起的读写操作。如果有尚未检测分析的至少一个外设发起的读写操作,检测处理器104会在检测分析至少一个外设发起的读写操作后,再检测分析该读操作指令。或者,如果没有尚未检测分析的至少一个外设发起的读写操作,检测处理器104可直接恢复检测分析该读操作指令。

以此方式,避免了由于读操作响应触发输入输出记录装置101自动发送数据包,而使log文件记录的操作执行顺序与cpu实际执行顺序不一致,进而导致检测处理器104无法对cpu102进行有效的安全检测的问题。根据本发明实施例,检测处理器104对cpu102进行安全检测时,能够按照cpu102实际执行操作的顺序进行检测分析,有效地保证检测分析结果的可靠性。

根据本发明的实施例,该应用场景还可以包括与cpu102相关联的任意数量的内存、和/或内存记录器。

图2示意性示出了根据本发明实施例的用于对中央处理器cpu进行安全检测的方法的流程图。如图2所示,根据本发明实施例的用于对中央处理器cpu102进行安全检测的方法,该方法可以由检测处理器104执行。该方法包括操作s210、操作s220、和操作s231或操作s232。

在操作s210中,当检测处理器104检测分析到读操作指令时,确定该读操作指令是否对应于读外设的操作。根据本发明的实施例,该读外设的操作可以是内存映射读写mmio操作。

在操作s220中,当该读操作指令对应于读外设的操作时,暂停检测分析该读操作指令,并确定是否有尚未检测分析的、在cpu102执行的该读操作指令对应的读操作响应之前的至少一个外设发起的读写操作。根据本发明的实施例,该至少一个外设发起的读写操作包括dma直接内存存取操作,和/或设备间通信的读写操作。

根据本发明的实施例,所述尚未检测分析的、在cpu102执行的该读操作指令对应的读操作响应之前的至少一个外设发起的读写操作。

在操作s231中,如有尚未检测分析的至少一个外设发起的读写操作,检测分析该至少一个外设发起的读写操作后,再检测分析该读操作指令。或者,在操作s232中,如没有尚未检测分析的至少一个外设发起的读写操作,恢复检测分析该读操作指令。

根据本发明的实施例,当检测处理器104检测分析到到读操作指令时,需要判断该读操作指令是否对应于读外设的操作。例如,如果为mmio读操作,则说明该读操作为读外设的操作,需要暂停执行该mmio读操作。当确定该读操作指令为mmio操作后,接着确定有没有尚未检测分析的、在该mmio读操作响应之前的至少一个dma操作。

这是因为,cpu102在执行该mmio读操作时,会为了等待该mmio读操作响应而处于锁定状态(在锁定状态下,cpu102暂停指令流的处理,也不响应从外部接收到的请求)。为了防止cpu进一步进入死锁的状态,使用mmio读响应触发输入输出记录装置101自动发送暂存其中的dma数据包,使得cpu102提前(早于log文件记录的指令位置)处理了dma操作。

因此,当检测处理器104根据输入输出装置101中记录的i/o序列进行检测分析时,就有可能出现检测分析到mmio读操作时,还存在有尚未检测分析的、在该mmio读操作响应之前的dma操作。根据本发明实施例,在cpu102检测分析至mmio读操作时,先检查是否存在尚未检测分析的、在该mmio读操作响应之前的dma操作,可以有效地解决以上问题。如果有尚未检测分析的、在该mmio读操作响应之前的至少一个dma操作,则检测处理器104检测分析该至少一个dma操作。或者,如果没有尚未检测分析的、在该mmio读操作响应之前的至少一个dma读写操作,则检测处理器104恢复检测分析mmio读操作。

根据本发明的实施例,避免了由于读操作响应触发输入输出记录装置101自动发送dma数据包,而使log文件记录的操作执行顺序与cpu102实际执行顺序不一致,进而导致检测处理器104无法对cpu102进行有效的安全检测的问题。根据本发明实施例,检测处理器104对cpu102进行安全检测时,能够按照cpu102实际执行操作的顺序进行检测分析,有效地保证检测分析结果的可靠性。

图3示意性示出了根据本发明实施例的确定该读操作指令是否对应于读外设的操作的流程图。如图3所示,根据本发明的实施例,操作s210可以包括操作s211和操作s212。

在操作s211中,判断该读操作指令中的地址是否落在外设地址空间范围内。在操作s212中,当落在外设地址空间范围内时,确定该读操作指令对应于读外设的操作。

根据本发明的实施例,在检测处理器104对cpu102进行安全检测的过程中,检测处理器104检测分析到读操作指令后,判断该读操作指令的访存地址是否落在外设地址空间范围内。如果该读操作指令的访存地址落在外设地址空间范围空间内,则可以确定该读操作指令对应于读外设的操作。

在这种情况下,根据本发明的实施例,在操作s212后,可以执行操作s220暂停对该读操作指令的检测分析,以及确定接下来是执行操作s231还是执行操作s232。以此方式,检测处理器104对cpu102进行安全检测时,能够按照cpu102实际执行操作的顺序进行检测分析,有效地保证检测分析结果的可靠性。

图4示意性示出了根据本发明实施例的确定是否有尚未检测分析的至少一个外设发起的读写操作的流程图。如图4所示,根据本发明的实施例,操作s220可以包括操作s221和操作s222。

在操作s221中,根据该读操作指令的指令长度,确定是否有标记为自动刷新类型的记录。应理解的是,“自动刷新类型”仅是一种便于描述的称谓,本发明实施例不限于此。在操作s222中,当有标记为自动刷新类型的记录时,确定存在尚未检测分析的、在cpu102执行的该读操作指令对应的读操作响应之前的至少一个外设发起的读写操作。

根据本发明的实施例,输入输出记录装置101在记录该cpu102与该外设103之间的数据读写操作时,当有该cpu102发起的读操作响应数据包到达输入输出记录装置101时,可以触发输入输出记录装置101自动向cpu102发送在该cpu102发起的读操作响应数据包之前到达其中的该外设103发起的数据读写操作的数据包、以及该cpu102发起的读操作响应数据包。

输入输出记录装置101还可以请求该cpu102处理该外设103发起的数据读写操作,以及在接收到该cpu102发送的指示时,将存储于其中的该外设103发起的数据读写操作的数据包发送至该cpu102。

这样,检测处理器104在检测分析到该cpu102发起的读操作指令时,可以根据该读操作指令的指令长度,检测下一指令中是否有标记为自动刷新类型的记录。当有标记为自动刷新类型的记录时,就可以确定出存在有尚未检测分析的、在该cpu102执行的该读操作指令对应的读操作响应之前的至少一个外设发起的读写操作。从而,检测处理器104可以执行操作s231,完成对该至少一个外设发起的读写操作进行检测分析之后,再检测分析该读操作指令。

图5示意性示出了根据本发明实施例的确定是否有标记为自动刷新类型的记录的方法流程图。如图5所示,根据本发明的实施例,操作s221进一步还可以包括操作s2211和操作s2212。

在操作s2211中,根据该读操作指令的指令长度,确定下一条指令的指令位置。在操作s2212中,根据下一条指令的指令位置,检索是否存在对应的标记为自动刷新类型的记录。

具体的,检测处理器104可以根据该cpu102读外设的操作指令的指令长度,计算下一条指令的指针,从而获得下一条指令的位置信息,使用该位置信息来表示其指令位置。

通常情况下,指令的位置信息可以用“检测分析区间内跳转次数”,“指令指针”,“指令重复执行次数”三个信息来表示。例如,对于当前的mmio读操作指令,下一条指令的位置信息与当前的mmio读操作指令的指令位置信息相比,“检测分析区间内跳转次数”与“指令重复执行次数”可以不变。此时,只需要根据当前的mmio读操作指令的指令长度,就可以计算出下一条指令的“指令指针”,从而获得下一指令的位置信息。

然后,根据计算得到的指令位置,检测处理器104可以检索是否存在与该指令位置对应的标记为自动刷新类型的记录。在该实施例中,标记为自动刷新类型的记录通常携带该记录生成的指令位置信息,因此根据指令位置就可以检索到是否存在标记为自动刷新类型的记录。

如果找到了标记为自动刷新类型的记录的外设发起的读写操作,则执行操作s231,完成对该至少一个外设发起的读写操作进行检测分析之后,再检测分析该mmio读操作指令。如果没有找到标记为自动刷新类型的记录的外设发起的读写操作,则执行操作s232,cpu102可以直接恢复对该mmio读操作指令的检测分析。

根据本发明的实施例,在检测分析该至少一个外设发起的读写操作时,根据该标记为自动刷新类型的记录中该至少一个外设发起的读写操作的顺序,依次检测分析该至少一个外设发起的读写操作,以确定cpu102的安全性。

下面以该外设103发起的数据读写操作为dma读写操作,cpu102发起的读操作指令为mmio读操作指令为例,详细地说明根据本发明实施例的用于对中央处理器cpu102进行安全检测的一种实施例的流程。

第一步,在对cpu102的安全检测过程中,检测处理器104检测分析至读操作指令时,判断该读操作指令的访存地址是否落在外设地址空间范围内。如果落外设地址空间范围内,则确定该读操作指令对应于读外设的操作(例如,mmio读操作)。

第二步,检测处理器104暂停对该mmio读操作指令的检测分析。为方便描述,使用<i>表示该mmio读操作指令。

第三步,检测处理器104根据mmio读操作指令<i>的指令长度,计算其下一条指令(标记为<i+1>)的“指令指针”,从而获得下一条指令<i+1>的指令位置信息;

第四步,检测处理器104根据下一指令<i+1>的指令位置信息,检索是否存在与其对应的标记为自动刷新类型的记录。例如,遍历所有的i/o事件记录表(eventlog),寻找是否存在指令位置信息等于指令<i+1>的指令位置信息的标记为自动刷新类型的记录的指令。

第五步,根据该标记为自动刷新类型的记录中所有的dma读写操作的顺序,依次检测分析该所有dma读写操作指令。例如,检测处理器104按照该标记为自动刷新类型的eventlog中所有的dma读写操作的顺序,依次检测分析该所有dma读写操作指令。

第六步,完成第五步中对dma读写操作的检测分析后,检测处理器104继续检测分析mmio读操作指令<i>,以确定cpu102的安全性。

因此,根据本发明实施例的技术方案,检测处理器对cpu进行安全检测时,能够按照cpu实际执行操作的顺序进行检测分析,有效地保证检测分析结果的可靠性。

图6示意性示出了根据本发明实施例的用于对中央处理器cpu进行安全检测的装置600的方框图。

如图6所示,根据本发明实施例的用于对中央处理器cpu进行安全检测的装置600,包括第一确定模块610、第二确定模块620和检测分析模块630。其中,在一个实施例中,上文所述的检测处理器104可以为装置600的组成部分。该装置600可以用于实现参考图1~图5所描述的用于对中央处理器cpu进行安全检测的方法。

第一确定模块610,用于当该检测处理器104检测分析到读操作指令时,确定该读操作指令是否对应于读外设的操作。

第二确定模块620,用于当该读操作指令对应于读外设的操作时,暂停检测分析该读操作指令,并确定是否有尚未检测分析的、在该cpu102执行的该读操作指令对应的读操作响应之前的至少一个外设发起的读写操作。

检测分析模块630,用于如有尚未检测分析的该至少一个外设发起的读写操作,检测分析该至少一个外设发起的读写操作后,再检测分析该读操作指令。或者,用于如没有尚未检测分析的该至少一个外设发起的读写操作,恢复检测分析该读操作指令。

根据本发明的实施例,避免了由于读操作响应触发输入输出记录装置101自动发送dma数据包,而使log文件记录的操作执行顺序与cpu102实际执行顺序不一致,进而导致检测处理器104无法对cpu102进行有效的安全检测的问题。根据本发明实施例,检测处理器104对cpu102进行安全检测时,能够按照cpu102实际执行操作的顺序进行检测分析,有效地保证检测分析结果的可靠性。

在一个实施例中,第一确定模块610包括判断子模块611和确定子模块612。判断子模块611,用于判断该读操作指令中的地址是否落在外设地址空间范围内。确定子模块612,用于当落在外设地址空间范围内时,确定该读操作指令对应于读外设的操作。

在又一实施例中,第二确定模块620包括自动刷新记录确定子模块621和外设发起的读写操作确定子模块622。自动刷新记录确定子模块621,用于根据该读操作指令的指令长度,确定是否有标记为自动刷新类型的记录。外设发起的读写操作确定子模块622,用于当有标记为自动刷新类型的记录时,确定存在尚未检测分析的、在该cpu102执行的该读操作指令对应的读操作响应之前的至少一个外设发起的读写操作。

在又一实施例中,该自动刷新记录确定子模块621具体用于:根据该读操作指令的指令长度,确定下一条指令的指令位置;根据下一条指令的指令位置,检索是否存在对应的标记为自动刷新类型的记录。

在又一实施例中,该检测分析模块630具体用于,根据该标记为自动刷新类型的记录中该至少一个外设发起的读写操作的顺序,依次检测分析该至少一个外设发起的读写操作。

在又一实施例中,该至少一个外设发起的读写操作包括dma直接内存存取操作,和/或设备间通信的读写操作。该读外设的操作为内存映射读写mmio操作。

可以理解的是,第一确定模块610、第二确定模块620、以及检测模块630可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,第一确定模块610、第二确定模块620、以及检测模块630中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,第一确定模块610、第二确定模块620、以及检测模块630中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。

图7示意性示出了根据本发明实施例的用于对中央处理器cpu进行安全检测的系统700的框图。如图7所示,系统700包括处理器710、计算机可读存储介质720。该系统700可以执行上面参考图2~图5描述的方法,以实现对中央处理器cpu102进行安全检测。

具体地,处理单元710例如可以包括通用微处理器、可重构处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理单元710还可以包括用于缓存用途的板载存储器。处理单元710可以是用于执行参考图2~图5描述的根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

计算机可读存储介质720,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

计算机可读存储介质720可以包括计算机程序721,该计算机程序721可以包括代码/计算机可执行指令,其在由处理单元710执行时使得处理单元710执行例如上面结合图2~图5所描述的方法流程及其任何变形。

计算机程序721可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序721中的代码可以包括一个或多个程序模块,例如包括721a、模块721b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理单元710执行时,使得处理单元710可以执行例如上面结合图2~图5所描述的方法流程及其任何变形。

根据本发明的实施例,第一确定模块610、第二确定模块620、以及检测模块630中的至少一个可以实现为参考图7描述的计算机程序模块,其在被处理器710执行时,可以实现上面描述的相应操作。

本领域技术人员可以理解,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。

尽管已经参照本发明的特定示例性实施例示出并描述了本发明,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本发明的精神和范围的情况下,可以对本发明进行形式和细节上的多种改变。因此,本发明的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

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