安全存储器系统的制作方法

文档序号:13350701阅读:264来源:国知局
安全存储器系统的制作方法



背景技术:

可以使用基于密钥的加密系统来保护计算机存储器的内容。

附图说明

以下具体实施方式引用附图,其中:

图1是示例存储器系统的框图;

图2是示例存储器系统的框图;

图3是示例存储器系统的示例模块的框图;

图4是示出了示例存储器系统的示例模块的示例工作密钥恢复机制的流程图;

图5是示出了示例存储器系统的示例模块的示例工作密钥恢复机制的流程图;

图6是用于由示例存储器系统实现的示例方法的流程图;以及

图7是用于由示例存储器系统实现的示例方法的流程图。

具体实施方式

以下具体实施方式引用附图。尽可能,在附图中以及以下描述中使用相同的附图标记指相同或者相似的部分。然而,充分理解,该附图仅是示出和描述的目的。尽管在本文档中描述了多个示例,但是修改、改变、以及其他实现是可能的。因此,以下详细描述不限制所公开的示例。相反,所公开的示例的适当的范围可以由随附的权利要求来进行限定。

光子学中的最近的进步能够使得光学连接到外部存储器资源。这样的光学互连提供了减少的延迟以及可能更高的带宽,使得能够与本地存取尽可能一样快地对远程存储器资源进行存取。由此,跨数据中心的多个机架(或者甚至跨多个数据中心)来集成多个不同的存储器资源的“存储器结构”的可能性被创建。这样的存储器结构可以成为处理器存取存储在作为单个存储器空间的存储器结构中的数据。

技术挑战可以存在于包括多个不同的存储器资源的存储器系统,因为它可能是恶意代理,用于攻击(例如,通过物理移除)包括在存储器系统中的单独的存储器资源的一个或多个。它可能是恶意代理,用于识别存储器系统中的具有特定特征的存储器资源(例如,通过检测该资源具有比存储器系统中的其他资源相对更重的通信活动)并且选择性地以这样的存储器资源为目标。成功地攻击来自存储器系统的一个或多个存储器资源的恶意代理可以进一步尝试从攻击的存储器资源读数据。

本文所公开的示例提供了对这些技术挑战的技术解决方案。如果一个或多个模块被攻击,则包括多个存储器模块的示例存储器系统能够继续以安全的方式来运行。此外,假设与系统中的模块的总数相比,受攻击的模块的数量是少量的,则不可能对由成功地受到攻击的模块所存储的数据进行解密。因此,存储器结构可以针对来自恶意代理的以存储器结构的一个或多个组件为目标的攻击而言是安全的,所述攻击包括存储器结构的一个或多个组件被物理移除的攻击。

本文所使用的技术是出于仅描述特定示例的目的,并不是要进行限制。如本文所使用的,单数形式“一”、“一个”、以及“所述”是要也包括复数形式,除非上下文明确指出。术语“多个”,如本文所使用的,被定义为两个或者比两个更多。术语“另一个”,如本文所使用的,被定义为至少两个或更多个。术语“耦合”,如本文所使用的,被定义为连接,在没有任何中间元件的情况下直接的或者具有至少一个中间元件间接的,除非另有指出。两个元件能够通过通信信道、通路、网络或者系统机械地、电耦合或者通信地链接。术语“以及/或者”,如本文所使用的,指代并且包括相关联的列出的项目的一个或多个中的任何以及所有可能的组合。应当理解的是,虽然术语第一、第二、第三等可以在本文中用于描述各种元件,但是这些元件不应当由这些术语限制,因为这些术语仅用于将一个元件和另一个元件进行区分,除非另外陈述或者上下文另外指示。如本文所使用的,术语“包括”表示包括但不限于,术语“包含”表示包含但不限于。术语“基于”表示至少部分地基于。

图1是示例存储器系统1。存储器系统1包括多个存储器模块10。每个存储器模块10包括用于存储根密钥信息和加密的主要数据的持久性存储器,用于存储用于对数据进行加密的工作密钥的易失性存储器,以及用于提供对主要数据的加载和存储存取的控制单元。使用工作密钥来对存储在持久性存储器中的主要数据进行加密。控制单元可以通过使用工作密钥来在主要数据被存储在持久性存储器中之前来对主要数据进行加密并且在主要数据从持久性存储器被加载之后来对主要数据进行解密。

出于本说明书的目的,短语“提供加载和存储存取”用于表示经由以存储器地址空间为目标的加载和存储指令来提供对数据的存取。由此,处理器能够通过发出以与主要数据的第一词相关联的第一存储器地址为目标的加载指令来取回主要数据的第一词。类似地,能够通过发出以与主要数据的第一词相关联的第一存储器地址为目标的存储指令来替换主要数据的第一词。类似地,能够通过发出以与主要数据的第二词相关联的第二存储器地址为目标的加载指令来取回主要数据的第二词。因此,处理器“看见”未加密的数据,即使如下事实:主要数据被存储加密在持久性存储器中。

存储器系统1还包括工作密钥恢复机制(未示出),用于从第一存储器模块10取回第一根密钥信息并且从第二存储器模块10取回第二根密钥信息;并且基于取回的第一根密钥信息以及取回的第二根密钥信息来计算多个存储器模块的给定存储器模块10的工作密钥。

在一些示例中,存储器模块中的至少一些例如通过通信链路连接,以便形成模块的网络。这可以允许连接的模块的控制单元来彼此通信。它可以允许连接到该网络的处理器来存取网络中的任何存储器模块的主要信息。存储器模块10中的至少一些可以(但不需要)彼此远离。在一些示例中,存储器模块10中的至少一些被连接以便形成对等网络。在一些示例中(例如,图1的示例),存储器模块10彼此不连接。许多网络拓扑是可能的;例如,每个存储器模块可以仅直接附连至其邻居,但是以适当的方向路由针对其他存储器模块(即,其未直接连接到的存储器模块)的通信,使得每个存储器模块可以与其他存储器模块通信。

在一些示例中,每个存储器模块10被连接到存储器总线,通过存储器总线,能够接收加载和存储请求(例如,期望存取由存储器系统1存储的数据的来自计算设备的处理器)。在这样的示例中,每个存储器模块的控制单元23能够经由存储器总线向至少一个处理器提供加载和存储存取。存储器总线可以是将一个或多个存储器连接到一个或多个处理器的总线,允许由处理器对存储器加载和存储存取。典型的存储器总线协议的示例是ddr4。

在示例中,存储器模块10的至少一些由通信链路进行连接,连接的存储器模块10之间的通信链路可以是安全的或者能够托管安全信道。在一些示例中,在连接的存储器模块之间的通信链路或者在其上运行的特定的信道通过安全以及认证协议来进行保护。这可以确保在存储器模块10之间发送的信号不能够被窃听。任何合适的密码学技术能够用于保证存储器模块10之间的通信链路的安全,包括实体认证、数据机密性、数据完整性、密钥建立等。通信链路可以是有线的或者无线的。通信链路可以是高速通信链路。通信链路可以是光学通信链路。

在一些示例中,存储器系统包括连接到存储器系统的存储器模块中的至少一个的模块管理器。图2示出了一个这样的示例。在图2的存储器系统中,每个存储器模块10通过通信链路45被连接到模块管理器44。在其他示例中,不是存储器模块10的全部都被连接到模块管理器44。在其他示例中,模块管理器被耦合到存储器模块10中的每一个,但是不直接连接到每个存储器模块10。通信链路45可以具有关于存储器系统1的上述特征中的任一个。模块管理器44可以远离模块10。模块管理器44可以包括任何类型的计算设备,包括服务器、通用计算机。模块管理器可以以运行在处理器的功能的形式提供,用于经由加载和存储指令来存取由存储器系统存储的主要数据。

在图1和图2以及本文所描述的其他附图中,可以使用与描述的不同数量的组件、引擎或者实体。例如,包括在存储器系统中的存储器模块的数量和/或它们之间的连接的数量可以比图1和/或图2所示出的更多或者更少。

图3是例如示例存储器系统1的示例存储器模块10。模块10包括易失性存储器22。易失性存储器22在存储器系统是可操作(例如,加电)时存储数据,并且在存储器系统不可操作(例如,断电)时不存储数据。在一些示例中,只要功率被供应给易失性存储器22,易失性存储器22就存储数据。在这样的示例中,当功率停止被供应到易失性存储器22时,则丢失存储在易失性存储器22中的数据。易失性存储器22存储用于对数据进行加密的工作密钥。在一些示例中,易失性存储器被包括在存储器模块的可信位置(例如,可信区或者具有存取控制的fpga)。在存储器模块的易失性存储器中存储工作密钥表示如果该模块断电则丢失工作密钥,例如,作为被恶意攻击和/或从存储器系统1移除的结果。

模块10还包括持久性存储器21,其可以是非易失性存储器(nvm)。在一些示例中,持久性存储器21包括固态nvm。在一些示例中,持久性存储器21包括可字节寻址固态nvm。持久性存储器21可以是快速存取存储器。持久性存储器21可以与一系列存储器地址相关联。在一些示例中,存储器模块10的持久性存储器21与特定的一系列存储器地址相关联,使得存储器系统1中的其他存储器模块10都不包括与模块10的持久性存储器相同的一系列存储器地址相关联的持久性存储器。

持久性存储器21用于存储使用存储在易失性存储器22中的工作密钥进行加密的加密的主要数据。持久性存储器21可以包含使用存储在易失性存储器22中的工作密钥进行加密的加密的主要数据。

加密的主要数据可以包括在给定时间被包含在持久性存储器21中的数据中的任何或者全部。主要数据可以包括任何类型的数据。持久性存储器21可以包括除了加密的主要数据之外的其他数据,其可以是或者不是加密的。持久性存储器21可以包含除了加密的主要数据之外的加密的辅助数据。这样的辅助数据可以是与主要数据相同的类型,或者可以是与主要数据不同的类型。在一些示例中,辅助数据可以使用与用于对主要数据进行加密的密钥不同的密钥来进行加密。在一些示例中,主要数据使用存储在第一存储器模块(例如,其中包括存储加密的主要数据的持久性存储器的存储器模块)的易失性存储器中的工作密钥而被加密,并且辅助数据使用存储在第二、不同的、存储器模块的易失性存储器中的工作密钥而被加密。

持久性存储器21还存储根密钥信息。在一些示例中,由每一个存储器模块存储的根密钥信息包括掩蔽的根密钥。可以例如从与给定存储器模块10相关联的根密钥和与给定的存储器模块10相关联的掩码值来取回由给定存储器模块存储的掩蔽的根密钥。与给定存储器模块相关联的掩码值可以包括例如具有与该存储器模块10相关联的根密钥相同的熵的随机数。在一些示例中,由给定的存储器模块10存储的掩蔽的根密钥包括与给定的存储器模块10相关联的根密钥以及与给定的存储器模块相关联的掩码值的组合。用于创建掩蔽的根密钥的组合操作可以包括例如xor、加法或者乘法、密码学加密或者哈希过程等。例如,由给定存储器模块10存储的掩蔽的根密钥可以通过将与给定的存储器模块10相关联的根密钥同与给定的存储器模块10相关联的掩码值进行异或来进行计算。

在一些示例中,存储器模块10的持久性存储器21可以存储从与该存储器模块10相关联的第一根密钥以及与该存储器模块10相关联的第一掩码值取回的第一掩蔽的根密钥。在一些示例中,存储器模块10的持久性存储器21可以用于存储使用该存储器模块10的易失性存储器22中存储的工作密钥来进行加密的第一加密的主要数据以及使用存储在存储器系统10的另一存储器模块的易失性存储器22中的工作密钥来进行加密的第二加密的主要数据。

例如,多个存储器模块的第一存储器模块10可以与第一根密钥相关联,并且多个存储器模块的第二存储器模块10可以与第二、不同的、根密钥相关联,并且第一存储器模块的持久性存储器21可以存储从第一根密钥导出的第一掩蔽的根密钥,并且第二存储器模块的持久性存储器可以存储从第二根密钥导出的第二掩蔽的根密钥。在一些示例中,第一以及第二存储器模块10中的至少一个可以存储从第一根密钥导出的第一掩蔽的根密钥以及从第二根密钥导出的第二掩蔽的根密钥。在一些示例中,第一以及第二存储器模块中的至少一个可以存储使用存储在第一存储器模块10的易失性存储器22中的工作密钥来加密的第一主要加密的数据;以及使用存储在第二存储器模块10的易失性存储器22中的工作密钥加密的第二主要加密的数据。这样的示例使能能够恢复由模块存储的失效的或者从存储器系统恶意移除的数据。

在一些示例中,与给定存储器模块10相关联的根密钥可以是加密密钥层次结构的一部分,在这种情况下,给定存储器模块10的持久性存储器21可以存储加密密钥层次结构的至少一个加密的较低层密钥,并且给定存储器模块10的易失性存储器22可以存储加密密钥层次结构的至少一个解密的较低层密钥。在加密密钥层次结构中,根(或者主、或者顶层)密钥用于对其它、较低层密钥进行加密,该其它、较低层密钥继而用于对受保护的实际数据进行加密。密钥层次结构可以由从根密钥开始的树进行表示。在密钥层次结构中的层别的总数可以改变。在密钥层次结构中的分支的数量可以改变。例如,简单的多层密钥层次结构包括顶层密钥(即,根密钥)以及底层密钥。然而,一些密钥层次结构包括一个或多个中间层密钥。在这样的示例中,除了每个分支的底层(或者叶子)密钥,层次结构中的每个密钥用于对下一层的密钥进行加密/解密。换句话说,每个中间密钥用于存取较低层密钥。底层密钥用于对由密钥层次结构保护的存储的数据进行加密/解密。当使用密钥层次结构的密钥时,其可以(暂时)存储在使用密钥的存储器模块10的易失性存储器22中。

与给定存储器模块10相关联的根密钥还可以与存储器系统中的至少一个其他存储器模块10相关联。在一些示例中,单个根密钥与存储器系统1中的所有存储器模块10相关联。在一些示例中,存储器系统1中的每一个存储器模块10与不同的根密钥相关联。类似地,与给定存储器模块10相关联的掩码值还可以与存储器系统中的至少一个其他存储器模块10相关联。单个掩码值可以与存储器系统1中的所有存储器模块10相关联。每个存储器模块10可以与不同的掩码值相关联。

在一些示例中,根密钥信息包括与多个存储器模块的存储器模块相关联的掩码值的份额(share)。在一些示例中,根密钥信息包括与存储根密钥信息的存储器模块相关联的掩码值的份额。与掩码值相关联的存储器模块可以是存储份额的存储器模块,或者其可以是与存储份额的存储器模块不同的存储器模块。在一些示例中,掩码值使用加密共享方案(例如,基于阈值的秘密共享方案)被划分为(分割为)份额。

基于阈值的秘密共享方案通过交易员节点(dealernode)将秘密划分为份额并且将这些份额在一组节点(份额承担者节点(shareholdernode))当中分发来保护秘密(其中,在一些示例中是掩码值)。秘密然后可以使用指定的最小数量(等于阈值)的份额来被重构。阈值t可以小于份额承担者的总数量n,使得如果多达(n-t)份额承担者节点失败,则秘密仍然能够通过剩余的份额承担者节点进行重构。秘密不可以使用少于阈值数量的份额来进行重构。

在一些示例中,由存储器系统1使用的给定掩码值的份额被布置,使得可能使用份额来恢复给定的掩码值,所述份额由被包括在存储给定的掩码值的份额的子集中的存储器模块10的具有大于或者等于阈值t的组大小的任何组所存储的,并且使得其不可能使用由具有小于t的组大小的存储器模块10的组所存储的份额来恢复给定的掩码值。t的值可以被选择使得t个或者更多个存储器模块10受攻击的概率非常低。

在一些示例中,存储器模块10的持久性存储器21存储与存储器模块10相关联的掩码值的份额。存储器模块10可以是与存储器模块10相关联的存储器模块10的子集的成员。在一些示例中,第一存储器模块10的持久性存储器21存储与第二、不同的存储器模块10相关联的掩码值的份额。第一存储器模块10可以是与第二存储器模块10相关联的存储器模块10的子集的成员。与给定存储器模块10相关联的存储器模块10的子集可以包括存储器子系统1中的一个存储器模块或者总数量的存储器模块之间的任何数量的存储器模块。第一存储器模块10可以是存储器模块的多个子集的成员,多个子集中的每一个与多个存储器模块10的不同的存储器模块相关联。存储器模块10可以不是任何子集的成员。存储器模块10可以不存储掩码值的任何份额。子集会员状态和/或存储器模块所存储的份额的数量和标识可以随时间改变,例如,响应于被包括在存储器系统1中的模块的改变。在一些示例中,给定存储器模块10的持久性存储器21存储任何给定掩码值的一份额的最大值。在一些示例中,给定存储器模块10的持久性存储器21存储多个份额。在一些示例中,由持久性存储器21所存储的多个份额中的每一个是不同的掩码值的份额。在一些示例中,由持久性存储器21所存储的多个份额中的两个或者更多个是相同掩码值的份额。

存储器模块10还包括控制单元23。控制单元23可以包括处理器。控制单元23可以包括多核片上系统(soc)。控制单元23提供对主要数据(即,在持久性存储器21中存储加密的主要数据)的加载和存储存取。控制单元23可以通过使用工作密钥在主要数据被存储在持久性存储器之前对主要数据进行加密并且在主要数据从持久性存储器被加载之后对主要数据进行解密来提供对主要数据的存储存取。在一些示例中,控制单元23经由存储器总线25向至少一个处理器(例如,希望存取由存储器系统1所存储的数据的计算设备的处理器)提供对主要数据的加载和存储存取。在一些示例中,控制单元23与存储器系统1中的其他存储器模块10的控制单元23进行通信。在一些示例中,控制单元23与存储器系统1的存储器总线25进行通信。在一些示例中,控制单元23经由存储器总线25接收加载和/或存储命令。

图4示出了工作密钥恢复机制,例如,存储器系统1的工作密钥恢复机制。工作密钥恢复机制可以通过多个存储器模块10中的一个来实现。工作密钥恢复机制可以以分布式的方式被实现,例如,通过多个存储器模块中的两个或更多个。在一些示例中,其中存储器系统包括与多个存储器模块10中的每一个通信的模块管理器(例如,图2中的示例),工作密钥恢复机制可以至少部分地通过模块管理器来实现。工作密钥恢复机制可以包括指令,所述指令当由存储器系统的处理器执行时,使得存储器系统(或者其组件或多个组件)执行由指令所指定的某些操作。在一些示例中,工作密钥恢复机制包括用于由模块管理器(例如,存储器系统4的模块管理器44)的处理器所执行的指令的集合。

工作密钥恢复机制从第一存储器模块取回第一根密钥信息,并且从第二存储器模块取回第二根密钥信息(框401)。工作密钥恢复机制还基于所取回的第一根密钥信息以及所取回的第二根密钥信息来计算用于多个存储器模块的给定存储器模块的工作密钥(框402)。在一些示例中,工作密钥恢复机制从多个存储器模块10取回根密钥信息。在一些示例中,工作密钥恢复机制从预订数量的存储器模块10取回根密钥信息。工作密钥恢复机制可以从与它需要从其取回根密钥信息相比更多的存储器模块10请求根密钥信息。这可以是因为一些存储器模块10不响应或者回复较慢。在其中工作密钥恢复机制通过(全部或者部分地)多个存储器模块10中的一个或者多个来实现的示例中,工作密钥恢复机制可以通过第一存储器模块、第二存储器模块实现,或者不通过第一或者第二存储器模块实现。在一些示例中,工作密钥恢复机制从与给定存储器模块10相关联的存储器模块的子集取回根密钥信息。

图5示出了示例存储器系统的示例工作密钥恢复机制,其中,由每一个存储器模块所存储的根密钥信息包括从与该存储器模块相关联的根密钥和与存储器模块相关联的掩码值取回的掩蔽的根密钥,以及掩码值的份额。掩蔽的根密钥、根密钥、以及掩码值可以具有与存储器系统1和/或存储器模块10的操作相关的上述特征中的任一个。图5的示例工作密钥恢复机制使用从第一存储器模块取回的该掩码值的第一份额以及从第二存储器模块取回的该掩码值的第二份额来计算与给定存储器模块相关联的掩码值(框501)。在一些示例中,工作密钥恢复机制可以使用多于两个的份额来计算掩码值。每一个这样的份额可以从不同的存储器模块10取回。工作密钥恢复机制可以使用秘密共享方案来计算掩码值。秘密共享方案可以用于将掩码值划分为份额,使得多于预定大小的份额的任何子集可以用于重构掩码值。

图5的示例工作密钥恢复机制还使用计算的掩码值以及由给定存储器模块所存储的掩蔽的根密钥来计算与给定存储器模块相关联的根密钥(框502);并且根据计算的根密钥来计算用于给定存储器模块的工作密钥(框503)。计算根密钥可以通过撤销根密钥与掩码值的组合来完成。例如,在其中通过将掩码值添加到根密钥来取得掩蔽的根密钥的示例中,根密钥可以通过将掩码值从掩蔽的根密钥中减去来计算。在一些示例中,工作密钥是与根密钥相同的。在这样的示例中,计算工作密钥无操作。

在特定示例中,存储器系统1中的存储器模块10中的一个或多个包括本地密钥管理器(lkm)。给定存储器模块10的lkm可以拥有与该给定存储器模块10相关联的根密钥(或者密钥层次结构)。lkm可以与存储器系统1中的其他lkm的子集(即,包括在存储器系统1中的其他存储器模块10中的lkm)相关联。子集中的lkm中的每一个可以存储用于取回由与子集相关联的lkm(即,包括在给定存储器模块中的lkm)所拥有的掩蔽的根密钥的掩码值的份额。

在一些示例中,lkm可以包括指令,所述指令当由包括lkm的存储器模块10的处理器执行时,使得处理器执行由指令所指定的某些操作。在其他示例中,lkm可以被实现为硬连线的逻辑电路。在示例中,lkm请求与给定存储器模块10相关联的掩码值。掩码值可以从被包括在包含该lkm的存储器模块10中的功能被请求,或者从包括在存储器系统1中的另一实体(例如,另一存储器模块、或者模块管理器)被请求。掩码值可以从包括主密钥管理器(mkm)的实体被请求。请求掩码值可以包括lkm将请求消息发送到包括在存储器系统中的另一实体。

lkm可以响应于接收到请求的掩码值,基于与给定存储器模块10相关联的接收到的掩码值来确定与给定存储器模块10相关联的根密钥。确定与给定存储器模块10相关联的根密钥还可以基于与给定存储器模块10相关联的掩蔽的根密钥。请求的掩码值可以从存储器系统的mkm接收。所请求的掩码值可以在来自被包括在存储器系统中的另一实体中的消息中接收。所请求的掩码值可以从给定存储器模块10的功能被接收。确定根密钥可以包括执行用于创建与给定存储器模块10相关联的掩蔽的根密钥的组合操作的反向版本。

lkm可以基于所确定的根密钥来确定工作密钥。在一些示例中,工作密钥可以被确定为与所确定的根密钥相同。

lkm可以加载被存储在存储器模块10的持久性存储器21中的加密的数据,例如,响应于接收到关于特定数据(主要数据的词)的加载请求。加载被存储在持久性存储器21中的加密的数据可以包括例如使用工作密钥来解密加密的数据(例如,加密的主要数据)。加载加密的数据可以包括取回加密的第二工作密钥(例如,从存储器模块10的持久性存储器或者从包括在存储器系统1中的另一实体),使用工作密钥来解密加密的第二工作密钥以及使用第二工作密钥来解密加密的数据(例如,加密的第二数据,其可以使用第二工作密钥来被加密)。

lkm可以将加密的数据存储在存储器模块10的持久性存储器21中,例如,响应于接收关于特定数据(例如,主要数据的词)的存储请求。存储在持久性存储器21中存储的加密的数据可以包括例如,使用工作密钥来加密包括在存储请求中的数据(例如,新的主要数据的词)。存储加密的数据可以包括取回加密的第二工作密钥(例如,从存储器模块10的持久性存储器或者从存储器系统1中的另一实体),使用工作密钥来解密加密的第二工作密钥,并且使用第二工作密钥来加密包括在存储请求中的数据(例如,用于创建加密的辅助数据的词,其使用第二工作密钥来进行加密)。

在一些示例中,存储器系统1中的每一个存储器模块10包括lkm并且因此具有上述的功能中的全部或者其中一些。

在一些示例中,存储器系统包括主密钥管理器(mkm)。mkm可以被包括在存储器模块10中的一个中,或者模块管理器44中。在一些示例中,mkm被包括在存储器系统1中的提升的节点中。提升的节点可以在物理上不同于存储器系统的其他节点,例如,它可以包括不同的设备,或者可以位于特定的位置。

mkm可以存储哪些存储器模块10(即,在其持久性存储器21中)存储了当前由存储器系统1使用的每个掩码值的哪些份额的记录。在一些示例中,mkm维护哪些存储器模块10存储每个掩码值的哪些份额的的记录,例如,通过当掩码值或者存储位置发生改变时更新记录。mkm因此可以包括持久性存储器或者可以与持久性存储器进行通信,所述持久性存储器包含掩码值的份额的存储位置的记录。存储给定份额的存储器模块10的标识可以被认为是该份额的存储位置。掩码值的份额的存储位置的记录可以包括查找表。在一些示例中,mkm可以不存储哪些存储器模块10存储哪些份额的任何记录。相反,当mkm需要份额时,mkm可以简单地将针对所需要的份额的请求发送到存储器系统1中的所有存储器模块10。可以利用份额号、掩码id、和/或其他信息来对份额进行标记,以使得mkm能够定位并且组合正确需要的份额。mkm可以请求仅特定掩码值的份额。

在一些示例中,mkm将掩码值划分为份额,并且对这些份额进行分发。由此,mkm可以在秘密共享方案中承担交易员节点的角色。mkm可以执行初始份额分割以及分发操作,例如,在存储器系统1的初始化期间。初始份额分割以及分发操作可以根据基于阈值的秘密共享方案来执行。初始份额分割和分发操作可以被执行,使得所得到的份额具有关于模块10的操作的上述特征。

由mkm执行的初始份额分割和分发操作可以包括mkm从例如mkm、lkm、或者存储器系统中的另一实体的功能接收至少一个掩码值。在一些示例中(即,存储器模块10中的至少一个生成掩码值的示例中),接收至少一个掩码值包括从存储器系统1中的一个存储器模块或者从存储器模块10中的多个接收掩码值。在一些示例中,接收至少一个掩码值包括从存储器系统1中的每一个存储器模块10接收掩码值。

mkm认证可以用于该通信。mkm认证可以使用标准密码学实体认证机制来完成,例如,在iso/iec9798信息技术中指定的机制中的一个-安全技术-实体认证。存储器模块10可以仅将掩码值或者份额传递到认证的mkm或者lkm。它们可以以防止其他方成功窃取(例如,防止确定份额)的方式来做到。

在接收到掩码值时,mkm可以从包括在存储器系统1中的存储器模块10的完整集合中随机地选择n个份额承担者存储器模块的子集。在一些示例中,份额承担者存储器模块的子集可以包括存储器系统1中的所有存储器模块10。mkm然后可以使用秘密共享方案来计算n个份额的集合。在a.shamir“howtoshareasecret,”communications.acm,vol.2,no.11,pp.612-613,1979中描述了能够用于计算份额的秘密共享方案的示例。mkm然后将计算的份额分发给子集中的存储器模块。在一些示例中,mkm将一个计算的份额分发给子集中的每个模块。该分发可以通过安全信道来做到,因此窃听不能够学到该份额。

mkm关于每个接收到的掩码值来执行这些份额分割和分发操作。在一些示例中,单个掩码值由存储器系统1使用,在这种情况下,mkm关于单个掩码值来执行份额分割和分发操作。在一些示例中,不同的掩码值用于存储器系统1的每一个存储器模块10,其中接收到的掩码值的数量等于存储器系统中的模块10的数量。在一些示例中,由存储器系统1所使用的掩码值的数量大于1,并且小于包括在存储器系统1中的存储器模块10的总数量。mkm可以创建和/或填充记录(例如,以查找表的形式),该记录指示哪些掩码值与哪些存储器模块相关联,和/或哪些存储器模块存储哪些掩码值的份额。mkm然后可以将填充的记录的副本发送到存储器系统1的一个(或者多个)其他实体,使得记录的备份被创建。

在一些示例中,mkm可以包括指令,所述指令当由存储器系统1的处理器(例如,存储器模块10的处理器,或者模块管理器44的处理器)执行时,使得存储器系统1执行由指令所指定的某些操作。在其他示例中,mkm可以被实现为硬连线的逻辑电路。在示例中,mkm使得存储器系统1确定哪些存储器模块10存储给定掩码值的份额。确定可以响应于mkm从存储器模块10接收到针对给定掩码值的请求(例如,以请求消息的形式)而被执行。确定可以基于存储位置的记录而执行。确定可以包括存取存储在被包括在mkm中的持久性存储器中的查找表,或者存取存储在与mkm进行通信的持久性存储器中的查找表。确定可以包括从存储器系统1中的每个存储器模块10请求份额,而事先不知道哪些存储器模块10存储哪些份额。

mkm(或者在一些示例中,lkm)可以使得存储器系统1从存储这些份额的存储器模块10(例如,被确定为存储这些份额的存储器模块10或者在存储器系统1中的所有存储器模块10)中请求给定掩码值的份额。请求所请求的掩码值的份额可以包括将请求消息发送到被确定为存储这些份额的存储器模块10中的每一个。如果mkm/lkm被包括在特定存储器模块10中,那么该存储器模块10的份额可以被直接取回而不是发送消息。

mkm(或者在一些示例中,lkm)可以使得存储器系统1基于接收到的请求的份额来确定给定的掩码值。对给定的掩码值的确定可以响应于接收到请求的份额(例如,从存储这些份额的存储器模块)而执行。对给定的掩码值的确定可以响应于接收到所有请求的份额而被执行。对给定的掩码值的确定可以响应于接收到所请求的份额的预定义的最小数量而被执行。预定义的最小数量可以包括在将掩码值分割为份额中所使用的秘密共享方案的阈值。

mkm(或者在一些示例中,lkm)可以使得存储器系统1将给定的掩码值发送到从其接收到针对给定的掩码值的请求的存储器模块10。例如,给定的掩码值可以在消息中被发送到从其接收到针对给定的掩码值的请求的存储器模块10。

mkm指令集或者逻辑(即,如下的指令集或者逻辑,当被执行时,使得存储器系统1关于mkm执行上述操作)可以包括在存储器系统1中的不正常操作为mkm的一个或多个实体(例如,存储器模块或者模块管理器)中。在这样的实体中,mkm指令集或者逻辑电路可以不在实体的正常操作期间执行或者实践(例如,它可以休眠)。在这样的示例中,mkm功能可以通过特定的事件来激活,例如,来自存储器模块10或者模块管理器44的控制信号,或者来自操作员的输入,或者由实体进行的检测,其中包括mkm的实体已经受到攻击、失效或者已经从存储器系统1中移除。在这样的示例中,存储器系统的另一实体(例如,与包括mkm的实体不同的)因此能够在包括mkm的实体受到攻击、失效或者已经从存储器系统1中移除的事件中接管mkm的功能。

在一些示例中,存储器系统的实体包括空闲主密钥管理器(imkm),例如,在存储器模块10中的一个或者在模块管理器44中。存储器系统中的包括imkm的实体可以包括持久性存储器,或者与持久性存储器进行通信,所述持久性存储器包括哪个掩码与哪个存储器模块相关联和/或哪个存储器模块存储每个掩码值的哪些份额的记录的副本(即,由mkm存储的记录的副本)。imkm因此可以存储由mkm维护的份额位置记录的副本。

在包括mkm的实体受到攻击、失效或者被移除的事件中,在一些示例中包括imkm的实体能够替代包括mkm的实体并且接管mkm的功能。在一些这样的示例中,包括imkm的实体包括mkm指令集或者逻辑电路。包括imkm的实体的mkm的指令集可以休眠直到被激活,例如,通过来自另一实体的控制信号、来自操作员的数据、或者由包括imkm的实体进行的检测,其中包括mkm的实体已经失效、受到攻击、和/或已经从存储器系统1中移除。在一些示例中,包括imkm的实体包括阻止mkm功能的恶意活动的安全特征。例如,这样的安全特征可以包括实体认证机制,使得授权的实体能够用作新的mkm,并且由存储器系统1的存储器模块10所接受,而未授权的实体则不能。

在一些示例中,在包括mkm的实体受到攻击、失效、和/或被移除的事件中,包括imkm的实体将份额存储位置记录的副本提供给存储器系统1中的另一实体(例如,模块10、模块管理器44、或者新添加的模块中的一个)。向其提供份额存储位置记录的副本的实体然后可以接管mkm的功能。在一些示例中,例如,在包括mkm的实体是提升的节点的示例中,该节点在物理上由另一提升的节点所替代。新的提升的节点然后可以接管mkm功能。在这样的示例中,包括imkm的实体可以将份额存储位置记录的副本提供给新的提升节点。

在一些示例中,存储器系统1包括包含imkm的单个实体。在一些示例中,存储器系统1包括包含多个多个imkm的多个实体。在一些示例中,存储器系统中的每一个存储器模块10可以包括imkm。包括imkm的实体的数量和特性可以取决于存储器系统1的特定应用。

即使如果一个或多个存储器模块受到攻击,示例存储器系统继续运行并且维持所存储的数据的安全性。在使用具有阈值t来分割每一个掩码值的秘密共享方案的示例中,在移除的模块的数据加密密钥能够从t个移除的模块取回的情况下,多达t-1的存储器模块可以在可能存取由移除的存储器模块中的任一个存储的任何数据之前而被从存储器系统中移除。即使在移除的模块中的一个具有专门的功能(例如,其包括mkm)的情况下也是这样的。这样,一些示例存储器系统响应于对实体的攻击、失效、或者从存储器系统中移除而执行某些操作。

在一个这样的示例中,存储器系统1包括掩码值重置机制,用于生成与给定的存储器模块10相关联的新的掩码值。掩码值重置机制可以通过多个存储器模块10中的一个来实现。掩码值重置机制可以以分布式的方式实现,例如,由多个存储器模块中的两个或者更多个。在存储器系统包括与多个存储器模块10中的每一个通信的模块管理器的一些示例(例如,图2的示例)中,掩码值重置机制可以至少部分地通过模块管理器来实现。掩码值重置机制可以包括指令,所述指令当由存储器系统的处理器执行时,使得存储器系统(或者其组件或者多个组件)来执行由指令所指定的某些操作。

掩码值重置机制生成与给定存储器模块相关联的新掩码值。在一些示例中,生成新的掩码值通过存储器系统的模块管理器(例如,模块管理器44)实现。在一些示例中,生成新的掩码值是通过存储器系统1中的包括mkm的实体实现的。新的掩码值可以以关于与图3的存储器模块10或者图1的存储器系统1相关联的掩码值的上述方式中的任一项来生成。掩码值重置机制还将生成的新的掩码值划分为至少两个新的掩码份额。在一些示例中,将生成的新的掩码值划分为至少两个新的掩码份额是通过存储器系统的模块管理器来实现的。在一些示例中,将生成的新的掩码值划分为至少两个新的掩码份额是通过存储器系统1中的包括mkm的实体实现的。新的掩码值可以以关于与图3的存储器模块10或者图1的存储器系统1相关联的掩码值的上述方式中的任一项来划分为份额。掩码值重置机制还通过利用新的掩码份额中的一个替换给定的存储器模块的持久性存储器中存储的掩码份额并且利用新的掩蔽的根密钥来替换存储在给定的存储器模块的持久性存储器中的掩蔽的根密钥来更新由给定存储器模块所存储的根密钥信息。在一些示例中,更新由给定的存储器模块存储的根密钥信息是通过给定的存储器模块来实现的。

在一些示例中,响应于例如由存储器模块10、模块管理器44、或者存储器系统中的包括mkm的实体检测到存储器模块10已经受到攻击、失效、或者已经从存储器系统1中移除,掩码值重置机制被激活。在一些示例中,检测通过持续地监视存储器系统1中的模块之间的链路的状态,例如通过存储器系统1中的存储器模块10周期性地将状态消息发送到相邻存储器模块和/或周期性地检查从相邻存储器模块接收到状态消息,来实现检测。

在一些示例中,掩码值重置机制确定存储器系统1中的哪个存储器模块10受到攻击、失效、或者从存储器系统1中移除实体的影响。受影响的存储器模块可以包括与其份额由受攻击的存储器模块存储的掩码值相关联的存储器模块10。因此确定给定的模块是否受到影响可以包括确定由受攻击的模块所存储的份额或者多个份额的标识(其中,份额的“标识”可以包括或者基于是其份额的掩码值,和/或与是其份额的掩码值相关联的模块的标识)。确定由受攻击的存储器模块所存储的份额或者多个份额的标识可以包括存取份额存储位置记录。

在一些示例中,掩码值重置机制用于请求每一个受影响的模块来使用与受影响的存储器模块相关联的新的掩码值来创建新掩蔽的根密钥(其中,新的掩码值不同于与受影响的存储器模块相关联的先前的掩码值,所述先前的掩码值具有由受攻击的模块所保持的份额)。该操作可以包括将请求消息从例如存储器系统1中的另一存储器模块(例如,包括mkm的存储器模块)、模块管理器44等发送到受影响的模块。

在一些示例中,掩码值重置机制从给定的受影响的模块接收与给定的受影响的存储器模块相关联的新的掩码值。新的掩码值可以从每一个受影响的模块接收,在这种情况下,掩码值重置机制的以下操作是独立于每一个接收的新的掩码值执行的。与给定的受影响的存储器模块相关联的新的掩码值可以被接收,例如,在来自给定的受影响的存储器模块的信息中。

在一些示例中,掩码值重置机制将接收到的新的掩码值划分为份额。份额划分可以以关于在存储器系统的初始化期间由mkm执行的初始份额分割和分发操作的上述方式中的任何一种执行。

在一些示例中,掩码值重置机制将新的掩码值的份额分发到存储器系统1中的多个存储器模块10。多个存储器模块可以包括与从其接受新的掩码值的存储器模块(即,给定的受影响的存储器模块)相关联的存储器模块的子集。这样的子集可以包括t或者更多个成员,其中t是秘密共享方案的阈值。存储器模块的子集可以是随机选择的。存储器模块的子集可以排除那些受到攻击的。存储器模块的子集可以排除那些由攻击者移除的。份额分发可以以关于在存储器系统的初始化期间由mkm执行的初始份额分割和分发操作的上述方式中的任何一种执行。

在一些示例中,掩码值重置机制更新存储位置的记录以包括新的掩码值的份额的存储位置。更新份额存储位置记录可以包括删除受影响的掩码值(即,与给定的受影响的存储器模块相关联的先前的掩码值)的份额的位置。更新份额存储位置记录可以以关于在存储器系统的初始化期间由mkm执行的对份额存储位置记录进行创建和填充的上述方式中的任何一种执行。

在一些示例中,在[0066]-[0073]段中所描述的操作通过存储器系统的模块管理器(例如,存储器系统4的模块管理器44)来实现。在一些示例中,在[0066]-[0073]段中所描述的操作通过存储器系统中的包括mkm的实体来实现。在一些示例中,在[0066]-[0073]段中所描述的操作通过存储器系统(例如,存储器系统1)中的存储器模块而不是给定的受影响的模块来实现。

在一些示例中,掩码值重置系统创建与每个受影响的存储器模块相关联的新的掩蔽的根密钥。在一些示例中,创建新的掩蔽的根密钥是响应于接收到(例如,来自存储器系统的另一实体、来自包括mkm的存储器模块、来自模块管理器等)用于创建新的掩蔽的根密钥的请求而执行的。创建新的掩蔽的根密钥可以通过受影响的存储器模块的控制单元来执行。通过将与给定的受影响的存储器模块相关联的根密钥与新的掩码值进行组合来创建新的掩蔽的根密钥。新的掩码值可以不同于与给定的受影响的存储器模块相关联的先前的掩码值。新的掩码值可以不同于与给定的受影响的存储器模块相关联的任何先前的掩码值。创建新的掩蔽的根密钥可以包括存储新的掩蔽的根密钥,例如在给定的受影响的存储器模块的持久性存储器中。创建新的掩蔽的根密钥可以包括删除与给定的受影响的存储器模块相关联的先前的掩蔽的根密钥,例如,从给定的受影响的存储器模块的持久性存储器中删除。新的掩蔽的根密钥因此可以替换先前的掩蔽的根密钥。从其取回新的掩蔽的根密钥的根密钥可以与从其取回先前的掩蔽的根密钥的根密钥相同。这表示从受影响的存储器模块的数据存取不需要受到攻击或者存储器系统的存储器模块的移除的影响。

在一些示例中,掩码值重置机制例如通过给定的受影响的存储器模块的控制单元23将新的掩码值发送到存储器系统的另一实体。其他实体可以是例如另一存储器模块,包括mkm的存储器模块、模块管理器等。发送新的掩码值可以包括发送包括新的掩码值的消息。

在一些示例中,在[0075]-[0076]段中描述的操作通过存储器系统的存储器模块(例如,存储器系统1的存储器模块10)来实现。在一些示例中,在[0075]-[0076]段中描述的操作通过受影响的存储器模块来实现。在一些示例中,在[0075]-[0076]段中描述的操作通过每一个受影响的存储器模块来实现。在一些示例中,存储器系统1中的每一个存储器模块10包括一组掩码值重置指令,所述指令当由存储器模块的处理器执行时,实现在[0075]-[0076]段中描述的操作。这确保在剩余的模块中的存储的数据的安全性以及对其的存取可以在存储器模块(或者多个,但是小于t)受到攻击之后被保持,而无论哪些存储器模块被攻击。

图6是示例方法的流程图,例如,用于确保包括多个存储器模块的示例存储器系统(例如,图1的存储器系统1或者图2的存储器系统4)的安全,每一个存储器模块包括持久性存储器以及易失性存储器。方法可以例如用于维持由存储器系统所存储的数据的安全性。虽然下述方法的执行是引用图1-图3的存储器系统和模块,但是用于执行该方法的其他适合的设备可以用于实践当前技术。在图6以及其他图中描述的流程图可以通过本文所述的组件或者多个组件以存储在机器可读存储介质(例如,存储器系统的模块的存储器单元)上的可执行指令的形式来实现,或者以电子电路的形式来实现。

在图6中所描述的各种处理框和/或数据流在本文中进行更详细地描述。所描述的处理框可以使用上文详细描述的系统组件中的一些或者全部完成,并且在一些实现中,各种处理框可以以不同的顺序来执行,并且各种处理框可以被省略。额外的处理框可以与所描绘的流程图所示出的处理框的一些或者全部一起执行。一些处理框可以同时执行。因此,在流程图中被描绘所示出(以及在下文详细描述的)的操作表示示例,并且这样不应该被视为限制。

在框601,根密钥信息是从多个存储器模块的至少两个存储器模块的持久性存储器取回的。至少两个存储器模块可以包括至少t个存储器模块,其中,t是阈值密码方案或者基于阈值的秘密共享方案的阈值。取回根密钥信息可以包括从至少两个存储器模块请求根密钥信息。取回根密钥信息可以包括从至少两个存储器模块接收根密钥信息。所取回的根密钥信息可以具有关于图1的存储器系统1和/或图3的存储器模块10的操作的上述特征中的任一个。

在框602,基于取回的根密钥信息来计算多个存储器模块的给定存储器模块的工作密钥。工作密钥可以具有关于图1的存储器系统1和/或图3的存储器模块10的操作的上述特征中的任一个。可以以关于图1的存储器系统1和/或图3的存储器模块10的操作的上述方式中的任一个来计算工作密钥。在一些示例中,给定的存储器模块的工作密钥是使用阈值密码方案(也被称为阈值密码系统方案)来计算的。在阈值密码系统方案中,为了对加密的消息进行解密,可能需要比阈值数量更多的各方(例如,存储器模块)协作地参与到解密协议中。在一些示例中,工作密钥可以使用这样的方案进行加密,使得各方是其他存储器模块(即,给定的存储器模块之外的)的子集。因此,计算工作密钥可以涉及该存储器模块的子集来协作地对工作密钥进行解密。

在框603,工作密钥(即,在框602计算的工作密钥)被存储在给定的存储器模块的易失性存储器中。易失性存储器可以具有关于图3的存储器模块10的上述特征中的任一个。

在框604,提供了对主要数据的加载和存储存取,所述主要数据被存储加密在给定的存储器模块的持久性存储器中。加载和存储存取可以通过使用工作密钥(即,存储在给定的存储器模块的易失性存储器中的工作密钥)来在主要数据被存储在持久性存储器中之前对主要数据进行加密并且在主要数据从持久性存储器中加载之后来对主要数据进行解密而提供。加载和存储存取可以以关于图1的存储器系统1的操作的上述的方式中的任一个来提供。

图7是示例方法的流程图,例如,用于确保包括多个存储器模块的示例存储器系统(例如,图1的存储器系统1或者图2的存储器系统4)的安全,每个存储器模块包括持久性存储器和易失性存储器。该方法可以例如用于维持由存储器系统所存储的数据的安全性。

在框701,生成与给定的存储器模块相关联的新掩码值。新掩码值可以随机生成。新掩码值可以具有关于图1的存储器系统1和/或图3的存储器模块10的操作的上述特征中的任一个。新掩码值可以以关于图1的存储器系统1和/或图3的存储器模块10的操作的上述方式中的任一个来生成。

在框702,新掩码值被划分为至少两个新掩码份额。该至少两个新掩码份额可以具有关于图1的存储器系统1和/或图3的存储器模块10的操作的上述特征中的任一个。新掩码值可以以关于图1的存储器系统1和/或图3的存储器模块10的操作的上述方式中的任一个被划分为至少两个新的掩码份额。

在框703,更新由给定的存储器模块所存储的根密钥信息。在一些示例中,更新由给定的存储器模块存储的根密钥信息包括利用新掩码份额中的一个来替换给定的存储器模块的持久性存储器中所存储的掩码份额。在一些示例中,更新由给定的存储器模块存储的根密钥信息包括利用新的掩蔽的根密钥来替换给定的存储器模块的持久性存储器中所存储的掩蔽的根密钥。更新根密钥信息可以以关于图1的存储器系统1和/或图3的存储器模块10的操作的上述方式中的任一个来做到。

在一些示例中,图7的方法是通过存储器系统的掩码值重置机制来实现的,其可以具有关于存储器系统1的掩码值重置机制的上述特征中的任一个。

在本公开中的示例可以被提供为方法、系统或者机器可读指令。这样的机器可读指令可以被包括在在其上或者其中具有计算机可读程序代码的计算机可读存储介质上(包括但不限于盘存储、cd-rom、光存储等)。

参考根据本公开的示例的方法、设备和系统的流程图和/或框图来描述本公开。虽然上述流程图示出了执行的特定顺序,但是执行的顺序可以不同于所描述的。关于一个流程图所描述的框可以与另一流程图中的框进行组合。应当理解的是流程图和/或框图中的每一个流程和/或框以及流程图和/或框图中的流程和/或图的组合可以通过机器可读指令来实现。

机器可读指令可以例如通过通用计算机、专用计算机、嵌入式处理器或者其他可编程数据处理设备的处理器来实现描述和图中所描述的功能。特别地,处理器或者处理装置可以执行机器可读指令。由此,装置和设备的功能块或者引擎可以通过处理器执行在存储器中存储的机器可读指令或者处理器根据在逻辑电路中所嵌入的指令进行操作来实现。数据“处理器”广泛地被解释为包括cpu、处理器单元、asic、或可编程门阵列等。方法和功能模块可以全部通过单个处理器来执行或者在多个处理器当中划分。

这样的机器可读指令还可以存储在计算机可读存储装置中,这样的机器可读指令能够引导计算机或者其他可编程数据处理器设备以指定的模式进行操作。

这样的机器可编程指令还可以被加载到计算机或者其他可编程数据处理设备,使得计算机或者其他可编程数据处理设备执行一系列的操作来产生计算机实现的处理,由此在计算机或者其他可编程设备上执行的指令提供用于实现由流程图中的流程和/或框图中的框所指定的功能的操作。

虽然参考某些示例描述了方法、装置、和相关的方面,各种修改、改变、省略以及替换可以在不偏离本公开的精神的情况下做出。因此,表示的是方法、装置和相关的方面仅通过以下的权利要求和其等同物的方位来进行限定。应当理解,上述示例示出而不是限制本文所描述的内容,并且本领域的技术人员能够在不偏离所附的权利要求的范围的情况下设计许多可替换的实现。

词“包括”不排除在权利要求中列出的元件之外的元件的出现,“一”或者“一个”不排除多个,并且多个处理器或者其他单元可以填充在权利要求中所引用的多个单元的功能。

任何从属权利要求的特征可以与独立权利要求或者其他从属权利要求中的任何一个的特征来进行组合。

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