基于密钥更新的高效侧信道攻击抵抗存储器加密器

文档序号:1895055 发布日期:2021-11-26 浏览:21次 >En<

阅读说明:本技术 基于密钥更新的高效侧信道攻击抵抗存储器加密器 (Efficient side-channel attack resistant memory encryptor based on key update ) 是由 M·E·马森 M·赫特 B·史蒂文斯 于 2020-04-20 设计创作,主要内容包括:公开了存储器加密系统和方法,轮换加密密钥以用于稳健抵抗信任边界内的加密引擎与外部存储器组件之间的通信路径上的基于侧信道分析(SCA)的攻击。密钥数据结构具有多个密钥,该多个密钥被用于加密外部存储器中的多个存储块。利用密钥数据结构的最旧密钥加密的存储块被标识。从标识的存储块中读取加密数据。对来自标识的存储块中的加密数据进行解密。然后使用比最旧密钥新的选择的密钥对数据进行重新加密,并且将其重新写入标识的存储块。(Memory encryption systems and methods are disclosed that rotate encryption keys for robust resistance to Side Channel Analysis (SCA) based attacks on a communication path between an encryption engine and an external memory component within a trust boundary. The key data structure has a plurality of keys that are used to encrypt a plurality of memory blocks in the external memory. The memory block encrypted with the oldest key of the key data structure is identified. The encrypted data is read from the identified memory block. Decrypting the encrypted data from the identified memory block. The data is then re-encrypted using a selected key that is newer than the oldest key and is re-written to the identified memory block.)

具体实施方式

本公开的各方面涉及存储器加密系统和方法,其有效地轮换加密密钥以用于稳健抵抗对在加密引擎和外部存储器组件之间的通信路径上的基于侧信道分析(SCA)的攻击。SCA攻击的一个示例包括但不限于差分功率分析(DPA),其中寻求获取加密操作中使用的密钥的攻击者可以在执行加密操作时研究集成电路组件的功率分布(即功耗模式)的差异。使用本文描述的系统和方法,通过利用更新存储器加密引擎来改善内联存储器加密引擎的性能。

传统的内联存储器加密系统面临许多挑战,以便是侧信道攻击抵抗的。为了使解密和重新加密操作高效,从外部存储器读取和写入外部存储器需要具有低时延。为了以时延迟满足高吞吐量要求,大量内联加密引擎常常协同操作(例如,彼此并行地或以彼此联合工作的其他配置)。如果大量内联加密引擎中的每个本身都是SCA攻击抵抗的(有时也被称为侧信道抵抗的),那么去往和来自外部存储器的通信路径不会增加侧信道脆弱性。然而,如果内联加密引擎本身是侧信道抵抗的,则加密系统在门数和面积方面变得非常昂贵。一些传统加密系统中使用的替代方法是基于足够频繁地更新内联加密引擎中的加密密钥以阻止SCA攻击的尝试,从而避免使用侧信道抵抗的内联加密引擎的需要。这种备选方法的难点在于处理利用过期密钥加密的数据,这可能会对性能产生负面影响甚至停顿。

本公开的各方面通过包括与多个内联加密引擎协同工作的多个存储器更新加密引擎来解决上述和其他缺陷,以在不显著影响存储器加密系统的性能的情况下达成侧信道抵抗。为了阻止停顿,在内联加密引擎利用从密钥数据结构中选择的新密钥执行新的写入之前,存储器更新加密引擎更新外部存储器组件中用密钥数据结构(例如,密钥表)中的最旧密钥加密的存储器页(例如,所有存储器页)。这样,密钥数据结构的大小不会增长,也不需要附加的内部存储器空间。

这种方法的优点包括但不限于调节存储器加密系统以用于优化密钥使用的能力。本方法认识到每个密钥在其生命周期中可以被使用多次。因此,仅使用密钥数据结构中的最新密钥来加密要被写入外部存储器页面的数据可能不是最佳的。本方法可以选择被用于写入操作的密钥,并且可以取决于多个因素(诸如密钥数据结构的大小,外部存储器中的页面数目、内联存储器和存储器更新加密引擎的数目等),通过使用加权随机过程或者使用不同的选择过程来随机更新所选择的密钥,并且只要密钥比最旧密钥新,就可以轮换相同的密钥。

本文公开的方法的另一个优点是该方法与存储器技术无关。例如,这些方法同样适用于现场可编程门阵列(FPGA)块随机存取存储器(RAM)、专用集成电路(ASIC)RAM、宏单元、寄存器和任何其他类型的存储器技术。此外,由于外部存储器资源的零开销,总体实现成本降低。

图1图示了根据一些实施例的具有用于对写入外部存储器组件中的数据进行加密和解密的密码组件的示例存储器加密设备110。存储器加密设备110可以驻留在信任边界105内(即,在该边界内数据泄漏的可能性最小,并且在该边界内数据是安全的以免受SCA攻击)。存储器加密设备110可以包括内部存储器组件112、随机数生成器组件114、密码组件116(例如,图2中所图示的内联存储器加密引擎组和存储器更新加密引擎组),以及用于与驻留在信任边界105之外的外部存储器组件150通信的接口115等等。在备选实施例中,组件中的一个或多个的功能性可以组合或拆分。在SCA攻击期间,信任边界之外的通信路径120可能危及数据安全。因此,密码组件116在信任边界内执行操作以将通信路径120中的脆弱性最小化。

数据可以以有限大小的块(例如,页大小的块或其他大小的块)而被写入外部存储器150或从外部存储器150读取。块的大小可以是可配置的。存储块通常是加密的。随机数生成器组件114可以是真随机数生成器(TRNG)或确定性随机位生成器(DRBG),也被称为伪随机数生成器(PRNG)。组件114可以生成可以被存储在密钥数据结构(例如,诸如图2中所示的密钥表212A的密钥表、文件等)中的许多密钥。这些密钥可以被用来对诸如存储器页的存储块进行加密。

内部存储器112在信任边界105内并且被假定为受到保护以免受SCA攻击。内部存储器112可以存储密钥数据结构和密钥映射(例如,图2中所示的密钥表212A和密钥映射212B)。请注意,密钥数据结构中的一个密钥可以被用来加密多个存储块。例如,多个存储器页面可以具有相同的页密钥。密钥映射(例如,图2中的密钥映射212B)是查找数据结构,它提供了对其各个元素进行索引的手段。例如,密钥映射212B保持跟踪物理存储器位置的逻辑地址以及对应的密钥,即哪个存储器块利用哪个密钥加密。密钥映射可以具有每个存储块的一个条目,该条目包括被用来对该存储块进行加密的密钥的标识(ID)。密钥映射也可以具有状态字段,例如,当前加密、当前正在解密等。

图2是根据本公开的一些方面的在信任边界105内的图1的存储器加密设备的功能框图。如上面所讨论的,图1的密码组件116可以包括信任边界内的内联存储器加密引擎组216A和存储器更新加密引擎组216B。图2中的存储器加密块210执行图1中所示的存储器加密设备110的功能,并且图2中的外部存储器250等效于图1中所示的外部存储器组件150。存储器加密块210和外部存储器250之间的读取/写入路径被共同示出为虚线椭圆内的元件220。元件220在功能上等效于图1中所示的通信路径120。虽然图2中示出了多个读取/写入路径,但是可以存在用于写入外部存储器250的合并输入端口和用于从外部存储器250读取的合并输出端口。可以生成随机数(例如,由图2中所示的组件214生成的随机数)以被用作存储在密钥表212A中的密钥。可以通过加密算法从所存储的密钥中选择特定密钥(例如,密钥1、密钥2、密钥3、……、密钥N)来对要写入外部存储器250的数据进行加密。

虽然在图2中被单独地示为功能块216A和216B,但是内联存储器加密引擎和更新加密引擎可以驻留在同一组引擎中,它们各自的角色由配置参数来确定。配置参数的非详尽列表可以包括可用的加密引擎218的数目、密钥表212A的大小、每个存储块的大小、外部存储器250的总大小等等。附加地,针对组216A和216B的加密引擎218的数目不必相同。例如,组216A可以具有与组216B不同数目的引擎218,因为更新引擎可以以较低的吞吐量运行以节省集成电路上的面积。

在一些实施例中,位于信任边界内的内联加密引擎组216A可以被用来对写入外部存储器的数据进行加密和/或对从外部存储器读取的数据进行解密。此外,内联加密引擎组216A可以基于当前被用来对数据进行加密的密钥或基于附加密钥来计算消息认证码(MAC)。MAC是保护数据完整性和真实性的标志。可以使用利用标准认证加密协议所选择的密钥来计算加密数据的MAC,其中存储块的地址被并入到协议中。例如,当使用高级加密标准(AES)GCM(伽罗华计数器模式)协议时,计数器值可以是计数器与存储块地址的串联。也可以用加密数据将MAC写入外部存储器地址,以用于加强安全性以免受SCA攻击。

位于信任边界内的更新加密引擎组216B通过利用较新的密钥对所存储的数据进行加密来帮助更新存储块。较新的密钥是指在特定密钥(例如,当前使用的密钥)的生成时间之后(即,在一个稍后时刻)生成的密钥。请注意,所选择的较新的密钥应比当前使用的密钥更新,但不必是最新生成的密钥。更新加密引擎组216B可以确保密钥数据结构中最旧密钥被丢弃以为较新密钥腾出空间。它还可以确保密钥数据结构保持固定大小,即密钥数据结构不存储超过预定最大数量的密钥。为了保持固定大小,可以以先进先出(FIFO)方式填充密钥数据结构。更新加密引擎组216B可以在后台与内联加密引擎组216A协同操作(例如,与内联加密引擎组216A的操作并行)。引擎组216A和216B内的各种引擎可以在流水线架构中读取存储器块和对应的密钥,其中更新加密引擎从属于内联加密引擎。换句话说,如果更新加密引擎和内联加密引擎同时尝试更新存储块,那么更新加密引擎的操作可以被中止。

图3是根据本公开的一些实施例的在CPU和外部存储器之间执行SCA抵抗数据传输的示例方法300的流程图。方法300可以由处理逻辑执行,处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码、硬件设备、集成电路等)、软件(例如,在处理设备上运行或执行的指令)或其组合。在一些实施例中,方法300可以由图1中所示的密码组件116来执行。

方法300开始于操作310,其中访问密钥数据结构(例如,密钥表、文件等)。密钥数据结构可以包括被用来对外部存储器中的多个存储块(例如,存储器页面)进行加密的多个密钥。在外部存储器中的存储块中的当前驻留数据可以已经利用当前密钥的集合加密。在一些实现中,密钥数据结构可以由存储器加密设备110维护(例如,创建和/或更新)。

在操作320处,标识利用最旧密钥加密的一个或多个存储块。该操作可以由更新加密引擎执行,以促进内联加密引擎。密钥映射(例如,密钥映射212B)可以被用来标识利用最旧密钥加密的一个或多个存储块。在一些实现中,密钥映射可以由存储器加密设备110维护(例如,创建和/或更新)。

在操作330处,由内联加密引擎从(利用最旧密钥加密的)标识的存储块读取数据。在读取期间,内联加密引擎可以读取密钥映射(例如,图2中的密钥映射212B)以确定当前使用哪个密钥来对存储块进行加密。如果MAC当前也被写入在标识的存储块中,则内联加密引擎也可以读取MAC。

在操作340处,使用存储在密钥映射和密钥表中的信息解密从(多个)存储块读取的数据(例如,使用数据的存储器位置的地址访问密钥映射以标识存储在密钥表中的适当密钥)。如果在操作330处MAC被读取,那么在解密之前,内联加密引擎可以检查MAC是否有效(例如,通过将从检索到的数据中读取的MAC与先前存储的值进行比较)。

在操作350处,从密钥数据结构中选择比最旧密钥(即,比密钥数据结构中包括的任何其他密钥更早生成的密钥)更新的密钥(即,在其之后生成)。如前面所提及,所选择的密钥应该比最旧密钥新,但不一定是最近生成的密钥。可以使用随机过程(基于随机密钥选择,而不管每个密钥被重复使用多少次)或加权随机过程(基于随机密钥选择,考虑每个密钥被重复使用多少次)来从密钥数据结构中选择较新的密钥。也可以使用不同的选择过程。

在操作360处,解密的数据利用较新的密钥重新加密。可选地,也可以使用经认证的加密协议(例如AES GCM)来计算MAC。如前面所提及,在AES GCM中,所计算的计数器值可以是计数器与存储块地址的串联。该操作可以由内联加密引擎执行。

在操作370处,重新加密的数据(以及MAC,如果在操作360处被计算)被写入存储块。可选地,密钥映射212B由内联存储器加密引擎更新。

图4是根据本公开的一些实施例的示出了由存储器更新加密引擎执行的附加操作的示例方法400的流程图。方法400可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码、硬件设备、集成电路等)、软件(例如,在处理设备上运行或执行的指令)或其组合。在一些实施例中,方法400可以由图1中所示的密码组件116来执行。

方法400开始于操作410,其中更新加密引擎确保当前没有使用密钥数据结构的最旧密钥来对外部存储块进行加密。该方法然后前进到操作420,其中更新加密引擎从密钥数据结构中消除最旧密钥。操作410和操作420可以发生在方法300中由内联加密引擎执行的操作340和操作350之间。注意,即使上面描述的操作330到操作370由内联加密引擎执行,更新加密引擎也可以执行操作330到操作370。但是,在一些实施例中,内联加密引擎优先于更新加密引擎的更新。例如,如果更新加密引擎和内联加密引擎尝试同时更新存储块,则更新加密引擎的操作被中止。

在操作430处,生成新密钥(例如,使用随机数生成器214)。诸如密钥表的密钥数据结构利用新密钥重新填充,因为在操作420处消除最旧密钥之后固定大小的密钥数据结构中有空间。更新加密引擎可以确保密钥数据结构的大小不增长,并且通过轮换优化数据结构中的密钥的使用。

图5是根据本公开一些实施例的由内联加密引擎和更新加密引擎中的任一个或两者执行的示例方法500的流程图。方法500可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码、硬件设备、集成电路等)、软件(例如,在处理设备上运行或执行的指令)或其组合。在一些实施例中,方法500可以由图1的密码组件116来执行。

在操作510处,基于在操作360处被选择对数据进行重新加密的新密钥来计算MAC。在操作520处,计算的MAC也与加密数据一起被写入外部存储器地址,以用于提供附加的安全性和完整性。使用MAC通常可以提高安全性,因为它可以保护数据免遭修改。从外部存储块读取数据时,在对数据进行解密之前验证MAC。

本领域的技术人员将理解,虽然图3-图5中的流程图示出了特定的序列或顺序,但是除非另有说明,否则可以修改这些过程的顺序。因此,所说明的实施例应被理解为仅作为示例,并且所说明的过程可以以不同的顺序来执行,并且一些过程可以并行执行。此外,在各种实施例中可以省略一个或多个过程。因此,并非在每个实施例中都需要所有过程。其他过程流程也是可能的。

图6图示了计算机系统600的示例机器,在其中可以执行指令集,以用于使机器执行本文讨论的任何一个或多个方法。在备选实现中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或互联网中的其他机器。该机器可以操作为客户端-服务器网络环境中的服务器或客户端机器能力,操作为对等(或分布式)网络环境中的对等机器,或者操作为云计算基础设施或环境中的服务器或客户端机器。

该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥、物联网(IoT)设备、存储解决方案/控制器或能够执行指令集(顺序或其他)的任何机器,该指令集指定该机器要采取的动作。此外,虽然图示了单个机器,但是术语“机器”也应被视为包括单独或联合执行一个(或多个)指令集以执行本文中讨论的任何一个或多个方法的机器的任何集合。

示例计算机系统600包括处理设备602、主存储器604(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器606(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备618,它们经由总线630彼此通信。在一种实现中,处理设备602可以是信任边界105内的嵌入式CPU,并且存储器606可以是图1中所示的外部存储器150。

处理设备602表示一个或多个通用处理设备,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实现其他指令集的处理器、或多个指令集组合的多个处理器。处理设备602也可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备602被配置为执行指令626以用于执行本文讨论的操作。

计算机系统600还可以包括网络接口设备608,以通过网络620进行通信。计算机系统600还可以包括视频显示单元610(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备612(例如,键盘)、光标控制设备614(例如,鼠标)、图形处理单元622、信号生成设备616(例如,扬声器)、图形处理单元622、视频处理单元628和音频处理单元632。

数据存储设备618可以包括机器可读存储介质624(也称为计算机可读介质),其上存储了体现本文描述的任何一种或多种方法或功能的一个或多个指令626集或软件。指令626还可以在其由计算机系统600执行期间完全地或至少部分地驻留在主存储器604内和/或处理设备602内,主存储器604和处理设备602也构成机器可读存储介质。

在一个实现中,指令626包括用于实现与图2的存储器加密模块210相对应的功能性的指令。虽然机器可读存储介质624在示例实现中被示为单个介质,但是术语“机器可读存储介质”应被视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的高速缓存和服务器)。术语“机器可读存储介质”还应被视为包括能够存储或编码用于由机器执行并且使机器执行本公开的任何一种或多种方法的指令集的任何介质。因此,术语“机器可读存储介质”应被视为包括但不限于固态存储器、光学介质和磁介质。

已经根据对计算机存储器内的数据位的操作的算法和符号表示呈现了前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地向本领域的其他技术人员传达他们工作的实质的方式。算法在这里并且通常被认为是导致所需结果的自洽操作序列。这些操作是那些需要对物理量进行物理操作的操作。通常,尽管不一定,这些量采取能够存储、组合、比较和以其他方式操作的电或磁信号的形式。有时,主要是出于常用的原因,将这些信号称为位、值、元素、符号、字符、术语、数字等已被证明是方便的。

然而,应当记住,所有这些和类似的术语都将与适当的物理量相关联并且仅仅是被应用于这些量的方便标签。除非从上述讨论中清楚地另有说明,否则应当了解,在整个描述中,利用诸如“识别”或“确定”或“执行”或“选择”或“生成”或“验证”等术语的讨论,指的是计算机系统或类似电子计算设备的动作和过程,其将在计算机系统的寄存器和存储器中被表示为物理(电子)量的数据操作和转换为在计算机系统存储器或寄存器或其他这种信息存储设备中以类似方式表示为物理量的其他数据。

本公开还涉及一种用于执行本文的操作的装置。该装置可以为预期目的而被专门构造,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可以被存储在计算机可读存储介质中,诸如但不限于任何类型的磁盘,包括软盘、光盘、CD-ROM、USB棒、闪存(SD)卡和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适合存储电子指令的任何类型的介质,其每个都耦合到计算机系统总线。

本文中呈现的算法和显示与任何特定计算机或其他装置没有固有的相关性。各种通用系统可以与根据本文的教导的程序一起使用,或者构造更专门的装置来执行该方法可能证明是方便的。如在以下描述中所阐述的那样,各种这些系统的结构将出现。此外,本公开没有参照任何特定的编程语言来进行描述。应当了解,可以使用多种编程语言来实现如本文所述的本公开的教导。

在前述说明书中,已经参考本公开的具体示例实现描述了本公开的实现。很明显,在不脱离如以下权利要求中阐述的本公开的实现的更广泛精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图被认为是说明性的而不是限制性的。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:传输装置、信息处理装置以及数据传输方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类