存储器内容的基于密码的初始化的制作方法

文档序号:13342630阅读:151来源:国知局



背景技术:

出于分析相对大的数据集(通常被称为“大数据”)的目的,计算机系统具有越来越大的主存储器。一种类型的存储器是易失性存储器,例如动态随机存取存储器(dram)。在功率损耗的事件中,易失性存储器丢失其内容。此外,诸如dram之类的某些易失性存储器的存储器单元,常常被刷新以免数据丢失。另一个类型的存储器是非易失性存储器(nvm),其在功率损耗的事件中保持其数据。nvm的存储器单元保持它们所存储的数据而无需被刷新。

存储器可以位于电子系统的不安全的区域。如此,被存储在存储器中的数据可以被加密以防止对底层信息进行未授权的存取。

附图说明

图1是根据示例实现的计算机系统的示意图。

图2a是根据示例实现的由计算机系统的存储器控制器执行的用于将内容存储在系统的加密的存储器中的操作的示出。

图2b是根据示例实现的由存储器控制器执行的用于从加密的存储器中读取内容的操作的示出。

图3是根据示例实现的由存储器控制器执行的用于将被存储在存储器中的内容碎片化的操作的示出。

图4是根据示例实现的描述用于对存储器内容进行初始化的基于密码的技术的流程图。

图5a是根据示例实现的用于从加密的存储器中读取内容的操作的示出。

图5b是根据示例实现的用于对存储器的区域进行初始化的操作的示出。

图6是根据示例实现的用于将存储器内容碎片化的基于密码的技术的流程图。

图7是根据示例实现的初始化向量(iv)的示出。

具体实施方式

计算机系统可以采用措施来保护与在系统上执行的应用相关联的数据不被暴露于内部或外部的对手。用于保护来自一个应用的数据不被另一个应用可视的一个方法包括在单元被分配至新的应用之前清除,或者“置零”存储器的单元(例如,存储器的页)。以该方式,计算机系统可以通过将零写入单元的所有可编址的位置来将给定的存储器单元置零。由于置零,存储器的新分配的单元不包括由单元先前被分配至的其它应用留下的数据痕迹。

非易失性存储器(nvm)越来越多地被用作易失性存储器的替代。作为示例,nvm包括闪存、忆阻器、相变存储器、铁电随机存取存储器(fram)以及磁阻随机存取存储器(mram),仅举几例。一般而言,nvm可以具有优于易失性存储器的优点。例如,nvm与易失性存储器相比可以较可扩展,因此提供较高的存储密度。其它优点可以是nvm单元不用刷新(因此不消耗刷新功率);在功率损耗时nvm不丢失其内容;并且nvm允许有持久性数据的可能性。

然而,伴随使用置零来保护基于nvm的计算机系统中的应用数据的可能的挑战是nvm可能具有相对大的写入延时(即,nvm设备与易失性存储器设备相比可能用相对较长的时间来存储数据)。因此,例如,与将易失性存储器的页置零相比将nvm页置零可能消耗较多的时间。将nvm置零中的另一个可能的挑战是在单元不在可用之前nvm单元可能被写入有限数量的次数。因此,以上所描述的置零方法可能影响nvm的寿命。

根据示例实现,存储器控制器被构建为改变与密钥一起使用的随机数作为解密过程的一部分以解密来自区域的内容,而不是向给定的存储器区域写入零来对区域进行初始化。因此,实际上,存储器控制器“碎片化”包括在被初始化的存储器区域中的内容,不真正向区域写入。

较具体地说,根据示例实现,计算机系统包括被构建为将内容存储在加密的存储器中并且从存储器取回内容的存储器控制器。以该方式,存储器控制器对将被存储在存储器中的明文数据进行加密并且对从存储器取回的加密的数据进行解密以生成相应的明文数据。

根据示例实现,出于对区域进行初始化的目的,存储器控制器改变用于对被存储在给定存储器区域(例如,具有与高速缓存行对齐的边界的区域)中的数据进行加密的随机数值。较具体地说,存储器控制器基于所存储的随机数值和密钥(例如,与存储器控制器相关联的密钥)对被存储在存储器的给定区域中的明文数据进行加密。就此而言,存储器控制器使用密钥和随机数值以便1.)出于将内容存储在存储器区域中的目的对明文数据进行加密;并且2.)出于从区域读取内容的目的对从存储器区域取回的加密的数据进行解密。每次数据被写入存储器区域中,存储器控制器改变随机数值。根据示例实现,出于另一个目的,存储器控制器改变随机数值:响应于用于对给定的存储器区域进行初始化的请求(例如,用于对区域进行碎片化或者对区域进行置零的请求),存储器控制器改变随机数值以便通过防止区域的内容被恢复来有效地对区域进行初始化。

作为较具体的示例,图1描述了根据示例实现的计算机系统100。计算机系统100包括实际的硬件和实际的机器可执行指令或者“软件”。以该方式,计算机系统100可以包括如一个或多个受信任的处理器124、存储器控制器130以及存储器164的这样的硬件。作为示例,机器可执行指令可以包括当由一个或多个处理器(例如,受信任的处理器124)执行时形成操作系统的指令;一个或多个设备驱动器;一个或多个应用等。根据示例实现,存储器164可以是nvm,但是根据进一步的示例实现,存储器164可以是易失性存储器。

计算机系统100包括受信任的、安全区域120,其包括受信任的组件,例如,受信任的处理器124和存储器控制器130。因为这些组件是受信任的,所以受信任的处理器124与存储器控制器130之间的通信不加密。一般而言,受信任的处理器124生成针对存储器164的存储器请求126,并且这些请求由存储器控制器130处理。

例如,存储器请求126可以是用于从存储器164的特定区域(例如,与高速缓存行边界对齐的区域)读取数据的读取请求,并且读取请求识别区域的地址。作为另一个示例,存储器请求126可以是用于将明文数据写入存储器164的特定区域的写入请求,并且写入请求包括明文数据并且识别区域的地址。作为另一个示例,存储器请求126可以是初始化请求,例如,碎片化请求,用于对存储器的特定区域进行初始化以便被初始化的区域可以被分配至应用的。

以该方式,初始化请求可以是针对存储器控制器130的用于将预先确定的数据模式(例如,所有零)存储在存储器的区域中的请求(例如,填零请求)。初始化请求可以是针对存储器控制器130的用于将存储器的区域的内容进行碎片化的请求,即,用于在请求时更改当前被存储在区域中的内容以便内容可以不被恢复的请求。

初始化请求可以许多不同的方式被传递至存储器控制器130,取决于特定的实现。例如,根据一些实现,可以通过受信任的处理器124执行使得使用系统呼叫用户级处理将虚拟地址传递至操作系统的内核的机器可执行指令将初始化请求与存储器控制器130进行通信;并且响应于系统呼叫,操作系统内核可以将即将被初始化的页的物理地址写入存储器控制器130的存储器映射的输入/输出(i/o)寄存器131。应该注意的是,可以使用这样的机制,代替将应用直接写入到寄存器131,因为这样的应用存取可以引入安全弱点。

如图1中所描述的,存储器控制器130还可以向受信任的处理器124提供响应128。作为示例,响应128可以包括针对向存储器164的读取请求的响应,该响应包括被读取的明文数据。响应128还可以包括写入和碎片化请求已由控制器130处理的由存储器控制器130进行的确认。

一般而言,响应于由诸如受信任的处理器124之类的计算机系统100的请求者提供的请求,存储器控制器130控制数据流入和流出存储器164。其它请求者可以包括其它受信任的处理器、直接存储器存取(dma)控制器、图形控制器等。

存储器控制器130将加密数据155与存储器164进行通信,存储器164与用于传递数据155的存储器总线162一起,可以位于计算机系统100的被认为是不受信任的或者不安全的区域160。根据示例实现,为了处理包含将数据写入存储器164或者从存储器164读取数据的请求126,存储器控制器130在存储器总线162上生成适当的总线信号。例如,为了将数据写入存储器164,存储器控制器130提供将总线操作识别为写入操作的控制信号、表示加密数据155被存储到其中的存储器120的地址的地址信号以及表示加密数据155的数据信号。存储器164通过将数据存储在与地址相关联的存储器单元中来进行响应。

为了从存储器164中读取数据,存储器控制器130向存储器总线162提供信号,例如,将总线操作识别为读取操作的控制信号以及表示从其取回加密数据155的存储器164的物理地址的地址信号。存储器130通过向存储器总线162提供数据信号来响应,该数据信号表示被存储在与地址相关联的存储器单元中的加密数据155。

根据示例实现,存储器控制器130可以是集成电路(ic)。此外,根据示例实现,存储器控制器130可以是ic的一部分,其包括与受信任的处理器124分离的桥(例如,北桥)。根据进一步的示例实现,存储器控制器130可以是包括受信任的处理器124的半导体封装的一部分。根据一些实现,受信任的处理器124和存储器控制器130可以是受信任的平台单元(tpm)的一部分。

出于对被传递至存储器164的数据进行加密以及对从存储器164接收到的数据进行解密的目的,存储器控制器130包括密码引擎136。根据示例实现,出于对数据进行加密和解密的目的,密码引擎136使用具有操作的计数器模式的分组密码(例如,基于高级加密标准(aes)的密码)。如图1中所描述的,根据示例实现,控制器130进一步包括碎片化引擎150,出于对存储器164的区域进行初始化(例如,碎片化)的目的,该碎片化引擎对初始化(例如,碎片化请求)进行响应,如本文中进一步所描述的。

在存储器控制器的其它特征之中,存储器控制器130可以包括本地存储器140,其存储随机数值144,该随机数值出于向和从存储器164存储和取回内容的目的出于对数据进行加密和解密的目的而被使用,如本文中进一步所描述的。根据一些实现,存储器140可以是易失性存储器,例如,静态随机存取存储器(sram)。此外,根据示例实现,出于在电力故障的事件中允许从存储器164恢复内容(使用被存储在nvm中的随机数值)的目的,存储器控制器130可以将存储器140的内容备份至安全区域120的nvm(未示出)。

图2a是根据示例实现的由存储器控制器130执行的用于将内容存储在存储器164中的操作的示出200。结合图1参考图2a,根据示例实现,密码引擎136使用计数器模式中的基于aes的分组密码,该计数器模式继而使用具有相关联的计数器值的计数器,该计数器值在本文中被称为“初始化向量(iv)206”。为了与被指向存储器164的与高速缓存行边界对齐的区域(本文中被称为“高速缓存行区域”)的写入请求相关地将内容存储在存储器164中,密码引擎136基于密钥204、高速缓存行地址202以及iv206对被提供作为请求的一部分的明文数据201进行加密。

根据示例实现,密钥204是与存储器控制器130相关联并且出于对其所有数据进行加密和解密的目的由存储器控制器130使用的密钥。根据进一步的示例实现,密钥可以是与存储器140的特定区域相关联的密钥,并且如此,存储器控制器130可以基于正在被存取的特定存储器区域选择密钥。iv206取决于由高速缓存行计数器210提供的计数器值,该计数器与关联于写入操作的高速缓存行区域相关联。以该方式,根据示例实现,存储器140存储多个计数器210,其中,每个计数器210与存储器164的相应的高速缓存行区域相关联。

根据示例实现,每当存储器控制器130将数据写入给定的高速缓存行区域,密码引擎136使相应的高速缓存行计数器210递增以便递增相应的iv206。计数器210的递增在图2a中通过密码引擎201的计数器递增输出207-a来描述。以该方式,根据示例实现,密码引擎136具有计数器递增输出207,当存储器控制器对数据进行加密以用于存储在存储器164的相关联的高速缓存行区域中时,该计数器递增输出使得相关联的计数器201递增。根据示例实现,密码引擎136基于密钥204、高速缓存地址202以及iv206对明文数据201进行加密以便生成由存储器控制器130向存储器164写入的加密数据214。

图2b描述了由存储器控制器130执行的用于响应于将区域作为目标的读取请求从高速缓存行区域取回内容的操作240。结合图1参考图2b,如果新数据不被写入高速缓存行区域,则iv206,即,计数器210的值不改变。因此,为了从存储器164取回对应于高速缓存行区域的数据,出于产生相应的明文数据250的目的,密码引擎136应用用于对数据进行加密(在将加密数据存储在区域中之前)的相同的iv206来对从存储器164取回的数据244进行解密。

图3总体上描述了响应于接收到碎片化命令301以将存储器164的给定的页进行碎片化的由存储器控制器130执行的操作300。页与多个高速缓存行区域相关联。结合图1参考图3,代替将零或者其它内容写入存储器164的给定的页,碎片化引擎150改变对应于被碎片化的页的高速缓存行区域的高速缓存行计数器310(例如,并且改变相应的iv206)。以该方式,图3描述了碎片化引擎150提供使与正在被碎片化的页相关联的计数器311递增的计数器递增输出311;并且图3还描述了不与正在被碎片化的页相关联的其它高速缓存行计数器312。通过改变计数器值,当存储器控制器130不再存储用于对页的内容进行解密的iv206时,被碎片化的页的内容被有效地呈现为“垃圾”。

因此,参考图4,根据示例实现,技术400包括接收(框404)用于对存储器的区域进行初始化的请求,其中,被存储在区域中的内容至少部分地基于一个或多个所存储的随机数值和密钥被加密。依照框408,技术400包括响应于请求,执行存储器的基于密码的初始化,其包括更改所存储的随机数值来对存储器的区域进行初始化。

结合图1参考图5a,因此,根据示例实现,响应于读取请求514,存储器控制器510应用所存储的随机数值516作为密码515的一部分来对读取请求514以存储器535的区域524中的加密数据520作为目标的进行解密以便提供相应的解密内容530。结合图5a参考图5b,响应于接收到用于对存储器区域524进行初始化的初始化请求554,存储器控制器510更改所存储的随机数值516来生成被更改的随机数值560。由于随机数值的该更改,区域524中的加密数据520可能不能被恢复。

参考图6,根据示例实现,技术600包括接收(框604)用于对被存储为存储器的页中的加密数据的内容进行碎片化的请求。页与一组向高速缓存行边界对齐的区域相关联。技术600包括改变(框608)与该组向高速缓存行边界对齐的区域相关联的初始化向量以便将内容碎片化。

根据示例实现,初始化请求可以是零页或者填零请求,并且如此,计算机系统100的操作系统可以期望从被初始化的页中返回零块(而不是返回被碎片化的“垃圾”)。因此,根据一些实现,存储器控制器130可以在不真正与存储器通信的情况下向操作系统返回零块。针对这些实现,存储器控制器可以使用高速缓存行区域计数器来追踪哪些页被碎片化。较具体地说,根据示例实现,高速缓存行区域计数器可以提供具有诸如图7中所描述的格式之类的格式的iv700。

参考图7,iv700包括主计数器部分702和次计数器部分704。一般而言,iv700的主计数器部分702追踪页并且针对存储器的不同的页而递增;并且iv700的次计数器部分704对应于被递增以生成针对页的高速缓存行区域的不同的iv或者随机数值的计数器位。

根据示例实现,存储器控制器130将次计数器部分704设置为预先确定的位值以便指示相应的页是否为被碎片化的页。例如,根据一些实现,存储器控制器130可以将次计数器部分704置零,或者将次计数器部分704的所有位设置为零。因此,针对这些示例实现,当存储器控制器130将给定的页碎片化时,存储器控制器130可以清除次计数器部分704;并且随后,当存储器控制器对给定的页进行存取并且确定其相关联的次计数器部分704为零时,则存储器控制器向操作系统返回零块。

根据一些实现,存储器控制器130使被碎片化的高速缓存行区域无效。例如,根据一些实现,在碎片化命令之后可以执行pcommit和sfence指令。针对该方法假设寄存器131(图1)的地址范围被声明为持久性的,并且当所有无效已被公布时存储器控制130将碎片化命令写入标记为刷新。根据进一步的示例实现,存储器控制器130可以循环持续地读取寄存器131直到寄存器131返回零值。在发送出所有无效之后存储器控制器130然后可以将被存储在寄存器131的值设置为零。这样的等待循环不生成存储器总线162上的任意通信量。

可以预期在所附权利要求的范围之内的其它实现。例如,虽然如本文中所描述的将计算机系统的主存储器碎片化,但是本文中所描述的碎片化技术和系统可以被应用于其它存储器。例如,根据进一步的示例实现,存储器可以是存储系统的存储装置存储器。作为另一个示例,根据进一步的示例实现,密码引擎136可以使用另一个基于分组的加密方案,该加密方案使用iv,例如,加密块链(cbc)加密方案或者密文反馈(cfb)加密方案。

虽然已关于有限数量的实施例对本发明进行描述,但是本领域技术人员,得益于本公开,将由此认识到许多修改和变型。本发明旨在所附权利要求覆盖落在本发明的真正精神和范围内的所有这样的修改和变型。

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