数据校验方法、装置、处理器及电子设备与流程

    专利2022-07-08  147


    本发明实施例涉及处理器
    技术领域
    ,尤其涉及一种数据校验方法、装置、处理器及电子设备。
    背景技术
    :在信息时代,计算机系统的安全受到广泛关注。计算机系统主要采用冯·诺依曼体系结构。在该结构中,指令和数据被保存在计算机系统的存储器中,计算机系统的处理器从存储器中读取指令,并将数据通过片外总线缓存到计算机系统的内存中,处理器按照指令通过片外总线从内存中读取、写入数据,并执行指令,实现预期的目标。然而,处理器从内存中读取数据的过程中,内存和片外总线容易遭到攻击。常见的攻击例如包括:主动攻击(攻击者恶意篡改内存中的数据)、欺骗攻击(攻击者使用伪造的数据替换内存的数据)、重定位攻击(攻击者用内存b的数据替换内存a的数据)、重放攻击(攻击者将内存中某一个物理地址的数据记录下来,当处理器对该物理地址的数据进行重写时,攻击者用先前记录的数据替换当前的数据)。由于内存和片外总线容易受到攻击,导致数据被恶意篡改。现有技术中缺乏一种检测数据是否被恶意篡改的方法。技术实现要素:本发明实施例提供一种数据校验方法、装置、处理器及电子设备,以检测从内存中读取的数据是否被恶意篡改。第一方面,本发明实施例提供一种数据校验方法,所述方法应用于处理器,所述处理器包括专用缓存,所述方法包括:向内存发送第一指令;所述第一指令用于从所述内存的目标物理地址中读取目标数据;接收所述内存发送的所述目标数据;根据所述目标物理地址,从所述专用缓存中获取上一次写入所述目标物理地址的数据的备份数据;若所述目标数据与所述备份数据不同,则确定所述目标数据的完整性检验失败。可选地,所述根据所述目标物理地址,从所述专用缓存中获取上一次写入所述目标物理地址的数据的备份数据之后,还包括:若所述目标数据与所述备份数据相同,则确定所述目标数据的完整性检验通过。可选地,所述根据所述目标物理地址从所述专用缓存中获取上一次写入所述目标物理地址的数据的备份数据之前,还包括:确定所述目标数据为关键数据。可选地,所述确定所述目标数据为关键数据,具体包括:根据所述第一指令的类型,确定所述目标数据为关键数据。可选地,所述第一指令的类型,与源程序中所述目标数据的声明的标识对应,所述声明的标识用于表征所述目标数据是否为关键数据。可选地,所述向内存发送第一指令之前,所述方法还包括:向内存发送第二指令;所述第二指令用于将所述目标数据写入到所述内存的所述目标物理地址中;将所述目标数据的备份数据写入到所述专用缓存中。可选地,所述将所述目标数据的备份数据写入到所述专用缓存中之前,还包括:确定所述目标数据为关键数据。可选地,所述确定所述目标数据为关键数据,具体包括:根据所述第二指令的类型,确定所述目标数据为关键数据。可选地,所述第二指令的类型,与源程序中所述目标数据的声明的标识对应,所述声明的标识用于表征所述目标数据是否为关键数据。可选地,所述专用缓存包括多个数据块,所述将所述目标数据的备份数据写入到所述专用缓存中,具体包括:根据所述目标物理地址,判断所述多个数据块中是否存在所述目标物理地址对应的第一数据块,所述第一数据块的标记包括:所述目标物理地址和所述第一数据块的地址的映射关系;若所述多个数据块中包括所述第一数据块,则将所述备份数据写入到所述第一数据块中,并将所述第一数据块对应的状态位置位;若所述多个数据块中不包括所述第一数据块,则将所述备份数据写入到第二数据块中,并在所述第二数据块的标记中增加所述目标物理地址和所述第二数据块的地址的映射关系,以及,将所述第二数据块对应的状态位置位,所述第二数据块为所述多个数据块中未对应任何物理地址的数据块。可选地,所述根据所述目标物理地址,从所述缓存中获取上一次写入所述目标物理地址的数据的备份数据,具体包括:根据所述目标物理地址确定所述第一数据块;获取所述第一数据块对应的状态位;若所述第一数据块的状态位置位,则从所述第一数据块中获取所述备份数据。第二方面,本发明实施例提供一种数据校验装置,所述装置应用于处理器,所述处理器包括专用缓存,所述装置包括:发送模块,用于向内存发送第一指令;所述第一指令用于从所述内存的目标物理地址中读取目标数据;接收模块,用于接收所述内存发送的所述目标数据;处理模块,用于根据所述目标物理地址,从所述专用缓存中获取上一次写入所述目标物理地址的数据的备份数据;当所述目标数据与所述备份数据不同时,确定所述目标数据的完整性检验失败。可选地,所述处理模块,还用于在根据所述目标物理地址,从所述专用缓存中获取上一次写入所述目标物理地址的数据的备份数据之后,当所述目标数据与所述备份数据相同时,确定所述目标数据的完整性检验通过。可选地,所述处理模块,还用于在所述根据所述目标物理地址从所述专用缓存中获取上一次写入所述目标物理地址的数据的备份数据之前,确定所述目标数据为关键数据。可选地,所述处理模块,具体用于根据所述第一指令的类型,确定所述目标数据为关键数据。可选地,所述第一指令的类型,与源程序中所述目标数据的声明的标识对应,所述声明的标识用于表征所述目标数据是否为关键数据。可选地,所述发送模块,还用于在所述向内存发送第一指令之前,向内存发送第二指令;所述第二指令用于将所述目标数据写入到所述内存的所述目标物理地址中;所述处理模块,还用于将所述目标数据的备份数据写入到所述专用缓存中。可选地,所述处理模块,还用于在所述将所述目标数据的备份数据写入到所述专用缓存中之前,确定所述目标数据为关键数据。可选地,所述处理模块,具体用于根据所述第二指令的类型,确定所述目标数据为关键数据。可选地,所述第二指令的类型,与源程序中所述目标数据的声明的标识对应,所述声明的标识用于表征所述目标数据是否为关键数据。可选地,所述专用缓存包括多个数据块;所述处理模块,具体用于根据所述目标物理地址,判断所述多个数据块中是否存在所述目标物理地址对应的第一数据块;当所述多个数据块中包括所述第一数据块时,将所述备份数据写入到所述第一数据块中,并将所述第一数据块对应的状态位置位;当所述多个数据块中不包括所述第一数据块时,将所述备份数据写入到第二数据块中,并在所述第二数据块的标记中增加所述目标物理地址和所述第二数据块的地址的映射关系,以及,将所述第二数据块对应的状态位置位;其中,所述第二数据块为所述多个数据块中未对应任何物理地址的数据块;所述第一数据块的标记包括:所述目标物理地址和所述第一数据块的地址的映射关系。可选地,所述处理模块,具体用于根据所述目标物理地址确定所述第一数据块;获取所述第一数据块对应的状态位;当所述第一数据块的状态位置位时,从所述第一数据块中获取所述备份数据。第三方面,本发明实施例还提供一种处理器,所述处理器用于执行第一方面任一项所述的方法。第四方面,本发明实施例还提供一种电子设备,所述电子设备包括第三方面所述的处理器。本发明实施例提供的数据校验方法、装置、处理器及电子设备,该方法当处理器从内存的目标物理地址读取到数据时,可以将该目标数据,和从处理器专用缓存中获取的上一次写入所述目标物理地址的数据的备份数据进行对比,当不一致时,说明从内存读取的目标数据已经被篡改,数据安全受到威胁。本发明实施例提供的数据校验方法,能够准确检测数据是否被恶意篡改。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是基于冯·诺依曼体系结构的计算机系统的结构示意图;图2是本发明实施例提供的一种数据校验方法的流程示意图;图3是本发明实施例提供的另一种数据校验方法的流程示意图;图4是本发明实施例提供的又一种数据校验方法的流程示意图;图5是本发明实施例提供的再一种数据校验方法的流程示意图;图6是本发明实施例提供的一种处理器的专用缓存的结构示意图;图7是本发明实施例提供的一种处理器的结构示意图;图8是本发明实施例提供的再一种数据校验方法的流程示意图;图9是本发明实施例提供的一种数据校验装置的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1是基于冯·诺依曼体系结构的计算机系统的结构示意图,如图1所示,该计算机系统包括处理器11、内存12、片外总线13和存储器14,处理器11和内存12、存储器14均通过片外总线13连接。计算机程序的指令和数据保存在存储器14中,当处理器11需要执行计算程序时,处理器11从存储器14中读取计算机程序。在程序执行过程中,处理器11按照计算机程序的指令通过片外总线13与内存12交互,进行数据的读取和写入。示例性的,当处理器11执行写入指令时,处理器11向内存12发送写入指令,内存12根据写入指令中的物理地址x将数据a写入到内存12中对应的物理地址x中。当处理器11执行读取指令时,处理器11向内存12发送读取指令,内存12根据读取指令从内存12的物理地址x中读取数据a。如上述内容所说,处理器是通过指令从内存中读取和写入数据的,以精简指令集为例,读取数据和写入数据的指令结构如表1所示:表1操作码源操作数目标操作数其中,操作码用来指示指令的类型。示例性的,以读指令为例,操作码用来指示该指令为读指令,若源操作数指向rt寄存器,目标操作数指向rs寄存器,则该读指令的含义为将rs寄存器中的值作为物理地址,将内存中的该物理地址中的数据,读入到rt寄存器中。然而,处理器11从内存12中读取数据的过程中,内存12和片外总线13容易遭到攻击。常见的攻击例如包括:主动攻击(攻击者恶意篡改内存中的数据)、欺骗攻击(攻击者使用伪造的数据替换内存的数据)、重定位攻击(攻击者用内存b的数据替换内存a的数据)、重放攻击(攻击者将内存中某一个物理地址的数据记录下来,当处理器对该物理地址的数据进行重写时,攻击者用先前记录的数据替换当前的数据)。示例性的,这些攻击使得内存12中物理地址x中的数据a被篡改为数据b。此时处理器11向内存12发送读取指令,要求读取内存12中物理地址x的数据时,就会读到错误的数据b,导致数据安全受到威胁。为了解决上述技术问题,本发明对处理器现有的读取流程进行了修改,通过在处理器中设置一个专门用于备份往内存中存储的数据的专用缓存,从而使处理器在从内存读取数据时,能够基于专用缓存中的备份数据,对从内存所读取的数据进行完整性校验,以甄别所读取的数据是否被恶意篡改。也就是说,本发明所涉及的处理器包括一个专用缓存,该专用缓存用于存储往内存中存储的数据的备份数据,其可以为位于处理器中的特定区域。本发明所提供的数据校验方法的执行主体可以为数据校验装置,该数据校验装置可以为程序代码软件,也可以为存储有相关执行代码的介质,例如,u盘等;或者,该数据校验装置还可以为集成或安装有相关执行代码的实体装置,该实体装置可以设置在处理器中,或者,可以为处理器。下面结合图1所示的计算机结构,以集成或安装有相关执行代码的处理器为例,以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。图2是本发明实施例提供的一种数据校验方法的流程示意图。如图2所示,本发明该方法可以包括:s101、向内存发送第一指令。其中,第一指令用于从内存的目标物理地址中读取目标数据。目标数据为第一指令要读取的数据,目标物理地址为目标数据存储在内存中的地址。例如,第一指令可以为如表1所示的指令。示例性的,第一指令用于从内存的目标物理地址y中读取目标数据a。s102、接收内存发送的目标数据。示例性的,内存根据第一指令中的目标物理地址y找到目标数据a,并将目标数据a发送给处理器,处理器接收由内存发送的目标数据a。s103、根据目标物理地址,从专用缓存中获取上一次写入目标物理地址的数据的备份数据。本发明实施例中,专用缓存中预先缓存了上一次写入目标物理地址的数据的备份数据,该备份数据在专用缓存中的地址与目标物理地址可以存在映射关系,使处理器可以根据目标物理地址找到目标数据在专用缓存的地址,进而获取该备份数据。示例性的,根据目标物理地址y,从专用缓存中获取上一次写入目标物理地址的数据的备份数据b。在上述步骤中,可以先执行步骤s101~s102,再执行步骤s103,也可以先执行步骤s103,再执行步骤s101~s102,也可以在执行s101~s102的同时,执行步骤s103。s104、判断目标数据,与备份数据是否相同,若否,则执行步骤s105;若是,则执行步骤s106。若从内存读取的目标数据a,与该备份数据b不同,说明从内存读取的目标数据a已经被篡改,此时执行步骤s105。若从内存读取的目标数据a,与该备份数据b相同,说明从内存读取的目标数据a没有被篡改,此时执行步骤s106。s105、确定目标数据的完整性检验失败。处理器确定从内存读取的目标数据被恶意篡改,此时可以认定为完整性校验失败,可以按照完整性校验不通过的例外进行下一步处理。例如,当上述第一指令属于某程序的某一指令时,例如可以终止当前程序的进程。s106、确定目标数据的完整性检验通过。处理器确定从内存读取的目标数据没有被恶意篡改,可以继续执行第一指令,例如将目标数据写入到对应的寄存器中。本发明实施例中,处理器将上一次写入目标物理地址的数据的备份数据预先缓存到处理器的专用缓存中,当处理器向内存发送第一指令并接收内存发送的目标数据时,通过将从内存中获取的目标数据,和从专用缓存中获取的该备份数据进行对比,当不一致时,说明从内存读取的目标数据b已经被篡改,数据安全受到威胁。本发明实施例提供的数据校验方法,能够准确检测数据是否被恶意篡改。图3是本发明实施例提供的另一种数据校验方法的流程示意图。本实施例着重介绍上一次写入目标物理地址的数据的备份数据如何预先保存在专用缓存中。在图2的基础上,如图3所示,在步骤s101之前,本发明该方法还可以包括:s201、向内存发送第二指令;第二指令用于将目标数据写入到内存的目标物理地址中。示例性的,处理器将第二指令发送给内存,内存根据第二指令中的目标物理地址y和目标数据b,将目标数据b写入到目标物理地址y中。向内存发送的第二指令,该步骤可以是在程序初始化阶段向内存发送的第二指令,也可以是在程序运行阶段向内存发送的第二指令。s202、将目标数据的备份数据写入到专用缓存中。在上述步骤中,可以先执行步骤s201,再执行步骤s202,也可以先执行步骤s202,再执行步骤s201,也可以同时执行步骤s201和步骤s202。应理解,在步骤s101之前,可以执行至少一次第二指令。当第二指令被执行两次及两次以上时,处理器在内存的目标物理地址y中写入的目标数据可以不同,且每次写入将覆盖上一次的目标数据,专用缓存中目标数据的备份数据也会同步覆盖。本实施例在步骤s101之前,在程序初始化阶段和/或程序运行阶段执行第二指令,在将目标数据写入内存的同时,将目标数据的备份数据同时写入到专用缓存中,以便于在执行例如上述第一指令的读操作时,处理器将从内存读取的目标数据和上一次写入目标物理地址的数据的备份数据进行对比,准确检测数据是否被恶意篡改。本发明实施例还提供一种数据校验方法,当目标数据为关键数据时,对该关键数据进行数据校验,当目标数据为非关键数据时,对非关键数据采用现有读取的方式进行处理,不进行数据校验。图4和图5将着重介绍如何实现关键数据的数据校验。图4是本发明实施例提供的又一种数据校验方法的流程示意图。如图4所示,在图2的基础上,在步骤s103之前,本发明该方法还可以包括:s301、判断目标数据是否为关键数据,若是,则执行上述步骤s101;若否,则按照现有的读取指令继续执行。即:不校验非关键数据,例如将非关键数据写入到对应的寄存器中。关键数据可以是程序运行过程中的重要数据,例如敏感数据、账户密码、密钥等。判断目标数据是否为关键数据的方法,一种可能的实现方式,根据第一指令的类型,确定目标数据为关键数据。其中,第一指令的类型,与源程序中目标数据的声明的标识对应,声明的标识用于表征目标数据是否为关键数据。示例性的,例如变量key为关键数据,变量temp为非关键数据,在源程序中可以定义新的变量声明来指示该变量为关键数据。例如:通过如下方式声明来表示key为关键数据、temp为非关键数据:securitydoublekey;doubletemp;其中,securitydouble为关键数据的变量声明,double为非关键数据的变量声明。示例性的,以精简指令集为例进行说明,第一指令的类型通过操作码来标识,本发明可以在现有操作码的基础上扩展操作码。扩展的操作码用来指示所读取的目标数据是关键数据(扩展的操作码还可以指示所写入的目标数据是关键数据),该扩展的操作码可以隐式的指示读取该目标数据时执行上述的数据校验方法。可选地,扩展的操作码还可以指示该第一指令所需读取的数据的字节数。示例性的,扩展的操作码例如可以如表2所示。表2扩展的操作码含义k1读取1个字节关键数据k2读取2个字节关键数据k3读取4个字节关键数据k4读取8个字节关键数据k5写入1个字节关键数据k6写入2个字节关键数据k7写入4个字节关键数据k8写入8个字节关键数据判断目标数据是否为关键数据的方法,另一种可能的实现方式,根据第一指令变长位,确定目标数据为关键数据。示例性的,以精简指令集为例进行说明,例如可以设置操作码为1111时,指令结构还包括变长位,如表3所示:表3操作码源操作数目标操作数变长位在本示例中,可以通过变长位来标记目标数据是否为关键数据,可选地,该变长位还可以指示该第一指令所需读取的数据的字节数。例如,可以通过为该变长位设定不同的取值,来标记该第一指令所读取的目标数据是否为关键数据,以及指示第一指令所需读取的数据的字节数,类似于表2所示的扩展的操作码,以及,各扩展的操作码所对应的含义,此处不再赘述。判断目标数据是否为关键数据的方法,再一种可能的实现方式,根据目标物理地址,确定目标数据为关键数据。示例性的,可以将存储在特定物理地址范围内的数据确定为关键数据。本领域技术人员可以理解,源程序进行编译后,源程序中对于包括变量key的指令,基于该变量声明securitydouble,编译得到的处理器的指令为处理关键数据的第一指令。源程序中对于包括变量temp的指令,编译得到的处理器的指令为处理非关键数据的指令,非关键数据例如非敏感数据、非账户密码、非密钥等。本领域技术人员可以理解,上述实施例是以精简指令集为例进行说明的,对于采用其他指令集的处理器,同样可以采用本发明的方式,本实施例不再赘述。本实施例通过在向内存发送第一指令之前,判断目标数据是否为关键数据,当目标数据为关键数据时,对关键数据进行数据校验,以校验关键数据是否被篡改;当目标数据为非关键数据时,采用现有读取的方式进行处理,不进行数据校验。本实施例该方法可以只对关键数据执行数据校验,处理器的性能损失和功耗开销小。对应图4的方法,图5是本发明实施例提供的再一种数据校验方法的流程示意图。如图5所示,在图3的基础上,在步骤s201之前,本发明该方法还可以包括:s401、判断目标数据是否为关键数据,若是,则执行上述步骤s201;若否,则按照标准的写入指令继续执行。即:不校验非关键数据,直接将目标数据写入到内存的目标物理地址中。确定目标数据为关键数据,一种可能的实现方式,根据第二指令的类型,确定目标数据为关键数据。另一种可能的实现方式,根据第二指令的变长位,确定目标数据为关键数据。再一种可能的实现方式,根据目标物理地址,确定目标数据为关键数据。第二指令的类型,与源程序中目标数据的声明的标识对应,声明的标识用于表征目标数据是否为关键数据。本实施例具体可以参照图4所示的实施例,此处不再赘述。本实施例通过在向内存发送第二指令之前,判断目标数据是否为关键数据,当目标数据为关键数据时,缓存关键数据以便于下次进行数据校验,以校验关键数据是否被篡改;当目标数据为非关键数据时,采用现有写入的方式进行处理,不缓存非关键数据。本实施例该方法可以只对关键数据执行数据校验,处理器的性能损失和功耗开销小。在上述实施例中,专用缓存包括多个数据块,示例性的,图6是本发明实施例提供的一种处理器的专用缓存的结构示意图。如图6所示,专用缓存包括q组,每组包括r个数据块,每个数据块还对应标记和状态位,q为大于或等于1的整数,r为大于或等于1的整数。其中,当标记不为空时,标记用于指示物理地址和数据块的映射关系,该映射关系用于表征该数据块中缓存了与内存中该物理地址对应的数据。当不存在标记时,说明该数据块未与任何物理地址映射。状态位用于指示该数据块是否已经保存了数据。在图6的基础上,本实施例着重介绍如何从专用缓存中写入目标数据。该方法具体可以包括:根据目标物理地址,判断多个数据块中是否存在目标物理地址对应的第一数据块,第一数据块的标记包括:目标物理地址和第一数据块的地址的映射关系;若多个数据块中包括第一数据块,则将备份数据写入到第一数据块中,并将第一数据块对应的状态位置位;若多个数据块中不包括第一数据块,则将备份数据写入到第二数据块中,并在第二数据块的标记中增加目标物理地址和第二数据块的地址的映射关系,以及,将第二数据块对应的状态位置位,第二数据块为多个数据块中未对应任何物理地址的数据块。由于状态位用来指示该数据块是否已经保存了数据,通过检查状态位可以快速识别数据块中是否包括目标数据的备份数据。示例性的,可以根据标记中物理地址和数据块地址的映射关系,当存在某一标记内的物理地址与目标物理地址相同时,说明包括第一数据块,此时将目标数据的备份数据写入到第一数据块中,并将第一数据块对应的状态位置位。当不存在某一标记内的物理地址与目标物理地址相同时,说明不存在第一数据块,此时可以在该组数据块中查找状态位为0的数据块(例如按照从第一块到最后一块的顺序查找)。当查到状态位为0的数据块时,在标记中增加目标物理地址和该数据块地址的映射关系,将目标数据的备份数据写入到该数据块中,并将目标数据块对应的状态位置位。此时,该数据块即为第二数据块。如果没有查到状态位为0的数据块,可以不做处理直接返回,即不在专用缓存中保存目标数据的备份数据,也可以用该备份数据覆盖其他缓存的数据块,例如,可以用该备份数据覆盖缓存时长大于预设时长的数据块。在图6的基础上,本实施例着重介绍如何从专用缓存中读取目标数据。该方法具体可以包括:根据目标物理地址确定第一数据块,例如可以根据标记中物理地址和数据块地址的映射关系,获取第一数据块。获取第一数据块对应的状态位。判断第一数据块的状态位是否置位,若是,说明专用缓存中包括目标数据的备份数据,则从第一数据块中获取目标数据的备份数据。可选地,若否,说明专用缓存中不包括目标数据的备份数据,此时可以继续执行第一指令,例如将目标数据写入到对应的寄存器中。或者,可以按照完整性校验不通过的例外进行下一步处理。在图6所示的专用缓存的结构中,还可以包括状态位寄存器和数据寄存器。在根据目标物理地址获取目标数据块(第一数据块)之后,具体可以将目标数据块中的状态位写入到状态位寄存器中,将目标数据的备份数据写入到数据寄存器中。在获取目标数据块的状态位时,处理器可以从状态位寄存器中获取目标数据块的状态位,处理器具体可以从数据寄存器中获取上一次写入目标物理地址的数据的备份数据。本实施例在采用图6所示的专用缓存时,可以配合上述方法,在执行写入指令(第二指令)时,将目标数据的备份数据保存在专用缓存中。在执行读取指令(第一指令)时,将从内存读取的数据与专用缓存中的备份数据进行对比,进而实现数据是否被恶意篡改的校验。为了更好的理解本发明的技术方案,下面通过一个示例对本发明提供的方法进行说明:在下述示例中,专用缓存如图6所示包括q组,每组包括r个数据块,每个数据块还对应标记和状态位,还包括状态位寄存器和数据寄存器。图7是本发明实施例提供的一种处理器的结构示意图,如图7所示,该处理器可以包括处理器核心111、数据校验模块112和访存模块113,数据校验模块112中包括专用缓存。首先,在源程序中,为了区分关键数据和非关键数据,例如可以通过定义新的变量声明“securitydouble”来定义一个两字节的关键数据,非关键数据采用现有的变量声明,例如:securitydoublekey;doubletemp;key为关键数据,temp为非关键数据。源程序在经过编译器编译后,对非关键数据temp的读取和写入,采用访存指令load/store来处理变量temp。该方法采用现有的方式执行读取和写入即可,不需要对非关键数据temp进行校验,temp也无需保存到缓存中,此处不再赘述。对于关键数据key的读取和写入,采用新增的访存指令(例如sload/sstore)来处理变量key,通过新增的访存指令,可以在执行写入指令时将数据备份在专用缓存中,并在执行读取指令时将读取的数据和专用缓存中的数据对比,以校验数据是否被恶意篡改。其中sload指令即为上述第一指令,sstore指令即为上述第二指令。由于key为两字节,示例性的,sload的操作码可以为表2中的k2,sstore的操作码可以为表2中的k6。下面着重介绍对关键数据key的sload和sstore。图8是本发明实施例提供的再一种数据校验方法的流程示意图,如图8所示:在程序初始化阶段,或者程序运行阶段,处理器需要将关键数据key写入到内存中,流程如下:①处理器核心111向数据校验模块112发送指令:sstorert,rs。(本领域技术人员可以理解,在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的物理地址),rt寄存器中的物理地址为p,rs寄存器中数据为key。该指令指示将rs寄存器中的数据key写入到内存中的物理地址p中,且操作码类型为k6。②数据校验模块112根据该指令的操作码(k6),确定该指令是对关键数据的写入操作。此时,将rs寄存器中的数据key的备份数据写入到专用缓存的数据块中。③数据校验模块112向访存模块113发送指令:sstorert,rs。④访存模块113通过外部总线将rs寄存器中的数据key写入到内存中的物理地址p中。在另一个程序运行阶段,处理器需要将从内存中读取关键数据key,流程如下:⑤处理器核心111向数据校验模块112发送指令:sloadrt,rs,rs寄存器中物理地址为p,rt寄存器用于存放从内存中读取的数据key。⑥数据校验模块112根据该指令的操作码k2(参阅表2所示),确定该指令是对关键数据的读取操作。此时,根据物理地址p从专用缓存中找到存放数据key的备份数据的数据块,并将该备份数据的状态位写入到状态位寄存器,将该备份数据写入到数据寄存器中。⑦数据校验模块112向访存模块113发送指令:sloadrt,rs。⑧访存模块113通过外部总线从内存中读取物理地址p中的数据key,并向数据校验模块112发送从内存中读到的数据key。⑨数据校验模块112判断从内存中读到的数据key和数据key的备份数据是否相等。若是,说明校验成功,此时数据校验模块112向处理器核心111发送从内存中读到的数据key,以便于处理器核心111将从内存中读到的数据key存放rt到寄存器中。若否,则说明校验失败,此时数据校验模块112向处理器核心111发送完整性校验不通过的例外。处理器核心111根据该完整性校验不通过的例外,基于预先设计的规则,例如终止当前程序的进程。可选地,在步骤⑨之前,数据校验模块112可以首先判断状态位寄存器是否置位,若否,则直接向处理器核心111发送从内存中读到的数据key,以便于处理器核心111将从内存中读到的数据key存放rt到寄存器中。若是,则继续执行性步骤⑨。本发明实施例通过上述方法,一方面能够准确检测关键数据是否被恶意篡改;另一方面仅对关键数据进行数据校验,处理器的性能损失和功耗开销小。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。图9是本发明实施例提供的一种数据校验装置的结构示意图,该装置应用于处理器,如图9所示,该装置包括:发送模块21、接收模块22、处理模块23。其中,发送模块21,用于向内存发送第一指令;第一指令用于从内存的目标物理地址中读取目标数据;接收模块22,用于接收内存发送的目标数据;处理模块23,用于根据目标物理地址,从专用缓存中获取上一次写入目标物理地址的数据的备份数据;当目标数据与备份数据不同时,确定目标数据的完整性检验失败。可选地,在一些实施例中,处理模块23,还用于在根据目标物理地址,从专用缓存中获取上一次写入目标物理地址的数据的备份数据之后,当目标数据与备份数据相同时,确定目标数据的完整性检验通过。可选地,在一些实施例中,处理模块23,还用于在根据目标物理地址从专用缓存中获取上一次写入目标物理地址的数据的备份数据之前,确定目标数据为关键数据。可选地,在一些实施例中,处理模块23,具体用于根据第一指令的类型,确定目标数据为关键数据。可选地,在一些实施例中,第一指令的类型,与源程序中目标数据的声明的标识对应,声明的标识用于表征目标数据是否为关键数据。可选地,在一些实施例中,发送模块21,还用于在向内存发送第一指令之前,向内存发送第二指令;第二指令用于将目标数据写入到内存的目标物理地址中;处理模块23,还用于将目标数据的备份数据写入到专用缓存中。可选地,在一些实施例中,处理模块23,还用于在将目标数据的备份数据写入到专用缓存中之前,确定目标数据为关键数据。可选地,在一些实施例中,处理模块23,具体用于根据第二指令的类型,确定目标数据为关键数据。可选地,在一些实施例中,第二指令的类型,与源程序中目标数据的声明的标识对应,声明的标识用于表征目标数据是否为关键数据。可选地,在一些实施例中,专用缓存包括多个数据块;处理模块23,具体用于根据目标物理地址,判断多个数据块中是否存在目标物理地址对应的第一数据块;当多个数据块中包括第一数据块时,将备份数据写入到第一数据块中,并将第一数据块对应的状态位置位;当多个数据块中不包括第一数据块时,将备份数据写入到第二数据块中,并在第二数据块的标记中增加目标物理地址和第二数据块的地址的映射关系,以及,将第二数据块对应的状态位置位;其中,第二数据块为多个数据块中未对应任何物理地址的数据块;第一数据块的标记包括:目标物理地址和第一数据块的地址的映射关系。可选地,在一些实施例中,处理模块23,具体用于根据目标物理地址确定第一数据块;获取第一数据块对应的状态位;当第一数据块的状态位置位时,从第一数据块中获取备份数据。本发明图9所示的实施例提供的数据校验装置,可以执行上述方法实施例中处理器的动作。例如,该数据校验装置可以是处理器本身,也可以是设置在处理器中的数据校验装置。本发明实施例还提供一种处理器,该处理器可以用于执行上述提供的任一项数据校验方法。本发明实施例还提供一种电子设备,电子设备包括上述处理器。该电子设备例如可以是终端设备、服务器等。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页1 2 3 
    技术特征:

    1.一种数据校验方法,其特征在于,所述方法应用于处理器,所述处理器包括专用缓存,所述方法包括:

    向内存发送第一指令;所述第一指令用于从所述内存的目标物理地址中读取目标数据;

    接收所述内存发送的所述目标数据;

    根据所述目标物理地址,从所述专用缓存中获取上一次写入所述目标物理地址的数据的备份数据;

    若所述目标数据与所述备份数据不同,则确定所述目标数据的完整性检验失败。

    2.根据权利要求1所述的方法,其特征在于,所述根据所述目标物理地址,从所述专用缓存中获取上一次写入所述目标物理地址的数据的备份数据之后,还包括:

    若所述目标数据与所述备份数据相同,则确定所述目标数据的完整性检验通过。

    3.根据权利要求1所述的方法,其特征在于,所述根据所述目标物理地址从所述专用缓存中获取上一次写入所述目标物理地址的数据的备份数据之前,还包括:

    确定所述目标数据为关键数据。

    4.根据权利要求3所述的方法,其特征在于,所述确定所述目标数据为关键数据,具体包括:

    根据所述第一指令的类型,确定所述目标数据为关键数据。

    5.根据权利要求4所述的方法,其特征在于,所述第一指令的类型,与源程序中所述目标数据的声明的标识对应,所述声明的标识用于表征所述目标数据是否为关键数据。

    6.根据权利要求1-5任一项所述的方法,其特征在于,所述向内存发送第一指令之前,所述方法还包括:

    向内存发送第二指令;所述第二指令用于将所述目标数据写入到所述内存的所述目标物理地址中;

    将所述目标数据的备份数据写入到所述专用缓存中。

    7.根据权利要求6所述的方法,其特征在于,所述将所述目标数据的备份数据写入到所述专用缓存中之前,还包括:

    确定所述目标数据为关键数据。

    8.根据权利要求7所述的方法,其特征在于,所述确定所述目标数据为关键数据,具体包括:

    根据所述第二指令的类型,确定所述目标数据为关键数据。

    9.根据权利要求8所述的方法,其特征在于,所述第二指令的类型,与源程序中所述目标数据的声明的标识对应,所述声明的标识用于表征所述目标数据是否为关键数据。

    10.根据权利要求6所述的方法,其特征在于,所述专用缓存包括多个数据块,所述将所述目标数据的备份数据写入到所述专用缓存中,具体包括:

    根据所述目标物理地址,判断所述多个数据块中是否存在所述目标物理地址对应的第一数据块,所述第一数据块的标记包括:所述目标物理地址和所述第一数据块的地址的映射关系;

    若所述多个数据块中包括所述第一数据块,则将所述备份数据写入到所述第一数据块中,并将所述第一数据块对应的状态位置位;

    若所述多个数据块中不包括所述第一数据块,则将所述备份数据写入到第二数据块中,并在所述第二数据块的标记中增加所述目标物理地址和所述第二数据块的地址的映射关系,以及,将所述第二数据块对应的状态位置位,所述第二数据块为所述多个数据块中未对应任何物理地址的数据块。

    11.根据权利要求10所述的方法,其特征在于,所述根据所述目标物理地址,从所述专用缓存中获取上一次写入所述目标物理地址的数据的备份数据,具体包括:

    根据所述目标物理地址确定所述第一数据块;

    获取所述第一数据块对应的状态位;

    若所述第一数据块的状态位置位,则从所述第一数据块中获取所述备份数据。

    12.一种数据校验装置,其特征在于,所述装置应用于处理器,所述处理器包括专用缓存,所述装置包括:

    发送模块,用于向内存发送第一指令;所述第一指令用于从所述内存的目标物理地址中读取目标数据;

    接收模块,用于接收所述内存发送的所述目标数据;

    处理模块,用于根据所述目标物理地址,从所述专用缓存中获取上一次写入所述目标物理地址的数据的备份数据;当所述目标数据与所述备份数据不同时,确定所述目标数据的完整性检验失败。

    13.一种处理器,其特征在于,所述处理器用于执行权利要求1-11任一项所述的方法。

    14.一种电子设备,其特征在于,所述电子设备包括权利要求13所述的处理器。

    技术总结
    本发明实施例提供了一种数据校验方法、装置、处理器及电子设备,该方法由处理器向内存发送第一指令;第一指令用于从内存的目标物理地址中读取目标数据。接收内存发送的目标数据;根据目标物理地址,从处理器的专用缓存中获取上一次写入目标物理地址的数据的备份数据;若目标数据与该备份数据不同,则确定目标数据的完整性检验失败。本发明实施例提供的数据校验方法、装置、处理器及电子设备,能够准确检测从内存读取的数据是否被恶意篡改。

    技术研发人员:高翔;李亚伟;汪文祥
    受保护的技术使用者:龙芯中科技术股份有限公司
    技术研发日:2020.11.25
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22828.html

    最新回复(0)