一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

控制对存储在非可信存储器中的数据的访问的装置和方法与流程

2022-07-17 01:51:00 来源:中国专利 TAG:

控制对存储在非可信存储器中的数据的访问的装置和方法


背景技术:

1.本技术涉及存储器安全,并且更具体地涉及一种用于控制对存储在非可信存储器中的数据的访问的装置和方法。
2.一些数据处理系统可能需要运行涉及处理不应暴露于潜在攻击者的保密或敏感信息的软件。然而,提供足够的容量以将所有此类信息存储在攻击者无法篡改的存储器中可能是不可行的,因此有时可能需要将一些敏感信息导出到易受攻击的存储器。例如,虽然存储在片上的数据可以防止攻击,但片上存储器存储装置可能受到限制,因此可能需要将数据写入到片外外部存储器。攻击者可能能够从外部存储器读取数据或在数据传递到外部存储器时拦截该数据,和/或篡改存储在外部存储器中的数据值,以试图在此类外部存储的数据随后被带回到处理系统中时导致不正确的行为。
3.为了为存储在潜在不安全存储器中的数据提供安全性,可以与该数据相关联地生成认证码,然后在执行验证时参考这些认证码,以便在从不安全存储器读取数据时,检查该数据自存储到存储器以来未被修改过。虽然认证码小于使用它们来认证的数据(例如,对于64字节数据块为64到128位),但是它们需要足够大以抑制可能被攻击者利用的冲突的可能性,即在两个不同数据值产生相同认证码的情况下发生的冲突。否则,在冲突时,监测非可信存储器的攻击者可以用不同的值替换当前值并且因此损坏存储器,因为使用认证码执行的验证将导致假肯定(即,尽管数据不同,验证也会通过)。
4.因此,与存储在非可信存储器中的数据相关联地使用的认证码集合的大小通常大于可以存储在片上的认证码集合,并且因此也可以存储在非可信存储器中。为了提高性能,可以将未来可能使用的有限数量的认证码存储在可信存储装置(诸如片上高速缓存)中,其中访问时间小于在非可信存储器中访问的认证码的情况。然而,此类可信存储装置的大小通常相对较小,并且期望更有效地利用该可信存储装置。


技术实现要素:

5.在第一示例性布置中,提供了一种装置,该装置包括:存储器访问电路,该存储器访问电路用于控制对存储在非可信存储器中的数据的访问;存储器安全电路,该存储器安全电路用于验证存储在该非可信存储器中的数据的完整性;以及可信存储装置;该存储器安全电路具有认证码生成电路,以生成要与存储在该非可信存储器中的该数据相关联的认证码,以便在验证该数据的该完整性时使用;其中针对要生成相关联的认证码的给定数据块,该认证码生成电路被布置成:当该相关联的认证码要存储在该非可信存储器中时,生成具有第一大小的第一认证码作为该相关联的认证码,并且当该相关联的认证码要存储在该可信存储装置中时,生成具有小于该第一大小的第二大小的第二认证码作为该相关联的认证码。
6.在第二示例性布置中,提供了一种控制对存储在非可信存储器中的数据的访问的方法,该方法包括:采用认证码生成电路来生成要与存储在该非可信存储器中的该数据相关联的认证码;参考该认证码来验证该数据的完整性;提供可信存储装置;以及针对要生成
相关联的认证码的给定数据块,将该认证码生成电路布置成:当该相关联的认证码要存储在该非可信存储器中时,生成具有第一大小的第一认证码作为该相关联的认证码,并且当该相关联的认证码要存储在该可信存储装置中时,生成具有小于该第一大小的第二大小的第二认证码作为该相关联的认证码。
7.在又一示例性布置中,提供了一种装置,该装置包括:存储器访问装置,该存储器访问装置用于控制对存储在非可信存储器中的数据的访问;存储器安全装置,该存储器安全装置用于验证存储在该非可信存储器中的数据的完整性;以及可信存储装置;该存储器安全装置具有认证码生成装置,该认证码生成装置用于生成要与存储在该非可信存储器中的该数据相关联的认证码,以便在验证该数据的该完整性时使用;其中该认证码生成装置响应于要生成相关联的认证码的给定数据块,用于当该相关联的认证码要存储在该非可信存储器中时,生成具有第一大小的第一认证码作为该相关联的认证码,并且用于当该相关联的认证码要存储在该可信存储装置中时,生成具有小于该第一大小的第二大小的第二认证码作为该相关联的认证码。
附图说明
8.将参考如附图所示的本技术的示例,仅以例示的方式进一步描述本技术,其中:
9.图1是示意性地示出具有存储器安全电路的装置的示例的框图,该存储器安全电路用于验证存储在非可信存储器中的数据的完整性;
10.图2a至图2c示意性地示出根据一个示例性布置的可以用于生成第一认证码和第二认证码的技术;
11.图3是示出在一个示例性布置中采用的认证码生成过程的流程图;
12.图4是示出在一个示例性布置中采用的逐出过程的流程图;
13.图5是示出在一个示例性布置中采用的数据读取过程的流程图;
14.图6是示出在一个示例性布置中可以作为图5的步骤265的替代方案执行的步骤序列的流程图;
15.图7是根据一个示例性布置的流程图,示出了针对从非可信存储器读取的全大小的认证码序列可以如何生成减小大小的认证码;
16.图8a和图8b示出了可以在特定示例性布置中采用的一种形式的认证码生成电路;并且
17.图9示出了在一个示例性布置中,当采用图8a和图8b所示的认证码电路时,可以如何从输入的全大小的认证码生成减小大小的认证码。
具体实施方式
18.根据一个示例性实施方式,提供了一种装置,该装置具有用于控制对存储在非可信存储器中的数据的访问的存储器访问电路,以及用于验证存储在该非可信存储器中的数据的完整性的存储器安全电路。该存储器安全电路具有认证码生成电路,以生成要与存储在该非可信存储器中的该数据相关联的认证码,以便在验证该数据的该完整性时使用。
19.还提供了可信存储装置,该可信存储装置通常将具有比该非可信存储器显著更小的容量。该可信存储装置可以采取各种形式,但可以例如是高速缓存存储装置。通常,该高
速缓存存储装置可以用于高速缓存存储在该非可信存储器中的信息的子集。因此,虽然由该认证码生成电路生成的认证码通常可以存储在非可信存储器中,但那些认证码的子集可以存储在该可信存储装置中。然而,本技术的发明人意识到,与仅使用该可信存储装置高速缓存存储在该非可信存储器中的认证码的子集相比,可以实现对该可信存储装置的更有效利用。具体地,如先前提及的,这些认证码通常被制得足够大以抑制攻击者利用的冲突的可能性。否则,攻击者可以实施替换攻击,由此存储在存储器中的数据被产生相同认证码的不同数据替换,并且因此通过验证检查。
20.然而,发明人指出,由于攻击者无法读取可信存储装置的内容,因此攻击者不知道可能的冲突,进而不知道应执行替换攻击的确切时间。因此,当验证检查采用存储在可信存储装置中的认证码信息时,攻击者实施替换攻击的唯一机会是盲目地替换存储器中的数据值并且寄希望于认证码冲突。这种攻击具有1/2i的成功概率,其中i是认证码的位大小。此外,攻击者通常将仅具有单次尝试,因为检测到的存储器损坏将触发通常中止受影响过程的紧急程序。
21.因此,虽然整个认证码集合通常太大而不能存储在可信存储装置中的事实导致了需要将认证码存储在非可信存储器中,并且这进而通常表明认证码的大小有效地使得冲突机会小到足以抑制攻击者执行替换攻击的能力,但发明人意识到,当认证码存储在可信存储装置中时,它们不再需要像存储在非可信存储器中时那样大。因此,根据本文所述的技术,认证码生成电路被布置成根据认证码将被存储的位置来生成不同形式的认证码,而不是仅使用可信存储装置来高速缓存生成用于存储在非可信存储器中的认证码的子集的副本。
22.具体地,针对要生成相关联的认证码的给定数据块,该认证码生成电路被布置成:当该相关联的认证码要存储在该非可信存储器中时,生成具有第一大小的第一认证码作为该相关联的认证码,并且当该相关联的认证码要存储在该可信存储装置中时,生成具有小于该第一大小的第二大小的第二认证码作为该相关联的认证码。因此,与可信存储装置仅用于高速缓存存储在非可信存储器中的认证码的子集的情况相比,可以将更大数量的认证码存储在可信存储装置中。这可以显著减少装置内的硅面积和功率消耗,而不会损害由装置执行的完整性检查的有效性。具体地,虽然减小认证码的大小确实增加了发生冲突的机会,但是由于减小大小的认证码仅在可信存储装置内使用,潜在的攻击者不能访问该可信存储装置的内容,因此攻击者无法利用这种冲突可能性的增加,并且如先前提及的,只能在没有任何关于该攻击引起冲突可能性的信息的情况下寻求执行盲目攻击。
23.上述分别用于存储在非可信存储器和可信存储装置中的认证码的第一大小和第二大小是设计选择的问题。然而,仅借助于具体示例,可能的情况是,当64位的第一认证码存储在非可信存储器中时,这些认证码与64字节的数据块相关联地使用,但是生成的用于存储在可信存储装置中的第二认证码可能只有16位或32位,这暗示高速缓存大小分别减小了75%或50%。替代性地,相较于仅高速缓存存储在非可信存储器中的认证码的子集的方法,将理解,当采用上述技术时,可以将显著更大数量的认证码存储在可信存储装置中,而不是减小高速缓存大小。
24.在一个示例性实施方式中,该装置可以被认为是与信任域驻留在一起,并且非可信存储器可以在该信任域之外。在这种布置中,该认证码生成电路可以被布置成以确保第
二认证码不能从驻留在信任域之外的信息推断出的方式生成第二认证码。具体地,为了确保完整性检查过程的稳健性不会因在可信存储装置内使用较小大小的认证码而受到损害,期望减小大小的认证码对于潜在的攻击者来说是不可预测的。根据以上讨论显而易见的是,不仅数据,而且第一认证码都存储在非可信存储器内,因此期望第二认证码不能从第一认证码的知识预测。因此,例如,期望第二认证码不仅仅是通过截断第一认证码而产生的。
25.因此,在一个示例性布置中,该认证码生成电路被布置成采用认证码生成过程,该认证码生成过程取决于第一认证码和第二认证码中的哪一个认证码正在被生成,以确保针对给定数据块生成的第二认证码不能从针对该给定数据块的第一认证码的可见性推断出。
26.存在可以确保第二认证码不能从等效的第一认证码的可见性推导出的多种方式。例如,在一个实施方式中,该认证码生成过程取决于保密数据的输入项,并且认证码生成电路被布置成:当生成第一认证码时致使保密数据的第一项被使用,并且当生成第二认证码时致使保密数据的第二项被使用,其中保密数据的该第二项与保密数据的该第一项不同。
27.存在可以生成第二认证码的多种方式。例如,该认证码生成电路可以被布置成通过应用将给定数据块用作一个输入的算法来生成第二认证码。因此,第二认证码可以基于认证码要关联的数据块和保密数据的第二项(即,与生成第一认证码将使用的保密数据的等效项不同的保密数据的项)生成。然而,在替代性实施方式中,可以在不参考给定数据块的情况下生成第二认证码。具体地,该认证码生成电路可以被布置成通过应用将第一认证码用作一个输入的算法来生成第二认证码。因此,在此类实施方式中,将始终生成第一认证码,但是如果决定将认证码存储在可信存储装置中,则将采用附加的过程来基于第一认证码生成第二认证码。应注意,在这种情况下,仍然存在攻击者无法从第一认证码的知识推断出第二认证码的情况,因为当生成第二认证码时也将使用其他输入,诸如先前提及的保密数据的第二项。
28.存在认证码生成电路可以生成具有所需第二大小的第二认证码的多种方式。例如,用于生成第二认证码的算法可以直接生成具有所需第二大小的第二认证码。然而,在替代性实施方式中,该认证码生成电路可以被布置成通过以下方式生成第二认证码:采用生成具有第一大小的中间认证码的算法,并且然后应用另一过程以从该中间认证码产生具有第二大小的第二认证码。因此,用于生成第二认证码的算法本身可能不直接产生具有所需大小的认证码,但是然后可以使用单独的过程将中间认证码转换为具有第二大小的第二认证码。例如,该另一过程可以是截断过程,使得第二认证码仅仅是中间认证码的截断版本。
29.如先前提及的,可信存储装置可以采取多种形式,但是在一个示例性实施方式中,该可信存储装置被组织为高速缓存以存储用于存储在非可信存储器中的数据块的子集的第二认证码。
30.当可信存储装置被组织为高速缓存时,将显而易见的是,有时将需要从高速缓存逐出第二认证码,例如以便为已经生成的新的第二认证码腾出空间。此时,为了避免丢失任何认证码信息,等效的第一认证码必须存在于非可信存储器中。存在可以实现这种情况的多种方式。例如,在一个实施方式中,当生成要存储在可信存储装置中的第二认证码时,该认证码生成电路可以被布置成还生成第一认证码并将生成的第一认证码存储在非可信存储器中,由此在从可信存储装置逐出任何第二认证码时,对应的第一认证码存在于非可信存储器中。因此,由于在最初生成第二认证码并存储在可信存储装置中时,也生成了等效的
第一认证码并存储在非可信存储器中,所以在逐出第二认证码时,可以仅将第二认证码丢弃而不需要任何进一步的行动。
31.然而,在替代性实施方式中,当生成要存储在可信存储装置中的第二认证码时,该认证码生成电路可以被布置成不将第一认证码存储在非可信存储器中,并且在从可信存储装置逐出任何第二认证码时,该认证码生成电路可以被布置成生成对应的第一认证码以存储在非可信存储器中。应注意,取决于用于生成第二认证码的过程,可以或可以不作为生成第二认证码的过程的一部分生成第一认证码。然而,根据该示例性实施方式,即使作为生成第二认证码的过程的一部分生成了第一认证码,一旦第二认证码已经生成并存储在可信存储装置中,就不会保留第一认证码,并且因此需要在逐出时重新生成第一认证码。由于不能从第二认证码重新生成第一认证码,因此必须从非可信存储器读取相关的数据块,以生成将存储在非可信存储器中的第一认证码。应注意,此生成过程的成功取决于读取的数据块的完整性验证。为了执行该验证,将从读取的数据块重新创建第二认证码,然后将该第二认证码与将要逐出的第二认证码进行比较。如果该验证成功,则可以通过丢弃逐出的第二认证码并将经验证的第一认证码存储在非可信存储器中来完成逐出过程。
32.在一个示例性实施方式中,当从非可信存储器读取数据块时,该存储器安全电路被布置成确定相关联的认证码是否作为第二认证码存储在可信存储装置中,并且如果是这样的话,使用该可信存储装置中的第二认证码来验证读取的数据块的完整性。相反,如果确定相关联的认证码未作为第二认证码存储在可信存储装置中,则该存储器安全电路可以被布置成从非可信存储器检索第一认证码,并且然后在验证读取的数据块的完整性时采用检索到的第一认证码。
33.虽然在一个示例性实施方式中,该存储器安全电路可以包括验证检查组件,这些验证检查组件可以基于第一认证码或第二认证码执行验证检查,但在替代性实施方式中,该存储器安全电路可以被布置成使得始终参考第二认证码执行检查。例如,当该认证码生成电路被布置成使用第一认证码作为输入来生成第二认证码时,可以采用这种方法。具体地,在一个示例性布置中,该存储器安全电路可以被布置成采用认证码生成电路来应用第二码生成算法,以根据从非可信存储器检索到的第一认证码生成参考第二认证码。此外,该认证码生成电路可以被布置成通过以下方式生成比较第二认证码:首先从读取的数据块生成比较第一认证码,并且然后使用该比较第一认证码来应用第二码生成算法,以生成比较第二认证码。然后,该存储器安全电路可以被布置成通过将该参考第二认证码与该比较第二认证码进行比较来验证读取的数据块的完整性。通过这种方法,无论用于特定数据块的认证码是作为第二认证码存储在可信存储装置中还是作为第一认证码存储在非可信存储器中,该存储器安全电路都可以被布置成基于第二认证码和比较第二认证码来验证读取的数据块的完整性。
34.在该认证码生成电路通过应用将第一认证码用作一个输入的算法来生成第二认证码的实施方式中,当认证码从非可信存储器迁移到可信存储装置时,上述情况可以产生一些益处。具体地,在该时间点,需要生成第二认证码以用于存储在可信存储装置中,并且当采用上述技术时,可以生成对应的第二认证码以用于存储在可信存储装置中,而无需参考相关联的数据块。因此,不需要访问非可信存储器以检索所讨论的数据块,而是可以使用等效第一认证码作为输入来生成第二认证码(应注意,反向过程是不可能的)。这在从非可
信存储器读取第一认证码序列的情况下可以是有用的,使得能够生成对应的等效第二认证码序列并将其存储在可信存储装置内,而不需要从非可信存储器检索相关联的数据块。这种情况的示例是通过读取包含多个第一认证码的全高速缓存行明确地或隐含地将第一认证码从非可信存储器预取到可信存储器高速缓存中。
35.该认证码生成电路可以以多种方式布置,并且可以例如包括用于生成第一认证码并且用于生成第二认证码的完全单独的电路元件。然而,在一个示例性布置中,该认证码生成电路被布置成应用第一过程来生成第一认证码并且应用第二过程来生成第二认证码,该第一过程和该第二过程共享共同的初始部分。
36.在一个特定的示例性布置中,该共同的初始部分包括使用输入密钥对数据块执行散列函数以产生中间值。然后,该认证码生成电路被布置成通过使用第一保密数据对该中间值进行加密以生成第一认证码来完成第一过程,并且被布置成通过使用第二保密数据对该中间值进行加密以生成第二认证码来完成第二过程。这可以通过避免在用于生成第一认证码的电路和用于生成第二认证码的电路两者内复制散列函数的需要来提供一些效率益处。
37.此外,在期望在已经生成第一认证码之后生成第二认证码的情况下,例如当认证码要从非可信存储器迁移到可信存储装置时,上述情况可以产生一些附加的益处。具体地,在这种情形下,该认证码生成电路可以被布置成通过以下方式生成第二认证码:使用第一保密数据对第一认证码进行解密以生成中间值,并且然后使用第二保密数据对该中间值进行加密以生成第二认证码。因此,不需要检索与认证码相关的数据块来生成第二认证码,而是可以直接从通过解密第一认证码获得的中间值来生成第二认证码。
38.现在将参考附图描述特定示例。
39.图1示意性地示出了数据处理系统的示例,该数据处理系统包括集成电路(ic)或片上系统(soc)10,其包括用于执行程序指令以进行数据处理操作的至少一个处理器内核15。虽然图1仅示出了一个处理器内核,但是在一些情况下,soc 10可以包括多个处理器。每个处理器内核或处理器内核集群可以具有高速缓存20(或多级高速缓存20、25)。存储器控制器35充当用于控制对片外存储器40的访问的存储器访问电路,该片外存储器在来自soc 10的单独集成电路上。虽然对片上数据的访问可能难以被攻击者篡改,但是soc的边缘可能会充当信任边界,并且超出该边界的任何数据可能通过拦截存储器控制器35与片外存储器40之间的物理通道37上的数据、或者通过在数据存储在片外存储器40中时读取或修改该数据而容易受到攻击。
40.应注意,虽然图1示出了信任边界对应于soc的边缘的示例,但是在其他情况下,在soc内(或三维集成电路的堆叠层之间)可能存在信任边界,这可能会将超出信任边界的数据暴露于潜在的攻击。
41.soc 10可以包括存储器安全单元30,该存储器安全单元被提供用于保护存储在片外存储器40中的数据免受可以物理访问系统并且能够观察和/或重放在微处理器与片外存储器40之间交换的数据或代码的恶意对手的侵害。存储器40不仅存储待保护的数据45,而且还存储在寻求验证数据的完整性时使用的消息认证码(mac)50。
42.存储器安全单元30可以包括加密/解密电路55,用于加密写入到片外存储器40的数据并且解密从片外存储器读回的数据。这通过防止恶意观察者清楚地看到正在从片外存
储器40读取或存储到该片外存储器上的数据来提供隐私。加密和解密电路使用的加密密钥可以存储在片上系统上的片上存储器(图1中未示出)内或存储器安全单元30本身内。可以使用任何已知的技术来进行加密和解密,并且可以使用任何已知的用于保护加密密钥的方法。应注意,当使用本文所述的认证码机制时,数据的加密不是必需的,并且如果需要,可以针对明文(即未加密的数据)采用认证码机制。
43.存储器安全单元30还包括认证单元60,用于生成消息认证码,并且用于使用相关联的消息认证码来执行验证过程以验证数据45的完整性。具体地,在将数据块写入到非可信存储器40时,认证单元60可以用于生成相关联的mac,其中数据块然后被写入到该非可信存储器,并且其中生成的mac也被存储以供将来参考。如稍后将更详细讨论的,生成的mac可以存储在非可信存储器40内的mac集合50内,或者可以替代地生成减小大小的mac并将其存储在与存储器安全单元30相关联地提供的可信存储装置65内。该可信存储装置可以采用多种形式,但是在一个实施方式中可以形成为高速缓存。
44.然后,当随后从非可信存储器40读取数据时,认证单元60可以从检索到的数据生成比较mac,然后可以将该比较mac与针对该数据存储的mac进行比较,以便检查数据的完整性。具体地,仅当认证单元60从读取的数据生成的mac与针对该数据存储的mac相匹配时,才确定数据通过数据完整性检查。
45.可以以多种方式生成mac,但是在一个示例性实施方式中,可以使用单向加密函数(诸如aes-gcm或sha-256)生成mac,当用于生成认证码的保密密钥未知时,这些单向加密函数使用的函数使得攻击者在计算上无法通过蛮力猜测与特定数据值相关联的认证码。
46.如先前所讨论的,由认证单元60生成的mac通常将被选择为足够大以使mac冲突的风险非常低,并且因此抑制攻击者利用mac冲突作为用于更改存储在非可信存储器40中的数据45的机制的能力。鉴于需要针对存储在需要保护的非可信存储器40内的每个数据块生成mac,创建的mac集合将相对较大,并且soc 10内通常没有足够的存储器来存储所有生成的mac。因此,必须将mac 50存储在非可信存储器40中,并且因此生成的mac的大小将被选择为足够大以确保mac冲突的风险非常低,使得攻击者无法利用mac冲突对存储器内容进行篡改,即使攻击者可以访问数据45和mac 50。
47.通常,片上高速缓存可以用于存储mac 50的子集以允许提高对那些mac的访问速度,并且因此例如可信存储装置65可以用于存储mac的子集。然而,代替仅使用片上高速缓存来存储外部存储在非可信存储器40中的mac的子集,根据本文所述的技术,采用不同的方法,由此认证单元60用于生成不同的认证码,具体取决于认证码是要外部存储在非可信存储器40中还是要存储在soc 10内(例如在可信存储装置65内)。具体地,当mac存储在可信存储装置65内时,这意味着攻击者无法访问该信息。因此,已经意识到,当使用存储在可信存储装置65内的mac执行验证时,攻击者不知道可能的冲突,进而不知道应执行替换攻击的确切时间。这意味着,相对于当mac存储在非可信存储器40内时采用的mac的大小,在mac存储在soc 10内提供的可信存储装置65内的情况下使用的mac的大小可以减小,而不会损害数据完整性验证过程。具体地,虽然减小大小的mac确实增加了mac冲突的发生率,但是在减小大小的mac仅存储在可信存储装置65内、而不是外部存储在非可信存储器40内的情况下,攻击者不能利用这种增加的冲突机会。
48.因此,根据本文所述的技术,当认证单元60正在生成针对数据块的mac时,在该mac
要存储在可信存储装置65内的情况下,认证单元60被布置成采用生成减小大小的mac的认证码生成过程,而在认证单元60正在生成将作为mac50之一存储在非可信存储器40内的mac的情况下,该认证单元替代地采用生成用于存储在非可信存储器40中的全大小的mac的不同认证码生成过程。此外,不同的认证码生成过程被布置成使得生成的用于存储在可信存储装置65内的减小大小的mac不能从对应的全大小的mac推断出,该全大小的mac可以生成并存储在非可信存储器40内。
49.图2a示出了认证单元60可以如何生成全大小的mac以用于存储在非可信存储器40中,这种全大小的mac在本文中也被称为第一认证码。mac函数100可以用作算法以从多个输入生成第一认证码。具体地,要生成mac的数据是输入的,并且可以是原始未加密的数据或数据的加密版本(也称为密文)。还提供了保密密钥以用于从数据生成认证码。此外,在一些实施方式中,还可以提供其他输入信息,诸如与数据相对应的物理地址,以及可选地形成在时间上不重复的唯一值(例如计数器值)的一些输入信息。可以为每个数据块维护单独的计数器,并且可以在每次写入对应的数据块时递增或更新该计数器。因此,计数器可以被视为随机数,即使用一次的任意数字,具体地在每次写入对应的数据块时,该数字的值都会改变,因此生成的认证码在每次写入数据时都会改变。可以将物理地址与计数器串联,以便与保密密钥和数据一起形成对mac函数100的输入(例如,与保密密钥一起使用的串联的物理地址和计数器作为对生成一次性密码本(otp)的函数的输入)。
50.取决于实施方式,除了图2a所示的三个输入之外,mac函数100还可以采用多种形式,并且实际上可以采取附加的输入。作为一个示例,可以通过散列函数和加密函数的组合来实施mac函数,并且在此类情况下,mac函数还可以接收散列函数使用的输入密钥以从输入数据生成散列值,然后使用保密密钥和从物理地址和计数器形成的其他输入来对该散列值进行加密。
51.图2b示出了可以用于生成减小大小的mac(在本文中也称为第二认证码)以存储在可信存储装置中的函数。在该示例中,mac函数105还接收数据作为输入(明文或密文),正如图2a的mac函数100所做的那样,以生成全大小的mac。mac函数105还接收保密密钥,但是在该示例性实施方式中,该保密密钥与用于第一认证码的保密密钥不同,因此从使用mac函数100生成的等效全大小的mac的知识将无法推断出减小大小的mac。与图2a的示例一样,mac函数105可以接收其他输入,诸如物理地址和计数器的串联。
52.mac函数105可以是是与mac函数100不同的mac函数,或者本质上可以是相同的mac函数,使得唯一的区别是mac函数105使用的保密密钥与mac函数100使用的保密密钥不同。mac函数105的应用导致生成中间认证码。在一些情况下,该中间认证码可能直接具有所需的减小大小,但是在其他示例性实施方式中,例如在mac函数105本质上是与mac函数100相同的mac函数的情况下,可能需要另一过程来从中间认证码产生减小大小的mac。例如,如图2b所示,截断过程110可以用于丢弃中间认证码的某些位,以便产生具有所需大小的第二认证码。
53.虽然全大小的mac和减小大小的mac的大小可以根据实施方式而变化,但是在一个示例性实施方式中,全大小的mac的长度可以是64位,而等效的减小大小的mac可能只有16位或32位。因此应理解,相对于仅将全大小的mac的子集高速缓存在可信存储装置65内的方法,可以存储在可信存储装置65内的认证码的数量显著增加。替代性地,对于要存储在可信
存储装置65中的期望数量的认证码,相对于可信存储装置仅用于高速缓存存储在非可信存储器40中的全大小的mac 50的某个子集的方法,可以显著减小可信存储装置本身的大小。
54.虽然在图2b的示例中,与第二认证码相关的数据块被提供为对mac函数105的输入,但是在替代性实施方式中,可以从作为图2a所示mac函数100的输出产生的第一认证码生成第二认证码。这在图2c中示出,其中加密函数115使用第一认证码以及与用于生成第一认证码的保密密钥不同的保密密钥作为输入。在这种实施方式中,可能认为没有必要还提供物理地址和计数器作为输入,因为在生成第一认证码时已经考虑了该信息。然后,加密函数115将产生中间认证码,并且与图2b的方法一样,如果需要,可以使用截断过程120来丢弃中间认证码的某些位,以便产生具有所需的减小大小的第二认证码。
55.图3是示出在一个示例性实施方式中由图1的认证单元60采用的认证码生成过程的流程图。在步骤150处,确定对于要写入到非可信存储器40的数据块是否需要认证码,并且在确定存在需要认证码的要写入的数据块时,该过程进行到步骤155。应注意,可能有一些写入到非可信存储器40的数据块不需要经受验证过程,因此不一定总是这样的情况:写入到非可信存储器的每个数据块都需要生成与之相关联的mac。
56.当在步骤150处确定需要认证码时,然后在步骤155处确定认证码是否要存储到片上高速缓存中,例如图1中所示的可信存储装置65。在一个示例性实施方式中,可能总是这样的情况:认证码最初是作为减小大小的认证码生成的以用于存储在片上高速缓存中,而存储在片上高速缓存内的较旧的认证码在必要时被逐出,以便为新生成的认证码腾出空间。在此情况下,该过程将始终遵循图3中所示的“是”路径。然而,在更一般的实施方式中,可以决定对于存储器的一些区域,或者至少对于某些数据块,将生成全大小的mac以用于存储在非可信存储器内,而不是生成减小大小的mac以用于存储在片上高速缓存内。
57.如果确定认证码要存储在片上高速缓存中,则该过程进行到步骤165,在该步骤中,使用认证单元60来生成所需的减小大小的mac以用于存储在片上高速缓存中,使用例如图2b的mac函数105或图2c的加密函数115。应注意,至少在使用加密函数115的情况下,在步骤165处由认证单元执行的过程还将涉及生成第一认证码(即,全大小的mac),因为它是加密函数需要的输入。
58.如可选的步骤170所示,认证单元还可以被布置成生成全大小的mac并将该全大小的mac存储非可信存储器40中。因此,无论在步骤165处使用了图2b的mac函数105还是使用了图2c的加密函数115,认证单元在任何情况下都可以被布置成使用mac函数100生成全大小的mac,并将该全大小的mac存储在非可信存储器中。如稍后将更详细讨论的,如果在适当的时候需要从片上高速缓存逐出在步骤165处生成的减小大小的mac,这可以产生简化,因为此时,对应的全大小的mac已经存在于非可信存储器内并且因此不需要重新创建。
59.如果在步骤155处决定不将认证码存储在片上高速缓存中,则该过程进行到步骤160,在该步骤中,使用认证单元60来生成全大小的mac以用于存储在非可信存储器40中,例如使用图2a中所示的mac函数100。
60.图4是示出当需要从片上高速缓存65逐出减小大小的mac时可以采用的逐出过程的流程图。如先前所讨论的,该逐出过程可能是由于需要释放空间来接收新生成的减小大小的mac而出现,或者实际上可以作为一般高速缓存维护操作的一部分发生。当在步骤200处确定确实需要从片上高速缓存逐出减小大小的mac时,然后在步骤205处确定对应的最新
全大小的mac是否已经存储在非可信存储器中。从先前讨论的图3将显而易见的是,如果在生成每个减小大小的mac时执行步骤170,则会出现这种情况,因为在此情况下,可以看出片上高速缓存65有效地作为直写高速缓存操作,因为针对存储在片上高速缓存65中的每个减小大小的mac,同时生成对应的全大小的mac并将其存储在非可信存储器40中。
61.如果对应的最新全大小的mac已经存储在非可信存储器40中,则该过程进行到步骤220,在该步骤中,仅需要丢弃被逐出的减小大小的mac。
62.然而,如果对应的最新全大小的mac尚未存储在非可信存储器205中,则该过程进行到步骤210,在该步骤中,针对与减小大小的mac相关的数据块,生成对应的全大小的mac。应注意,作为此过程的一部分,通常首先认为有必要对数据块执行验证检查,以检查自生成减小大小的mac以来数据块是否被更改。因此,为了执行验证检查,可以从非可信存储器读取数据块,并且然后从该读取的数据(使用例如图2b的mac函数105)重新创建减小大小的比较mac,以便与存储在片上高速缓存65中的高速缓存的减小大小的mac进行比较。假设这导致匹配,则数据块被认为是正确的,并且因此该过程可以继续进行以从该读取的数据创建全大小的mac,例如使用图2a的mac函数100。
63.在步骤210之后,然后在步骤215处,然后可以将全大小的mac存储到非可信存储器40,此后在步骤220处,可以丢弃减小大小的mac。
64.图5是示出在一个示例性实施方式中采用的数据读取过程的流程图。当在步骤250处确定要从非可信存储器读取数据块时,然后在步骤255处确定对应的减小大小的mac是否存在于片上高速缓存中。例如,对于每个存储的mac,无论是在片上高速缓存65中还是在非可信存储器40中,都可以存储用于标识与该mac相关的数据块的地址的地址指示,并且因此可以确定片上高速缓存是否存储与数据块的存储器地址相关的减小大小的mac。然而,在替代性实施方式中,可能不需要这种地址指示符。例如,mac可以存储在固定的存储器区域中,并且mac的地址可以从与mac相关的数据块的地址推断出。例如,考虑到一个非常具体的示例性实施方式,其中假设mac区域是连续的并且开始于地址0x100000000,如果数据块处于地址0x8000并且mac比数据块小8倍,则该数据块的mac地址是0x100000000 0x1000。
65.如果对应的减小大小的mac存在于片上高速缓存中,则在步骤270处,从片上高速缓存读取该减小大小的mac,并且然后在步骤275处,从读取的数据块创建减小大小的比较mac。在步骤275处,可以使用图2b的方法或图2c的方法以生成减小大小的比较mac,但是应理解,如果使用图2c的方法,则认证单元60还将需要生成全大小的mac,例如使用图2a的mac函数100,使得该全大小的mac可以被输入到加密函数115。
66.此后,在步骤280处,可以比较读取的mac和比较mac两者,并且如果在步骤285处检测到匹配,则在步骤290处认证被认为是已经通过的,而否则,在步骤295处认证被认为是已经失败的。
67.如果对应的减小大小的mac不存在于片上高速缓存中,则需要在步骤260处从非可信存储器读取全大小的mac。此后,在步骤265处,从读取的数据块创建全大小的比较mac,例如使用图2a的mac函数100。该过程然后进行到步骤280,在该步骤中,执行先前描述的比较过程以确定认证是通过还是失败。
68.在一个示例性实施方式中,认证单元60可以设置有比较元件,以使得能够相对于减小大小的mac和全大小的mac两者执行步骤280的比较过程。然而,如果需要,在替代性实
施方式中,比较电路可以被配置为使得始终相对于减小大小的mac执行比较。在此情况下,可以修改图5的步骤265,如图6所示。具体地,图6示出了可以执行以实施图5的步骤265的步骤序列,使得一旦到达步骤280,就在比较过程中使用减小大小的mac。
69.在步骤300处,使用图2c的机制以针对在步骤260处获得的读取的全大小的mac来生成减小大小的参考mac。然后,在步骤305处,从读取的数据块创建全大小的比较mac,例如使用图2a的mac函数100。
70.然后,在步骤310处,再次使用图2c的机制以从在步骤305处生成的全大小的比较mac生成减小大小的比较mac。
71.此后,如步骤315指示的,可以使用减小大小的参考mac和减小大小的比较mac来执行后续的比较操作,并且因此将使用相同的电路来实施步骤280至步骤295,而不管是通过执行步骤270、275还是通过执行步骤260、265来到达步骤280。
72.如先前提及的,可以从与减小大小的mac相关的数据块或从针对该数据块生成的全大小的mac生成减小大小的mac,例如分别使用图2b的方法或图2c的方法。然而,在使用图2c的方法并且因此从全大小的mac生成减小大小的mac的情况下,这可以在全大小的mac从非可信存储器40迁移到可信存储装置65的情况下产生某些益处。具体地,可能的情况是在某个时间点从非可信存储器检索到全大小的mac序列。例如,当读取数据块并且因此需要获得对应的mac时,可能的情况是,该对应的mac存储在非可信存储器40中,并且读取的粒度可以使得在该时间点检索到存储在非可信存储器40中的多个mac,例如高速缓存行的mac值。因此,在图7的步骤350处,可能的情况是,从非可信存储器读取全大小的mac序列。
73.虽然仅这些mac中的一者将与已经读取的当前数据块相关,但是此时可以认为适当的是,针对在步骤350处读取的序列内的这些全大小的mac中的每一者,寻求高速缓存等效的减小大小的mac。如果使用了图2b的方法,则这只有在从存储器读取与减小大小的mac相关的每个数据块时才是可能的。然而,如果采用图2c的方法,则可以直接从在步骤350处读取的全大小的mac序列生成减小大小的mac。具体地,如步骤355指示的,可以相对于该序列中的每个全大小的mac使用图2c的机制,以便生成对应的减小大小的mac,而不需要读取与每个mac相关联的对应数据块。在步骤360处,然后可以将生成的减小大小的mac序列存储在片上高速缓存65中。
74.作为认证单元60的一部分提供的认证码生成电路可以以多种方式实施。例如,用于生成全大小的mac的电路可以与用于生成减小大小的mac的电路完全分离。然而,在替代性实施方式中,可以共享该电路的至少一部分。图8a中示出了这种方法的特定示例。在该实施方式中,通过散列函数和加密函数的组合来实施图2a和图2b的mac函数100、105中的每一者。虽然加密函数可以保持分离,但是散列函数可以共享。因此,散列函数400可以使用提供的输入密钥对输入的数据块进行操作,以便生成中间值,也称为散列值。然后可以将该散列值提供给用作mac函数100的一部分的加密块405和用作mac函数105的一部分的加密块410。加密块405将接收第一保密密钥和任何其他适当的输入信息,例如物理地址和计数器,并且类似地,加密块410将接收第二保密密钥和任何其他适当的输入信息,例如物理地址和计数器。
75.加密块405应用加密算法将导致全大小的mac的生成,而加密块410应用加密算法将导致减小大小的mac的生成。从先前讨论的图2b中显而易见的是,截断过程也可以用于丢
弃由加密块410产生的所得mac的某些位,以便产生具有所需的减小大小的mac。
76.加密块405、410可以以多种方式组织,但在图8b中示出了一个示例性布置。高级加密标准(aes)加密块420可以用于使用保密密钥以及计数器和物理地址的串联来生成otp。然后,可以使用xor组件425来执行xor函数,该xor函数用作由aes块420生成的otp和由散列函数400输出的散列值的输入,这导致mac的生成。在使用加密块410生成减小大小的mac的情况下,则可能需要相对于来自xor块425的输出来结合截断函数,以便生成减小大小的mac。
77.当采用诸如图8a和图8b中所示的布置时,这可以使得能够从全大小的mac生成减小大小的mac,而不需重通过替代地参考中间散列值来新读取与mac相关的数据块。具体地,从图8a中应了解,散列函数400和加密块410的组合可以实施图2b的mac函数105,并且从输入到散列函数的数据块生成减小大小的mac。然而,在已经生成全大小的mac并且在适当的时候期望产生对应的减小大小的mac(例如由于mac正从非可信存储器40迁移到片上高速缓存65)的情况下,则可以生成减小大小的mac而不需要从非可信存储器重新读取数据。在图9中示出此过程。在步骤450处,输入全大小的mac,此后在步骤455处,对全大小的mac进行解密以生成散列值。这可以通过使用otp和全大小的mac执行xor函数来实现,其中输出然后是散列值。此后,在步骤460处,可以将散列值提供给加密块410以生成减小大小的mac。
78.通过使用本文所述的技术,可以更有效地利用用于存储mac的片上高速缓存,这些mac用于验证存储在非可信存储器40中的数据的完整性。尽管生成某一大小的mac以用于存储在非可信存储器40中,但是可以使用不同的认证码生成过程以在这些mac要存储在片上高速缓存内的情况下生成等效的mac,并且这些等效的mac可以具有相对于将存储在非可信存储器40中的mac的大小减小的大小。因此,对于给定大小的片上存储,与片上高速缓存仅用于高速缓存存储在非可信存储器40中的mac的子集的情况相比,可以存储更多的mac。替代性地,如果期望能够在片上存储特定数量的mac,则可以减小片上高速缓存的大小,因为相对于针对非可信存储器中的存储生成的mac,针对片上存储生成的mac具有减小的大小。
79.在本技术中,字词“被配置为...”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有提供所限定的操作的专用硬件,或者可对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
80.虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围和实质的前提下,本领域的技术人员可在其中实现各种变化、增加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可与独立权利要求的特征一起进行各种组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献