针对安全性和可靠性的存储器组织的制作方法

文档序号:16974909发布日期:2019-02-26 18:53阅读:190来源:国知局
针对安全性和可靠性的存储器组织的制作方法

在许多应用中,必须能够保护和验证存储在计算机存储器中的数据完整性。存储器安全性涉及对抗物理访问系统的攻击者、观察、篡改和/或重放在安全微处理器与片外非安全系统存储器之间交换的数据的处理能力。为了保护商用存储器(比如动态随机存取存储器(dram)),要求每次访问片外数据时都需访问存储器中的安全元数据。元数据可以包括用于加密和保护完整性的计数器,以及用于验证完整性的消息认证码(mac)。此外,可以访问完整性树数据以对抗“重放(replay)”攻击。完整性树可以被构造为具有存储于片上(在安全区域内)的根的计数器树或mac树。除了要使用更多存储器来存储元数据之外,对访问附加存储器的需求会对系统性能产生负面影响。

可以组合针对存储器安全性和可靠性的系统,因为存储在存储器中的mac可以检测对存储器内容的篡改,还可以高概率地检测存储器中的随机错误。已经提出将用于检测存储器错误的mac与用于纠正错误的芯片级奇偶校验相结合,以便利用商用dram双列直插式存储器模块(dimm)实现高级别可靠性。

可以提供额外的存储器用于存储纠错码(ecc)。例如,服务器存储器(比如ecc-dimm)可配备有12.5%的用于纠错码的额外存储和总线宽度。

附图说明

附图提供的视觉表示将被用于更全面地描述各种代表性实施例,并且可被本领域技术人员用于更好地理解所公开的代表性实施例及其固有优点。在这些附图中,相同的附图标记表示相应的元件。

图1是与本公开的实施例一致的数据处理系统的顶层框图。

图2是与本公开的实施例一致的用于保护数据隐私的加密/解密单元的框图。

图3是与本公开的实施例一致的消息认证单元的框图。

图4是示出了与本公开的实施例一致的计数器的完整性树的框图。

图5是与本公开的实施例一致的存储器中的数据布置的图形表示。

图6是与本公开的实施例一致的用于读取和认证存储在存储器中的数据的方法的流程图。

图7是与本公开的实施例一致的具有数据安全性和可靠性检查的数据处理系统的框图。

图8是与本公开的实施例一致的具有数据安全性和可靠性检查的数据处理系统的框图。

具体实施方式

本文中描述的各种设备和装置提供了用于在数据处理系统中使用的存储器系统。根据本公开的某些代表性实施例,存储器系统将可靠性和安全性性能高效地相结合。

图1是与本公开的实施例一致的数据处理系统100的顶层框图,该数据处理系统包括处理芯片102和片外存储器模块104。在一个实施例中,存储器模块104是双列直插式存储器模块(dimm),除了用于存储元数据的一个或多个附加芯片(ecc1和ecc2)之外,该双列直插式存储器模块还包括多个存储器芯片(在该示例中为c0-c7)。附加芯片可以例如用于存储用于检测和纠正存储在芯片c0-c7中的数据中的位错误的纠错码(ecc)。处理芯片102可以是例如片上系统(soc),并且可以包括一个或多个处理核106、高速缓存108和用于访问存储器模块104的存储器管理单元110。处理芯片102还可以包括数据检查引擎112,用于执行与存储在存储器模块104中的数据的可靠性和安全性或完整性有关的操作。例如,当从存储器模块读取数据时,数据检查引擎112可以检查纠错码以标识和纠正(如果可能的话)数据中的位错误。数据检查引擎112还可以执行与数据完整性或安全性相关的操作。存储装置元件114可以用于存储与数据安全性相关的其他数据值,比如秘密密钥和散列值。

数据检查引擎112可以包括由编程指令控制的处理器、控制器、微控制器单元(mcu)、微处理器。可替代地,数据检查引擎112的一些或所有功能可以由没有存储的程序指令的状态机实现,或者在一个或多个专用集成电路(asic)中实现,其中每个功能或某些功能的一些组合作为自定义逻辑来实现。当然,可以使用这两种方法的组合。此外,预料到普通技术人员尽管有可能在受到例如可用时间、当前技术和经济考量的激发下做出很大努力和许多设计选择,但是当在本文公开的概念和原理的指导下,将能够以最少的实验容易地生成这样的软件指令和程序以及ic。

与数据安全性相关联并且在本文中称为元数据的其他值可以与数据本身一起存储在存储器模块104中。本公开的一个方面涉及存储器模块104中的数据的高效布置,这种布置提供可靠性、安全性和改进的性能。

关于保护存储在片外存储器中的数据防止恶意攻击者物理访问系统、观察和/或重放在微处理器和片外系统存储器之间交换的数据或代码的能力有三个方面。

1)保护隐私,即,防止恶意观察者解译从片外存储器读取或存储于片外存储器上的数据。可以通过在将数据写入片外存储器之前对该芯片上的数据进行加密并在从存储器读取数据之后对其进行解密来保护隐私。

2)检测加密数据的修改。这可以通过存储(连同数据一起进行)使用单向函数(比如aes-gcm或sha-256)生成的消息认证码(macs)来实现。

3)防止重放攻击-其中,物理访问系统的恶意人员存储先前在总线上观察到的数据和mac的合法组合,随后重放到总线上,企图用过时值在给定存储器位置处破坏数据。

图2是用于保护数据隐私的加密/解密单元200的框图。加密/解密单元200构成上面讨论的数据检查引擎的一部分。对于加密,该单元接收明本或非编码消息块202,并通过在xor单元208中在消息块202和一次性密码本(one-time-pad)206之间执行xor操作来产生密文或编码消息204。使用秘密密钥216从数据的行地址210和计数器模式加密单元214中的计数器值212获得一次性密码本206。计数器值充当种子,并在每次生成新密码本时递增。例如,可以根据广泛使用的高级加密标准(aes)来配置加密单元214。每当消息块被加密时,可以递增计数器值212,以确保重复的消息块产生不同的密文。对解密操作同理,因为xor操作选择的是消息块中的反转位并且重复该操作使这些位反转回原始值。然而,应注意,必须知道用于加密的计数器值以便对块进行解密。

图3是包括消息认证码(mac)生成器和比较逻辑的消息认证单元300的框图。消息认证单元300构成上面讨论的数据检查引擎的一部分。数据块302,比如高速缓存行(例如,64字节)、计数器值304(例如,8字节)、行地址306和秘密密钥308,被传递到加密散列函数(cryptographichashfunction)310。散列函数产生消息认证码(mac)312(例如可以是8字节)。在存储数据时,计算的mac312也被存储。在读取数据时,数据和相关联存储的mac都被读取。计算的mac312在比较逻辑314中与存储的mac316进行比较。如果它们匹配,则认为数据被认证。如果它们不匹配,则行318被断言以指示数据或mac(可能是在篡改攻击中)已被改变。

使用完整性树可以防止重放攻击。示例是默克尔树(merkletree)。这是散列的完整性树,其中使用散列算法将连续存储器块减少(每次n个)到大小等于1个块大小的标签,然后递归地减少这些标签(每次n个)。由于存储在处理器芯片上的所有数据根据定义都是安全的,因此默克尔树的根始终存储在芯片上。可替代地,计数器树或可并行认证树也可以用于相同的目的,其优点是对树的不同级别的更新可以并行进行。

图4是示出计数器的完整性树400的框图。完整性树是从数据集(在这种情况下是一组计数器402)计算的、并提供可用于确定数据集的任何成员是否已被修改的一组数字的树结构。初始级别(树的叶子,级别0)包括计数器值。在所示的示例中,每对计数器402与级别1节点值406一起用于生成散列值404。级别1中的每对节点406与级别2节点值408一起用于计算散列值404'。该过程持续连续的级别,直到树的级别n-1中的节点410与级别n中的最终节点412一起使用以生成散列值404”。最后一个节点称为根。在该简单示例中,每个散列值404将两个计数器值402(和节点值406)结合。然而,通常,可以使用两个或更多个计数器值来计算每个散列值。例如,每个散列值可以使用八个计数器值来计算,八个级别1节点值被用来计算每个级别散列值。在另一示例中,64个计数器值被用来计算每个级别1散列值,并且64个级别1节点值被用来计算每个级别2散列值。对于给定大小的存储器,增加所结合的计数器的数目会减少计数器完整性树中的节点数。

节点值和计数器值存储在存储器和/或最低级高速缓存中。

如上所述,存储器存储数据本身(可以是加密的)、数据的mac以及用于生成mac(和加密值)的计数器值(402)。此外,存储器存储计数器完整性树的节点值(406、408、410)。计数器完整性树的根值412可以存储于片上。存储至少一些散列值以消除计算整个计数器完整性树的需要。

在操作中,当从存储器读取数据值时,从存储器读取相关联的计数器值。另外,读取计数器完整性树中的节点值以便于树的计算。例如,参考图4,如果与计数器1相关联的数据被读取,则读取计数器0和1以及计数器树(ct)节点ct_10以使得能够计算散列值。读取计数器树节点ct_10、ct_11和ct_20以使得能够计算散列值404'等。一些散列值可以存储在片上(例如,最近使用的值可以存在于高速缓存中)。当片上节点值可用于计算的散列值时,计算可以停止并且将计算的值与存储的值进行比较,如上面参考图3所述。如果从存储器读取的任何值(数据、mac、计数器、节点值)已被篡改(或受制于位错误),则计算的散列值将与存储的散列值不匹配。检查散列值由上面讨论的数据检查引擎来执行。

为了检测位错误,可以为每个高速缓存行存储纠错码,比如奇偶校验值或汉明码。

每次片外访问数据都会产生额外的存储器访问-一个针对计数器(进行数据和mac计算的加密/解密所需),一个针对mac(以保护数据的完整性),以及高达‘d’个针对完整性树的额外访问(其中,d是计数器完整性树的深度)。

先前的系统通过将mac和基于mac的完整性树条目中的任一者与数据一起缓存到高速缓存来寻求减少增加的存储器流量对应用性能的影响。

根据本公开,计数器值和基于计数器的完整性树的节点值被存储在末级高速缓存(llc)中。

根据本公开的另一方面,在存储器中数据、mac、纠错码、计数器值和完整性树值的存储被布置为优化系统的性能。具体地,通过存储数据、相关联的mac和相关联的纠错码(ecc)使得可以在单个读取事务中撷取它们来最小化对存储器的读取操作的数目。此外,数据、mac和ecc可以在单个写入事务中写入。

与商用dimm相比,未来的ddr5ecc-dimm预计将为ras支持提供25%的额外存储和总线宽度。模块可以被配置为八个数据芯片和两个元数据芯片,每个具有8位宽的数据总线,例如,总计总线宽度为80位。这样可以在8个数据串(burst)中读取64字节的数据以及相关联的元数据。在另一实施例中,模块被配置为4位宽设备,使得能够在16个数据串中读取64字节的数据。在不脱离本公开的情况下,可以使用其他配置。然而,当在存储器中设置元数据区域时,该区域可以用于存储mac和纠错码(ecc)。

图5是与本公开的实施例一致的存储器模块中的数据布置500的图形表示。在此示例中,单个读取事务提供64字节的数据和16字节的元数据。数据和元数据被存储在存储器模块中,该存储器模块包括用于存储数据的八个芯片(c0-c7)和用于存储元数据的两个芯片(ecc1和ecc2)。在单个事务(读取访问)中,每个数据芯片提供8个字节的数据,并且每个ecc芯片提供1个字节的元数据,它们可以构成64字节的高速缓存行以及16个字节的元数据。每个读取访问通过数据总线以多个数据串来返回高速缓存行。例如,总线宽度可以是80位(64+16),在这种情况下,通过总线用八个数据串来读取完整行。然而,本领域普通技术人员将明白,在不脱离本公开的情况下,可以使用芯片大小、总线宽度和数据串长度的各种组合,只要可以在单个事务中一起读取数据、ecc和mac。

在图5所示的示例中,行502指示如何在存储器模块中的芯片之间分配64字节数据和16字节元数据(对应于在单次读取访问中返回的数据)。数据被存储在芯片c0-c7中。用于芯片ecc1中的数据的是8字节mac以及8字节纠错码(ecc)被存储在芯片ecc2中。当然,在不脱离本公开的情况下,可替代地,mac和ecc可以分别存储在ecc2和ecc1中。可以从数据和mac两者来计算ecc。行504指示计数器的分配。在一个实施例中,行504包含用于计算行502中的mac的计数器以及用于计算计数器完整性树中的第一节点值的所有其他计数器。例如,行504可以包含用于8路完整性树的8个8位计数器,其中每个散列函数采用8个计数器作为输入。这些相同的计数器用于8条数据线,因此,在此示例中,计数器存储不超过可用存储的1/8。可以使用其他大小的计数器。例如,在另一实施例中,使用分段计数器。如本领域所公知的,分段计数器包括主要部分(majorpart)和次要部分(minorpart)。主要部分对许多数据线(值得一提的是整页)是共有的。次要部分(随每次写入递增)存储在行504中,从而使计数器的存储量大大减少。当次要计数器翻转(rollover)时,计数器的主要部分会递增。当然,计数器可以递减而不是递增。

为了检测对计数器值的篡改,行504包括该行中的计数器值的mac值(cmac)和该行的ecc(eccc)。

行506指示计数器完整性树的节点值的存储分配。要存储的节点数取决于树的结构。例如,对于八路树,针对计数器值和节点值所需的存储器大约是数据存储器的1/7。为了检测对计数器树节点值的篡改,行506包括该行中的树节点值的mac值(tmac)和该行的ecc(ecct)。它们存储在芯片ecc1和ecc2中。

图5中所示的存储器布置的优点在于可以在针对行502的单次读访问中撷取数据和相关联的mac和ecc。另外,还可以在针对行504的单次读访问中撷取评估计数器完整性树所需的计数器值。要读取的完整性节点值的数目取决于完整性的结构并且还取决于在访问之前哪些节点值已存储于片上。

相比之下,在现有方法中,mac值存储在单独的行中并且需要额外的读取操作。因此,所公开的布置减少了存储器流量并改善了性能。

本公开方法的一个方面是结合所公开的存储器布置来使用计数器完整性树而不是mac或数据完整性树。对于mac或数据完整性树,需要读取多行以便能够计算完整性树中的第一节点值。

除了保护存储在存储器中的数据之外,还期望通过检测位错误并且(如果可能的话)纠正位错误来确保数据是可靠的。这可以通过使用纠错码(ecc)来完成。例如,服务器存储器(比如ecc-dimm)可以配备有额外的存储和总线宽度,使得纠错码能够在与相关联的数据同时进行存储和读取。

本公开的一个方面涉及一种用于从存储器(比如存储器模块)撷取数据的方法,该存储器具有可寻址行,每个可寻址行包含数据区域和元数据区域。从存储器模块中的第一行地址处的第一可寻址行读取数据和与数据相关联的第一存储的消息认证码(mac),其中数据存储在第一可寻址行的数据区域中,并且mac存储在第一可寻址行的元数据区域中。从存储器模块中的第二可寻址行读取多个计数器值。从数据和多个计数器值的第一计数器值生成第一存储的mac。从数据、第一秘密密钥、第一计数器值和第一行地址(可选)生成第一计算的mac。当从存储器模块读取的第一存储的mac等于第一计算的mac时,认为数据是可靠的。

另外,纠错码可以从存储器模块中的第一可寻址行的元数据区域读取,并且被用于确定是否可以纠正数据或第一mac中的一个或多个位错误。在纠正被确定为可纠正的数据或第一mac中的任何位错误之后,当第一存储的mac等于第一计算的mac时,认为数据是可靠的。

作为数据完整性的检查,可以对照一个或多个可信节点值(例如,其可以存储在片上)来检查计数器完整性树的节点值。

计数器完整性树的初始级别中的节点的节点值被设置为从存储器模块中的第二可寻址行读取的计数器值。然后,从读取的计数器值和从存储器设备读取的其他节点值逐级地、迭代地计算节点值。计算继续,直到计算出可信节点值可用于进行比较的节点值。当可信节点值和计算的节点值相等并且存储的mac和计算的mac相等时,确定数据是安全的。

图6是与本公开的实施例一致的用于读取和认证存储在存储器中的数据的方法600的流程图。在开始框602之后,在框604处,在单个读取事务中读取所存储的数据、存储的mac和ecc。在框606处,在第二读取事务中读取对应的计数器值。然后在框608处计算数据的mac,如上面参考图3所述,并在框610处,将其与存储的mac进行比较。如果存储的mac和计算的mac不一致,如判定框610的否定分支所描绘的,则在框616处,数据被认为不可靠并且读取失败。否则,如来自判定框610的肯定分支所描绘的,流程继续到框618,此处开始对计数器完整性树的检查。在框618处,在框606处读取的计数器值与级别1节点值一起使用以计算第一级散列值。如果第一级散列值的可信值不可用(它可能例如由于前一次读取而存储在片上缓存中),如判定框620的否定分支所描绘的,则在框622处,从存储器模块读取节点值,以使得能够在框618处计算下一级别散列值。该过程继续,直到已经计算了可信值可用的散列值,如来自判定框620的肯定分支所示。在判定框624处,将计算的散列值与存储的散列值进行比较。如果它们不匹配,如判定框624的否定分支所示,在框616处,则认为存储器模块的完整性已被破坏并且读取失败。否则,在框604处读取的数据被认为是可靠的,并且该过程在框626处终止。

注意,还读取了与计数器值和节点值相关联的mac和ecc,并且在每个步骤处,将其用于确定相关联的值是否可靠(或者是否可通过纠正位错误使其可靠)。这些值存储在与相关联的计数器和节点值相同的高速缓存行中,如参考图5所述。

在现有系统中,mac与数据分开存储。因此,每次数据访问至少需要两次存储器访问-一次访问对数据(和任何纠错码)进行撷取,另一次访问对相关联的mac进行撷取。访问计数器和完整性值可能需要进行额外的读取。相比之下,利用所公开的存储器布置,数据和mac存储在存储器的同一行中,从而仅需要进行单次存储器访问。

图7是现有数据处理系统700的框图,该数据处理系统包括可信区域702(比如片上系统(soc))和存储器系统704。例如,存储器系统可以基于ecc-dimm。可信区域702包括访问末级高速缓存(llc)708中的数据的处理核706。存储器控制器710在llc和片外存储器系统704之间移动数据。存储器控制器包括数据检查引擎712。存储器系统704将可以在逻辑上布置在存储器中的数据714存储为多个可寻址行,其可以对应于高速缓存行。与每行相关联的是用于存储纠错码(ecc)716的元数据区域。附加行包含被连续分组到数据区域718中的mac,以及在相关联的元数据区域720中的ecc。数据区域722存储计数器值,相关联的ecc在元数据区域724中。数据区域726存储完整性树值,相关联的ecc在元数据区域728中。

来自行的数据区域的数据730和来自行的元数据区域的ecc732由存储器控制器710在单个事务734中一起读取。然后在数据检查引擎712中对数据进行检查。数据(如果已被验证)和相关联的mac保存在llc708中,如箭头736所示。完整性树是mac值的树(默克尔树)。将mac保存在lcc中可能会减少未来存储器访问次数。

图8是与本公开的实施例一致的具有数据安全性及可靠性检查的数据处理系统800的框图。数据处理系统800包括可信区域802(比如片上系统(soc))以及存储器系统804。例如,存储器系统可以基于ecc-dimm。可信区域802包括访问末级高速缓存(llc)808中的数据的处理核806。存储器控制器810在llc和片外存储器系统804之间移动数据。存储器控制器包括数据检查引擎812。存储器系统804将可以在逻辑上布置在存储器中的数据814存储为多个可寻址行,其可以对应于高速缓存行。与每行相关联的是用于存储纠错码(ecc)和与数据814相关联的mac的元数据区域816。附加行包括存储计数器值的数据区域822,相关联的ecc在元数据区域824中。数据区域826存储完整性树值,相关联的ecc在元数据区域828中。

来自行的数据区域的数据830和来自行的元数据区域的ecc和mac832由存储器控制器810在单个事务834中一起读取。然后在数据检查引擎812中对数据进行检查。在额外的读取事务中撷取计数器值和完整性树值。数据(如果已被验证)和计数器值以及完整性树值被保存在llc808中,如箭头836所示。如上参照图4所述,完整性树是基于计数器的,因此,这与现有系统(mac值不存储在llc中)是不同的。在lcc中保存计数器值和完整性树值可以减少未来存储器访问次数。

本公开的另一方面涉及一种用于在具有多个可寻址行的存储器模块中存储数据的方法,每个可寻址行包含数据区域和元数据区域。数据和消息认证码(mac)被写入在存储器模块的第一行地址处的第一行,其中mac取决于数据、第一计数器值和第一秘密密钥。多个计数器值被写入在存储器模块的第二行地址处的第二行,其中多个计数器值包括第一计数器值。计数器完整性树(具有根值)的散列值被更新。计数器完整性树的节点值(除根值外)被写入在存储器模块的一个或多个第三行地址处的一个或多个第三行。计数器完整性树的根值和第一秘密密钥存储在可信的片上存储器中。

在数据被写入存储器模块之前,数据可以是根据存储在可信存储器中的第二秘密密钥进行加密的数据。

在每次写入操作时,第一计数器值被更新。第一计数器值可以是分段计数器值的次要部分,在这种情况下,更新计数器值包括递增分段计数器值的次要部分,并且当次要部分翻转时,递增分段计数器值的主要部分并将主要部分写入存储器模块。

将多个计数器值写入在存储器模块的第二行地址处的第二行可以包括计算多个计数器值的元数据,并且将多个计数器值和元数据写入在存储器模块的第二行地址处的第二行。元数据可以是mac、ecc或mac和ecc值两者。

另外,将计数器完整性树的节点值写入在存储器模块的一个或多个第三行地址处的一个或多个第三行可以包括每行节点值的计算元数据,并且将每行节点值和相关联的元数据在一个或多个第三行地址的行地址处写入在存储器模块中。

虽然本发明可以容许许多不同形式的实施例,但是将在如下理解下在附图中示出并且在本文的具体实施例中详细描述本发明:这样的实施例的公开被认为是本发明原理的示例,并非旨在将本发明限制于所示出和所描述的特定实施例。在下面的描述中,在附图中的若干视图中相似标号被用来描述相同、类似或对应部分。

在本文中,关系术语(比如第一和第二、顶部和底部等)可以仅用于将一个实体或动作与另一实体或动作区分开,而未必要求或暗示这些实体或动作之间的任何实际的这种关系或顺序。术语“包括”、“包含”或其任何其他变型旨在涵盖非排他性的包括,使得包括要素列表的过程、方法、物品或设备不仅包括这些要素,而是可以包括未明确列出的或者这些过程、方法、物品或装置所固有的其他要素。在没有更多限制的情况下,“包括......”后接的要素不排除在包括该要素的过程、方法、物品或装置中存在另外的相同要素。

在整个本文中对“一个实施例”、“某些实施例”、“实施例”或类似术语的引用意味着结合该实施例描述的特定特点、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书中的各种地方的这些短语的出现不一定所有是指相同的实施例。此外,特定特点、结构或特性可以以任何合适的方式组合在一个或多个实施例中而不受有限制。

如本文所使用的术语“或”应当被解释为包含性的或意指任何一种或任何组合。因此,“a、b或c”表示“以下任何一项:a;b;c;a和b;a和c;b和c;a、b和c”。该定义的例外仅当元素、功能、步骤或动作的组合以某种方式固有地相互排斥时才会发生。

为了说明的简单和清楚起见,可以在附图中重复附图标记以指示对应或类似的元件。阐述了许多细节以提供对本文所描述实施例的理解。可以在没有这些细节的情况下实施这些实施例。在其他情况下,没有详细描述众所周知的方法、过程和组件以避免模糊所描述的实施例。该描述不应被视为限制本文描述的实施例的范围。

如本文所使用的术语处理器、控制器等可以包括处理器、控制器、微控制器单元(mcu)、微处理器和其他合适的控制元件。应当理解,本文中描述的本发明的实施例可以包括一个或多个常规的处理器以及独特存储的程序指令,该独特存储的程序指令控制一个或多个处理器结合某些非处理器电路实现本文中描述的一些、大多数或所有功能。非处理器电路可以包括但不限于接收器、发射器、无线电、信号驱动器、时钟电路、电源电路、以及用户输入设备。这样,这些功能可以被解释为根据与本发明一致的某些实施例执行功能的方法。可替代地,一些或所有功能可以由不具有存储的程序指令的状态机实现,或者在一个或多个专用集成电路(asic)中实现,其中每个功能或某些功能的一些组合被实现为自定义逻辑。当然,可以使用两种方法的组合。因此,本文中已经描述了用于这些功能的方法和装置。此外,预料到普通技术人员尽管有可能在受到例如可用时间、当前技术和经济考量的激发下做出很大努力和许多设计选择,但是当在本文公开的概念和原理的指导下,将能够以最少的实验容易地生成这样的软件指令和程序以及ic。

本领域技术人员将认识到,已经关于基于使用编程处理器的示例性实施例描述了本发明。然而,本发明不应受此限制,因为本发明可以使用硬件组件等同物来实现,比如专用硬件和/或专用处理器,它们是所描述并要求保护的本发明的等同物。类似地,通用计算机、基于微处理器的计算机、微控制器、光学计算机、模拟计算机、专用处理器和/或专用硬连线逻辑可以用于构造本发明的替代等同实施例。

此外,本领域技术人员将理解,在不脱离本发明的情况下,用于实现上述实施例的程序流和相关联数据可以使用各种形式的存储器来实现,比如只读存储器(rom)、随机存取存储器(ram)、电可擦除可编程只读存储器(eeprom);非易失性存储器(nvm);大容量存储器,比如硬盘驱动器、软盘驱动器、光盘驱动器;光存储元件、磁存储元件、磁光存储元件、闪存、磁芯存储器和/或其他等效存储技术。这样的替代存储设备应当被视为等同物。

本文中描述的各种实施例是使用执行编程指令的编程处理器来实现的,该编程指令以流程图形式被大致描述,其可以存储在任何合适的电子存储介质上或通过任何合适的电子通信介质发送。然而,本领域技术人员将理解,在不脱离本发明的情况下,上述过程可以以任何数目的变型和许多合适的编程语言来实现。例如,在不脱离本发明的情况下,执行的某些操作的顺序通常可以改变,可以添加附加操作或者可以删除操作。在不脱离本发明的情况下,可以添加和/或增强错误捕获,并且可以对用户界面和信息呈现作出变更。这些变更被构想并认为是等效的。

因此,所公开实施例的一些方面和特征在以下编号项中列出:

1.一种用于从具有多个可寻址行的存储器中撷取数据的方法,每个可寻址行包含数据区域和元数据区域,该方法包括:在单个事务中读取存储器中的第一地址处的第一可寻址行,其中,第一可寻址行的元数据区域包含第一存储的消息认证码(mac)和纠错码(ecc),这两者都与包含在第一可寻址行的数据区域中的数据相关联;从存储器中的第二可寻址行读取多个计数器值,其中,第一存储的mac是从数据、多个计数器值的第一计数器值和第一秘密密钥生成的;数据检查引擎根据数据、第一计数器值和第一秘密密钥计算第一计算的mac;以及当第一存储的mac等于第一计算的mac时,确定数据是可靠的。

2.根据第1项所述的方法,其中,ecc与数据和第一存储的mac有关,该方法还包括,根据ecc来纠正第一存储的mac、数据或第一存储的mac和数据两者;以及当数据或第一存储的mac中的一个或多个位错误被纠正时:重新计算第一计算的mac;以及当第一存储的mac等于第一计算的mac时,确定数据是可靠的。

3.根据第1项所述的方法,还包括:从存储器中读取多个节点值;数据检查引擎从多个节点值和多个计数器值计算第一计数器完整性树的多个散列值;将所述计算的散列值与一个或多个存储的散列值进行比较;以及当一个或多个存储的散列值和计算的散列值相等并且存储的mac和计算的mac相等时,确定数据是安全的。

4.根据第1项所述的方法,还包括:将计数器值和节点值存储在末级高速缓存中。

5.根据第4项所述的方法,其中,从存储器读取多个节点值包括:从一个或多个第三可寻址行的数据区域读取多个节点值;从一个或多个第三可寻址行的元数据区域读取节点mac;从一个或多个第三可寻址行的元数据区域读取节点纠错码(ecc);根据节点ecc来纠正节点值和节点mac中的任何可纠正的位错误;以及根据节点mac和节点ecc来确定多个节点值的可靠性。

6.根据第1项所述的方法,其中,从存储器中的第二可寻址行读取多个计数器值包括:从第二可寻址行的数据区域读取多个计数器值;从第二可寻址行的元数据区域读取计数器mac;从第二可寻址行的元数据区域读取计数器纠错码(ecc);根据计数器ecc纠正多个计数器值和计数器mac中的任何可纠正的位错误;以及根据计数器mac和计数器ecc来确定多个计数器值的可靠性。

7.根据第1项所述的方法,其中,存储器包括具有八个数据芯片和两个元数据芯片的存储器模块。

8.根据第1项所述的方法,其中,计数器值包括分段计数器值的次要部分,该方法还包括:将分段计数器值的次要部分与主要部分结合以形成最终计数器值。

9.根据第1项所述的方法,其中,从存储器的第一可寻址行读取的数据包括加密数据,该方法还包括:使用第一计数器值、第一地址和第二秘密密钥对加密数据进行解密。

10.根据第1项所述的方法,其中,对数据进行解密包括:从第一计数器值、第一地址和第二秘密密钥形成一次性密码本;以及在一次性密码本和加密数据之间执行xor操作。

11.根据第1项所述的方法,其中,计算第一计算的mac包括:从第一计数器值、第一地址、第一秘密密钥和数据形成加密散列函数。

12.根据第1项所述的方法,其中,计算第一计算的mac还取决于第一地址。

13.一种用于在具有多个可寻址行的存储器中存储数据的方法,每个可寻址行包含数据区域和元数据区域,该方法包括:将数据和消息认证码(mac)写入存储器的第一行地址处的第一行,其中,mac取决于数据、第一计数器值和第一秘密密钥;将多个计数器值写入存储器的第二行地址处的第二行,其中,多个计数器值包括第一计数器值;更新被写入存储器的计数器值的计数器完整性树的节点值,该计数器完整性树具有根值;将除根值外的计数器完整性树的节点值写入存储器的一个或多个第三行地址处的一个或多个第三行;以及将计数器完整性树的根值和第一秘密密钥存储在可信存储器中。

14.根据第13项所述的方法,还包括:在数据被写入存储器之前根据第二秘密密钥对数据进行加密;以及将第二秘密密钥存储在可信存储器中。

15.根据第14项所述的方法,还包括更新第一计数器值。

16.根据第16项所述的方法,其中,第一计数器值是分段计数器值的次要部分,并且其中,更新计数器值包括:递增分段计数器值的次要部分;以及当次要部分翻转时,递增分段计数器值的主要部分并将主要部分写入存储器。

17.根据第14项所述的方法,其中:将多个计数器值写入存储器的第二行地址处的第二行包括计算多个计数器值的元数据,并且将多个计数器值和元数据写入存储器的第二行地址处的第二行;以及将计数器完整性树的节点值写入存储器的一个或多个第三行地址处的一个或多个第三行包括计算每行节点值的元数据,并且将每行节点值和相关联的元数据在一个或多个第三行地址的行地址处写入存储器,其中,元数据包括mac和纠错码(ecc)。

18.一种用于从具有多个可寻址行的存储器中撷取数据的数据处理系统,每个可寻址行包含数据区域和元数据区域,该数据处理系统包括:存储器管理单元,存储器管理单元被配置用于:在单个读取事务中从在存储器中的第一地址处的第一可寻址行读取数据和与数据相关联的第一存储的消息认证码(mac),其中,数据被存储在第一可寻址行的数据区域中,并且mac被存储在第一可寻址行的元数据区域中;以及从存储器中的第二可寻址行读取多个计数器值,其中第一存储的mac是从数据、多个计数器值的第一计数器值和第一秘密密钥生成的;数据检查引擎,该数据检查引擎包括用于从数据、第一计数器值和第一秘密密钥提供第一计算的mac的mac生成器以及用于在第一存储的mac等于第一计算的mac时确定数据可靠的逻辑;以及存储设备,该存储设备用于存储第一秘密密钥。

19.根据第18项所述的数据处理系统,其中,存储器管理单元进一步被配置为从存储器中的第一可寻址行的元数据区域读取纠错码(ecc),并且其中,数据检查引擎被配置用于:确定数据或第一mac中的一个或多个位错误是否能够纠正;以及在纠正被确定为可纠正的数据或第一mac中的任何位错误之后,当第一存储的mac等于第一计算的mac时,确定数据是可靠的。

20.根据第18项所述的数据处理系统,其中,数据检查引擎还被配置用于:将计数器完整性树的初始级别中的节点的节点值设置为从存储器中的第二可寻址行读取的多个计数器值;以及迭代地执行:从前一级别中的节点的多个节点值计算计数器完整性树的下一级别中的节点的节点值;当下一级别中的节点的可信值不可用于数据检查引擎时:信号告知存储器管理单元以从存储器中的一个或多个第三可寻址行读取计数器完整性树的下一级别中的节点的节点值;其他情况下:将下一级别的节点的可信节点值与计算的节点值进行比较;以及当可信节点值和计算的节点值相等并且存储的mac和计算的mac相等时,确定数据是安全的。

21.根据第18项所述的数据处理系统,还包括存储器,其中该存储器包括具有八个数据芯片和两个元数据芯片的存储器模块。

22.根据第18项所述的数据处理系统,其中,从存储器的第一可寻址行读取的数据包括加密数据,并且其中,数据检查引擎还被配置用于使用第一计数器值、第一地址和存储在存储设备中的第二秘密密钥对加密数据进行解密。

已经通过示例而非限制的方式呈现了已经在本文中详细描述的各种代表性实施例。本领域技术人员将理解,可以对所描述的实施例的形式和细节进行各种改变,从而得到保留在所附权利要求范围内的等同实施例。

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