基于去重复的数据安全性的利记博彩app

文档序号:10598359阅读:293来源:国知局
基于去重复的数据安全性的利记博彩app
【专利摘要】提供数据安全性包括:响应于对存储装置写入数据内容的请求,基于数据内容生成加密的数据内容;尝试获得对存储装置中的加密的数据内容的引用;在获得对加密的数据内容的引用的情况下,修改转换行以引用对存储装置中的加密的数据内容的引用;以及在未获得加密的数据内容的引用的情况下:将加密的数据内容存储在新位置处;获得对存储在新位置处的加密的数据内容的引用;将转换行修改为引用对新位置处存储的加密的内容的引用。
【专利说明】基于去重复的数据安全性
[0001]其他申请的交叉引用
本发明申请要求2014年I月15日提交的美国临时专利申请号61/927,914的优先权,标题为“基于去重复的存储器加密”,其基于所有目的通过引用并入本文。
【背景技术】
[0002]安全计算机系统需要安全存储器来防止对计算机主存储器具有访问权的入侵者攻击。例如,在所说的冷引导攻击中,攻击者能够从主存储器中的动态随机存取存储器(DRAM)中提取数据内容而存储器不会丢失其内容。因此,如果该存储器中存储有敏感的明文信息,则安全性受到损害。双端口DRAM意味着攻击者能够在系统运行期间观察到DRAM中的读和写业务量。使用非易失性随机存取存储器(NVRAM)来实现主存储器意味着,数据保留在主存储器中,且易受攻击,所需的工作量比冷引导攻击少。
[0003]目前,常规的流加密被认为不适于安全存储器加密。这是因为常规的流加密技术需要为利用伪随机值的加密设置种子以防止对同一个密文文本的相同数据加密的两个实例。没有此措施,攻击者能够通过观察相同密文出现的次数来进行频率分析攻击。存储此种子或初始化向量(IV)的开销以及设置加密或解密以便使用此IV的开销典型地需要相对较大数据量作为加密单元。例如,使用16字节IV意味着4千字节的常规页大小的粒度下的加密产生仅0.1%的IV空间开销。但是,如果加密单元是高速缓存行,正如处理器高速缓存与主存储器之间所需的,将对于每次加密或解密动作的取回和设置将有非常大的成本。例如,常规高速缓存行大小是64字节,因此16字节IV将导致25%的空间开销。
[0004]安全数据完整性也因相似的原因也需要大单元。具体来说,常规方法要求每个数据单元128位消息认证码(MAC)。因此,使用例如页的大单元平摊了此MAC的开销,但是除了上面标识的IV开销外,高速缓存行单元还将引起非常大的开销。
[0005]在计算机的标准安全性/线程模型中,假定处理器芯片本身设为安全的且能够限制攻击者对此硅的修改以及访问驻留在处理器芯片内的受保护的数据。(例如,处理器芯片能够设计成在存在尝试修改芯片或执行不支持的操作的情况下销毁或删除其内容。)具体来说,存储在L1、L2等至最后一级高速缓存中的数据能够以明文存储而不会有暴露或受损的风险,从而使得处理器能够对数据操作而无需对每次操作解密数据然后在生成结果之后即刻将其重新加密。此外,驻留在处理器芯片的高速缓存上的其他元数据可以相似地通过此芯片的物理安全性以及其安全设计来予以保护。但是,此类数据的量因处理器芯片上的物理局限性,包括功率和成本限制,大大地受限于主存储器中可用数据量的一部分。例如,目前芯片上高速缓存状态典型地限制于数十兆字节,而主存储器可以容易地达到数十吉字节或更大,大1000的系数。另一方面,存储在处理器芯片的数据假定为可被攻击者访问,例如通过移除DRAM本身或耦合到至DRAM的第二端口,正如早前描述的。
[0006]因此,存在需要对存储器行单元高效地加密和解密同时提供数据的强机密性和完整性。
【附图说明】
[0007]下文详细描述和附图中公开了本发明的多种实施例。
[0008]图1是图示支持去重复(deduplicated)加密的数据内容的系统的实施例的框图。
[0009]图2A和图2B是图示多个去重复域的实施例的数据结构示意图。
[0010]图3是图示用于将数据写入存储装置的过程的实施例的流程图。
[0011]图4是图示用于从存储装置中的位置读取数据的过程的实施例的流程图。
[0012]图5是图示用于从高速缓存驱出数据行的实施例的流程图。
[0013 ]图6是图示包括初始化向量(I V)的示例数据结构的示意图。
[0014]图7A是图示用于在常规实现中支持结构化存储器的元数据的示例的数据结构示意图。
[0015]图7B是图示用于在安全实现中支持结构化存储器的元数据的示例的数据结构示意图。
【具体实施方式】
[0016]本发明能够采用多种方式实现,包括作为过程;装置;系统;组成物;包含在计算机可读存储介质上的计算机程序产品;和/或处理器,如配置成执行耦合到处理器的存储器上存储和/或其提供的指令的处理器。在本说明书中,这些实现或本发明可采用的任何其他形式可以称为技术。一般来说,在本发明范围内,可以改变所公开的过程步骤的次序。除非另行指明,否则如描述为配置成执行任务的处理器或存储器的组件可以实现为在给定时间临时性地配置成执行该任务的通用组件或制造成执行该任务的特定组件。正如本文使用的,术语“处理器”是指配置成处理数据,如计算机程序指令的一个或多个设备、电路和/或处理核。
[0017]本发明的一个或多个实施例的详细描述在下文中是结合图示本发明原理的附图来给出的。本发明是结合此类实施例来描述的,但是本发明不限于任何实施例。本发明的范围仅由权利要求来限制,并且本发明涵盖多种替代、修改和等效物。在下文的详细描述中,阐述许多具体细节,以便透彻地理解本发明。这些细节是出于示例的目的提供的,并且在没有这些具体细节的其中一些或全部的情况下,本发明可以根据权利要求来实施。为了简明的目的,与本发明相关的技术领域中公知的技术材料不予详细描述,以不致使本发明非必要地晦涩难懂。
[0018]公开一种使用去重复存储装置的加密和解密。在一些实施例中,响应于对存储装置写入数据内容的请求,基于数据内容生成加密的数据内容。尝试获得对存储装置中的加密的数据内容的引用。在获得对加密的数据内容的引用的情况下,修改转换行以引用存储装置中的加密的数据内容的引用。在未获得对加密的数据内容的引用的情况中,将加密的数据内容存储在新位置处;获得对存储在新位置处的加密的数据内容的引用;以及将转换行修改为引用对存储在新位置处的加密的数据内容的引用。
[0019]图1是图示支持去重复(deduplicated)加密的数据内容的系统的实施例的框图。在此示例中,系统100包括连接到存储装置112的处理器芯片102。处理器芯片102具有多个电路组件,包括连接到分级的高速缓存106的一个或多个处理器核104。本示例中,图示三级高速缓存分级结构,但是可以使用具有不同级的高速缓存的其他高速缓存分级结构。在高速缓存内,将数据和代码存储为未加密的明文文本。高速缓存(确切地来说,最后一级高速缓存(LLC) 109)连接到存储器控制器108,存储器控制器108包括一个或多个通信接口和加密/解密引擎(EDE)llO。
[0020]存储器控制器连接到存储装置112。在多种实施例中,存储装置112包括一个或多个存储器设备(也称为主存储器),如动态随机存取存储器(DRAM)、静态动态随机存取存储器(SRAM)、相变存储器(PCM)、随机存取存储器(RAM); —个或多个辅助存储设备,如非易失性随机存取存储器(NVRAM)、光盘或磁盘、闪存驱动器;或一个或多个主存储器设备与辅助存储设备的组合。出于说明的目的,下文延伸性地论述使用物理存储器实现的存储装置的示例,但是这些技术也可应用于使用辅助存储设备实现的存储装置,或存储器和辅助存储装置的组合。
[0021 ] 在此示例中,存储器控制器108和存储装置112—起实现结构化存储器,如HicampSystems公司(Menlo Park , Cal if ornia)的分级式不可变内容可访问存储器处理器(HICAMP?)。可以使用其他适合的基于数据行的存储器体系结构。每个数据行配置成存储在该数据行被取消分配并重新分配以新内容之前保持不变的内容。结构化去重复存储器,如HICAMP的实现和操作对于本领域技术人员是公知的。
[0022]如图所示,存储装置的一部分包括小(例如,大约几个字节到几百字节)数据行114的阵列。每个数据行由数据行标识符(PLID)来寻址。在一些实施例中,每个数据行含有在该数据行的有效期(life)上保持不变的内容。换言之,一档数据行被创建且填充以数据,则在该存储器被取消分配并重新分配以含有不同内容之前,其内容不会改变。在一些实施例中,对每个数据行的数据内容去重复。换言之,每个数据行含有唯一的数据内容。
[0023]在本示例中,每个数据行包含加密的数据内容块。利用间接级别访问存储且加密的数据行,从而允许两个或更多个单独的地址引用相同的实际数据行。再者,加密的数据行是去重复的。下文描述间接访问和去重复的详情。在一些实施例中,严格的去重复并非必需的,以及在某些情况下允许不同的数据行存储相同的内容。潜在重复的数据行保持与去重复的数据行分离。
[0024]在一些实施例中,使用转换行提供用于访问数据行的间接级别。在所示的示意图中,存储装置112的一部分存储转换行116。这些转换行(也称为间接行)形成包含特定内容(例如,页的内容)的一组有序数据行的逻辑组织。转换行说是引用一组数据行,这意味着间接行能够包含这些数据行的地址或标识符(例如,数据行的PLID)或以其他方式与其对应的一组数据行关联。在所示的示例中,转换行包含多个项,这些项包含对应数据行的PLID值。因为数据行是去重复的,所以转换行对于相同的数据内容引用相同的数据行。例如,转换行I和2都引用具有I的PLID的数据行。
[0025]本示例和其他示例中所示的转换行的格式、大小和数量仅是出于说明的目的,并且在其他实施例中可以有所变化。例如,在一些实施例中,每个数据行是64字节,并且每个间接行是256字节(包含64个4字节项,每个项包含可共享的数据行的标识符(或地址))。
[0026]虽然下文示例中论述了固定大小,但是在一些实施例中,可变大小是允许的(例如,一种系统可以支持多种模式,其中单元大小对于不同模式有所不同的)。在一些实施例中,数据行和/或转换行中包含附加元数据。在一些实施例中,这些数据行组织在内容目录中,其中可通过在目录中查找其内容来寻址这些数据行。
[0027]在一些实施例中,该存储装置作为多个分段被访问,其中每个分段是逻辑上连续的数据行序列,并且构造为数据行的有向无环图(“DAG”)。分段表将每个分段映射到表示DAG的根的PLID。通过分段标识符(“SegID”)来标识和访问分段。处理器中的专用寄存器(也称为迭代寄存器)允许对存储在这些分段中的数据进行高效访问,包括从DAG加载数据、分段内容的迭代、预提取和更新。
[0028]在所示的示例中,数据行的内容包含加密的数据内容,表示为En(X),其中X是未加密的数据内容。因为每个数据行的数据内容是去重复且唯一的,所以特定内容段(例如,“GOOD”的加密版本或En( "GOOD"))仅在数据行中出现一次。因为加密的块的去重复,对块加密的常见攻击,确切地来说,频率分析攻击,将不会成功,因为在大多数情况中,给定数据内容段的一个副本被存储。此去重复意味着根据显示加密介质扩充(EME)对于“唯一消息”是安全的延伸研究,可以将如加密介质扩充(EME)的块加密方法应用于数据块。在此应用中,去重复机构确保了数据行包含唯一消息作为内容。
[0029]在一些实施例中,还将转换行加密。下文描述如何加密、解密和访问数据行内容和/或转换行的详情。
[0030]存储器控制器使用基于内容目录的技术支持存储器去重复,下文对此进行更详细的描述。按需加载、回写转换行和数据行或将其从高速缓存106中驱出。存储器控制器中的EDE将从高速缓存106获得且要存储在存储装置112的数据加密,并将从存储装置112取回且要传输到高速缓存106的数据解密。
[0031]如上文描述的存储器控制器和EDE的模块可以作为一个或多个处理器上执行的软件组件来实现,作为设计成执行某些功能或其组合的如可编程逻辑设备和/或专用集成电路的硬件来实现。在一些实施例中,这些模块可以通过可存储在非易失性存储介质(如光盘、闪存存储设备、移动硬盘等)中的软件产品的形式来实施,包含使得计算机设备(如个人计算机、服务器、网络设备等)实现本发明申请的实施例中描述的方法的多个指令。这些模块可以在单个设备上实现或分布在多个设备上。这些模块的功能可以彼此合并或进一步拆分成多个子模块。
[0032]图2A和图2B是图示多个去重复域的实施例的数据结构示意图。下文论述图2A和图2B中所示的数据结构的详情。
[0033]图3是图示用于将数据写入存储装置的过程的实施例的流程图。过程300可以在如100的系统上以及具体地由存储器控制器108来执行。
[0034]在302处,接收要将某个数据内容写入到存储装置的请求。在一些实施例中,该请求由处理器发出并被存储器控制器接收。在一些实施例中,该请求指定主存储器中的物理地址,并且响应于该请求,该存储器控制器通过查询映射表,应用转换功能或任何其他适合的技术将该物理地址转换成对转换行的引用。例如,该请求可以包含将数据内容“hello”写入到物理地址1100。存储器控制器将执行转换,并确定具有与此物理地址对应的标识符110的转换行的第一项。
[0035]在304处,响应于该请求,基于正在写入的数据内容生成加密的内容。在一些实施例中,将加密函数En (X)应用于数据内容X以生成加密的输出。在本示例中,加密的内容表示为En(〃hell0〃)Jn(X)可能需要如安全性密钥和/或初始化向量(IV)值的附加输入参数,这些附加输入参数是按需获得的。在一些实施例中,安全性密钥存储在如特定寄存器的已知位置中。在使用多个域的实施例中,可以为对于当前域选择适合的密钥。
[0036]可以实现多种加密技术。在一些实施例中,EDE执行确定加密函数以生成加密的数据内容。确定块加密方案(相对于概率加密方案)总是对于给定输入数据块产生相同的密文文本。对于数据行,无需单独的加密密钥或IV,因为数据行是去重复的,且存储不同的加密的结果,并且由此不易受到频率分析攻击。在一些实施例中,存储器控制器中的EDE实现高级加密标准(AES)技术以提供用于16字节块大小的块加密。在一些实施例中,EDE实现ECB-Mix-ECB(EME)技术以构造块宽度的安全伪随机置换(PRP),其处理常规处理器的64字节高速缓存行。EME的强可并行性使得多个独立硬件子模块能够并行地执行解密,从而将高速缓存未命中的延迟减到最小。这同样地可应用于加密,从而减少高速缓存行驱出时间。可以应用EME来支持比这些示例中示出的更大的高速缓存行大小以及更小的高速缓存行大小。虽然出于举例的目的延伸地论述了如AES和EME的技术,但是可以使用其他适合的加密/解密技术。例如,在其他实施例中,可以使用XEX-TCB-CTS(XTS)、CBC-Mask-CBC(CMC)以及其他保留长度的加密/解密技术。
[0037]在305处,尝试获得对加密的数据内容的引用。在多种实施例中,引用可以是指针、地址、句柄、标识符或要访问某个内容的任何其他适合指示。在一些实施例中,尝试获得对加密的数据内容的引用包括执行在给定加密的数据内容的情况下获得引用的操作。例如,执行加密的内容表示为En(〃hell0〃)的查询操作。在一些实施例中,此类操作通过结构化存储器实现来支持。
[0038]在306处,尝试成功获得对加密的数据内容的引用。如果存储装置中已经存在加密的数据内容,则能够成功获得对该加密的数据内容的引用。例如,如果En(〃hello〃)已经存在于存储装置中且存储此内容的数据行具有14的PLID,则获得14的PLID所引用的现存加密的内容En(〃hell0〃)。正如下文将更详细描述的,在一些实施例中,将加密的数据内容存储在内容目录/散列表中,其允许对特定内容的快速查询。
[0039]如果成功获得对加密的数据内容的引用,修改转换行以引用所获得的引用。在一些实施例中,该转换行存储引用本身;在一些实施例中,该转换行存储与该引用关联的地址、指针、句柄等。在此示例中,将转换行110的第一项(对应于所请求的物理地址1100 )修改成引用是PLID 14的所获得的引用。
[0040]但是,如果存储装置中尚未存在加密的内容且未获得对加密的数据内容的引用,则将加密的内容存储在新位置处,并获得对存储在此新位置处的加密的内容的引用。例如,如果确定En("hello")尚未存在于存储装置中,则创建具有10的PLID的新数据行来存储En("hello")并且获得PLID 19。在314处,将转换行修改为引用对新位置处存储的加密的内容的引用。在本示例中,将转换行110的第一项(对应于物理地址1100)修改成引用PLID 19。
[0041]图4是图示用于从存储装置中的位置读取数据的过程的实施例的流程图。过程400可以在如100的系统上以及具体地由存储器控制器108来执行。
[0042]在402处,接收访问位置(也称为读取位置)处的数据内容的请求。在一些实施例中,该请求由处理器发出,并且在请求中指定的位置与主存储器中的物理地址对应。
[0043]在404处,通过在映射表中查询,应用转换功能等,以将该物理地址转换成转换行位置(例如,转换行中的项的地址)O例如,对物理位置1200处的数据内容的请求可以对应于转换行120的项2,其存储19的PLID。
[0044]在406处,响应于该请求,确定高速缓存中是否有该数据内容可用。确切地来说,检查高速缓存中具有该PLID的转换行和对应的数据行的可用性。有四种可能性:未命中/未命中(即,高速缓存中没有转换行也没有数据行可用);命中/未命中(即,高速缓存中有转换行可用但是没有数据行可用);命中/未命中(即,高速缓存中既有转换行也有数据行可用);以及未命中/命中(即,高速缓存中没有转换行可用但是有数据行可用)。
[0045]在408处,处理未命中/未命中的情况。确切地来说,转换行和具有该PLID数据行均从主存储器中加载,并按需解码。例如,如果在高速缓存中没有转换行120和PLID 19的数据行可用,则从存储装置将转换行120(包含其PLID项)加载到高速缓存中,并且含有其对应加密的内容的PLID 19的数据行也从主存储器中被加载、解密,并且解密的结果保存到高速缓存中。在一些实施例中,将转换行120中的所有项的内容被解密并加载到高速缓存中;在一些实施例中,仅将被请求的特定数据行项(在本例中为PLID 19)的内容被解密并加载到高速缓存中。然后将高速缓存中的数据呈交给请求方。在一些实施例中,转换行是未去重复的,因此需要针对频率分析攻击的保护。可以使用IV、MAC或其他安全存储器技术的加密/解密技术来保护转换行。
[0046]在410处,处理命中/未命中的情况。确切地来说,该转换行已存在于高速缓存中,并且从主存储器中加载该数据行的加密的内容,将其解密并保存到高速缓存。例如,如果转换行120已存在于高速缓存中,但是具有PLID 19的数据行没有,则从主存储器中加载该数据行的加密的内容,将其解密并保存到高速缓存中。注意,在其中命中/命中情况下转换行中的所有项的内容已解密且加载到高速缓存中的实施例中,可能的是一旦转换行已存在于高速缓存中,其对应PLID项也是如此,因此使得命中/未命中的情形相对少见。
[0047]在414处,处理命中/命中的情况。在此类情况中,转换行和数据行都存在于高速缓存中,无需从主存储器中进行附加的取回。将高速缓存中的数据行的数据内容呈交给请求方。注意因为存储在高速缓存中的内容是解密的明文文本,所以无需解密。
[0048]在412处,处理未命中/命中的情况。在此情况中,将转换行加载到高速缓存中,但是无需读取或转换数据行,因为数据行已存在于高速缓存中。
[0049 ]在414处,将高速缓存中的数据行的数据内容呈交给请求方。
[0050]例如,将高速缓存中的PLID 19的解密的数据内容呈交给请求方。
[0051 ]该高速缓存访问过程是高效的,因为:i)高速缓存中常见到转换行及其对应的数据行,使得命中/命中的情形非常普遍;ii)处理器上执行的过程中,加密密钥是通用的,所以无需每次使用时从处理器核外取回,以及iii)在大多数情况中避免了对主存储器的访问,因为处理器访问从处理器高速缓存中进行就满足了,在高速缓存中,数据以明文存储。因此,在这些情况中,无需在使用前解密或进行主存储器访问。
[0052]在一些实施例中,实现EDE以与提取加密的存储器行同时生成高速缓存行未命中的安全填充(secure pad)(并由此从加密的存储器提取)。正如本文所使用的,安全填充是指解密过程中作为掩码的二进制值序列。生成安全填充的技术对于本领域技术人员来说是公知的。一旦从主存储器接收到加密的数据,则解密需要对含有安全填充的加密的行进行简单XOR以产生明文数据,从而将解密的延迟影响减到最小。
[0053]因为高速缓存空间有限,所以需要时不时驱出一些高速缓存行中的现存数据以使高速缓存行可用于新数据。高速缓存行中修改且要驱出的数据应该被回写到存储装置。图5是图示用于从高速缓存驱出数据行的实施例的流程图。过程500可以在如100的系统上以及具体地由存储器控制器108来执行。
[0054]在502处,接收要驱出存储数据行的高速缓存行的请求。例如,接收要驱出存储具有21的PLID的数据行和数据内容“hello”的高速缓存行的请求。
[0055]在504处,确定高速缓存行自其内容上次被写入存储装置(例如,主存储器)起是否已被修改。在一些实施例中,只要数据行被修改,则设有“脏”标志。确定通过检查该标志来作出。
[0056]如果确定存储该数据行的高速缓存行自其内容上次写入存储装置起未被修改过,则在506处,可以从高速缓存中移除该数据行,并使该高速缓存行空闲或将其标记为可用。驱出过程终止。
[0057]但是,如果确定高速缓存行自其内容上次被写入存储装置起已被修改,则应该将修改写入存储装置。在508处执行回写操作。在本示例中,回写操作与图3的过程300相同,其中将高速缓存行中修改的内容写入存储装置。
[0058]在上文的示例中,将存储装置中的数据行加密并去重复。在一些实施例中,高速缓存(例如,LLC)还支持通过实现确定高速缓存中是否已存在特定数据内容的基于相同内容目录的查询机构的去重复,从而通过消除高速缓存级的重复来减少对高速缓存资源(例如,高速缓存空间)的需求。
[0059]使用上文描述的技术,处理器能够对高速缓存未命中实现存储器行的高效低延迟解密,并且相似地用于对回写的加密,同时确保存储器中数据的高安全加密和缩放到大量主存储器。
[0060]加密的转换行
在上文论述的示例中,转换行未加密。在一些实施例中,转换行被加密。由此,要访问未在LLC中的转换行,通过执行针对数据行的相似步骤来处理,即在将转换行加载到LLC中时将转换行解密。相似地,回写修改的转换行需要将该转换行加密成其加密形式。
[0061]注意转换行不一定是去重复的。图6是图示包括初始化向量(IV)的示例数据结构的示意图。IV值包含加密期间EDE使用的随机化参数。当使用不同的IV值来加密相同的数据内容时,所得到的加密的结果是不同的。在本示例中,每个转换行包含IV字段,以及对非重复的转换行赋予不同的IV值。例如,转换行100和502具有相同的内容,但是被赋予不同的IV值。在一些实施例中,EDE执行确定块加密。如图所示,转换行包含相同数据字段不同加密的结果,因为加密引擎使用了不同的IV值作为输入的一部分,从而使这些转换行安全地避免频率分析攻击。此外,因为转换行占总存储器的小百分比,所以每个转换行包含一个IV值不会引起很大的空间开销。
[0062]在一些实施例中,除了IV外,EDE还需要密钥来执行加密/解密。密钥可以存储在寄存器中或其他已知的位置以便将空间或访问开销减到最小。
[0063]在一些实施例中,用于转换行的密钥不同于用于数据行的密钥。
[0064]在一些实施例中,存在多组转换行,并且一组单独的转换行使用单独的密钥。在一些实施例中,对于不同保护域中的不同的转换行,使用单独的密钥。例如,多组转换行被分配用于机器上不同的进程,对于与每个进程对应的一组单独的转换行使用单独的密钥。又如,可以将处理器的地址空间划分成不同的分段,其中多个进程共享一些分段。由此,使用能够访问共享的分段的这些进程所共享的密钥来加密该共享的分段,以及使用私密非共享的密钥来加密私密分段。多组转换行的其他分配也是可能的。
[0065]加密的内容目录元数据
图7A是图示用于在常规实现中支持结构化存储器的元数据的示例的数据结构示意图。在本示例中,内容目录800支持结构化存储器,内容目录800是存储数据内容和对应元数据(如项的签名)的主存储器中的散列表。为了确定存储器中已存在哪个特定数据内容,在散列表中将数据内容散列处理并查询该数据内容。因此,实际上存在与每个数据行关联的散列索引。例如,在不包含加密的常规系统中,可以通过从地址Ai减去散列表的基地址(Bi),并将结果除以桶的大小(S)来确定分配在地址Ai处的行与该块关联。元数据包含散列索引。
[0066]在本示例中,元数据包含与散列桶中每个项关联的签名,计算为数据内容的单独散列,用作在散列桶中查询特定项的辅助索引。
[0067]在本示例中,对于每个数据行项,存在一个引用计数,其指示引用此项的转换行的数量。当引用计数达到O时,该数据行可以进行垃圾回收并释放其存储器。
[0068]图7B是图示用于在安全实现中支持结构化存储器的元数据的示例的数据结构示意图。在本示例中,将元数据值加密,以便能够检测到非授权的修改。确切地来说,对加密的数据内容(En(〃hell0〃)使用安全密钥散列(SecHash)来计算散列索引。该加密的数据内容被存储在表中与该散列索引对应的位置处,以及查询该加密的内容使用此散列索引来执行。关联的签名行以相似的方式来计算。在一些实施例中,散列索引和签名是安全密钥散列的不同截尾部分,例如,基于散列的消息认证码(HMAC)。相似地,可以将引用计数加密。数据内容与元数据的不匹配会指示如非授权修改的安全性违规。
[0069]在另一些实施例中,可以使用不同的元数据结构和查询处理。例如,在一些实施例中,对数据行的未加密的数据内容计算散列。然后将数据内容加密并存储在计算的位置处(即,散列表中与该未加密的数据内容对应的位置)。在此类实施例中,为了查询加密的内容或获得对数据行的加密的数据内容的引用,将加密的数据内容解密,并基于解密的结果确定散列项位置。
[0070]数据密钥域
在一些实施例中,单独的保护域使用单独的数据加密密钥来加密数据行。这提供这些域之间的增强的保护。正如本文所使用的,保护域是指其中的数据行仅对选择性进程可访问的存储器的区域。
[0071]在对于单独域中的数据行使用单独密钥的一些实施例中,将数据行存储在主存储器中的公共共享的内容目录(例如,公共散列表)中。对于不同内容的两个行在两个不同密钥下加密到相同的加密的数据内容是可能的。由此,在原理上,不同的保护域可以结束共享内容目录中的相同项。例如,对于数据域I,数据内容“hello”的加密结果是“xyzl23”;对于数据域2,数据内容“world”的加密结果也是“xyz 123”。在主存储器中仅存储“xyz 123”的一个示例。
[0072]在一些实施例中,使用公共数据加密密钥,使得数据能够无需在甚至不同保护域之间解密且再加密来复制。不同域中仅受影响的转换行需要解密和再加密,因为这些转换行在不同域中是使用不同密钥来保护的。由此,减少了所需的解密和再加密处理量。
[0073]在一些实施例中,某些域被共享且使用共享密钥进行加密。
[0074]例如,两个单独的进程可能都访问被共享的某个安全加密的数据;通过对公共域提供公共共享密钥,两个进程都可以解密该相同的数据。另一方面,保持私密的数据使用不被共享的私密密钥来加密。
[0075]在一些实施例中,加密的内容使用单独的密钥加密,但是与内容目录关联的元数据使用共享此内容目录的保护域之间共享的公共密钥来加密。通过对元数据共享公共密钥,每个保护域可以访问并更新与重复的项关联的元数据,如与桶关联的签名行、引用计数等。
[0076]如果共享的元数据密钥在某些保护域之间不可接受,则一个实施例能够支持单独去重复域,如接下来的描述。
[0077]去重复域
在一些实施例中,将处理器地址空间划分成多个去重复域。正如本文所使用的,去重复域是指其中数据行被去重复且具有唯一的内容的存储器的区域。处理器搜索一个去重复域内的给定数据内容的现有副本。
[0078]在一些情况中,存储器中可能有给定数据块的多于一个实例。
[0079]但是,多个去重复域之间的给定数据块的频率仍是独立于整个应用中给定数据块的频率,从而防止基于频率的分析和攻击。再者,单独去重复域可以使用单独的密钥,从而每个域中的相同内容不作为相同的值来存储。换言之,给定密文文本的频率(例如,数据行的加密的内容)不与任何明文文本出现的频率相关。
[0080]在一些实施例中,每个去重复域使用单独的机密密钥来加密该重复域中使用的数据行,以使去重复域中的应用(或能够获权访问去重复域中的存储器的攻击者)无法将单独去重复域中的数据解密。在一些实施例中,系统配置有多个去重复域,每个单独的保护域对应其一个。
[0081]图2A是图示多个域的实施例的数据结构示意图。如图所示,对于不同的域,使用单独的机密密钥来加密数据行。这些密钥具有不同的值且可以存储在预先指定的寄存器中。在一些实施例中,这些密钥具有不同的格式。例如,对于一个域可以使用128位密钥,对于一个不同的域可以使用256位密钥。域的构成取决于具体实现,并且在不同实施例中可能有所不同。例如,单独的用户可以对应于单独的域,并且可以使用单独的密钥来加密/解密每个对应域中的数据行。保护域的其他分配(如单独进程的单独域)是可能的。在本示例中,每个域中数据行是去重复的,但是在不同域上则不一定是去重复的;由此,在两个单独的域中可能有重复的数据行。当存储器控制器需要将数据加密或解密时,访问与当前域关联的密钥并将其用于加密或解密。使用单独的密钥来加密单独的去重复域改进了重复域之间的保护,并且确保了不同域中的相同数据内容以不同方式加密,从而提供针对频率分析攻击的额外保护。
[0082]在图2B的实施例中,每个去重复域可选地使用单独的转换行密钥来加密用于转换行的数据,以及使用单独的元数据密钥来加密域该内容目录关联的元数据。这些密钥具有不同的值且可以存储在预先指定的寄存器中。
[0083]防止定时攻击
在一些实施例中,人为地修改回写操作的定时已更改执行写操作所用的指示时间量,以便在内容已存在于存储器中时、内容尚未存在且需要分配新存储器行时或正在将存储器行写入溢出区域时用于向去重复的存储器写的指示时间量之间没有可识别的差异。
[0084]—种方法是将每次写的完成指示按这些操作中任一个操作所需的最大时间延迟。此方法应该不会对应用性能有很大的负面影响,因为大多数回写都被“延时”(即,相对于应用执行异步进行)以及附加的延迟典型地不会降低存储器回写吞吐量。
[0085]存储器完整性
一些安全系统的附加要求是针对假定能够在系统运行时修改加密的数据确保数据完整性。
[0086]在本应用中,为了支持去重复,内容目录显性地或隐含地包含帮助通过内容确定数据的位置(作为内容查询的一部分)的元数据,正如上文描述。
[0087]如上所述,在一些实施例中,元数据使特定散列桶中的数据行的位置(S卩,散列桶索引)能被计算。
[0088]在一些实施例中,存储器完整性检查包括,在对数据行的读访问时,检查数据行的内容以便确保数据内容与该数据行所关联的元数据匹配。PLID(或等效地,要访问的地址)和数据内容已经可用于读访问,从而允许在不进行任何附加存储器访问的情况下执行完整性检查。具体来说,再次计算数据行的散列索引,并将其域该数据行所在的散列桶比较。相似地再次计算基于数据行内容计算且确定桶中项的签名,并将其对照该项来检查。如果计算的散列索引域散列桶中的数据行位置不匹配,或如果计算的签名域散列桶中的项的签名不匹配,则指示存储器完整性已经受损。由此,如果能够修改数据内容以使修改的数据内容一直与关联的元数据匹配,则攻击者只能在没有检测(换言之,没有违反数据完整性)的情况下修改数据。
[0089]再者,在一些实施例中,在内容查询或逻辑写时,已经有检查数据行项中的内容真实地域要回写的内容匹配的要求,所以在此情况中已经有完整性检查。
[0090]再者,在一些实施例中,在内容查询时,还通过基于数据内容来计算元数据并将结果与存储的元数据比较来检查数据行项相对于其元数据的数据完整性。
[0091 ]在一些实施例中,散列索引元数据和签名元数据由安全密钥散列函数来生成,正如早前描述的。由此,在此类实施例中,修改加密的数据行的攻击者无法在不知道元数据密钥的情况下确定修改的加密的数据是否与此元数据匹配。如果攻击者转而能够伪造对修改的数据行的引用,然后尝试访问此行,则系统将通过基于数据内容来计算元数据并检测元数据和数据内容不匹配以检测完整性违规。潜在的安全性违规会被报告。因为使用散列表中的安全散列,通过猜测与当前桶位置匹配的值来尝试对行进行非授权的修改的入侵者将可能无法猜出正确的值,从而触发指示有安全性违规的警报(如日志记录或消息)。
[0092]正如上文论述,数据完整性检查得以提供而无需额外的空间成本。
[0093]溢出处理
在一些实施例中,存储装置具有溢出区域。在此类实施例中,在回写时,如果在内容映射的内容目录散列桶中没有空闲项,则将存储器行写入溢出区域。
[0094]在一些实施例中,溢出区域没有去重复行。因此,对于相同数据的两个或更多个实例被存储在域去重复域关联的溢出区域中是可能的。为了安全地处理溢出行,每个溢出数据行,存储如单独的IV的额外元数据,并将其用于加密数据行的数据内容。因为使用不同IV加密的相同数据内容产生不同的加密的结果,所以确保了行级加密不是确定的。即,存储在移除区域中的相同数据的两个实例不加密成相同的密文文本。
[0095]再者,在一些情况中,可能出现如下情形:首先,数据行的第一次回写期间,内容目录中没有空闲项,由此将数据行存储在溢出区域中;稍后,发生垃圾回收,并且内容目录中的一个或多个项被腾空;然后,发生含有相同数据内容的数据行的第二次回写,并且将该数据行存储在常规去重复内容目录中。相同数据的这两个实例不加密成相同的密文文本,因为这两个实例实际使用两个IV来进行加密,其中域内容目录的散列桶中的数据关联的IV是固定的或为空,而溢出区域中的项的IV是随机的但是不同于散列桶所关联的IV。
[0096]在一些实施例中,处理器/存储器控制器能够通过检查被请求的地址位于哪里来检测读访问是对内容目录的溢出区域还是对内容目录的非溢出区域。然后可以应用基于IV的解密。相似地,实现内容目录的存储器控制器必定知悉该内容的散列桶何时充满;由此,它能够使用与溢出项对应的IV来再加密该数据行。
[0097]在具有多个去重复域的一些实施例中,不同去重复域之间的溢出区域使用不同的密钥。由此,不同域中相同的内容得到不同的加密结果。
[0098]实际上,溢出区域占整个存储器的小百分比,所以限制于仅溢出行的用于IV元数据的额外开销不是很大,无论是空间还是访问时间。
[0099]去重复减少了大多数应用所需的物理存储器的量和功率,正如对使用去重复的存储器调研所显示的。在一些实施例中,去重复还减少了如IV的安全元数据的空间开销,因为仅对于转换行和溢出行需要安全元数据。
[0100]混合存储器
在一些实施例中,该存储装置包括使用具有不同等待时间的存储器的组合实现的混合存储器。在下面的实施例中,基于举例的目的,论述混合主存储器,其包括非易失性随机存取存储器(NVRAM)和动态随机存取存储器(DRAM);其他实施例中可以使用其他类型的存储器。NVRAM具有比DRAM高的等待时间,在成本上较低以及功耗较少。所得到的混合主存储器系统提供比单独利用DRAM可实现的显著更大的容量,在资产支出和功耗上的成本更低,同时通过将频繁访问的数据缓存在DRAM中来提供合理的访问时间。
[0101 ]在使用混合主存储器的一些实施例中,在高等待时间存储器和低等待时间存储器(例如,NVRAM和DRAM)使用相同存储器行大小和密钥,将数据行确定地加密并去重复,正如上文描述的。因此,在DRAM与NVRAM之间传输的数据行,而不对数据进行加密/解密动作。例如,DMA引擎可以传输数据行而无需访问加密密钥。与DRAM的情况一样,在NVRAM中使用去重复节省了其他方式中因重复耗费的空间以及其他方式下IV存储耗费的额外空间。
[0102]在一些实施例中,低等待时间存储器和高等待时间存储器中的数据行以类似于高速缓存和主存储器中的数据行的方式进行管理。例如,可以类似于高速缓存的方式处理DRAM,以及可以类似于主存储器的方式处理NVRAM。首先将数据行写入DRAM,然后酌情将其回写到NVRAM。可以将D RAM中的数据行标记为已修改,并不去重复也不映射到N VRAM中。当DRAM中已修改的数据行要被驱出时,执行类似于过程500的过程。具体来说,在NVRAM中的内容目录中查询修改的数据行的数据内容。如果该数据内容存在于NVRAM中的内容目录中,则查找现存的行;否则,在内容目录的适合桶中分配新数据行。再者,查找引用修改的数据行的转换行,并将对修改的数据行的引用修正为指向NVRAM中该现存的行。
[0103]在一些实施例中,从混合存储器系统中的低等待时间存储器的转换行驱出和数据行驱出以类似于从高速缓存的转换行驱出和数据行驱出的方式来处理。在从DRAM驱出转换行之前,在NVRAM中对该转换行引用的每个修改的数据行去重复以便确定NVRAM中对应于该数据行内容的PLID(称为NVRAM PLID),并且更新转换行以引用此新NVRAM PLID。当被驱出时,没有引用转换行的任何数据行被废弃。在此类实施例中,可以将NVRAM去重复尽可能晚地推迟,并且在一些情况中避免去重复,因为在被驱出之前该行被废弃,从而减少了去重复开销。在其中对于NVRAM和DRAM使用不同密钥的实施例中,在驱出到NVRAM时,首先读取修改的行并将其解密到高速缓存中,利用NVRAM密钥将其再加密,然后去重复到NVRAM中。
[0104]在一些实施例中,在对NVRAM中驻留的转换行进行第一次数据访问时,在返回请求的行之后,存储器控制器将关联的转换行所引用的其他数据行提取并传输到DRAM中,从而减少后续引用的等待时间(如果产生的话)。此优化预期提供在NVRAM与DRAM之间使用较大传输单元的一些好处。
[0105]在一些实施例中,低等待时间存储器上加密的单元不同于高等待时间存储器上加密的单元。正如本文所使用的,加密的单元是指生成单个加密结果所加密的数据量。例如,DRAM上的每个存储器行被加密为一个单元,而NVRAM上的多个存储器行一起被加密成一个单元(例如,64个行被加密在一起)。当数据从NVRAM传输到DRAM时,将包含来自NVRAM的多个存储器行的单元解密,并将解密的行传输到DRAM以便个别地进行加密。在一些实施例中,在处理器芯片上实现加密/解密机构。将数据传输单元(例如,64个行)从NVRAM传输到处理器,处理器解密该数据传输单元并将存储器行存储在高速缓存中。然后,将这些存储器行个别地再加密,并将其回写到DRAM。在一些实现中,尽管NVRAM采用与DRAM不同的数据单元大小,NVRAM仍利用去重复和确定加密来管理。在一些其他实现中,DRAM部分实现去重复和确定加密,而NVRAM使用常规概率加密。
[0106]在NVRAM按照比DRAM更大的单元加密和传输数据的实施例中,NVRAM相对于处理器实际是I/O设备。即,处理器不真正地直接读或写此NVRAM。而是DRAM和NVRAM分别以类似高速缓存和主存储器的方式来使用。确切地来说,从NVRAM将较大数据块读取到DRAM中,然后使之可供处理器使用。对于回写,实现类似的机构。实际上,该系统实现在DRAM与NVRAM之间分页的形式。
[0107]已描述了基于去重复的存储器加密。上文描述的技术可用于主存储器以及辅助存储元件。正如本文所使用的,辅助存储元件是指操作系统和应用软件将其视为存储元件而非存储器的,如磁盘或光盘的组件、如基于NVRAM的驱动器的固态驱动器等。操作系统和应用软件典型地使用I/O函数调用而非存储器访问调用从辅助存储系统读取以及向其中写入。在辅助存储系统的一些实施例中,将转换行和元数据高速缓存,因为单独数据的每次访问成本一般显著地高于DRAM的情况。例如,数据行的引用计数可以存储在DRAM中,并且可以通过扫描辅助存储装置(例如,NVRAM)在重新引导时对其重新计算已对引用每个数据行的数量计数,从而无需将这些值存储在辅助存储装置中或在辅助存储装置中对其进行更新。
[0108]公开一种使用去重存储装置的加密和解密的计算机安全性。上文论述的技术能够执行高效的低等待时间加密和解密,确保了高数据安全性和可伸缩性,减少大多数应用所需的资源量(例如,物理存储器、功率、空间开销)并在没有额外空间成本的情况下提供数据安全性。
[0109]虽然前文实施例是出于理解简明的目的进行某种细节描述,但是本发明不限于所提供的细节。有许多备选方式来实现本发明。所公开的实施例是说明性的而非限制性的。
【主权项】
1.一种安全系统,其包括: 存储装置;以及 耦合到所述存储装置的存储器控制器,所述存储器控制器用于: 响应于对所述存储装置写入数据内容的请求,至少部分地基于所述数据内容生成加密的数据内容; 尝试获得对所述存储装置中的所述加密的数据内容的引用; 在获得对所述加密的数据内容的引用的情况下,修改转换行以引用对所述存储装置中的所述加密的数据内容的所述引用;以及 在未获得对所述加密的数据内容的所述引用的情况下: 将所述加密的数据内容存储在新位置处; 获得对存储在所述新位置处的所述加密的数据内容的引用;以及 将所述转换行修改为引用对所述新位置处存储的所述加密的数据内容的所述引用。2.如权利要求1所述的系统,其中所述存储装置包括主存储器、辅助存储装置或二者兼有。3.如权利要求1所述的系统,其中所述存储器控制器执行确定加密函数以生成所述加密的数据内容。4.如权利要求1所述的系统,其中所述存储器控制器实现如下技术的其中一种或多种:高级加密标准(AES)、ECB-Mix-ECB(EME)、XEX-TCB-CTS(XTS)和 CBC-Mask-CBC(CMC)。5.如权利要求1所述的系统,还包括耦合到所述存储器控制器的高速缓存,以及其中所述高速缓存存储未加密的数据。6.如权利要求1所述的系统,还包括耦合到所述存储器控制器的高速缓存,以及其中所述高速缓存存储去重复的数据。7.如权利要求1所述的系统,还包括耦合到所述存储器控制器的高速缓存,以及其中所述存储器控制器还用于在高速缓存未命中时生成安全填充以及使用所述安全填充来解密从所述存储装置提取的加密的数据。8.如权利要求1所述的系统,还包括耦合到所述存储器控制器的高速缓存,以及其中所述存储器控制器还用于: 响应于要访问读位置处的数据内容的请求,确定所述高速缓存中是否有与所述读位置对应的转换行和数据行可用;以及 在所述高速缓存中没有所述数据行的情况下,执行如下操作: 从所述存储装置加载数据行; 将所述数据行解密;以及 将解密的结果保存到所述高速缓存。9.如权利要求1所述的系统,还包括耦合到所述存储器控制器的高速缓存,其中: 要写数据内容的请求是由要驱出存储所述数据内容的高速缓存行的请求导致的,所述高速缓存行自上次其被写入存储装置起已被修改。10.如权利要求1所述的系统,还包括处理器,所述处理器用于生成要写入所述数据内容的所述请求; 所述处理器的地址空间包括多个去重复域;以及 每个去重复域具有用于将所述每个去重复域中的数据内容加密的对应密钥。11.如权利要求1所述的系统,其中将所述转换行加密。12.如权利要求1所述的系统,其中 将所述转换行加密;以及 使用不同的密钥将所述数据内容和所述转换行使用不同的密钥加密。13.如权利要求1所述的系统,其中尝试获得对所述存储装置中的所述加密的数据内容的所述引用包括:在内容目录中查询所述加密的数据内容。14.如权利要求1所述的系统,其中 尝试获得对所述存储装置中的所述加密的数据内容的所述引用包括,在内容目录中查询所述加密的数据内容;以及 所述内容目录包含加密的元数据。15.如权利要求14所述的系统,其中所述加密的元数据使用公共密钥来加密的,在共享所述内容目录的多个保护域之间共享所述公共密钥。16.如权利要求1所述的系统,其中修改写操作的完成指示修改以便更改执行所述写操作所用的指示时间量。17.如权利要求1所述的系统,其中在对数据行读访问时,所述存储器控制器还用于执行完整性检查,包括确定所述数据行的所述数据内容是否与所述数据行所关联的元数据匹配。18.如权利要求17所述的系统,其中在所述数据行的所述数据内容与所述数据行所关联的所述元数据不匹配的情况下,报告潜在的安全性违规。19.如权利要求17所述的系统,其中使用安全密钥散列函数来生成与所述数据行关联的所述元数据。20.如权利要求1所述的系统,其中所述存储装置包括混合存储器,所述混合存储器包含具有不同等待时间的多个存储器。21.如权利要求1所述的系统,其中所述存储装置包括混合存储器,所述混合存储器包含具有不同等待时间的多个存储器,以及用于较低等待时间的存储器的加密单元与用于较高等待时间的存储器的加密单元相比大小不同。22.如权利要求1所述的方法,其中所述存储装置包括溢出区域,在所述溢出区域中,具有相同数据内容的数据行具有不同加密结果。23.—种方法,其包括: 响应于对存储装置写入数据内容的请求,基于所述数据内容生成加密的数据内容; 尝试获得对所述存储装置中的所述加密的数据内容的引用; 在获得对所述加密的数据内容的引用的情况下,修改转换行以引用对所述存储装置中的所述加密的数据内容的所述引用;以及 在未获得对所述加密的数据内容的所述引用的情况下: 将所述加密的数据内容存储在新位置处; 获得对存储在所述新位置处的所述加密的数据内容的引用;以及 将所述转换行修改为引用对所述新位置处存储的所述加密的数据内容的所述引用。24.—种用于提供数据安全性的计算机程序产品,所述计算机程序产品包含在有形计算机可读存储介质中且包含用于执行如下步骤的计算机指令: 响应于对存储装置写入数据内容的请求,基于所述数据内容生成加密的数据内容; 尝试获得对所述存储装置中的所述加密的数据内容的引用; 在获得对所述加密的数据内容的引用的情况下,修改转换行以引用对所述存储装置中的所述加密的数据内容的所述引用;以及 在未获得所述加密的数据内容的所述引用的情况下: 将所述加密的数据内容存储在新位置处; 获得对存储在所述新位置处的所述加密的数据内容的引用;以及 将所述转换行修改为引用对所述新位置处存储的所述加密的数据内容的所述引用。
【文档编号】G06F3/06GK105960645SQ201580003112
【公开日】2016年9月21日
【申请日】2015年1月14日
【发明人】D·R·切里顿
【申请人】D·R·切里顿
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1