针对非易失内存的数据安全处理方法、内存控制器及系统技术方案

技术编号:35819382 阅读:11 留言:0更新日期:2022-12-03 13:44
本发明专利技术公开了针对非易失内存的数据安全处理方法、内存控制器及系统,属于内存安全技术领域,包括:构建传统BMT作为Back_BMT,以其中某一层节点为叶子节点构建BMT作为Fore_BMT,其叶子节点对应的Back_BMT子树和NVM空间分别为Region_BMT和区域;将数据块B从CPU写回NVM时,从Back_BMT中读取B的计数器并更新,之后更新B所属区域R对应的Region_BMT,并将该Region_BMT加入Fore_BMT保护;对B进行加密后写入NVM;将Region_BMT加入Fore_BMT保护,包括:若Fore_BMT中不存在与其相对应的叶子节点,在从Fore_BMT中优先分配空闲或已同步的叶子节点,若分配不成功,则从Fore_BMT选取一个叶子节点Fore_Victim,根据Fore_Victim更新Back_BMT后,利用该Region_BMT更新Fore_BMT。本发明专利技术能够保障安全NVM中元数据崩溃可恢复,并降低BMT根节点更新的开销。并降低BMT根节点更新的开销。并降低BMT根节点更新的开销。

【技术实现步骤摘要】
针对非易失内存的数据安全处理方法、内存控制器及系统


[0001]本专利技术属于内存安全
,更具体地,涉及一种针对非易失内存的数据安全处理方法、内存控制器及系统。

技术介绍

[0002]非易失性内存(Non

volatile memory,NVM),因具有高密度、可字节寻址、数据持久存储等优良特性而备受内存系统研究者的关注。不同于易失性动态随机访问内存(Dynamic Random Access Memory,DRAM),NVM上存储的数据在系统断电后也不会丢失,这使得攻击者可以更容易的通过数据窃取和恶意修改等手段破坏NVM上数据的安全性,因此高效的安全保障对于NVM内存系统是必不可少的。
[0003]在安全NVM系统中,任何CPU片上的数据都被认为是安全可信的,而任何不在片上的数据都被认为是不可信的,不在片上的数据主要包括NVM内存和内存总线上的数据。数据机密性和完整性是内存数据安全的两个主要方面,在当前安全NVM设计中分别由计数器模式加密(Counter Mode Encryption,CME)和盆景默克尔树(Bonsai Merkle Tree,BMT)验证来保证。如图1所示,在CME中,每个数据缓存行都有一个对应的计数器。每当向NVM写入或从NVM读取数据缓存行时,都会通过一个唯一的一次性密码本(One Time Pad,OTP)与之异或以进行数据加密或解密,该OTP是使用该数据缓存行对应的加密计数器、数据地址和其他元素生成的。当同一个数据块进行加密时,计数器自增以保证OTP的时间唯一性。如图2中的(a)所示,BMT是一种以CME中的加密计数器作为叶子节点,通过层层hash计算构建的高级完整性树结构。BMT root节点(根节点)用于反映NVM中所有计数器的最新状态,它被存储在片上安全持久性寄存器中。从内存中读取的计数器必须先经过BMT root的验证。为了提升安全NVM的性能,现有安全NVM设计通常会在片上内存控制器中添加一个易失性的安全元数据缓存,用以缓存比较频繁访问的BMT叶子计数器节点和其它BMT中间节点。
[0004]然而,要在安全NVM中实现CME和BMT并非易事,这是因为NVM的非易失性使得内存即时恢复成为可能,这就要求安全元数据BMT(包括叶子计数器节点和其它中间节点)在系统崩溃后能正确且快速的恢复。为此,BMT的root节点的更新需要与数据写请求原子完成,以保证BMT恢复的正确性和系统的安全性。BMT的节点个数会随着NVM内存大小的增加而增加。NVM越大,BMT层次越高,BMT root的更新开销越高。任何一个数据缓存行从CPU缓存写回NVM时,都需要更新其对应的整条BMT路径直到root节点,如图2中的(b)所示,这对写性能敏感的NVM而言是非常不友好的。例如,对于16GB的安全NVM而言,BMT可达9层。当使用一个80CPU时钟周期的hash计算引擎时,需要720个CPU时钟周期以完成每次数据写请求对应的BMT root更新。对于TB级的NVM而言,BMTroot原子更新开销会更高。
[0005]目前已有一部分工作致力于实现具有安全元数据崩溃恢复保障的安全NVM系统。但是这些工作仍然存在以下一些缺点:
[0006]1)部分工作仅考虑了如何实现BMT的崩溃恢复,以及降低崩溃恢复机制带来的持久开销,忽略了BMT root原子更新的开销问题;
[0007]2)部分工作通过层数较少的热点树来减少热页面引起的BMT root更新开销,但具有较高的冷热页面识别和树节点替换开销;
[0008]3)为了实现系统快速恢复,现有工作往往需要很长的恢复时间,或者需要比较大的NVM写流量开销。
[0009]总的来说,非易失内存系统中,如何在实现快速的安全元数据崩溃恢复的前提下,降低BMT root更新的开销是有待研究的问题。

技术实现思路

[0010]针对现有技术的缺陷和改进需求,本专利技术提供了一种针对非易失内存的数据安全处理方法、内存控制器及系统,其目的在于,在保障安全NVM中元数据崩溃可恢复的前提下,降低BMT根节点更新的开销。
[0011]为实现上述目的,按照本专利技术的一个方面,提供了一种针对非易失内存的数据安全处理方法,包括:
[0012]初始化步骤,包括:构建以数据缓存行的计数器为叶子节点的默克尔树作为Back_BMT,将其中以指定层中的节点为根节点的子树作为Region_BMT,各Region_BMT对应的非易失内存空间作为一个区域;初始化另一棵默克尔树,记为Fore_BMT,其叶子节点为Region_BMT的根节点,且叶子节点总数不超过阈值N;
[0013]BMT更新步骤,包括:
[0014](S1)对于需要加入Fore_BMT保护的Region_BMT,即RBMTB,判断Fore_BMT中是否存在与其相对应的叶子节点,若是,则转入步骤(S3);否则,转入步骤(S2);
[0015](S2)判断Fore_BMT中是否存在空闲或已同步至Back_BMT的叶子节点,若是,则从这些叶子节点中为RBMTB分配一个叶子节点,并转入步骤(S3);否则,为RBMTB分配一个叶子节点作为Fore_Victim,并根据Fore_Victim更新Back_BMT后,转入步骤(S3);
[0016](S3)利用RBMTB对Fore_BMT进行更新;
[0017]以及写回步骤,包括:将数据块B从CPU写回非易失内存时,从Back_BMT中读取待写入的数据块B的计数器并更新,之后更新数据块B所属区域R对应的Region_BMT,并通过BMT更新步骤将该Region_BMT加入Fore_BMT保护;利用更新后的计数器对数据块B进行加密,并将所得密文写入非易失内存。
[0018]随着系统的运行,系统在不同时间段内,从CPU缓存写回内存的数据个数和数据地址并不相同,并且某个时刻应用写回的数据块并不会占据所有内存空间,特别是对TB级别的NVM而言,用户写回的私密数据大多数时候只占很小比例的内存;本专利技术采用传统BMT的构建方式构建了Back_BMT,并在此基础上,以区域(通常为多个缓存行大小)为分配粒度,构建了Fore_BMT,用于存储当前系统最近写回的数据块所对应的计数器,并随着用户的内存写请求仅动态构建和修改Fore_BMT,而不需要在每次写回数据时都对整个Back_BMT进行更新,由此尽可能地使得Fore_BMT只覆盖当前写前请求涉及访问的内存区域,有效降低了BMT层次,在保障安全NVM中元数据崩溃可恢复的前提下,加速了BMT root的更新。
[0019]进一步地,本专利技术提供的针对非易失内存的数据安全处理方法,还包括:在片上持久性寄存器中维护指定数量的缓存行计数器;
[0020]并且,写回步骤中,在从Back_BMT中读取待写入的数据块B的计数器之前,还包括:
[0021](T1)从持久性寄存器中查找数据块B的计数器,若命中,则转入步骤(T4);否则,转入步骤(T2);
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对非易失内存的数据安全处理方法,其特征在于,包括:初始化步骤,包括:构建以数据缓存行的计数器为叶子节点的默克尔树作为Back_BMT,将其中以指定层中的节点为根节点的子树作为Region_BMT,各Region_BMT对应的非易失内存空间作为一个区域;初始化另一棵默克尔树,记为Fore_BMT,其叶子节点为Region_BMT的根节点,且叶子节点总数不超过阈值N;BMT更新步骤,包括:(S1)对于需要加入Fore_BMT保护的Region_BMT,即RBMTB,判断Fore_BMT中是否存在与其相对应的叶子节点,若是,则转入步骤(S3);否则,转入步骤(S2);(S2)判断Fore_BMT中是否存在空闲或已同步至Back_BMT的叶子节点,若是,则从这些叶子节点中为RBMTB分配一个叶子节点,并转入步骤(S3);否则,为RBMTB分配一个叶子节点作为Fore_Victim,并根据Fore_Victim更新Back_BMT后,转入步骤(S3);(S3)利用RBMTB对Fore_BMT进行更新;以及写回步骤,包括:将数据块B从CPU写回非易失内存时,从Back_BMT中读取待写入的数据块B的计数器并更新,之后更新数据块B所属区域R对应的Region_BMT,并通过所述BMT更新步骤将该Region_BMT加入Fore_BMT保护;利用更新后的计数器对数据块B进行加密,并将所得密文写入所述非易失内存。2.如权利要求1所述的针对非易失内存的数据安全处理方法,其特征在于,还包括:在片上持久性寄存器中维护指定数量的缓存行计数器;并且,所述写回步骤中,在从Back_BMT中读取待写入的数据块B的计数器之前,还包括:(T1)从所述持久性寄存器中查找数据块B的计数器,若命中,则转入步骤(T4);否则,转入步骤(T2);(T2)从所述持久性寄存器中选取一个待替换的缓存行Reg_Victim,并从Back_BMT中读取数据块B的计数器所在的叶子节点对Reg_Victim进行原子替换;(T3)利用Reg_Victim更新对应的Region_BMT,并利用所述BMT更新步骤将该Region_BMT加入Fore_BMT保护;(T4)对持久性寄存器中数据块B的计数器进行更新,利用更新后的计数器对数据块B进行加密,将所得密文写入所述非易失内存后,结束所述写回步骤。3.如权利要求1或2所述的针对非易失内存的数据安全处理方法,其特征在于,还包括:节点恢复步骤,包括:对于Back_BMT或Fore_BMT中丢失的节点,若为叶子节点,则利用ECC在系统崩溃恢复阶段对其进行恢复;若为中间节点,则将其恢复推迟到系统重启后检测到重放攻击时进行;恢复时利用所访问路径上当前的计数器重新计算该路径上各节点的哈希值,直至根节点,将所计算的根节点与片上存储的根节点进行比较,若二者一致,利用所计算的节点值对该路径上的中间节点进行恢复;若二者不一致,则判定系统发生了真正的重放攻击。4.如权利要求3所述的针对非易失内存的数据安全处理方法,其特征在于,还包括:超前同步步骤,包括:识别Fore_BMT中在连续的M次内存写请求中都未被访问的叶子节点,并将其添加到同步队列中;当BMT引擎未被前台内存读写请求占用时,利用所述BMT引擎将所述同步队列中的Fore_BMT叶子节点同步到Back_BMT的根节点,若同步过程中发生内存
访问,则同步终止;其中,M为预设正整数。5.如权利要求4所述的针对非易失内存的数据安全处理方法,其特征在于,所述初始化步骤还包括:建立叶子节点状态表,用于记录Fore_BMT中各叶子节点的状态信息;所述状态信息包括叶子节点对应的区域编号、上次更新时系统的内存写请求总数以及state标记位,所述state标记位用于指示叶子节点是否空闲以及是否被同步至Back_BMT;并且,所述超前同步步骤中,通过定期扫描所述叶子节点状态表的方式,识别在连续的M次内存写请求中都未被访问的Fore_BMT叶子节点。6.如权利要求5所述的针对非易失内存的数据安全处理方法,其特征在于,所述BMT更新步骤的(S2)中,若Fore_BMT中不存在空闲或已同步至Back_BMT的叶子节点,则为RBMTB分配一个叶子节点作为Fore_Victim的方式为:从所述叶子节点状态表中随机读取K个连续的状态信息条目,并从中识别出最久未被更新的Fore_BMT叶子节点,将其作为Fore_Victim分配给RBMTB;K为预设正整数。7.如权利要求6所述的针对非易失内存的数据安全处理方法,其特征在于,所述初始化步骤还包括:建立区域索引表,用于记录所述非易失内存中各区域的保护信息;所述保护信息包括:用于指示区域是否被Fore_BMT保护的Fore/Back标识位,以及区域对应的Fore_BMT叶子节点顺序;并且,所述BMT更新步骤的(S1)中,对于需要加入Fore_BMT保护的Region_BMT,即RBMTB,判断Fore_BMT中是否存在与其相对应的叶子节点的方式包括:确定RB...

【专利技术属性】
技术研发人员:王芳冯丹雷梦雅帅晓雨曹郁超
申请(专利权)人:深圳华中科技大学研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1