CN113672999A - 处理器安全检测的方法、装置、系统及存储介质 - Google Patents

处理器安全检测的方法、装置、系统及存储介质 Download PDF

Info

Publication number
CN113672999A
CN113672999A CN202110406510.9A CN202110406510A CN113672999A CN 113672999 A CN113672999 A CN 113672999A CN 202110406510 A CN202110406510 A CN 202110406510A CN 113672999 A CN113672999 A CN 113672999A
Authority
CN
China
Prior art keywords
processor
detection
memory access
direct memory
detection sample
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
CN202110406510.9A
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.)
Xuanjia Microelectronics Beijing Co ltd
Original Assignee
Xuanjia Microelectronics Beijing 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 Xuanjia Microelectronics Beijing Co ltd filed Critical Xuanjia Microelectronics Beijing Co ltd
Priority to CN202110406510.9A priority Critical patent/CN113672999A/zh
Publication of CN113672999A publication Critical patent/CN113672999A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种处理器安全检测的方法。所述方法包括:获取处理器的输入输出记录,所述输入输出记录包括以指令位置为分隔点划分的至少一个检测样本;判断所述至少一个检测样本中的第一检测样本是否存在预设情况述预设情况为所述处理器与直接内存存取操作对同一地址空间进行读写操作使得操作结果存在不确定性的情况;以及若所述第一检测样本存在所述预设情况,则放弃基于所述第一检测样本的处理器安全检测。本发明还提供了一种处理器安全检测的装置、系统及介质。本发明可以提高基于重放执行的硬件安全检测的结果的可靠性。

Description

处理器安全检测的方法、装置、系统及存储介质
技术领域
本发明涉及计算机领域,尤其涉及一种处理器安全检测的方法、装置、系统及存储介质。
背景技术
随着网络信息化等新技术的大规模应用,信息安全成为日益严峻的问题。通常我们讨论的信息安全都局限于网络安全、软件安全等方面,但是随着近年来研究表明,硬件安全也应受到关注。硬件设计的规模随着硬件设计水平的提高日渐提升,使得硬件木马成为可能:当前以CPU(处理器)为代表的大规模电路中用到的硬件IP(知识产权)的来源多样化,硬件设计的流程复杂化,设计制造流程分工细化等因素造成了硬件最终产品的安全可控性下降。在设计中被注入恶意木马或者漏洞(下文简称木马)的可能性增加,同时硬件规模的增加也增加了木马被识别和发现的困难。近年来,随着信息安全概念的发展,硬件的安全性逐渐成为信息安全的研究热点。在基于重放执行的硬件安全检测过程中,DMA(直接内存存取)操作的异步特性为处理器的安全检测带来了困难。
发明内容
在基于重放执行的硬件安全检测过程中,检测装置需要按照处理器在某一阶段的运行过程(即,目标运行过程)的输入输出操作记录,重新执行该目标运行过程中的任务。
发明人发现,由于DMA操作异步于处理器的指令流,因此在检测分析处理器的指令行为时,DMA操作结果会给检测结果带来不确定性。例如,当处理器和DMA操作访问同一个地址空间,且处理器访问操作与DMA操作中至少有一个是写操作时,处理器访问操作与DMA操作的先后顺序会导致处理器访问操作的结果截然不同。因此,若在安全检测过程中难以准确获知DMA操作和处理器访问操作的顺序,会导致安全检测的结果不可信赖。因此,有必要对处理器的输入输出记录中由于DMA操作带来不确定性的部分,以本发明提出的方式提高基于重放执行的硬件安全检测的结果的可靠性。
本发明的一个方面提供了一种处理器安全检测的方法。所述方法包括:获取处理器的输入输出记录,所述输入输出记录包括以指令位置为分隔点划分的至少一个检测样本;判断所述至少一个检测样本中的第一检测样本是否存在预设情况,所述预设情况为所述处理器与直接内存存取操作对同一地址空间进行读写操作使得操作结果存在不确定性的情况;以及若所述第一检测样本存在所述预设情况,则放弃基于所述第一检测样本的处理器安全检测。
可选地,所述预设情况包括以下任意一种或多种:所述处理器读取所述直接内存存取操作写入的地址空间;所述处理器写入所述直接内存存取操作写入的地址空间;以及所述处理器写入所述直接内存存取操作读取的地址空间。
可选地,所述判断所述至少一个检测样本中的第一检测样本是否存在预设情况包括:分别以内存映射输入输出写操作的指令位置与表示所述直接内存存取操作结束的中断消息的指令位置作为分段点,将所述第一检测样本划分为分段子样本;判断所述第一检测样本的各个分段子样本是否存在所述预设情况;以及若所述各个分段子样本中有任何一个分段子样本存在所述预设情况,则确定所述第一检测样本存在所述预设情况。
可选地,所述判断所述第一检测样本的各个分段子样本是否存在所述预设情况包括:根据所述直接内存存取操作的持续时间段,确定所述直接内存存取操作对应的一个或多个分段子样本;以及判断所述对应的一个或多个分段子样本是否存在所述预设情况。
可选地,所述判断所述对应的一个或多个分段子样本是否存在所述预设情况包括:若所述直接内存存取操作为读操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器对所述直接内存存取操作读取的地址空间进行写操作;或者若所述直接内存存取操作为写操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器对所述直接内存存取操作写入的地址空间进行读操作或写操作。
本发明的另一方面提供了一种处理器安全检测的装置。所述装置包括获取模块、判断模块、以及检测处理模块。所述获取模块用于获取处理器的输入输出记录,所述输入输出记录包括以指令位置为分隔点划分的至少一个检测样本。所述判断模块用于判断所述至少一个检测样本中的第一检测样本是否存在预设情况,所述预设情况为所述处理器与直接内存存取操作对同一地址空间进行读写操作使得操作结果存在不确定性的情况。所述检测处理模块,用于若所述第一检测样本存在所述预设情况,则放弃基于所述第一检测样本的处理器安全检测。
可选地,所述预设情况包括以下任意一种或多种:所述处理器读取所述直接内存存取操作写入的地址空间;所述处理器写入所述直接内存存取操作写入的地址空间;以及所述处理器写入所述直接内存存取操作读取的地址空间。
可选地,所述判断模块包括划分子模块、判断子模块以及确定子模块。所述划分子模块用于分别以内存映射输入输出写操作的指令位置与表示所述直接内存存取操作结束的中断消息的指令位置作为分段点,将所述第一检测样本划分为分段子样本。所述判断子模块用于判断所述第一检测样本的各个分段子样本是否存在所述预设情况。所述确定子模块,用于若所述各个分段子样本中有任何一个分段子样本存在所述预设情况,则确定所述第一检测样本存在所述预设情况。
可选地,所述判断子模块具体用于:根据所述直接内存存取操作的持续时间段,确定所述直接内存存取操作对应的一个或多个分段子样本;以及判断所述对应的一个或多个分段子样本是否存在所述预设情况。
可选地,所述判断所述对应的一个或多个分段子样本是否存在所述预设情况包括:若所述直接内存存取操作为读操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器对所述直接内存存取操作读取的地址空间进行写操作;或者若所述直接内存存取操作为写操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器对所述直接内存存取操作写入的地址空间进行读操作或写操作。
本发明的另一方面还提供了一种处理器安全检测的系统。所述系统包括,包括存储单元,以及耦接至所述存储器的处理单元。所述处理单元被配置为基于存储在所述存储单元中的指令,执行如上所述的处理器安全检测的方法。
本发明的另一方面还提供了一种非易失性存储介质。所述非易失性存储介质存储有计算机可执行指令。所述指令在被执行时用于实现如上所述的处理器安全检测的方法。
附图说明
为了更完整地理解本发明及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本发明实施例的处理器安全检测的方法、装置及系统的应用场景;
图2示意性示出了根据本发明实施例的处理器安全检测的方法流程图;
图3示意性示出了根据本发明实施例的方法中判断第一检测样本是否存在预设情况的流程图;
图4示意性示出了根据发明实施例的方法中将第一检测样本划分为各个分段子样本的示例;
图5示意性示出了根据本发明实施例的方法中判断第一检测样本的各个分段子样本是否存在预设情况的流程图;
图6示意性示出了根据本发明实施例的处理器安全检测的装置的框图;以及
图7示意性示出了适用于实现根据本发明实施例的处理器安全检测的计算机系统的框图。
具体实施方式
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“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)或闪存;和/或有线/无线通信链路。
在本文中,术语解释如下:DMA,全称为Direct Memory Access,即直接内存存取;MMIO,全称为Memory-mapped I/O,即内存映射输入输出。
在基于重放执行的硬件安全检测过程中,根据处理器在目标运行过程的初始运行状态信息设置检测装置的初始运行状态,将处理器在目标运行过程中的输入信息作为检测装置的输入信息。然后,使检测装置以符合预定义行为的方式执行目标运行过程中的任务,得到检测装置的输出信息和/或终止运行状态信息。其中,预定义行为是处理器的硬件行为标准,其中硬件行为标准是指在解析与执行软件指令流的过程中处理器的行为标准。然后,根据输出信息和/或终止运行状态信息判断处理器的硬件安全性。
在对处理器进行安全检测的过程中,可以记录处理器在目标运行过程中的输入输出记录,然后检测装置根据处理器的输入输出记录执行处理器在该目标运行过程中的任务,以检测分析处理器的指令行为,从而确定处理器的硬件安全性。其中,该输入输出记录可以包括处理器在该目标运行过程中与内存或者外设的数据读写操作,还可以包括在该目标运行过程中DMA操作的相关信息(如操作地址、数据、类型等信息)以及各个DMA操作持续的时间段(例如,用与处理器同步的事件来表示DMA操作的起点和终点)。
虽然可以通过与处理器同步的事件来表示DMA操作的起点和终点,但是由于DMA操作异步于处理器的指令流,在输入输出记录中往往无法将DMA操作明确定位到处理器的指令流的特定位置。因此,DMA操作的结果会给基于重放执行的处理器安全检测的结果带来不确定性。例如,当处理器和DMA操作访问同一个地址空间,且处理器访问操作与DMA操作中至少有一个是写操作时,如果无法确知DMA操作和处理器访问操作的先后顺序,就可能造成安全检测过程中检测装置读取到的数据与处理器在目标运行过程中的数据不一致,进而导致安全检测失败。
本发明提供了一种处理器安全检测的方法、装置、系统及介质。所述方法包括:获取处理器的输入输出记录,所述输入输出记录包括以指令位置为分隔点划分的至少一个检测样本;判断所述至少一个检测样本中的第一检测样本是否存在预设情况,所述预设情况为所述处理器与DMA操作对同一地址空间进行读写操作使得操作结果存在不确定性的情况;以及若所述第一检测样本存在所述预设情况,则放弃基于所述第一检测样本的处理器安全检测。
根据本发明的实施例的方法、装置、系统及介质,当检测样本中存在可能由于处理器与DMA操作对同一地址空间进行相应操作而使得操作结果存在不确定性的情况时,放弃该检测样本。以此方式可以剔除处理器的输入输出记录中由于DMA操作带来的不确定性的部分,从而提高基于重放执行的硬件安全检测的结果的可靠性。
图1示意性示出了根据本发明实施例的处理器安全检测的方法、装置及系统的应用场景。需要注意的是,图1所示仅为可以应用本发明实施例的场景的示例,以帮助本领域技术人员理解本发明的技术内容,但这并不意味着本发明实施例不可以用于其他设备、系统、环境或场景。
如图1所示,本发明实施例的应用场景包括输入输出记录装置101、处理器102、外设103、内存104和检测处理器105。输入输出记录装置101设置于处理器102与外设103和/或内存104之间,用于记录处理器102与外设103和/或内存104之间的数据读写操作。应理解的是,输入输出记录装置101逻辑上可以属于检测装置的一部分,与检测处理器105及其它组成部分一起构成检测装置。
由于DMA操作异步于处理器102的指令流,因此在检测装置中的检测处理器105检测分析处理器102的指令行为时,DMA操作的结果会影响到检测结果的可靠性。例如,DMA写操作对内存104的修改可能会影响处理器102对内存104的访问结果,并且由于该DMA写操作的结果无法定位至处理器102的指令位置,就会导致在安全检测时无法有效地检测分析处理器102的指令行为,进而导致检测结果不可信。又例如,DMA读操作从内存104读取的数据可能会受到处理器102访存操作的影响。例如在处理器102写内存104之前或之后执行DMA读操作,处理器102从内存104中读取的数据会有极大概率不同,从而使得基于重放执行的安全检测难以有效判断在目标运行过程中处理器102输出的合理性和安全性。这些不确定性都使得基于重放执行的安全检测,难以根据处理器102在目标运行过程中的输出信息、以及在目标运行过程中终点的内部状态来有效判断处理器102的硬件安全性,从而会导致安全检测失败。
以下举例详细说明DMA操作(例如,DMA读操作和DMA写操作)对安全检测带来的影响:
1)DMA读操作可能引发对处理器102的安全检测失败
由于DMA操作的异步特性,如果“外设103通过DMA操作对内存104中的地址空间A进行读取”和“处理器102对内存104中的地址空间A进行修改,将数据内容由B修改为C”这两个操作执行的相对顺序未知,那么在检测处理器105进行基于重放执行的安全检测时,如果上述两个事件顺序和处理器102原始执行的顺序不一致,就会导致DMA读取的数据不一致(例如:如果处理器102原始执行中DMA读操作先于处理器102的写操作,那么DMA读操作会读取到数据B;如果基于重放执行的安全检测中DMA操作在处理器102写操作之后执行,那么DMA读操作会读取到数据C;外设103通过DMA读操作而读取的数据相对于处理器102来说是处理器102的输出数据。处理器102的输出数据与检测处理器105在目标运行过程中的输出数据不一致时,将会被判定为处理器102不安全。然而,这种情况下直接判定处理器102不安全显然是不合理的。
2)DMA写操作可能引发的处理器102安全检测失败
假设“外设103通过DMA写操作将内存104中地址空间A的数据B修改为C”、以及“处理器102读取内存104中地址空间A的数据后,如果是B则执行程序分支T,如果是C则执行程序分支S”两个事件的先后顺序不同时,会带来处理器102执行轨迹的不同。如果在安全检测过程中无法确知这两个操作的先后顺序,因而导致检测处理器105执行上述两个操作的顺序与处理器102执行的顺序不一致,那么安全检测的结果就会判定为处理器102不安全。然而,这种情况下判定处理器102不安全显然是不合理的。
上面1)和2)介绍了两种由于DMA操作的异步性带来的不确定性问题。在以上1)和2)的示例中,DMA操作与处理器102读写操作在执行时间上有先后,但实际运行中还可能存在DMA操作与处理器102读写操作同时发生的情况。由于DMA操作通常会持续一段时间,因此如果在DMA操作将内存104中的地址空间A中的数据从B修改为C的过程中,处理器102读取了地址空间A中的数据,那么处理器102读取的数据可能既不是B也不是C,而是DMA操作对内存104修改一半的中间值。此外,还有其他类型的不确定性,例如“DMA写操作”和“处理器102写操作”写入内存104的同一地址空间的先后顺序不同,会导致内存104的最终状态的不一致,进而引起安全检测失败。
为了解决由于DMA操作带来诸如以上所举例的检测难题,已有的一种方法是在发生DMA操作时,通过暂停处理器102的执行以执行DMA操作的方式,将DMA操作对齐到处理器102的执行指令流中的特定指令位置,执行对齐操作后DMA操作将会作为一个整体、在两个特定的指令位置之间发生并完成。然而,这种处理方法需要频繁的暂停处理器102的执行,一方面降低了处理器102的性能,另一方面也干扰了程序的正常运行。
根据本发明实施例的处理器安全检测的方法,不再将DMA操作对齐至处理器102的指令流中的特定指令位置,而将输入输出装置101记录得到的处理器102的输入输出操作记录中存在的由于DMA操作带来的不确定性的部分剔除掉。这样,在进行基于重放执行的安全检测时,检测处理器105所依据的处理器102的输入输出操作记录中不包括由于DMA操作带来的不确定性的部分,从而可以在一定程度上保证安全检测的结果的可靠性。同时,还可以减少对处理器102的运行过程的干扰,进而提高了处理器102的运行效率。
以下结合图2~图5详细介绍本发明实施例的处理器安全检测的方法。
图2示意性示出了根据本发明实施例的处理器安全检测的方法流程图。
如图2所示,根据本发明实施例的处理器安全检测的方法包括操作S210~操作S230。
在操作S210,获取处理器102的输入输出记录,所述输入输出记录包括以指令位置为分隔点划分的至少一个检测样本。该输入输出记录可以是输入输出记录装置101记录获得的处理器102在目标运行过程中的输入输出操作信息。根据本发明的一个实施例,输入输出装置101不仅可以记录处理器102在目标运行过程中与内存104和/或外设103的数据读写操作,还可以记录在该目标运行过程中DMA操作的相关信息(如操作地址、数据、类型等信息)以及各个DMA操作持续的时间段(例如,用与处理器102同步的事件来表示DMA操作的起点和终点)。因此,根据本发明的一个实施例,该输入输出记录可以同时包括处理器102与内存104和/或处理器102与外设103的数据读写操作记录、以及相应的DMA操作的信息。
该输入输出操作包括以指令位置为分隔点划分的至少一个检测样本,其中该至少一个检测样本中的一个或多个检测样本可以对应于处理器102的一个目标运行过程。该至少一个检测样本中的每个检测样本的起点处与终点处分别对应记录有处理器的初始运行状态与终止运行状态。该至少一个检测样本中不同检测样本之间以指令位置为分割点,以此方式一个检测样本可以包括一条或者多条完整的指令,并且处理器102的任意一个指令都会整体处于至少一个检测样本中,而不会出现一条指令被分割到多个检测样本的情况。应理解的是,通常情况下,指令位置可以用“检测分析区间内跳转次数”,“指令指针”,“指令重复执行次数”三个信息来表示。例如,对于当前的MMIO读操作指令,下一条指令的指令位置与当前的MMIO读操作指令的指令位置相比,“检测分析区间内跳转次数”与“指令重复执行次数”可以不变。此时,只需要根据当前的MMIO读操作指令的指令长度,就可以计算出下一条指令的“指令指针”,从而获得下一指令的指令位置信息。
在操作S220,判断所述至少一个检测样本中的第一检测样本是否存在预设情况,所述预设情况为处理器102与DMA操作对同一地址空间进行读写操作使得操作结果存在不确定性的情况。应理解的是,该第一检测样本可以是该至少一个检测样本中的任意一个检测样本。
根据本发明的一个实施例,所述预设情况具体包括以下a、b、c三种情况中的任意一种或多种:
a.所述处理器102读取所述DMA操作写入的地址空间;
b.所述处理器102写入所述DMA操作写入的地址空间;
c.所述处理器102写入所述DMA操作读取的地址空间。
在操作S230,若所述第一检测样本存在所述预设情况,则放弃基于所述第一检测样本的处理器安全检测。
根据本发明的实施例,如果发现第一检测样本中存在以上a、b、c中任何一种情况,就放弃基于第一检测样本的安全检测。
具体而言,a情况是指,在第一检测样本中存在内存104中某个特定的地址addr1,该地址addr1至少对应于处理器102读操作和DMA写操作两项记录(例如,检测处理器105在检测分析至处理器102读操作时,如果发现有DMA写操作与处理器102读操作的访问地址相同,则认为存在a情况)。b情况是指,在第一检测样本中存在内存104中某个特定的地址addr2,该地址addr2至少对应于处理器102写操作和DMA写操作两项记录(例如,检测处理器105在检测分析至处理器102写操作时,发现有DMA写操作与处理器102写操作的访问地址相同,则认为存在b情况)。c情况是指,在第一检测样本中存在内存104中某个特定的地址addr3,该地址addr3至少对应于处理器102写操作和DMA读操作两项记录(例如,检测处理器105在检测分析至处理器102写操作时,如果发现有DMA读操作与处理器102写操作的访问地址相同,则认为存在c情况)。根据本发明的实施例,在基于第一检测样本对处理器102进行检测分析的过程中,出现以上a、b、c中任何一种情况就可以放弃基于该第一检测样本的处理器安全检测。
根据本发明的实施例,若第一检测样本中存在有由于DMA操作带来的不确定性的影响时,放弃基于第一检测样本的处理器安全检测,其中,该第一检测样本是记录获得的处理器102在目标运行过程中的至少一个检测样本中的任意一个。这样,可以剔除处理器102的输入输出记录中由于DMA操作带来的不确定性的部分,从而提高基于重放执行的硬件安全检测的结果的可靠性。而且,本发明实施例的方法还可以减少对处理器102的运行过程的干扰,提高了处理器102的运行效率。
图3示意性示出了根据本发明实施例的方法中操作S220判断第一检测样本是否存在预设情况的流程图。
如图3所示,根据本发明的实施例操作S220可以包括操作S221~操作S223。
在操作S221,分别以MMIO写操作的指令位置与表示所述DMA操作结束的中断消息的指令位置作为分段点,将所述第一检测样本划分为分段子样本,例如可以下文参考图4的示意。
图4示意性示出了根据发明实施例的方法中将第一检测样本划分为各个分段子样本的示例。
图4中S-E示例了一个第一检测样本,其中使用M1,M2…表示第一检测样本所包含的MMIO写操作,使用I1,I2…表示第一检测样本中所包含的表示DMA操作完成的中断消息。
根据本发明的一个实施例,在操作S221中可以以M1,M2…、以及I1,I2…为分段点,将第一检测样本S-E划分为多个分段子样本,例如S-M1、M1-M2、M2-I1、I1-I2、I2-E。
表示DMA操作完成的中断消息(例如,I1,I2…中的每一个)可以表示相应的DMA操作的结束。由于通常情况下,处理器102通过MMIO写操作向外设103中的寄存器写入数据以触发DMA操作。因此,MMIO写操作可用于表示DMA操作的开始,进而可依据MMIO写操作的指令位置来划分第一检测样本。以此方式,可以通过与处理器102同步的事件来表示DMA操作的起点和终点。
此后在操作S222,判断所述第一检测样本的各个分段子样本是否存在所述预设情况。根据本发明的一个实施例,操作S222的具体实现可以参考下文图5的描述。
然后在操作S223,若所述各个分段子样本(例如,S-M1、M1-M2、M2-I1、I1-I2、I2-E)中有任何一个分段子样本存在所述预设情况(例如,如上文所举示例中的a、b、c三种情况中的任意一种或者多种),则确定所述第一检测样本存在所述预设情况。
需要说明的是,图4的示例中M1,M2…与I1,I2…中的序号仅为示例,并不表示其间具有对应关系。在本发明实施例的实现过程中,可以不关心各个MMIO写操作、中断消息及DMA操作之间的对应关系。换言之,图4中示意的第一检测样本S-E中,包含有触发两个DMA操作的MMIO写操作的指令位置M1,M2,以及表示两个DMA操作结束的中断消息的指令位置I1,I2,然而M1,M2对应的两个DMA操作与I1,I2对应的两个DMA操作可以具有对应关系、也可以没有对应关系,对此本发明并不限定。例如,I1所对应的DMA操作可以是在第一检测样本S-E的起点S之前就发生的DMA操作,或者I1所对应的DMA操作是M1触发的DMA操作,再或者I1所对应的DMA操作是M2触发的DMA操作。换言之,第一检测样本中的DMA操作可以包括任何一个与第一检测样本S-E有至少一部分重叠的DMA操作,例如包括起点终点都在第一检测样本中的DMA操作、起点在第一检测样本之前终点在第一检测样本中的DMA操作、和/或起点在第一检测样本之前终点在本信息样本之后的DMA操作。
图5示意性示出了根据本发明实施例的方法中操作S222判断第一检测样本的各个分段子样本是否存在预设情况的流程图。
如图5所示,根据本发明实施例操作S222可以包括操作S501和操作S502。
在操作S501,根据所述DMA操作的持续时间段,确定所述DMA操作对应的一个或多个分段子样本。该对应的一个或多个分段子样本,具体为该第一检测样本中与该DMA操作的持续时间段具有重叠部分的一个或多个分段子样本。
在操作S502,判断所述对应的一个或多个分段子样本是否存在所述预设情况。根据本发明的实施例,操作S502具体可以是若所述DMA操作为读操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器102对所述DMA操作读取的地址空间进行写操作;或者,若所述DMA操作为写操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器102对所述DMA操作写入的地址空间进行读操作或写操作。
结合图4对图5的流程进行说明。
例如,假设在操作S501中确定出某一个DMA操作(其操作地址为addr1)覆盖M1-M2和M2-I1两部分,那么M1-M2和M2-I1即为与该DMA操作对应的两个分段子样本。在操作S502中可以分别判断在分段子样本M1-M2和分段子样本M2-I1中处理器102的读写操作地址是否为addr1以及是否存在以举例的a、b、c三种情况中的任意一种或多种。当分段子样本M1-M2和分段子样本M2-I1中任意一个中存在以上a、b、c三种情况中的任意一种或多种时,就放弃该第一检测样本S-E。以此方式,可以在更小的粒度上更准确的判断第一检测样本S-E中是否存在有以上a、b、c中的任一情况,降低第一检测样本S-E的丢弃率。
相反,若不对第一检测样本S-E进行划分,而是整体判断第一检测样本S-E中是否存在有以上a、b、c中的任一情况时,就有可能导致第一检测样本S-E被误丢弃。例如,假设真实的情况是在S-M1部分时处理器102向地址addr1执行了写操作,然后在M1-M2和M2-I1两部分时DMA操作对addr1进行了操作,然而对于第一检测样本S-E整体进行分析的结论会是第一检测样本S-E存在有如上所举例的a、或b、或c的情况,此时会丢弃第一检测样本S-E。然而在这种情况下实际上第一检测样本S-E中并不存在由于处理器102与DMA操作对同一地址空间进行读写操作使得操作结果存在不确定性的情况。这样就会导致对第一检测样本S-E的误丢弃。
由此可见,对第一检测样本进行分段后,可以在每个分段子样本中以更小粒度的区间进行判断,从而可以提高判断的准确度,降低第一检测样本的丢弃率。
图6示意性示出了根据本发明实施例的处理器安全检测的装置600的框图。
如图6所示,该处理器安全检测的装置600包括获取模块610、判断模块620、以及检测处理模块630。该装置600可以用于实现参考图2~图5所描述的处理器安全检测的方法。
所述获取模块610用于获取处理器102的输入输出记录,所述输入输出记录包括以指令位置为分隔点划分的至少一个检测样本(操作S210)。
所述判断模块620用于判断所述至少一个检测样本中的第一检测样本是否存在预设情况,所述预设情况为所述处理器102与DMA操作对同一地址空间进行读写操作使得操作结果存在不确定性的情况(操作S220)。根据本发明的实施例,所述预设情况包括以下a、b、c三种情况中的任意一种或多种:a.所述处理器102读取所述DMA操作写入的地址空间;b.所述处理器写入所述DMA操作写入的地址空间;c.所述处理器102写入所述DMA操作读取的地址空间。
所述检测处理模块630用于若所述第一检测样本存在所述预设情况,则放弃基于所述第一检测样本的处理器安全检测(操作S230)。
根据以上技术方案,本发明实施例可以在一定程度上保证安全检测的结果的可靠性。同时,还可以减少对处理器的运行过程的干扰,进而提高了处理器的运行效率。
根据本发明的一个实施例,所述判断模块620包括划分子模块621、判断子模块622以及确定子模块623。所述划分子模块621用于分别以MMIO写操作的指令位置与表示所述DMA操作结束的中断消息的指令位置作为分段点,将所述第一检测样本划分为分段子样本(操作S221)。所述判断子模块622用于判断所述第一检测样本的各个分段子样本是否存在所述预设情况(操作S222)。所述确定子模块623用于若所述各个分段子样本中有任何一个分段子样本存在所述预设情况,则确定所述第一检测样本存在所述预设情况(操作S223)。
根据本发明的一个实施例,所述判断子模块622具体用于:根据所述DMA操作的持续时间段,确定所述DMA操作对应的一个或多个分段子样本(操作S501),以及判断所述对应的一个或多个分段子样本是否存在所述预设情况(操作S502)。根据本发明的实施例,所述判断所述对应的一个或多个分段子样本是否存在所述预设情况包括:若所述DMA操作为读操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器102对所述DMA操作读取的地址空间进行写操作;或者若所述DMA操作为写操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器102对所述DMA操作写入的地址空间进行读操作或写操作。对第一检测样本进行分段后,可以在每个分段子样本中以更小粒度的区间进行判断,从而可以提高判断的准确度,降低第一检测样本的丢弃率。
根据本发明的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本发明实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本发明实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本发明实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,获取模块610、判断模块620、检测处理模块630、划分子模块621、判断子模块622以及确定子模块623中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,获取模块610、判断模块620、检测处理模块630、划分子模块621、判断子模块622以及确定子模块623中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块610、判断模块620、检测处理模块630、划分子模块621、判断子模块622以及确定子模块623中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图7示意性示出了适用于实现根据本发明实施例的处理器安全检测的计算机系统700的框图。如图7所示,计算机系统700包括处理单元710、计算机可读存储介质720。该计算机系统700可以执行上面参考图2~图5描述的方法,以实现对处理器102进行安全检测。该处理单元710可以是检测处理器105的一个实施例。
具体地,处理单元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、划分子模块621、判断子模块622以及确定子模块623中的至少一个可以实现为参考图7描述的计算机程序模块,其在被处理单元710执行时,可以实现上面描述的相应操作。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本发明实施例的处理器安全检测的方法。
根据本发明的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
本领域技术人员可以理解,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。
尽管已经参照本发明的特定示例性实施例示出并描述了本发明,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本发明的精神和范围的情况下,可以对本发明进行形式和细节上的多种改变。因此,本发明的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

Claims (12)

1.一种处理器安全检测的方法,其特征在于,包括:
获取处理器的输入输出记录,所述输入输出记录包括以指令位置为分隔点划分的至少一个检测样本;
判断所述至少一个检测样本中的第一检测样本是否存在预设情况,所述预设情况为所述处理器与直接内存存取操作对同一地址空间进行读写操作使得操作结果存在不确定性的情况;
若所述第一检测样本存在所述预设情况,则放弃基于所述第一检测样本的处理器安全检测。
2.根据权利要求1所述的方法,其特征在于,所述预设情况包括以下任意一种或多种:
所述处理器读取所述直接内存存取操作写入的地址空间;
所述处理器写入所述直接内存存取操作写入的地址空间;以及
所述处理器写入所述直接内存存取操作读取的地址空间。
3.根据权利要求1所述的方法,其特征在于,所述判断所述至少一个检测样本中的第一检测样本是否存在预设情况,包括:
分别以内存映射输入输出写操作的指令位置与表示所述直接内存存取操作结束的中断消息的指令位置作为分段点,将所述第一检测样本划分为分段子样本;
判断所述第一检测样本的各个分段子样本是否存在所述预设情况;
若所述各个分段子样本中有任何一个分段子样本存在所述预设情况,则确定所述第一检测样本存在所述预设情况。
4.根据权利要求3所述的方法,其特征在于,所述判断所述第一检测样本的各个分段子样本是否存在所述预设情况,包括:
根据所述直接内存存取操作的持续时间段,确定所述直接内存存取操作对应的一个或多个分段子样本;
判断所述对应的一个或多个分段子样本是否存在所述预设情况。
5.根据权利要求4所述的方法,其特征在于,所述判断所述对应的一个或多个分段子样本是否存在所述预设情况,包括:
若所述直接内存存取操作为读操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器对所述直接内存存取操作读取的地址空间进行写操作;
若所述直接内存存取操作为写操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器对所述直接内存存取操作写入的地址空间进行读操作或写操作。
6.一种处理器安全检测的装置,其特征在于,包括:
获取模块,用于获取处理器的输入输出记录,所述输入输出记录包括以指令位置为分隔点划分的至少一个检测样本;
判断模块,用于判断所述至少一个检测样本中的第一检测样本是否存在预设情况,所述预设情况为所述处理器与直接内存存取操作对同一地址空间进行读写操作使得操作结果存在不确定性的情况;
检测处理模块,用于若所述第一检测样本存在所述预设情况,则放弃基于所述第一检测样本的处理器安全检测。
7.根据权利要求6所述的装置,其特征在于,所述预设情况包括以下任意一种或多种:
所述处理器读取所述直接内存存取操作写入的地址空间;
所述处理器写入所述直接内存存取操作写入的地址空间;以及
所述处理器写入所述直接内存存取操作读取的地址空间。
8.根据权利要求6所述的装置,其特征在于,判断模块包括:
划分子模块,用于分别以内存映射输入输出写操作的指令位置与表示所述直接内存存取操作结束的中断消息的指令位置作为分段点,将所述第一检测样本划分为分段子样本;
判断子模块,用于判断所述第一检测样本的各个分段子样本是否存在所述预设情况;
确定子模块,用于若所述各个分段子样本中有任何一个分段子样本存在所述预设情况,则确定所述第一检测样本存在所述预设情况。
9.根据权利要求8所述的装置,其特征在于,所述判断子模块具体用于:
根据所述直接内存存取操作的持续时间段,确定所述直接内存存取操作对应的一个或多个分段子样本;以及
判断所述对应的一个或多个分段子样本是否存在所述预设情况。
10.根据权利要求9所述的装置,其特征在于,所述判断所述对应的一个或多个分段子样本是否存在所述预设情况,包括:
若所述直接内存存取操作为读操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器对所述直接内存存取操作读取的地址空间进行写操作;
若所述直接内存存取操作为写操作,判断在所述对应的一个或多个分段子样本中是否存在所述处理器对所述直接内存存取操作写入的地址空间进行读操作或写操作。
11.一种处理器安全检测的系统,其特征在于,包括:
存储单元;以及
耦接至所述存储器的处理单元,所述处理单元被配置为基于存储在所述存储单元中的指令,执行根据权利要求1~5中任一项所述的处理器安全检测的方法。
12.一种非易失性存储介质,存储有计算机可执行指令,其特征在于,所述指令在被执行时用于实现根据权利要求1~5中任一项所述的处理器安全检测的方法。
CN202110406510.9A 2021-04-15 2021-04-15 处理器安全检测的方法、装置、系统及存储介质 Pending CN113672999A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110406510.9A CN113672999A (zh) 2021-04-15 2021-04-15 处理器安全检测的方法、装置、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110406510.9A CN113672999A (zh) 2021-04-15 2021-04-15 处理器安全检测的方法、装置、系统及存储介质

Publications (1)

Publication Number Publication Date
CN113672999A true CN113672999A (zh) 2021-11-19

Family

ID=78538081

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110406510.9A Pending CN113672999A (zh) 2021-04-15 2021-04-15 处理器安全检测的方法、装置、系统及存储介质

Country Status (1)

Country Link
CN (1) CN113672999A (zh)

Similar Documents

Publication Publication Date Title
US8239838B2 (en) Kernel-aware debugging system, medium, and method
US10423474B2 (en) Performing diagnostic tracing of an executing application to identify suspicious pointer values
JP4732484B2 (ja) 仮想環境を利用した非実行ファイル内のエクスプロイトコード分析方法及び装置
US5845064A (en) Method for testing and verification of a CPU using a reference model
US7926040B2 (en) Method and system for timing code execution in a korn shell script
US9740864B2 (en) System and method for emulation of files using multiple images of the emulator state
JP2002189611A (ja) エミュレーション装置及びその方法
US9734047B2 (en) Method and apparatus for an improved automated test of software with a graphical user interface
US9069894B2 (en) Data collisions in concurrent programs
WO2015073469A1 (en) Functional validation of software
WO2016095091A1 (en) Instrumentation of graphics instructions
US9104801B2 (en) Analyzing concurrent debugging sessions
US10191833B2 (en) Method to efficiently trigger concurrency bugs based on expected frequencies of execution interleavings
US9009671B2 (en) Crash notification between debuggers
CN113672999A (zh) 处理器安全检测的方法、装置、系统及存储介质
CN113612661B (zh) 检验程序稳定性的方法、装置、计算设备及存储介质
US20190156035A1 (en) Adaptive dynamic analysis method, adaptive dynamic analysis platform, and device equipped with the same
CN110727577A (zh) 嵌入式系统软件中概率复现问题的调试方法、系统及介质
US20240007486A1 (en) Signal detection apparatus, vehicle, and method
KR101601414B1 (ko) 실행 후킹과 정보 태깅을 이용하는 런-타임 결함 탐지 방법
US20230308456A1 (en) In-vehicle equipment, vehicle, and method
CN110879783A (zh) 一种程序测试方法、装置、设备及存储介质
JP3068578B2 (ja) インサーキットエミュレータおよび飽和演算処理方法
CN107220537B (zh) 一种程序内存布局信息泄露行为的检测方法
JP2002116926A (ja) プログラム処理装置およびプログラム処理方法

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