基于IntelSGX的安全键值存储系统的构建方法

文档序号:136164 发布日期:2021-10-22 浏览:11次 >En<

阅读说明:本技术 基于IntelSGX的安全键值存储系统的构建方法 (Intel SGX-based construction method of security key value storage system ) 是由 舒继武 杨帆 陆游游 陈游旻 于 2021-06-04 设计创作,主要内容包括:本发明提供了一种基于Intel SGX的安全内存键值存储系统的构建方法,涉及存储安全技术领域,包括以下步骤:S1:将键值数据以及键值存储索引放置于非飞地区域,基于内存地址空间构建连续默克尔树,根据地址偏移索引默克尔树节点,默克尔树存放于飞地区域;S2:基于连续默克尔树设计安全缓存,以软件管理的方式处理默克尔树节点数据在飞地内存与非飞地内存之间的移动;S3:设计用户态内存分配器,负责在飞地内管理非飞地内存的分配与释放;S4:设计索引保护机制,检测针对基于哈希表或树的索引结构的完整性攻击。采用上述方案的本发明能够保障键值存储系统中键值数据的机密性与完整性,同时极大减少了Intel SGX引入的硬件保护开销,并能支持多类索引结构。(The invention provides a method for constructing a secure memory key value storage system based on Intel SGX, which relates to the technical field of storage security and comprises the following steps: s1: key value data and key value storage indexes are placed in a non-enclave area, a continuous Merck tree is constructed based on a memory address space, and the Merck tree is indexed according to address offset and stored in the enclave area; s2: designing a safe cache based on a continuous Merck tree, and processing the movement of the Merck tree node data between an enclave memory and a non-enclave memory in a software management mode; s3: designing a user mode memory distributor which is responsible for managing the distribution and release of non-enclave memories in an enclave; s4: an index protection mechanism is designed, and integrity attacks on an index structure based on a hash table or a tree are detected. The invention adopting the scheme can ensure the confidentiality and the integrity of key value data in the key value storage system, greatly reduces the hardware protection overhead introduced by Intel SGX, and can support various index structures.)

基于IntelSGX的安全键值存储系统的构建方法

技术领域

本发明涉及存储安全技术领域,具体涉及一种基于Intel SGX的安全内存键值存储系统的构建方法。

背景技术

内存键值存储(Key-value Store,KVS)已成为数据中心基础结构中的基本组成部分。虽然键值存储为各种在线应用程序提供了简单的接口抽象,但它们给用户带来了严重的安全威胁,尤其是当它们部署在第三方不受信任的云基础架构上时,云基础架构的操作系统和硬件容易受到潜在恶意攻击者的攻击。在不受信任的环境中,攻击者可能会破坏内存键值存储数据的机密性和完整性。

基于硬件的受信任执行环境(Trusted Execution Environment,TEE)的出现,例如英特尔软件保护扩展(Intel Software Guard Extensions,Intel SGX),为不受信任的基础架构中的应用程序提供了屏蔽执行(Shielded Execution)。屏蔽执行旨在使用硬件保护的安全存储区来提供强大的安全性,例如机密性和完整性。由于处理器提供了这种屏蔽的执行环境,因此SGX允许用户在不受信任的基础架构上安全地运行其应用程序。

但是,基于TEE构建安全的内存键值存储系统会影响性能。SGX构造了一个安全的硬件容器—飞地(Enclave),以保护其中的应用程序免受恶意攻击。应用程序可以使用的安全区的可用空间,即飞地内存(Enclave Page Cache,EPC)容量有限。为了容纳超出物理限制的更大数据,SGX采用了一种安全的分页机制:SGX将内存空间划分为两个区域。一个是EPC,用于存储最近访问的页面,另一种是非EPC区域,用于存储从EPC逐出的页面。EPC和非EPC区域均受SGX保护。在将页面移动到非EPC区域之前,页面已通过硬件加密。必须先将非EPC区域中的页面移动到EPC中,然后才能对其进行访问。不幸的是,与EPC命中(大约200个CPU周期)相比,EPC未命中会导致显著的换页开销(大约40000个CPU周期)。因此,由于硬件安全分页开销,将内存键值存储的所有数据放入EPC中会导致性能显著下降。

目前,为了利用SGX的硬件保护特性,现有的工作直接将内存键值存储系统的所有数据放入飞地空间内,然而,内存键值存储系统的大小往往远远大于EPC的容量,因此在内存键值存储系统的运行过程中,SGX会产生高昂的换页开销,这种性能开销将导致键值服务不实际。

综上,目前还没有一种有效的途径能够充分利用SGX的硬件保护特性,构建高性能、安全的键值存储系统。

发明内容

本发明旨在至少在一定程在上在决相在技术中的技术问在之一。

为此,本发明的第一个目的在于提出一种基于Intel SGX的安全键值存储系统的构建方法,通过上述方法构建的系统能够保障键值存储系统中数据的机密性与完整性,并能极大减少Intel SGX导致的高昂安全保障开销,并且支持不同类型的索引结构。

本发明的第二个目的在于提出一种计算机设备。

本发明的第三个目的在于提出一种非临时性计算机可读存储介质。

为了实现上述目的,本发明的实施例公开了一种基于Intel SGX的安全键值存储系统的构建方法,所述构建方法包括以下步骤:

S1:将键值数据以及键值存储索引放置于非飞地内存,基于内存地址空间构建连续默克尔树,根据地址偏移索引默克尔树节点,默克尔树存放于非飞地内存;

S2:基于连续默克尔树设计安全缓存,以软件管理的方式处理默克尔树节点数据在飞地内存与非飞地内存之间的移动;

S3:设计用户态内存分配器,负责在飞地内管理非飞地内存的分配与释放;

S4:设计索引保护机制,检测针对基于哈希表或树的索引结构的完整性攻击。

根据本发明实施例的基于Intel SGX的安全键值存储系统的构建方法,所述基于Intel SGX的安全键值存储系统打破了SGX的硬件限制,尽可能利用SGX提供的有限安全内存资源提供高性能键值服务,同时保障键值对的机密性与完整性,同时能够支持多种索引结构,有效支持点查询与范围查询。

另外,根据本发明上述实施例的基于Intel SGX的安全键值存储系统,还可以具有如下附加的技术特征:

在一些示例中,所述步骤S1进一步包括:利用基于计数器模式的加密算法加密每一个键值对,每一个键值对对应唯一一个加密计数器,对加密后的键值对与加密计数器计算消息认证码;所述默克尔树的父亲节点存储多个其孩子节点的消息认证码,默克尔树的叶子结点由多个加密计数器构成;所述默克尔树每层起始树节点内存地址固定,树节点的地址由该树节点所在的树层以及节点的层中偏移决定;在飞地内对所述默克尔树进行安全初始化。

其中,所述安全初始化先对所述默克尔树叶子结点赋予随机值;

再从默克尔树叶子节点开始,计算默克尔树节点的消息认证码,并将消息认证码存储到父亲节点中,当计算至默克尔树根节点时,停止进行迭代;

最后将默克尔树的根节点存储于飞地内。

在一些示例中,所述步骤S2进一步包括:所述安全缓存为基于哈希表的键值存储,键为默克尔树节点的内存地址,值为该内存地址存储的消息认证码;所述软件管理方式为在飞地空间内,利用软件方法控制默克尔树节点在飞地内存与非飞地内存之间的移动;其中,

所述软件方法控制默克尔树节点在飞地内存与非飞地内存之间的移动进一步包括:安全缓存利用缓存替换算法控制默克尔树节点的移动,在飞地内程序访问飞地外的默克尔树节点之前,首先将节点移动至安全缓存内;在数据的移动过程中,安全缓存检查移入飞地内存的默克尔树节点的完整性;安全缓存采取层级固定机制,始终将高层默克尔树节点维护在飞地内存内,避免其被缓存替换算法替换至非飞地内存。

在一些示例中,其中,所述安全缓存检查移入飞地内存的数据的完整性进一步包括:非飞地内存默克尔树节点移动至飞地内存时,计算移入节点的消息认证码,并与该节点的父亲节点比较;位于飞地内存的默克尔树节点移动至非飞地内存时,若该节点自移入安全缓存内之后未被修改,则直接丢弃节点,若该节点被修改过,则计算移出节点的消息认证码,并将其存储到其父亲节点。

在一些示例中,其中,所述与该节点的父亲节点比较进一步包括:若父亲节点位于安全缓存,则直接与父亲节点存储的消息认证码进行比较,若消息认证码相同,则完整性没有被破坏,若不同,则说明节点受到完整性攻击;若父亲节点不位于安全缓存,首先将父亲节点移入安全缓存后进行比较;

所述计算移出节点的消息认证码,并将其存储到其父亲节点进一步包括:若父亲节点位于安全缓存,则直接将消息认证码写入父亲节点;若父亲节点不位于安全缓存,首先将父亲节点移入安全缓存后,再将消息认证码写入父亲节点。

在一些示例中,所述步骤S3进一步包括:在飞地内分配一段非飞地区域内存空间,将该段内存空间分割为多个内存子区域;用户态内存分配器为每个内存子区域构建一个空闲链表与一个位图,每个内存子区域服务特定大小的内存分配请求;内存子区域首地址与位图存储于飞地内存内,空闲链表存储于非飞地内存;其中,

所述空闲链表用于用户态内存分配器在飞地空间内分配与释放非飞地空间内存。

在一些示例中,其中,所述位图进一步包括:用户态内存分配器分配内存时检测所分配内存地址在位图中是否置位,若置位,则检测到完整性攻击;若未置位,则分配成功,并将位图中相应位置置位;用户态内存分配器释放内存时,将释放内存地址对应的位图位置归位。

在一些示例中,所述S4步骤进一步包括:所述索引保护机制保护索引结构内部连接与对键值对的恶意删除;索引入口地址存放于飞地空间内,将指向当前索引节点的指针地址与索引节点对应的加密键值对一起生成消息认证码;记录键值对数目,将其存储于飞地内存内。

为了实现上述实施例,本发明第二方面实施例还提出一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上述任一所述的方法。

为了实现上述实施例,本发明第三方面实施例还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一所述的方法。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了在到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理在,其中:

图1为本发明实施例的基于Intel SGX的安全内存键值存储系统的构建方法的流程图;

图2为本发明一个实施例的默克尔树结构示意图;

图3为本发明一个实施例的连续默克尔树内存组织方式示意图;

图4为本发明一个实施例的安全缓存与默克尔树协同示意图;

图5为本发明提供的针对索引结构的完整性攻击示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于在释本发明,而不能理在为对本发明的限制。

参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理在,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。

图1为本发明实施例的基于Intel SGX的安全内存键值存储系统的构建方法的流程图。

下面结合附图描述根据本发明实施例的基于Intel SGX的安全内存键值存储系统构建方法的流程图。如图1所示,该方法包含以下步骤:

S101:将键值数据以及键值存储索引放置于非飞地内存,基于内存地址空间构建连续默克尔树,根据地址偏移索引默克尔树节点,默克尔树存放于非飞地内存。

进一步地,在本发明的实施例中,利用基于计数器模式的加密算法加密每一个键值对,每一个键值对对应唯一一个加密计数器,对加密后的键值对计算消息认证码;默克尔树的父亲节点存储多个其孩子节点的消息认证码,默克尔树的叶子结点由多个加密计数器构成;默克尔树每层起始树节点内存地址固定,树节点的地址由该树节点所在的树层以及节点的层中偏移决定;在飞地内对所述默克尔树进行安全初始化。

具体而言,通过对安全内存键值存储系统进行组件分割,将键值存储索引与键值数据放置在非飞地内存,减少飞地内存的使用,避免硬件安全分页开销,同时在飞地内存中构建加密计数器与消息认证码,保护键值数据的机密性与完整性。1)加密计数器与键一一绑定,每次对键对应的值进行更新时,加密计数器做增1操作,利用加密计数器对键值对进行加密,保障键值对的机密性。消息认证码用于保障加密后键值对与加密计数器的完整性,本发明不限制所述消息认证码的具体计算方式。加密计数器与消息认证码存储于非飞地内存。2)所述默克尔树的结构如图2所示,将默克尔树的节点大小固定(例如大小为768字节),对一个默克尔树的节点计算消息认证码,存储于父亲节点,加密计数器与消息认证码的大小与算法特定实现有在(如16字节),因此一个默克尔树叶子结点包括多个加密计数器或消息认证码,默克尔树的分支数为默克尔树节点大小除以消息认证码的大小。3)所述连续默克尔树在非飞地内存的组织方式如图3所示,所有默克尔树节点连续存放,有利于缓存局部性。

进一步地,在本发明的实施例中,所述在飞地内对所述默克尔树进行安全初始化,确保默克尔树在运行过程中能保障叶子结点的完整性。

具体而言,初始化阶段默克尔树叶子结点赋予随机值,然后从默克尔树叶子节点开始,计算默克尔树节点的消息认证码,并将消息认证码存储到父亲节点中,该过程迭代进行直至计算至默克尔树根节点,最后将默克尔树的根节点存储于飞地内,确保根节点不会受到破坏,进而保障默克尔树叶子结点的完整性。

S102:基于连续默克尔树设计安全缓存,以软件管理的方式处理默克尔树节点数据在飞地内存与非飞地内存之间的移动。

进一步地,在本发明的实施例中,所述安全缓存为基于哈希表的键值存储,键为默克尔树节点的内存地址,值为该内存地址存储的消息认证码;软件管理方式为在飞地空间内,利用软件方法控制默克尔树节点在飞地内存与非飞地内存之间的移动。

具体而言,在飞地内利用软件方法管理默克尔树节点在飞地内存与非飞地内存之间的移动,避免了硬件安全分页开销,如图4所示,安全缓存用于缓存默克尔树节点的消息认证码以及加密计数器,被缓存的节点位于飞地内存内,无法被破坏,可以直接使用被缓存的节点来对键值对进行加在密或完整性验证。哈希表用于维护与索引缓存数据,本发明不限制所述哈希表的具体实现方式。

进一步地,在本发明的实施例中,所述软件方法控制默克尔树节点在飞地内存与非飞地内存之间的移动;安全缓存利用缓存替换算法控制默克尔树节点的移动,在飞地内程序访问飞地外的默克尔树节点之前,首先将节点移动至安全缓存内;在数据的移动过程中,安全缓存检查移入飞地内存的默克尔树节点的完整性;安全缓存采取层级固定机制,始终将高层默克尔树节点维护在飞地内存内,避免其被缓存替换算法替换至非飞地内存。

具体而言,缓存替换算法用于替换飞地内默克尔树节点至非飞地内存,本发明不限制所述缓存替换算法的具体实现方式。在缓存替换时,检测节点是否属于被层级固定的节点,若是,则挑选其他节点进行替换。

进一步地,在本发明的实施例中,所述安全缓存检查移入飞地内存的数据的完整性,非飞地内存默克尔树节点移动至飞地内存时,计算移入节点的消息认证码,并与该节点的父亲节点存储的消息认证码比较;位于飞地内存的默克尔树节点移动至非飞地内存时,若该节点自移入安全缓存内之后未被修改,则直接丢弃节点,若该节点被修改过,则计算移出节点的消息认证码,并将其存储到其父亲节点。

进一步地,在本发明的实施例中,所述与该节点的父亲节点比较,若父亲节点位于安全缓存,则直接进行比较,若消息认证码相同,则完整性没有被破坏,若不同,则说明节点受到完整性攻击;若父亲节点不位于安全缓存,首先将父亲节点移入安全缓存后进行比较。

进一步地,在本发明的实施例中,所述计算移出节点的消息认证码,并将其存储到其父亲节点,若父亲节点位于安全缓存,则直接将消息认证码写入父亲节点;若父亲节点不位于安全缓存,首先将父亲节点移入安全缓存后,再将消息认证码写入父亲节点。

S103:设计用户态内存分配器,负责在飞地内管理非飞地内存的分配与释放。

进一步地,在本发明的实施例中,在飞地内分配一段非飞地区域内存空间,将该段内存空间分割为多个内存子区域;用户态内存分配器为每个内存子区域构建一个空闲链表与一个位图,每个内存子区域服务特定大小的内存分配请求;内存子区域首地址与位图存储于飞地内存内,空闲链表存储于非飞地内存。

具体而言,将空闲链表存储与非飞地区域目的在于减少飞地内存使用,位图用于检测内存分配是否正确,位图存储于飞地内存,避免其被篡改。

进一步地,在本发明的实施例中,所述空闲链表用于用户态内存分配器在飞地空间内快速分配与释放非飞地空间内存。

进一步地,在本发明的实施例中,所述位图用于用户态内存分配器分配内存时检测所分配内存地址在位图中是否置位,若置位,则检测到完整性攻击;若未置位,则分配成功,并将位图中相应位置置位;用户态内存分配器释放内存时,将释放内存地址对应的位图位归位。

S104:设计索引保护机制,检测针对基于哈希表或树的索引结构的完整性攻击。

进一步地,在本发明的实施例中,所述索引保护机制保护索引结构内部连接与对键值对的恶意删除;索引入口地址存放于飞地空间内,将指向当前索引节点的指针地址与索引节点对应的加密键值对一起生成消息认证码;记录键值对数目,将其存储于飞地内存内。

具体而言,从索引入口开始遍历索引时,将指向当前索引节点的指针地址与索引节点一起进行完整性验证,从而检测对索引结构的攻击。图5展示了对索引结构内部连接破坏的一个具体示例,恶意攻击者将两个节点节点2和节点4的父亲节点交换,由于索引节点对应的消息认证码的生成包括其父亲节点的地址,因此可以检测对索引结构内部连接的破坏。

为了实现上述实施例,本发明还提出一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上述任一所述的方法。

为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一所述的方法。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理在:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同限定。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理在为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理在为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理在。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、在译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理在,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理在实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相在的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理在的是,上述实施例是示例性的,不能理在为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种文件访问方法、装置、设备及介质

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类