CN112597488B - 页表完整性保护方法、装置和设备 - Google Patents
页表完整性保护方法、装置和设备 Download PDFInfo
- Publication number
- CN112597488B CN112597488B CN202011622330.6A CN202011622330A CN112597488B CN 112597488 B CN112597488 B CN 112597488B CN 202011622330 A CN202011622330 A CN 202011622330A CN 112597488 B CN112597488 B CN 112597488B
- Authority
- CN
- China
- Prior art keywords
- node
- target
- data item
- counter
- local counter
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供了一种页表完整性保护方法、装置及设备,所述方法包括:确定页表中待验证的目标数据项;从保护树的根节点的下一节点层开始,依序对保护树的各节点层中与目标数据项关联的目标节点进行验证,直至验证到保护树的末端节点层中与目标数据项直接关联的目标节点;基于所述目标节点的验证结果,确定所述目标数据项的完整性。其中,用于页表完整性保护的保护树的节点的MAC,基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到,使得基于数据构建的保护树可以具有较少的层级,从而可以降低页表完整性保护的计算量。
Description
技术领域
本发明实施例涉及计算机技术领域,具体涉及一种页表完整性保护方法、装置和设备。
背景技术
内存也被称为内存储器,用于暂时存放处理器中的运算数据,以及与硬盘等外部存储器交换的数据,是处理器与外界进行沟通的桥梁。
为了有效管理,物理内存分为固定大小的块,称为页(Page)。物理页的大小是由硬件决定的,通常为2的幂,例如,在X86平台中,物理页大小为4KB。页表用于记录每一块物理内存的首地址和虚拟地址的映射关系。
为了保护页表不被篡改,需要对页表进行完整性保护。例如,可以构建针对页表的完整性保护树。完整性保护树中,与页表数据关联的节点的数据随着页表的变化而变化,从而,在进行页表访问时,可基于完整性保护树进行验证,以确定页表是否遭遇攻击。
然而,现有的页表保护方案中,为保证页表数据的安全,页表完整性保护的计算量过大,因此,如何提供改进方案,在保证页表数据安全性的前提下,降低页表完整性保护的计算量,成为了本领域技术人员亟需解决的技术问题。
发明内容
有鉴于此,本发明实施例提供一种完整性保护方法,在保证页表数据安全的前提下,降低了页表完整性保护的计算量。
为实现上述目的,本发明实施例提供如下技术方案:
本发明实施例提供一种数据页表完整性保护方法,包括:
确定页表中待验证的目标数据项;
从保护树的根节点层的下一节点层开始,依序对保护树的各节点层中与目标数据项关联的目标节点进行验证,直至验证到保护树的末端节点层中与目标数据项直接关联的目标节点;其中,保护树中的一个节点层包括至少一个节点,一个节点中的数据至少包括:至少一个局部计数器和与所述局部计数器对应的全局计数器,其中,一个节点中的一个局部计数器用于直接关联下一节点层中的一个节点,所述末端节点层中一个节点的一个局部计数器,用于直接关联一个数据项;所述保护树中,用于验证的节点配置有用于进行验证的消息验证码MAC,所述MAC基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到;
基于所述目标节点的验证结果,确定所述目标数据项的完整性。
为解决前述问题,本发明实施例还提供一种数据页表完整性保护装置,包括:
数据项确定模块,用于确定页表中待验证的目标数据项;
验证模块,用于从保护树的根节点层的下一节点层开始,依序对保护树的各节点层中与目标数据项关联的目标节点进行验证,直至验证到保护树的末端节点层中与目标数据项直接关联的目标节点;其中,保护树中的一个节点层包括至少一个节点,一个节点中的数据至少包括:至少一个局部计数器和与所述局部计数器对应的全局计数器,其中,一个节点中的一个局部计数器用于直接关联下一节点层中的一个节点,所述末端节点层中一个节点的一个局部计数器,用于直接关联一个数据项;所述保护树中,用于验证的节点配置有用于进行验证的消息验证码MAC,所述MAC基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到;
完整性确定模块,用于基于所述目标节点的验证结果,确定所述目标数据项的完整性。
为解决前述问题,本发明实施例还提供一种计算机设备,包括:至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器调用所述程序,以执行上述的页表完整性保护方法。
在本发明实施例提供的页表完整性保护方法、装置及设备中,用于页表完整性保护的保护树的节点的消息验证码MAC,基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到,从而,在局部计数器的长度较小时,用于生成MAC的数据长度并没有相应变小,MAC的重复率也不会相应变大,从而可以保证数据的安全性。由于节点中可以设置较小的局部计数器的长度,从而可以在一个节点内设置较多的局部计数器,使得基于页表构建的保护树可以具有较少的层级,从而可以降低页表完整性保护的计算量。
并且,在本发明实施例的可选方案中,所述保护树可以存储在配置有纠错功能的内存中,从而,可以将所述MAC存储至所述内存的纠错码ECC颗粒中,从而使待访问的数据(例如数据项或节点的数据)和所述MAC值位于同一通道,在进行数据访问时,仅需一次内存访问,即可同时获取待访问的数据和相应的MAC值,提高了数据的访问效率,降低了内存的访问次数。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为一种完整性保护树的结构示意图;
图2为本发明实施例提供的一种完整性保护树的可选结构示意图;
图3为一种ECC-双重内嵌式内存模块的结构示意图;
图4为本发明实施例提供的一种页表完整性保护方法的可选流程图;
图5为本发明实施例提供的对当前节点层的目标节点进行验证的可选流程图;
图6为本发明实施例提供的目标数据项进行验证的可选流程示意图;
图7为本发明实施例提供的保护树的更新流程的可选流程图;
图8为本发明实施例提供的一种页表完整性保护装置的结构示意图;
图9为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在内存数据的页表完整性保护中,建立完整性保护树可以实现对页表的完整性保护,参考图1所示的一种完整性保护树的结构示意图,对页表构建的完整性保护树结构可以包括:自上而下逐层延展的第0~2层节点层,其中,位于最低层级第0层的为末端节点层,位于最高层级第2层为根节点层,节点层中,任一节点的数据包括若干个计数器Nij(i为层标号,i、j取整数);其中,一个节点中的一个计数器直接关联下一节点层中的一个节点,末端节点层中一个节点的一个计数器,直接关联一个数据项;末端节点层外的其他节点层的节点,可以基于与页表数据之间的节点层的节点形成关联关系,例如,图1中,数据A中的页表数据D0可以为页表中的一个数据项,与节点B中的计数器N00直接关联,N00所在的节点B与节点C中的计数器N10直接关联,则可以理解为页表数据D0与N10所在的节点C关联;在完整性保护树中,用于验证的节点为根节点层的节点以外的其他节点,这些节点中,每个节点配置一个消息验证码(Message Authentication Code,下称MAC),所述MAC可以为该节点的数据与直接关联该节点的上一节点层的节点的计数器生成,在计数器Nij更新时,对应节点的MAC值便会随之更新;
其中,每个页表数据Dj也配置一个消息验证码MACj,在页表数据Dj更新时(例如被写入新的数据),对应的MACj值便会随之更新;
完整性保护树的更新机制如下:
在数据A中的页表数据D0发生变化时,与之直接关联的节点B中计数器N00的数值随之更新,对应的,基于更新后的D0和N00计算数据层中的D0对应的MAC0;接着,与计数器N00所在的节点B直接关联的计数器N10的数值随之更新,对应的,基于N00所在的节点B的数据和N10计算第0层节点层中N00所在的节点B对应的MAC;之后,与计数器N10所在的节点对应的计数器N20的数值也随之更新,对应的,基于N10所在的节点C的数据和N20计算第1层节点层中N10所在的节点对应的MAC。例如,在页表数据D0发生写入操作时,计数器N00的数值加1,并结合N00计算D0的MAC值;接着,第1层中的计数器N10的数值加1,并结合N10计算第0层节点B的MAC值;之后,第2层中的N20的数值也随之加1,并结合N20计算该1层节点C的MAC值。
可以理解的是,节点的长度通常是固定的,一个节点内计数器越多,计数器的长度(即可存储数据的位数)越小。由于MAC是基于节点数据和与该节点直接关联的计数器计算得到,计数器的长度越小,用于计算MAC的数据长度越小,MAC的重复率越高,从而,在遭遇重放攻击时,数据被盗取或篡改的可能性越大。然而,若一个节点内计数器越少,则构建的完整性保护树的层级越多,相应的,页表完整性保护的计算量则越大。
以图1的完整性保护树为例,为保证页表数据的安全性,每个节点中计数器设置为64位,在512位的节点中,仅能设置8个计数器,在此基础上,被保护的页表数据体量越大,则需要建立的完整性保护树的层级越多,在进行完整性保护验证时,对应的计算量越大。
现有方案中,为保证页表数据的安全,通常在一个节点内设置较少的计数器,从而使得页表完整性保护的计算量过大。
因此,如何提供改进方案,在保证页表数据安全性的前提下,降低页表完整性保护的计算量,成为了本领域技术人员亟需解决的技术问题。
基于此,本发明实施例提供了一种完整性保护树,以在保证页表数据安全性的前提下,通过提高节点内的计数器个数,降低页表完整性保护的计算量。
参考图2所示的本发明实施例提供的一种完整性保护树(下称保护树)的可选结构示意图,所述完整性保护树包括多个节点层,一个节点层包括至少一个节点,一个节点中的数据至少包括:至少一个局部计数器和与所述局部计数器对应的全局计数器,其中,一个节点中的一个局部计数器用于直接关联下一节点层中的一个节点,所述末端节点层中一个节点的一个局部计数器,用于直接关联页表中的一个数据项;所述保护树中,用于验证的节点配置有用于进行验证的消息验证码MAC,所述MAC基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到;
其中,在一个节点中,局部计数器与全局计数器具有对应关系,从而,在局部计数器的值满足预设条件时,更新全局计数器。可选的,可以在局部计数器大于第一预设值时,更新与所述局部计数器对应的全局计数器。例如,在局部计数器大于所述局部计数器的最大值时,使全局计数器的值增加预设步进值,例如1。其中,所述最大值为该局部计数器长度下所能存储的数据的最大值,具体的,在局部计数器的长度为n时,局部计数器的最大值为2n-1。
相邻节点层中,上一节点层中的节点的局部计数器直接关联下一节点层的一个节点,从而,在下一节点层的一个节点的数据更新时,与该节点关联的上一节点层的节点的局部计数器随之更新;其中,节点中的任一计数器的更新,均理解为该节点的数据进行了更新。
末端节点层中一个节点的一个局部计数器,用于直接关联页表中的一个数据项,从而,在数据项写入新数据时,与该数据项关联的末端节点层中一个节点的一个局部计数器随之更新。
在非相邻节点层中,上一节点层中的节点基于中间节点层的节点与下一节点层的一个节点关联,例如,上一节点层中的节点的局部计数器直接关联中间节点层的一个节点,中间节点层的该节点的局部计数器直接关联下一节点层的一个节点,则可以理解为上一节点层中的节点基于中间节点层的节点与下一节点层的一个节点关联。
相应的,末端节点层外的其他节点层的节点,可以基于与数据项之间的节点层的节点,与数据项具有关联关系,从而可以在进行页表完整性保护时,可以基于该关联关系,确定目标数据项关联的各节点层的目标节点。需要说明的是,直接关联可以理解为关联的一种特殊形式,可以涵盖在关联关系的范围内,从而,数据项关联的目标节点也包括末端节点层的节点。
在保护树中,用于验证的节点可以理解为根节点层的节点以外的其他节点,这是由于,在进行页表完整性保护时,根节点的数据通常存储在内存的可信区域内,例如安全内存中,从而不必对根节点进行验证。
所述保护树中,节点的MAC,可以基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到,例如图2中,节点B的MAC,可以基于节点B中的数据,与节点关联的局部计数器N100(节点C中),和与所述局部计数器N100对应的全局计数器G100(节点C中)计算得到。具体的,可以使用杂凑函数对节点中的数据、与节点关联的局部计数器和与所述局部计数器对应的全局计数器进行计算,以计算得到的摘要值作为所述MAC。可以理解的是,与所述局部计数器对应的全局计数器,为与所述局部计数器位于同一节点内的全局计数器。
可以看出,基于本发明实施例中,节点的MAC,可以基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到,从而,与现有技术相比,在局部计数器的长度较小时,用于生成MAC的数据长度并没有相应变小,MAC的重复率也不会相应变大,从而可以保证页表的安全性。
由于节点中可以设置较小的局部计数器的长度,从而可以在一个节点内设置较多的局部计数器,从而使得构建的保护树可以具有较少的层级,从而可以降低页表完整性保护的计算量。
进一步的,发明人发现,在保护树的更新过程中,层级越高,节点关联的数据项越多,节点内的计数器更新速度越快,在保护树中,位于末端节点层的节点内的计数器更新速度最慢,位于根节点内的计数器的更新速度最快。在计数器的值大于最大值时,计数器溢出,则需要重置该节点,从而消耗更多计算量。具体的,在节点内任一计数器的数值大于最大值时,对该节点内的所有计数器的数值赋值为0,并重新计算与该节点内所有计数器直接关联的节点的MAC值。
基于此,在本发明一个可选的示例中,为适应不同节点层中节点的更新速度,进一步配置所述保护树中,上一节点层中节点的局部计数器的长度大于或等于下一节点层中节点的局部计数器的长度。
可以理解的是,在上一节点层中的节点中配置局部计数器的长度大于或等于下一节点层中节点的局部计数器的长度,使得上一节点层中的节点中局部计数器的最大值更大,从而减少上一节点层中的节点的计数器溢出,提高上一节点层中的节点的重置周期,降低计算量的消耗。
基于在保护树的更新过程中,在全局计数器的值达到最大值时,也会导致计数器溢出,则需要重置该节点,从而消耗更多计算量,在本发明的另一可选示例中,为适应不同层级节点的更新数据,还可以进一步配置所述保护树,上一节点层中节点的全局计数器的长度大于或等于下一节点层中节点的全局计数器的长度,从而在上一节点层中节点的局部计数器的最大值变大的前提下,提高上一节点层中节点的全局计数器的最大值,在整体上提高上一节点层中节点的重置周期,降低计算量的消耗。
可以理解的是,在上一节点层中节点的局部计数器的长度大于或等于下一节点层中节点的局部计数器的长度,且上一节点层中节点的全局计数器的长度大于或等于下一节点层中节点的全局计数器的长度时,上一节点层中节点的局部计数器的个数小于下一节点层中节点的局部计数器的个数。
在又一可选示例中,同一节点内,所述全局计数器的长度与所述局部计数器的长度可以相同,也可以不同,从而可以基于节点的实际更新速度,为全局计数器和局部计数器配置符合节点实际更新速度的长度。在优选示例中,所述全局计数器的长度与所述局部计数器的长度不同,从而更加符合节点的实际更新速度。
在本发明实施例中,所述保护树中,节点的长度等于缓存行的长度,从而可以一次读取节点的所有数据,提高数据的访问效率。并且,一个节点可以存储在内存的一个物理块中。可以理解的是,在计算机的运行过程中,数据分块存储在内存的物理块中,物理块的长度可以等于计算机的缓存行长度,为计算机进行数据存取的最小单元。
以图2中提供的保护树为例,其中,节点的长度为512比特,末端节点层中,节点中的局部计数器对应的数据项,例如可以为页表数据Dj(j为标号,可以取整数),可以为理解为页表中的页表项或页目录项,每个Dj的长度可以为512比特,由页表数据Dj可以计算得到的数据项消息验证码MACj,图中保护树包括3个层级,末端节点层为第0层,根节点层为第2层,节点中,Gij是全局计数器,i为层标号,Gij的长度可以为64比特;Nij是局部计数器,其中,末端节点层的节点中,N0j的长度可以为7比特,中间节点层节点的节点中,N1j的长度可以为14比特,根节点层的节点中,N2j的长度可以为28比特。需要说明的是,以上仅为示例,在本发明实施例中,全局计数器和局部计数器的长度可以适当调整。
保护树及其保护的数据可以存储在内存中,其中,保护树中的至少根节点的数据存储在内存的可信区域内,例如安全内存中,所述安全内存可以为基于物理手段隔离开的一内存空间,也可以为具有加密保护的一内存空间。
在本发明实施例中,数据项和用于验证的节点均配置有与之一一对应的MAC,所述MAC可存储于与数据项/节点不同的物理块中,然而,针对这种存储方式,在系统进行数据访问时,需要两次访问内存,以获取相应的数据和MAC值,访问效率低。
在一个可选的示例中,所述保护树可以存储在配置有纠错功能的内存中,从而,可以将所述MAC存储至所述内存的纠错码(Error Correcting Code,也称为ECC)颗粒中,具体的,所述MAC存储在内存的纠错码位置,从而使待访问的数据(例如数据项或节点的数据)和所述MAC值位于同一通道,在进行数据访问时,仅需一次内存访问,即可同时获取待访问的数据和相应的MAC值。
具体的,在具有纠错功能的内存中,物理内存条上具有额外的ECC颗粒,参考图3所示的一种ECC-双重内嵌式内存模块的结构示意图,所述ECC-双重内嵌式内存模块中,具有8个数据块颗粒(C0~C7)和1个ECC颗粒。
可以理解的是,在具有ECC功能的内存中,原本用于存储在纠错码位置的纠错码只有在数据出错时才会被访问,而MAC则在数据每次访问时均需被读取,基于此,本发明实施例将访问频率更大的MAC存储在所述ECC颗粒中,使访问频率更大的MAC与待访问的数据位于同一通道,从而可以在一次内存访问中,同时获取待访问的数据和相应的MAC,提高了数据的访问效率,降低了内存的访问次数。
相应的,在ECC颗粒中存储了MAC值时,纠错码ECC可以存储在内存的其他位置,并在内存中的数据出错时,读取相应的纠错码进行纠错。
基于上述保护树的描述,本发明实施例进一步提供一种页表完整性保护方法,以进行内存数据的页表完整性保护。参考图4所示的一种页表完整性保护方法的可选流程图,所述方法包括:
步骤S10、确定页表中待验证的目标数据项;
所述目标数据项为待访问的数据项,例如,在数据项被读取或被写入前,可以对数据项进行页表完整性保护。其中,基于访问请求中数据项的地址,可以确定对应该地址的数据项为目标数据项。通过对目标数据项的页表完整性保护,可以确定目标数据项是否被篡改,从而提高页表的安全性。
可选的,页表可以为普通页表,可以为客户机页表,也可以为嵌套页表,或者,可以为客户机页表和嵌套页表的总和。页表的数据项,即为页表中用于实现地址映射的表项,一个数据项可以为一个页表项,也可以为一个页目录项,用于存储在内存的一个物理块中。从而,一个数据项的长度可以为内存中一个物理块的长度,也即计算机的一个缓存行长度。
步骤S11、从保护树的根节点层的下一节点层开始,依序对保护树的各节点层中与目标数据项关联的目标节点进行验证,直至验证到保护树的末端节点层中与目标数据项直接关联的目标节点;
其中,保护树中的一个节点层包括至少一个节点,一个节点中的数据至少包括:至少一个局部计数器和与所述局部计数器对应的全局计数器,其中,一个节点中的一个局部计数器用于直接关联下一节点层中的一个节点,所述末端节点层中一个节点的一个局部计数器,用于直接关联一个数据项;所述保护树中,用于验证的节点配置有用于进行验证的消息验证码MAC,所述MAC基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到;
所述目标节点,为保护树中与所述目标数据项关联的节点,基于与目标数据项的关联关系,可以确定目标节点,从而逐层对目标节点进行验证。结合图2中的保护树的结构图,以页表数据D0为目标数据项为例,与所述目标数据项D0关联的目标节点包括节点B、节点C和根节点。
在对目标节点的验证过程中,基于所述根节点层的节点的数据存储在内存的可信区域内,从而可以从保护树的根节点层的下一节点层开始,自上而下逐层对目标节点进行验证,直至保护树的末端节点层。
其中,在验证当前节点层时,参考图5所示的对当前节点层的目标节点进行验证的可选流程图,对所述当前节点层的目标节点进行验证的步骤具体可以包括:
步骤S110、基于所述目标节点中的数据、与所述目标节点直接关联的局部计数器、与所述局部计数器对应的全局计数器,计算得到所述目标节点的节点待验证值;
具体的,可以先读取与所述目标节点直接关联的局部计数器、与所述局部计数器对应的全局计数器,可以理解的是,与所述目标节点直接关联的局部计数器,位于目标节点所在节点层的上一节点层的节点中,所述与所述局部计数器对应的全局计数器,与所述局部计数器位于同一节点中。接着,读取目标节点中的数据,并对读取到的这些待计算数据进行计算。
可选的,可以使用杂凑函数对待计算数据计算,生成摘要值,得到所述目标节点的节点待验证值。
步骤S111、比较所述节点待验证值和所述目标节点的MAC是否一致;
其中,若所述节点待验证值和所述目标节点的MAC一致,则所述目标节点验证通过。
在所述目标节点验证通过时,可以继续以下一节点层为当前节点层,继续进行目标节点的验证,直至验证到保护树的末端节点层。
考虑到内存数据会出现一些不可避免的存储错误,从而可能出现基于存储错误导致目标节点验证不通过,在本发明的一个可选示例中,进一步为用于验证的节点配置用于纠错的纠错码,在所述目标节点的节点待验证值和所述目标节点的MAC不一致时,先进行纠错,在纠错失败时,则确定所述目标节点验证不通过。
所述纠错码基于节点中的数据和节点的MAC计算得到,在一个可选的示例中,针对任一节点,纠错码的计算过程可以如下:将节点分割为长度相等的预设个数的数据段;基于所述数据段和MAC,计算得到纠错码。
具体的,以图2示出的保护树为例,节点长度为512比特,从而节点中的数据可以被分割为8个64比特的Ci,这8个Ci结合MAC生成一个纠错码Pi,满足其中,Pi的长度为64比特,8个Pi可以存储在一个物理块中。
在本发明实施例中,若所述节点待验证值和所述目标节点的MAC不一致,则进一步基于所述目标节点的纠错码对所述目标节点进行纠错;参考图5所示的对所述目标节点进行纠错的可选流程图,所述基于所述目标节点的纠错码对所述目标节点进行纠错,具体可以包括:
步骤S112、将所述目标节点中的数据,分割为长度相等的预设个数的数据段;
基于与纠错码相同的算法,首先将目标节点中的数据,分割成长度相等的预设个数的数据段,从而基于纠错码,计算各数据段的假设值。
步骤S113、结合所述目标节点的MAC和所述目标节点的纠错码,依序计算各数据段的假设值,并基于所述假设值,确定是否纠错成功;
其中,在任一数据段的验证步骤中,可以基于所述目标节点的MAC和所述目标节点纠错码,可以计算得到数据段的假设值,进而可以基于所述假设值,计算目标节点的节点待验证值,在节点待验证值与MAC一致时,说明假设值对应的数据段出错,更新所述数据段为所述假设值,并确认纠错成功。并且,在各数据段均未验证为出错,则确定纠错失败。
基于纠错过程中包含有MAC的验证过程,从而,本步骤中,若纠错成功,则确定所述目标节点验证通过;若纠错失败,则确定所述目标节点验证不通过。
需要说明的是,在节点未配置有纠错码时,可以在节点待验证值和所述目标节点的MAC不一致时,直接判定目标节点验证不通过。
具体的,仍以图2中的保护树为例,在确定目标数据项为数据A中的D0时,步骤S11的验证过程可以具体如下:从根节点中读取G200和N200,并结合第1层中的节点C,计算出一个节点待验证值MAC’,与第1层中存储的节点C的MAC值比较,若一致,节点C验证通过,若不一致,则将节点C中的G100,N100,N101,......,N131分割成C0,C1,......,C7,并读取对应的纠错码Pi进行纠错,若纠错成功,则节点C验证通过,若纠错失败,则节点C验证不通过;接着,继续从第第1层中读取G100和N100,并结合第0层中的节点B,计算出一个节点待验证值MAC’,与第0层中存储的节点B的MAC值比较,若一致,节点B验证通过,若不一致,则将节点B中的G000,N000,N001,......,N063分割成C0,C1,......,C7,并读取对应的纠错码Pi进行纠错,若纠错成功,则节点B验证通过,若纠错失败,则节点B验证不通过
其中,以节点C为例,纠错过程可以如下:
如果MAC’≠MAC,则依序假设C1,......,C7出错,并计算确定纠错是否成功,若纠错至C7,均未纠错成功,则纠错失败。
继续参考图4,执行步骤S12、基于所述目标节点的验证结果,确定所述目标数据项的完整性。
其中,为进一步确保数据项的完整性,若保护树的各节点层中与目标数据项关联的目标节点均验证通过,则进一步根据目标数据项以及与目标数据项直接关联的目标节点进行验证,若目标数据项验证通过,则确定目标数据项完整性验证通过。
可选的,参考图2所示的保护树,可以为所述数据项配置用于进行验证的数据项消息验证码MACj,所述数据项消息验证码基于数据项、与数据项直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到。
具体的,可以使用杂凑函数对数据项、与数据项直接关联的局部计数器和与所述局部计数器对应的全局计数器进行计算,以计算得到的摘要值作为所述数据项消息验证码。
具体的,参考图6所示的目标数据项进行验证的可选流程示意图,所述根据目标数据项以及与目标数据项直接关联的目标节点进行验证,具体包括:
步骤S120、基于所述目标数据项、与所述目标数据项直接关联的局部计数器、与所述局部计数器对应的全局计数器,计算得到所述目标数据项的数据待验证值。
具体的,可以先读取与所述目标数据项直接关联的局部计数器、与所述局部计数器对应的全局计数器,可以理解的是,与所述目标数据项直接关联的局部计数器,位于末端节点层的节点中,所述与所述局部计数器对应的全局计数器,与所述局部计数器位于同一节点中。接着,读取目标数据项,并对读取到的这些待计算数据进行计算。
可选的,可以使用杂凑函数对待计算数据计算,生成摘要值,得到所述目标数据项的数据待验证值。
步骤S121、比较所述数据待验证值和所述目标数据项的数据项消息验证码,验证所述目标数据项。
其中,若所述数据待验证值和所述目标数据项的数据项消息验证码一致,则所述目标数据项验证通过。
考虑到内存数据会出现一些不可避免的存储错误,从而可能出现基于存储错误导致目标数据项验证不通过,在本发明的一个可选示例中,进一步为数据项配置用于纠错的纠错码,在所述数据待验证值和所述目标数据项的数据项消息验证码不一致时,先进行纠错,在纠错失败时,则确定所述目标数据项验证不通过。
所述纠错码基于数据项和数据项的数据项消息验证码计算得到,在一个可选的示例中,纠错码的计算过程可以如下:将数据项分割为长度相等的预设个数的数据段;基于所述数据段和数据段消息验证码,计算得到纠错码。
具体的,以图2示出的数据项为例,数据长度为512比特,从而数据项可以被分割为8个64比特的Ci,这8个Ci结合数据项消息验证码生成一个纠错码Pi,满足其中,Pi的长度为64比特,8个Pi可以存储在一个物理块中。
在本发明实施例中,若所述数据待验证值和所述目标数据项的数据项消息验证码不一致,则进一步基于所述目标数据项的纠错码对所述目标数据项进行纠错;参考图6所示的对所述目标数据项进行纠错的可选流程图,所述基于所述目标数据项的纠错码对所述目标数据项进行纠错,具体可以包括:
步骤S122、将所述目标数据项分割为长度相等的预设个数的数据段;
基于与纠错码相同的算法,首先将目标数据项,分割成长度相等的预设个数的数据段,从而基于纠错码,计算各数据段的假设值。
步骤S123、结合所述目标数据项的数据项消息验证码和所述目标数据项的纠错码,依序计算各数据段的假设值,并基于所述假设值,确定是否纠错成功;
结合所述目标数据项的数据项消息验证码和所述目标数据项的纠错码,依序计算各数据段的假设值,并基于所述假设值,验证各数据段是否出错;
其中,基于所述目标数据项的数据项消息验证码和所述目标数据项的纠错码,可以计算得到数据段的假设值,进而可以基于所述假设值,计算目标数据项的数据待验证值,在数据待验证值与数据项消息验证码一致时,说明假设值对应的数据段出错,从而可以更新所述数据段为所述假设值,并确认纠错成功。并且,在各数据段均未验证为出错,则确定纠错失败。
基于纠错过程中包含有数据项消息验证码的验证过程,从而,本步骤中,若纠错成功,则确定所述目标数据项验证通过;若纠错失败,则确定所述目标数据项验证不通过,从而,确定目标数据项完整性验证不通过。其中,在所述目标数据项完整性验证不通过时,可以认为存在攻击,从而,可以输出错误信息,并终止相应的访问过程。
需要说明的是,在数据项未配置有纠错码时,可以在数据待验证值和所述数据项消息验证码不一致时,直接判定目标数据项验证不通过。
具体的,仍以图2中的数据项为例,目标数据项可以为数据A中的D0,步骤S12的验证过程可以具体如下:从第0层中的节点B中读取G000,N000,并结合D0,计算出一个数据待验证值MAC0’,与D0的数据项消息验证码MAC0值比较,若一致,D0验证通过,若不一致,则将节点D0分割成C0,C1,......,C7,并读取对应的纠错码P0进行纠错。
其中,以目标数据项D0为例,纠错过程可以如下:
如果MAC0’≠MAC0,则依序假设C1,......,C7出错,并计算确定纠错是否成功,若纠错至C7,均未纠错成功,则纠错失败。
可以理解的是,通过对保护树中各节点层的目标节点进行验证,可以验证目标数据项是否被篡改,从而确定所述目标数据项的完整性。
基于本发明实施例中,用于进行验证的MAC,可以基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到,从而,与现有技术相比,在局部计数器的长度较小时,用于生成MAC的数据长度并没有相应变小,MAC的重复率也不会相应变大,从而可以保证数据的安全性。
由于节点中可以设置较小的局部计数器的长度,从而可以在一个节点内设置较多的局部计数器,从而使得构建的保护树可以具有较少的层级,从而可以降低页表完整性保护的计算量。
基于上述保护树的描述,本发明实施例进一步提供一种页表完整性保护方法,所述页表完整性保护方法,进一步在目标数据项写入新数据后,对保护树进行更新,从而基于更新后的保护树,进行目标数据项的页表完整性保护。参考图7所示的保护树的更新流程的可选流程图,所述方法包括:
步骤S20、在目标数据项写入新数据后,更新与所述目标数据项直接关联的局部计数器所在的目标节点和与所述目标节点内的局部计数器直接关联的数据项的数据项消息验证码;
其中,在更新与所述目标数据项直接关联的局部计数器所在的目标节点中的数据后,基于写入后的目标数据项和更新后的目标节点中的数据,更新与所述目标节点内的局部计数器直接关联的数据项的数据项消息验证码。
在目标数据项写入新数据后,对目标节点的更新可以包括:
更新与所述目标数据项直接关联的局部计数器;
可以理解的是,与所述目标数据项直接关联的局部计数器,位于所述保护树的末端节点层的节点中。具体的,更新与所述目标数据项直接关联的局部计数器,可以为所述局部计数器增大预设步进值,例如1,在其他示例中,所述预设步进值还可以为其他数值,本发明在此不做具体的限定。
其中,在更新后的局部计数器大于第一预设值时,更新与所述局部计数器对应的全局计数器,并赋值所述目标节点中,所有局部计数器为第一值;
可以理解的是,与所述局部计数器对应的全局计数器位于所述局部计数器所在的节点中,所述第一预设值可以为所述局部计数器所能达到的最大值,从而,在局部计数器大于第一预设值时,更新与所述局部计数器对应的全局计数器。其中,所述更新与所述局部计数器对应的全局计数器,可以具体可以为所述局部计数器增大预设步进值,例如1。在全局计数器更新后,需要对全局计数器所在的节点的局部计数器进行重置,具体的,赋值所述全局计数器所在的节点中,所有局部计数器为第一值,所述第一值例如可以为0。
在更新后的全局计数器大于第二预设值时,赋值所述全局计数器为第一值,并赋值所述目标节点中,所有局部计数器为第一值;
所述第二预设值可以为所述全局计数器所能达到的最大值,从而,在全局计数器大于第二预设值时,重置所述全局计数器和所述局部计数器所在的节点中是所有局部计数器。具体的,赋值所述全局计数器为第一值,并赋值所述局部计数器所在的节点中,所有局部计数器为第一值,所述第一值例如可以为0。
接着,更新与所述目标节点内的局部计数器直接关联的数据项的数据项消息验证码,所述更新步骤具体包括:
基于更新后的与所述目标数据项直接关联的局部计数器,更新所述目标数据项的数据项消息验证码;
可选的,基于更新后的与所述目标数据项直接关联的局部计数器,计算所述目标数据项的数据项消息验证码,并将计算得到的数据项消息验证码更新为目标数据项对应的数据项消息验证码。
其中,在所述目标节点中,所有局部计数器赋值为第一值时,更新所述数据项中,所有与所述目标节点内的局部计数器直接关联的数据项的数据项消息验证码;
可以理解的是,与数据项直接关联的局部计数器更新后,数据项的数据项消息验证码也需要对应更新。
参考图2所示的数据树,以写入页表数据D0为例,所述更新过程如下:
当写入页表数据D0后,局部计数器N000=N000+1,如果N000≦26-1,由G000,N000,D0计算出D0的数据项消息验证码MAC0;如果N000>26-1,则全局计数器G000=G000+1,赋值节点B内的局部计数器N000,N001,......,N063为0,并重新计算与节点B中的局部计数器直接对应的数据项的数据项消息验证码MACj;如果G000>264-1,则赋值全局计数器G000为0,赋值节点B内的局部计数器N000,N001,......,N063为0,并重新计算与节点B中的局部计数器直接对应的数据项的数据项消息验证码MACj。
步骤S21、从保护树的末端节点层的上一节点层开始,依序对保护树的各节点层中与所述目标数据项关联的目标节点和与所述目标节点内的局部计数器直接关联的节点的MAC进行更新,直至更新到保护树的根节点层;
具体的,可以逐层进行目标节点和与所述目标节点内的局部计数器直接关联的节点的MAC的更新。在更新当前节点层时,对所述当前节点层的目标节点的数据进行更新的步骤包括:
更新与所述目标节点中,与所述目标数据项具有关联关系的局部计数器;
可以理解的是,与所述目标数据项具有关联关系的局部计数器,可以是通过中间节点层的节点与局部计数器间接关联的局部计数器。具体的,所述局部计数器的更新,可以为所述局部计数器增大预设步进值,例如1,在其他示例中,所述预设步进值还可以为其他数值,本发明在此不做具体的限定。
其中,在更新后的局部计数器大于第一预设值时,更新与所述局部计数器对应的全局计数器,并赋值所述目标节点中,所有局部计数器为第一值;
可以理解的是,与所述局部计数器对应的全局计数器位于所述局部计数器所在的节点中,所述第一预设值可以为所述局部计数器所能达到的最大值,从而,在局部计数器大于第一预设值时,更新与所述局部计数器对应的全局计数器。其中,所述更新与所述局部计数器对应的全局计数器,可以具体可以为所述局部计数器增大预设步进值,例如1。在全局计数器更新后,需要对全局计数器所在的节点的局部计数器进行重置,具体的,赋值所述全局计数器所在的节点中,所有局部计数器为第一值,所述第一值例如可以为0。
在更新后的全局计数器大于或等于第二预设值时,赋值所述全局计数器为第一值,并赋值所述目标节点中,所有局部计数器为第一值;
所述第二预设值可以为所述全局计数器所能达到的最大值,从而,在全局计数器大于第二预设值时,重置所述全局计数器和所述局部计数器所在的节点中是所有局部计数器。具体的,赋值所述全局计数器为第一值,并赋值所述局部计数器所在的节点中,所有局部计数器为第一值,所述第一值例如可以为0。
基于更新后的与所述目标数据项具有关联关系的局部计数器,更新所述目标节点的下一节点层中,与所述局部计数器直接关联的节点的MAC;
可选的,基于更新后的与所述目标数据项具有关联关系的局部计数器,计算所述目标节点的下一节点层中,与所述局部计数器直接关联的节点的MAC,并将计算得到的MAC更新为与所述局部计数器直接关联的节点的MAC。
其中,在赋值所述目标节点中,所有局部计数器赋值为第一值时,更新所述目标节点的下一节点层中,所有与所述目标节点内的局部计数器直接关联的节点的MAC。
可以理解的是,与节点直接关联的局部计数器更新后,节点的消息验证码也需要对应更新。
参考图2所示的数据树,写入页表数据D0,更新节点C为例,所述更新过程如下:
当写入页表数据D0后,节点C中局部计数器N100=N100+1,如果N100≦212-1,由G100,N100和节点B的数据计算出节点B的MAC;如果N100>212-1,则全局计数器G100=G100+1,赋值节点C内的局部计数器N100,N101,......,N131为0,并重新计算与节点C中的局部计数器直接对应的节点的MAC值;如果G100>264-1,则赋值全局计数器G100为0,赋值节点C内的局部计数器N100,N101,......,N131为0,并重新计算与节点C中的局部计数器直接对应的节点的MAC值。
在本发明实施例提供的页表完整性保护方法中,用于页表完整性保护的保护树的节点的MAC,基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到,从而,在局部计数器的长度较小时,用于生成MAC的数据长度并没有相应变小,MAC的重复率也不会相应变大,从而可以保证数据的安全性。由于节点中可以设置较小的局部计数器的长度,从而可以在一个节点内设置较多的局部计数器,使得基于数据构建的保护树可以具有较少的层级,从而可以降低页表完整性保护的计算量。
在本发明实施例中,还进一步提供了一种页表完整性保护装置,参考图8所示的页表完整性保护装置的可选结构图,所述页表完整性保护装置包括:
数据项确定模块100,用于确定页表中待验证的目标数据项;
验证模块110,用于从保护树的根节点层的下一节点层开始,依序对保护树的各节点层中与目标数据项关联的目标节点进行验证,直至验证到保护树的末端节点层中与目标数据项直接关联的目标节点;其中,保护树中的一个节点层包括至少一个节点,一个节点中的数据至少包括:至少一个局部计数器和与所述局部计数器对应的全局计数器,其中,一个节点中的一个局部计数器用于直接关联下一节点层中的一个节点,所述末端节点层中一个节点的一个局部计数器,用于直接关联一个数据项;所述保护树中,用于验证的节点配置有用于进行验证的消息验证码MAC,所述MAC基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到;
完整性确定模块120,用于基于所述目标节点的验证结果,确定所述目标数据项的完整性。
可选的,所述完整性确定模块120,用于基于所述目标节点的验证结果,确定所述目标数据项的完整性,包括:
若保护树的各节点层中与目标数据项关联的目标节点均验证通过,则根据目标数据项以及与目标数据项直接关联的目标节点进行验证,若目标数据项验证通过,则确定目标数据项完整性验证通过。
可选的,验证模块110,用于依序对保护树的各节点层中与目标数据项关联的目标节点进行验证,包括:
在验证当前节点层时,对所述当前节点层的目标节点进行验证的步骤包括:
基于所述目标节点中的数据、与所述目标节点直接关联的局部计数器、与所述局部计数器对应的全局计数器,计算得到所述待验证节点的节点待验证值;
比较所述节点待验证值和所述目标节点的MAC是否一致;
若所述节点待验证值和所述目标节点的MAC一致,则所述目标节点验证通过。
可选的,所述保护树中,用于验证的节点还配置有用于纠错的纠错码,所述纠错码基于节点中的数据和节点的MAC计算得到;验证模块110,用于在验证当前节点层时,对所述当前节点层的目标节点进行验证的步骤,还包括:
若所述节点待验证值和所述目标节点的MAC不一致,基于所述目标节点的纠错码对所述目标节点进行纠错;
若纠错成功,则确定所述目标节点验证通过;若纠错失败,则确定所述目标节点验证不通过。
可选的,验证模块110,用于基于所述目标节点的纠错码对所述目标节点进行纠错,包括:
将所述目标节点中的数据,分割为长度相等的预设个数的数据段;
结合所述目标节点的MAC和所述目标节点的纠错码,依序计算各数据段的假设值,并基于所述假设值,确定是否纠错成功;
其中,在任一数据段的验证步骤中,若数据段验证为出错,更新所述数据段为所述假设值,并确定纠错成功;
若各数据段均未验证为出错,则确定纠错失败。
可选的,所述数据项配置有用于进行验证的数据项消息验证码,所述数据项消息验证码基于数据项、与数据项直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到,所述完整性确定模块120,用于根据目标数据项以及与目标数据项直接关联的目标节点进行验证,包括:
基于所述目标数据项、与所述目标数据项直接关联的局部计数器、与所述局部计数器对应的全局计数器,计算得到所述目标数据项的数据待验证值;
比较所述数据待验证值和所述目标数据项的数据项消息验证码,验证所述目标数据项;
其中,若所述数据待验证值和所述目标数据项的数据项消息验证码一致,则所述目标数据项验证通过。
可选的,所述目标数据项还配置有用于纠错的纠错码,所述纠错码基于所述目标数据项和所述目标数据项的数据项消息验证码计算得到;所述完整性确定模块120,用于根据目标数据项以及与目标数据项直接关联的目标节点进行验证,还包括:
若所述数据待验证值和所述目标数据项的数据项消息验证码不一致,基于所述目标数据项的纠错码对所述目标数据项进行纠错;
若纠错成功,则确定所述目标数据项验证通过;若纠错失败,则确定目标数据项完整性验证不通过。
可选的,所述完整性确定模块120,用于基于所述目标数据项的纠错码对所述目标数据项进行纠错,包括:
将所述目标数据项分割为长度相等的预设个数的数据段;
结合所述目标数据项的数据项消息验证码和所述目标数据项的纠错码,依序计算各数据段的假设值,并基于所述假设值,验证各数据段是否出错;
若任一数据段验证为出错,更新所述数据段为所述假设值,并确定纠错成功;若各数据段均未验证为出错,则确定纠错失败。
可选的,所述页表完整性保护装置,还包括:
数据项更新模块130,用于在目标数据项写入新数据后,更新与所述目标数据项直接关联的局部计数器所在的目标节点和与所述目标节点内的局部计数器直接关联的数据项的数据项消息验证码;
节点更新模块140,用于从保护树的末端节点层的上一节点层开始,依序对保护树的各节点层中与所述目标数据项关联的目标节点和与所述目标节点内的局部计数器直接关联的节点的MAC进行更新,直至更新到保护树的根节点层。
可选的,数据项更新模块130,用于更新与所述目标数据项直接关联的局部计数器所在的目标节点,包括:更新与所述目标数据项直接关联的局部计数器;其中,在更新后的局部计数器大于第一预设值时,更新与所述局部计数器对应的全局计数器,并赋值所述目标节点中,所有局部计数器为第一值;在更新后的全局计数器大于第二预设值时,赋值所述全局计数器为第一值,并赋值所述目标节点中,所有局部计数器为第一值;
可选的,数据项更新模块130,用于更新与所述目标节点内的局部计数器直接关联的数据项的数据项消息验证码,包括:基于更新后的与所述目标数据项直接关联的局部计数器,更新所述目标数据项的数据项消息验证码;其中,在所述局部计数器所在的节点中,所有局部计数器赋值为第一值时,更新所述数据项中,所有与所述目标节点内的局部计数器直接关联的数据项的数据项消息验证码。
可选的,节点更新模块140,用于依序对保护树的各节点层中与所述目标数据项关联的目标节点和与所述目标节点内的局部计数器直接关联的节点的MAC进行更新,包括:
在更新当前节点层时,对所述当前节点层的目标节点和与所述目标节点内的局部计数器直接关联的节点的MAC进行更新的步骤包括:
更新所述目标节点中,与所述目标数据项具有关联关系的局部计数器;其中,在更新后的局部计数器大于第一预设值时,更新与所述局部计数器对应的全局计数器,并赋值所述目标节点中,所有局部计数器为第一值;在更新后的全局计数器大于或等于第二预设值时,赋值所述全局计数器为第一值,并赋值所述目标节点中,所有局部计数器为第一值;
基于更新后的与所述目标数据项具有关联关系的局部计数器,更新所述目标节点的下一节点层中,与所述局部计数器直接关联的节点的MAC;其中,在赋值所述目标节点中,所有局部计数器赋值为第一值时,更新所述目标节点的下一节点层中,所有与所述目标节点内的局部计数器直接关联的节点的MAC。
可选的,所述保护树中,上一节点层中节点的局部计数器的长度大于或等于下一节点层中节点的局部计数器的长度。
可选的,所述保护树中,上一节点层中节点的全局计数器的长度大于或等于下一节点层中节点的全局计数器的长度。
可选的,所述保护树中,节点的长度等于计算机设备中的缓存行的长度。
可选的,所述保护树中,节点的长度为512比特,节点中的全局计数器的长度为64比特,其中,末端节点层中节点的局部计数器的长度为7比特,根节点层中节点的局部计数器的长度为28比特,位于所述末端节点层和所述根节点层之间的中间节点层的节点的局部计数器的长度为14比特。
可选的,所述保护树存储在配置有纠错功能的内存中,所述MAC存储在内存的纠错码位置。
可选的,所述目标数据项为页表中的数据项。
在本发明实施例提供的页表完整性保护装置中,用于页表完整性保护的保护树的节点的MAC,基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到,从而,在局部计数器的长度较小时,用于生成MAC的数据长度并没有相应变小,MAC的重复率也不会相应变大,从而可以保证数据的安全性。由于节点中可以设置较小的局部计数器的长度,从而可以在一个节点内设置较多的局部计数器,使得基于数据构建的保护树可以具有较少的层级,从而可以降低页表完整性保护的计算量。
当然,本发明实施例还提供一种计算机设备,本发明实施例提供的设备可以通过程序形式装载上述所述的程序模块架构,以实现本发明实施例提供的页表完整性保护方法;该硬件设备可以应用于具体数据处理能力的电子设备,该电子设备可以为:例如终端设备或者服务器设备。
可选的,图9示出了本发明实施例提供的设备一种可选硬件设备架构,可以包括:至少一个存储器3和至少一个处理器1;所述存储器存储有程序,所述处理器调用所述程序,以执行前述的页表完整性保护方法,另外,至少一个通信接口2和至少一个通信总线4;处理器1和存储器3可以位于同一电子设备,例如处理器1和存储器3可以位于服务器设备或者终端设备;处理器1和存储器3也可以位于不同的电子设备。
作为本发明实施例公开内容的一种可选实现,存储器3可以存储程序,处理器1可调用所述程序,以执行本发明上述实施例提供的页表完整性保护方法。
本发明实施例中,电子设备可以是能够进行页表完整性保护的服务器、电脑、手机等设备。
在本发明实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;显然,图9所示的处理器1、通信接口2、存储器3和通信总线4的通信连接示意仅是可选的一种方式;
可选的,通信接口2可以为通信模块的接口,如GSM模块的接口;
处理器1可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
需要说明的是,上述的设备还可以包括与本发明实施例公开内容可能并不是必需的其他器件(未示出);鉴于这些其他器件对于理解本发明实施例公开内容可能并不是必需,本发明实施例对此不进行逐一介绍。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,当该指令被处理器执行时可以实现如上所述页表完整性保护方法。
上述本发明的实施方式是本发明的元件和特征的组合。除非另外提及,否则所述元件或特征可被视为选择性的。各个元件或特征可在不与其它元件或特征组合的情况下实践。另外,本发明的实施方式可通过组合部分元件和/或特征来构造。本发明的实施方式中所描述的操作顺序可重新排列。任一实施方式的一些构造可被包括在另一实施方式中,并且可用另一实施方式的对应构造代替。对于本领域技术人员而言明显的是,所附权利要求中彼此没有明确引用关系的权利要求可组合成本发明的实施方式,或者可在提交本申请之后的修改中作为新的权利要求包括。
本发明的实施方式可通过例如硬件、固件、软件或其组合的各种手段来实现。在硬件配置方式中,根据本发明示例性实施方式的方法可通过一个或更多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理器件(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器等来实现。
在固件或软件配置方式中,本发明的实施方式可以模块、过程、功能等形式实现。软件代码可存储在存储器单元中并由处理器执行。存储器单元位于处理器的内部或外部,并可经由各种已知手段向处理器发送数据以及从处理器接收数据。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是符合与本文所公开的原理和新颖特点相一致的最宽的范围。
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种变动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (16)
1.一种数据页表完整性保护方法,其特征在于,包括:
确定页表中待验证的目标数据项;
从保护树的根节点层的下一节点层开始,依序对保护树的各节点层中与目标数据项关联的目标节点进行验证,直至验证到保护树的末端节点层中与目标数据项直接关联的目标节点;其中,保护树中的一个节点层包括至少一个节点,一个节点中的数据至少包括:至少一个局部计数器和与所述局部计数器对应的全局计数器,其中,一个节点中的一个局部计数器用于直接关联下一节点层中的一个节点,所述末端节点层中一个节点的一个局部计数器,用于直接关联一个数据项;所述保护树中,用于验证的节点配置有用于进行验证的消息验证码MAC,所述MAC基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到;
基于所述目标节点的验证结果,确定所述目标数据项的完整性;
其中,在验证当前节点层时,对所述当前节点层的目标节点进行验证的步骤包括:
基于所述目标节点中的数据、与所述目标节点直接关联的局部计数器、与所述局部计数器对应的全局计数器,计算得到所述待验证节点的节点待验证值;
比较所述节点待验证值和所述目标节点的MAC是否一致;
若所述节点待验证值和所述目标节点的MAC一致,则所述目标节点验证通过;
若所述节点待验证值和所述目标节点的MAC不一致,基于所述目标节点的纠错码对所述目标节点进行纠错,其中,所述纠错码为保护树中,用于验证的节点配置的用于纠错的纠错码,基于节点中的数据和节点的MAC计算得到;
若纠错成功,则确定所述目标节点验证通过;若纠错失败,则确定所述目标节点验证不通过。
2.如权利要求1所述的页表完整性保护方法,其特征在于,所述基于所述目标节点的验证结果,确定所述目标数据项的完整性,包括:
若保护树的各节点层中与目标数据项关联的目标节点均验证通过,则根据目标数据项以及与目标数据项直接关联的目标节点进行验证,若目标数据项验证通过,则确定目标数据项完整性验证通过。
3.如权利要求1所述的页表完整性保护方法,其特征在于,所述基于所述目标节点的纠错码对所述目标节点进行纠错,包括:
将所述目标节点中的数据,分割为长度相等的预设个数的数据段;
结合所述目标节点的MAC和所述目标节点的纠错码,依序计算各数据段的假设值,并基于所述假设值,确定是否纠错成功;
其中,在任一数据段的验证步骤中,若数据段验证为出错,更新所述数据段为所述假设值,并确定纠错成功;
若各数据段均未验证为出错,则确定纠错失败。
4.如权利要求2所述的页表完整性保护方法,其特征在于,所述数据项配置有用于进行验证的数据项消息验证码,所述数据项消息验证码基于数据项、与数据项直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到,所述根据目标数据项以及与目标数据项直接关联的目标节点进行验证,包括:
基于所述目标数据项、与所述目标数据项直接关联的局部计数器、与所述局部计数器对应的全局计数器,计算得到所述目标数据项的数据待验证值;
比较所述数据待验证值和所述目标数据项的数据项消息验证码,验证所述目标数据项;
其中,若所述数据待验证值和所述目标数据项的数据项消息验证码一致,则所述目标数据项验证通过。
5.如权利要求4所述的页表完整性保护方法,其特征在于,所述目标数据项还配置有用于纠错的纠错码,所述纠错码基于所述目标数据项和所述目标数据项的数据项消息验证码计算得到;所述根据目标数据项以及与目标数据项直接关联的目标节点进行验证,还包括:
若所述数据待验证值和所述目标数据项的数据项消息验证码不一致,基于所述目标数据项的纠错码对所述目标数据项进行纠错;
若纠错成功,则确定所述目标数据项验证通过;若纠错失败,则确定目标数据项完整性验证不通过。
6.如权利要求5所述的页表完整性保护方法,其特征在于,所述基于所述目标数据项的纠错码对所述目标数据项进行纠错,包括:
将所述目标数据项分割为长度相等的预设个数的数据段;
结合所述目标数据项的数据项消息验证码和所述目标数据项的纠错码,依序计算各数据段的假设值,并基于所述假设值,验证各数据段是否出错;
若任一数据段验证为出错,更新所述数据段为所述假设值,并确定纠错成功;若各数据段均未验证为出错,则确定纠错失败。
7.如权利要求1所述的页表完整性保护方法,其特征在于,还包括:
在目标数据项写入新数据后,更新与所述目标数据项直接关联的局部计数器所在的目标节点和与所述目标节点内的局部计数器直接关联的数据项的数据项消息验证码;
从保护树的末端节点层的上一节点层开始,依序对保护树的各节点层中与所述目标数据项关联的目标节点和与所述目标节点内的局部计数器直接关联的节点的MAC进行更新,直至更新到保护树的根节点层。
8.如权利要求7所述的页表完整性保护方法,其特征在于,在所述更新与所述目标数据项直接关联的局部计数器所在的目标节点和与所述目标节点内的局部计数器直接关联的数据项的数据项消息验证码的步骤中:
更新与所述目标数据项直接关联的局部计数器所在的目标节点,包括:更新与所述目标数据项直接关联的局部计数器;其中,在更新后的局部计数器大于第一预设值时,更新与所述局部计数器对应的全局计数器,并赋值所述目标节点中,所有局部计数器为第一值;在更新后的全局计数器大于第二预设值时,赋值所述全局计数器为第一值,并赋值所述目标节点中,所有局部计数器为第一值;
更新与所述目标节点内的局部计数器直接关联的数据项的数据项消息验证码,包括:基于更新后的与所述目标数据项直接关联的局部计数器,更新所述目标数据项的数据项消息验证码;其中,在所述局部计数器所在的节点中,所有局部计数器赋值为第一值时,更新所述数据项中,所有与所述目标节点内的局部计数器直接关联的数据项的数据项消息验证码。
9.如权利要求7所述的页表完整性保护方法,其特征在于,所述依序对保护树的各节点层中与所述目标数据项关联的目标节点和与所述目标节点内的局部计数器直接关联的节点的MAC进行更新,包括:
在更新当前节点层时,对所述当前节点层的目标节点和与所述目标节点内的局部计数器直接关联的节点的MAC进行更新的步骤包括:
更新所述目标节点中,与所述目标数据项具有关联关系的局部计数器;其中,在更新后的局部计数器大于第一预设值时,更新与所述局部计数器对应的全局计数器,并赋值所述目标节点中,所有局部计数器为第一值;在更新后的全局计数器大于或等于第二预设值时,赋值所述全局计数器为第一值,并赋值所述目标节点中,所有局部计数器为第一值;
基于更新后的与所述目标数据项具有关联关系的局部计数器,更新所述目标节点的下一节点层中,与所述局部计数器直接关联的节点的MAC;其中,在赋值所述目标节点中,所有局部计数器赋值为第一值时,更新所述目标节点的下一节点层中,所有与所述目标节点内的局部计数器直接关联的节点的MAC。
10.如权利要求1所述的页表完整性保护方法,其特征在于,所述保护树存储在配置有纠错功能的内存中,所述MAC存储在内存的纠错码位置。
11.如权利要求1所述的页表完整性保护方法,其特征在于,所述保护树中,上一节点层中节点的局部计数器的长度大于或等于下一节点层中节点的局部计数器的长度。
12.如权利要求11所述的页表完整性保护方法,其特征在于,所述保护树中,上一节点层中节点的全局计数器的长度大于或等于下一节点层中节点的全局计数器的长度。
13.如权利要求12所述的页表完整性保护方法,其特征在于,所述保护树中,节点的长度等于计算机设备中的缓存行的长度。
14.如权利要求1所述的页表完整性保护方法,其特征在于,所述目标数据项为页表中的页表项或页目录项。
15.一种页表完整性保护装置,其特征在于,包括:
数据项确定模块,用于确定待验证的目标数据项;
验证模块,用于从保护树的根节点层的下一节点层开始,依序对保护树的各节点层中与目标数据项关联的目标节点进行验证,直至验证到保护树的末端节点层中与目标数据项直接关联的目标节点;其中,保护树中的一个节点层包括至少一个节点,一个节点中的数据至少包括:至少一个局部计数器和与所述局部计数器对应的全局计数器,其中,一个节点中的一个局部计数器用于直接关联下一节点层中的一个节点,所述末端节点层中一个节点的一个局部计数器,用于直接关联一个数据项;所述保护树中,用于验证的节点配置有用于进行验证的消息验证码MAC,所述MAC基于节点中的数据、与节点直接关联的局部计数器和与所述局部计数器对应的全局计数器计算得到;
完整性确定模块,用于基于所述目标节点的验证结果,确定所述目标数据项的完整性;
其中,所述验证模块,在验证当前节点层时,对所述当前节点层的目标节点进行验证的步骤包括:
基于所述目标节点中的数据、与所述目标节点直接关联的局部计数器、与所述局部计数器对应的全局计数器,计算得到所述待验证节点的节点待验证值;
比较所述节点待验证值和所述目标节点的MAC是否一致;
若所述节点待验证值和所述目标节点的MAC一致,则所述目标节点验证通过;
若所述节点待验证值和所述目标节点的MAC不一致,基于所述目标节点的纠错码对所述目标节点进行纠错,其中,所述纠错码为保护树中,用于验证的节点配置的用于纠错的纠错码,基于节点中的数据和节点的MAC计算得到;
若纠错成功,则确定所述目标节点验证通过;若纠错失败,则确定所述目标节点验证不通过。
16.一种计算机设备,其特征在于,包括至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器调用所述程序,以执行如权利要求1-14任一项所述的页表完整性保护方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011622330.6A CN112597488B (zh) | 2020-12-30 | 2020-12-30 | 页表完整性保护方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011622330.6A CN112597488B (zh) | 2020-12-30 | 2020-12-30 | 页表完整性保护方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112597488A CN112597488A (zh) | 2021-04-02 |
CN112597488B true CN112597488B (zh) | 2022-12-06 |
Family
ID=75206487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011622330.6A Active CN112597488B (zh) | 2020-12-30 | 2020-12-30 | 页表完整性保护方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112597488B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434876A (zh) * | 2021-06-22 | 2021-09-24 | 海光信息技术股份有限公司 | 一种数据加密方法、装置、内存控制器、芯片及电子设备 |
WO2023162151A1 (ja) * | 2022-02-25 | 2023-08-31 | 日本電気株式会社 | データ保管装置、データ保管方法及び、プログラム |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102664710A (zh) * | 2012-05-17 | 2012-09-12 | 北京航空航天大学 | 一种无线信道数据完整性保护方法 |
CN105278335A (zh) * | 2014-07-01 | 2016-01-27 | 上海日趋信息技术有限公司 | 单人流程作业指令与校验的人机交互方法 |
CN107506268A (zh) * | 2017-07-26 | 2017-12-22 | 芯海科技(深圳)股份有限公司 | 一种ic在量产阶段写入唯一id的方法 |
CN109388975A (zh) * | 2017-08-03 | 2019-02-26 | Arm有限公司 | 针对安全性和可靠性的存储器组织 |
CN110945509A (zh) * | 2017-08-03 | 2020-03-31 | Arm有限公司 | 用于存储器安全的计数器完整性树 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894079A (zh) * | 2010-07-15 | 2010-11-24 | 哈尔滨工程大学 | 变长存储块的Hash树存储器完整性保护方法 |
CN104463020B (zh) * | 2014-11-27 | 2017-08-22 | 大连理工大学 | 存储器数据完整性保护的方法 |
WO2016090621A1 (zh) * | 2014-12-12 | 2016-06-16 | 华为技术有限公司 | 数据存储的方法和装置 |
CN105069379B (zh) * | 2015-07-29 | 2017-11-21 | 哈尔滨工程大学 | 一种基于写计数器的存储器完整性保护方法 |
CN105022968B (zh) * | 2015-07-30 | 2017-12-19 | 哈尔滨工程大学 | 一种内存数据的完整性校验方法 |
-
2020
- 2020-12-30 CN CN202011622330.6A patent/CN112597488B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102664710A (zh) * | 2012-05-17 | 2012-09-12 | 北京航空航天大学 | 一种无线信道数据完整性保护方法 |
CN105278335A (zh) * | 2014-07-01 | 2016-01-27 | 上海日趋信息技术有限公司 | 单人流程作业指令与校验的人机交互方法 |
CN107506268A (zh) * | 2017-07-26 | 2017-12-22 | 芯海科技(深圳)股份有限公司 | 一种ic在量产阶段写入唯一id的方法 |
CN109388975A (zh) * | 2017-08-03 | 2019-02-26 | Arm有限公司 | 针对安全性和可靠性的存储器组织 |
CN110945509A (zh) * | 2017-08-03 | 2020-03-31 | Arm有限公司 | 用于存储器安全的计数器完整性树 |
Also Published As
Publication number | Publication date |
---|---|
CN112597488A (zh) | 2021-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8639916B2 (en) | Method of maintaining software integrity | |
US8281229B2 (en) | Firmware verification using system memory error check logic | |
CN112597488B (zh) | 页表完整性保护方法、装置和设备 | |
JP2018506784A (ja) | 認証された制御スタック | |
US10489244B2 (en) | Systems and methods for detecting and correcting memory corruptions in software | |
KR20210107148A (ko) | 암호화 컴포넌트를 갖는 메모리 디바이스 | |
EP3678025B1 (en) | Computer code integrity checking | |
US20140344643A1 (en) | Hybrid memory protection method and apparatus | |
US10621336B2 (en) | Technologies for software attack detection using encoded access intent | |
CN111143111B (zh) | Ssd映射表保护机制验证方法、装置、计算机设备及存储介质 | |
CN116108419A (zh) | 存储装置、存储系统和存储装置的操作方法 | |
CN109491951B (zh) | 一种配置数据的方法以及计算设备 | |
US20230359523A1 (en) | Memory integrity check | |
EP4300340A1 (en) | Secure boot method and apparatus | |
TW201629780A (zh) | 用以限制對非依電性記憶體寫入存取之系統及方法 | |
US20230274002A1 (en) | Firmware authenticity check | |
JP7160860B2 (ja) | メモリエラーを訂正するためのシステム及び方法 | |
US20240232436A9 (en) | Secured computer memory | |
US11514167B2 (en) | Computer system having firmware verification mechanism and firmware verification method of the same | |
US20230393739A1 (en) | Bit error management in memory devices | |
US20240193275A1 (en) | Electronic device and secure booting method thereof | |
US20230367912A1 (en) | Semiconductor chip apparatus and method for checking the integrity of a memory | |
TW202427199A (zh) | 用於映射儲存資料和元資料的記憶體裝置及方法 | |
KR20210080196A (ko) | Puf 값을 보정하는 데이터 처리 방법 및 장치 | |
CN116155503A (zh) | 可信计算系统中的计算装置及其认证方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |