安全加密键值对数据存储方法及系统技术方案

技术编号:39735750 阅读:10 留言:0更新日期:2023-12-17 23:37
一种安全加密键值对数据存储方法及系统,包括:安全写过程和安全读过程,通过在

【技术实现步骤摘要】
安全加密键值对数据存储方法及系统


[0001]本专利技术涉及的是一种信息安全领域的技术,具体是一种安全加密键值对数据存储方法及系统


技术介绍

[0002]SGX(Software Guard Extension)
作为一种典型的可信执行环境
(Trusted Execution Environment,TEE)
,利用受硬件保护的区域
Enclave
来保护数据安全

云服务系统中的日志结构合并树
(Log

Structured Merge Tree,LSM

Tree)
将写入键值存储的数据首先按序保存在一张内存表中,当内存表的大小达到一定阈值时,会触发一个后台线程转储到磁盘,形成一个排序字符串表
(Sorted String Table,SSTable)。
引入
SGX
来实现安全加密键值对存储的现有方案均采用经过优化的直接
I/O
库来写入和读取磁盘,然而随着存储的数据量越来越多,
Enclave
内的
I/O
会成为瓶颈,引入至少4倍以上的额外延迟,导致查询性能降低


技术实现思路

[0003]本专利技术针对现有
SGX
安全区实现键值对存储的磁盘读写开销过大且安全属性无法扩展到整个键值存储数据的问题,提出一种安全加密键值对数据存储方法及系统,基于空间换时间的思想重新设计安全加密键值存储系统的结构,利用外部调用将键与值分开存储,有效减少
Enclave
内直接
I/O
操作的规模

[0004]本专利技术是通过以下技术方案实现的:
[0005]本专利技术涉及一种安全加密键值对数据存储方法,包括:安全写过程和安全读过程

[0006]所述的安全写过程具体包括:当客户端与安全加密键值对数据存储系统建立安全通信后将键值数据和对应的操作一同发送到存储引擎,存储引擎对键值数据通过对称加密密钥加密后将所有插入相关的信息写入预写日志中并对日志条目进行结构优化;当写入预写日志时,存储引擎会对经过结构优化的日志进行完整性校验,当确认日志条目成功写入预写日志中后,通知日志计数器进行自增;最后将键值数据正式写入内存表

[0007]所述的所有插入相关的信息是指:加密的键值数据和日志计数器当前值;当系统意外重启时用于恢复内存中的数据

[0008]优选地,当本次插入应用二层存储时,存储引擎额外将值哈希作为数据的一部分写入预写日志中

[0009]所述的值哈希是指:安全写过程中写入的值经过
SHA256
算法计算得出的结果

[0010]所述的结构优化是指:每条日志包括日志头和数据部分,其中:日志头包括用于身份认证和确保数据完整性的消息认证码

数据长度

日志计数器的值和操作类型,消息认证码通过
CMAC
算法得到

[0011]所述的消息认证码,在每次写入预写日志时根据消息认证密钥生成,消息认证密钥在安全存储区初始化时生成

[0012]所述的操作类型是指对键值存储系统的增删改三种操作

[0013]优选地,所述的对称加密密钥和消息认证码均经过
SGX
密封和持久化处理

[0014]所述的日志计数器在整个系统中全局唯一且单调递增,而日志条目只能追加不能修改,因此可以通过检查相邻条目中的计数器值来判断日志文件是否被篡改

[0015]优选地,存储引擎在正式写入前判断,当加密值本身的长度与哈希结果相当,则不采用二层存储,直接存储该加密值;否则通过二层存储写入内存

[0016]所述的安全读过程具体包括:
[0017]①
存储引擎使用对称密钥对用户提交的查询键进行加密;
[0018]②
存储引擎在内存
Enclave
中查找是否存储在匹配的键,具体为:先搜索二层缓存,当命中时不需要进行任何校验,直接返回值,因为写入二层缓存的数据都满足安全属性;否则查询内存表,当存在匹配时执行步骤

,否则执行步骤


[0019]③
当内存表中的数据未启用二层存储时,数据都经过加密,存储引擎只需要对加密值执行解密即可返回给客户端,因为敌手无法进入到
Enclave
中篡改内存表中的数据;当内存表中的数据启用了二层存储时,存储引擎根据值哈希在二层存储中读取对应的加密值,并对读取到的数据尝试解密,当解密成功时,说明该值是当前客户端写入的,继续比较解密值的哈希是否与内存表中的值哈希一致,只有完全通过验证的值才能被写入二层缓存并返回给客户端

[0020]④
若在内存中没有找到目标键,则存储引擎统计所有可能包含目标键的层,然后自上而下对每一层进行二分搜索

在对二分搜索找到的排序字符串表文件内容进行进一步查找之前,存储引擎检查文件的哈希值是否与
Enclave
中的版本信息中保存的一致,从而该排序字符串表中存储的所有数据都有了安全保障

如果在排序字符串表的搜索的过程中找到第一个匹配的目标键,就停止搜索并将对应的值返回,然后根据该值是否启用二层存储,依照步骤

的方式对其进行解密,并返回给客户端;否则说明键值存储系统中不存在该键值对

技术效果
[0021]本专利技术在
Enclave
中实施键值分离的双层存储模式;消除双层存储模式在热点数据访问时的重复开销而实施的二层缓存;保证整个键值存储系统的安全性的读写算法

相比现有技术,本专利技术双层存储模式完全使用直接
I/O
库的性能提升了大约6倍;在查询热点数据时减少外部调用的次数,同时消除多次重复解密的开销;用户数据以加密的形式存储在云端,并增加完整性校验机制,使得敌手无法从外部调用中获取任何关于存储数据的有效信息,无法获取本专利技术所保护的无状态数据的任何有效信息,即键值数据以及无法获取本专利技术所保护的有状态数据的任何有效信息,即预写日志和元数据清单

附图说明
[0022]图1和图2为本专利技术读

写方法示意图;
[0023]图3为本专利技术安全加密键值对数据存储系统示意图;
[0024]图4为二层存储示意图;
[0025]图5为结构优化示意图

具体实施方式
[0026]如图3所示,为本实施例涉及一种安全加密键值对数据存储系统,包括:设置于内存中的安全存储区
(Enclave)
和二层内部存储以及位于本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种安全加密键值对数据存储方法,其特征在于,包括:安全写过程和安全读过程;所述的安全写过程包括:当客户端与安全加密键值对数据存储系统建立安全通信后将键值数据和对应的操作一同发送到存储引擎,存储引擎对键值数据通过对称加密密钥加密后将所有插入相关的信息写入预写日志中并对日志条目进行结构优化;当写入预写日志时,存储引擎会对经过结构优化的日志进行完整性校验,当确认日志条目成功写入预写日志中后,通知日志计数器进行自增;最后将键值数据正式写入内存表;所述的安全读过程包括:
1)
存储引擎使用对称密钥对用户提交的查询键进行加密;
2)
存储引擎在内存
Enclave
中查找是否存储在匹配的键,具体为:先搜索二层缓存,当命中时不需要进行任何校验,直接返回值,因为写入二层缓存的数据都满足安全属性;否则查询内存表,当存在匹配时执行步骤3,否则执行步骤4;
3)
当内存表中的数据未启用二层存储时,数据都经过加密,存储引擎只需要对加密值执行解密即可返回给客户端,因为敌手无法进入到
Enclave
中篡改内存表中的数据;当内存表中的数据启用了二层存储时,存储引擎根据值哈希,即安全写过程中写入的值经过
SHA256
算法计算得出的结果在二层存储中读取对应的加密值,并对读取到的数据尝试解密,当解密成功时,说明该值是当前客户端写入的,继续比较解密值的哈希是否与内存表中的值哈希一致,只有完全通过验证的值才能被写入二层缓存并返回给客户端,
4)
若在内存中没有找到目标键,则存储引擎统计所有可能包含目标键的层,然后自上而下对每一层进行二分搜索,在对二分搜索找到的排序字符串表文件内容进行进一步查找之前,存储引擎检查文件的哈希值是否与
Enclave
中的版本信息中保存的一致,从而该排序字符串表中存储的所有数据都有了安全保障,如果在排序字符串表的搜索的过程中找到第一个匹配的目标键,就停止搜索并将对应的值返回,然后根据该值是否启用二层存储,依照步骤

的方式对其进行解密,并返回给客户端;否则说明键值存储系统中不存在该键值对
。2.
根据权利要求1所述的安全加密键值对数据存储系统,其特征是,所述的所有插入相关的信息是指:加密的键值数据和日志计数器当前值;当系统意外重启时用于恢复内存中的数据
。3.
根据权利要求2所述的安全加密键值对数据存储系统,其特征是,当本次插入应用二层存储时,存储引擎额外将值哈希作为数据的一部分写入预写日志中
。4.
根据权利要求1所述的安全加密键值对数据存储系统,其特征是,所述的结构优化是指:每条日志包括日志头和数据部分,其中:日志头包括用于身份认...

【专利技术属性】
技术研发人员:沈宸恺范磊苏元朋刘杰
申请(专利权)人:优刻得科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1