CN113157821B - 一种适用于关系数据库的可查询加密方法 - Google Patents
一种适用于关系数据库的可查询加密方法 Download PDFInfo
- Publication number
- CN113157821B CN113157821B CN202110380758.2A CN202110380758A CN113157821B CN 113157821 B CN113157821 B CN 113157821B CN 202110380758 A CN202110380758 A CN 202110380758A CN 113157821 B CN113157821 B CN 113157821B
- Authority
- CN
- China
- Prior art keywords
- query
- sub
- data
- module
- query module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000013507 mapping Methods 0.000 claims abstract description 79
- 238000009482 thermal adhesion granulation Methods 0.000 claims description 32
- 238000003780 insertion Methods 0.000 claims description 23
- 230000037431 insertion Effects 0.000 claims description 23
- 239000000284 extract Substances 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013479 data entry Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012946 outsourcing Methods 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种适用于关系数据库的可查询加密方法,在云服务器内部,由一个转发模块和多个子查询模块构造的分布式的可查询加密系统进行执行,转发模块和多个子查询模块被加载在云服务器的硬件飞地中;各子查询模块对应负责云服务器内的一块存储区域。子查询模块将关系数据以表项为单位转化为DOSM索引结构中的关键字k,再将对表项分配的指针作为DOSM索引结构中k‑v映射的v值进行存储,一条拥有n个属性的表项会产生n个映射条目。云服务器只需要存储一份加密的关系数据表,从而节省存储空间。对关系数据进行转化之后,子查询模块可以调用现有DOSM的各种算法完成对关系数据库中的数据进行安全高效地并行查询及动态更新操作。
Description
技术领域
本发明涉及数据库技术与加密技术,具体的说涉及一种针对关系数据库的加密查询与更新技术。
背景技术
可查询加密技术(Searchable encryption scheme)是一种允许用户对加密数据库进行选择性查询的技术。一个可查询加密数据库系统通常由两个主体构成:一台不受信任的云存储服务器和一组用户。云服务器通常被认为是“诚实但好奇”的,它负责存储用户的数据库,并遵守协议规则执行查询过程,但在协议的执行过程中,云服务器会试图恢复用户的加密数据。而用户则拥有一些敏感数据想要存储在云服务器上。为了保证数据库的隐私性,用户在将数据库外包至云服务器上进行存储前会对数据库进行加密处理,并且希望在保证数据隐私的情况下对数据库进行可选择性的查询或是更新操作。
Mishra等人在《Oblix:An Efficient Oblivious Search Index》中构造了一个基于不经意的数据结构ODS(Oblivious Data Structure)的有序多重映射结构DOSM(Doubly-Oblivious Sorted Multimap)。一个多重映射[k→(v1,v2,v3,...,vn)]代表着一个关键字k可以被映射到多个不同且有序的值v。DOSM结构允许用户将一个加密的多重映射外包至云服务器进行存储,并能够安全高效地对映射进行查询和更新操作。
与现有的许多可查询加密方案相同,Mishra等人构造的索引结构在应用于可查询加密的场合下拥有更高的安全性且拥有不低的效率,但它是根据一般的(k,v)数据库进行构造的。此类数据库一般应用于普通的文件存储系统或是邮件系统中,不适用于关系数据库。
关系数据库是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。关系数据库模型指数据的逻辑结构归结为满足一定条件的二维表中的元素。以关系数据库为代表的结构化数据的特点是数据单元小但据数量大。对于关系数据表中的每一个表项,如果单独将它的每个(属性,属性值)对提取出来作为关键字k,将其数据本身作为映射的结构,构成一组k-v映射,将会导致一张m×n的表格消耗的存储空间被放大n倍,这是因为一条表项会产生n个k-v映射条目。
ORAM(Oblivious Random Access Machine,茫然随机访问机)是一种可以用来完全隐藏IO操作的数据访问模式的加密方案。简单来说,ORAM将用户的一个文件访问请求转换成多个文件访问请求,从而模糊化用户访问文件的概率、模式等信息。Path ORAM是目前使用较为广泛的ORAM模型。Path ORAM将用户存储在服务器的数据组织为二叉树的形式,用户每个访问请求都是从树中读取一条从根节点到叶节点的路径path。
关于Path ORAM的相关概念如下:
(1)桶Bucket和块Block:用户以块的形式将文件存储在第三方,每个块大小固定,块为最小存储单位。树的节点称为桶,每个桶包含相同且固定个数的块,当用户存储的块不能填满桶的时候,桶中填充虚块(dummy block),每个块至少包含三个字段:(标识符,叶子节点编号,数据)。用户通过标识符检索块,叶子节点编号标记该块属于哪条路径,例如叶子节点编号为1时,要访问该块,用户需要将从根节点到叶子节点1的那条路径上所有桶从云服务器上读取到本地,然后用户再通过标识符找到该块,从而得到用户真正要访问的数据。
(2)路径映射(position map):叶子节点标记树中每条从根节点到叶子节点的路径,每个块都被随机分配一个叶子节点,表示该块位于该条路径上。块和叶子节点的映射关系被记录到position map上,position map存储在用户端,每次访问完一个块后,都要给该块重新随机分配一个叶子节点,使得每次访问相同的块时的访问位置不同。
(3)隐私存储(stash):stash是用户本地可信存储,用户每次从第三方读取一条完整的路径,都将路径中所有的块存储在stash中,然后扫描stash找到自己所需的块,更新该块的叶子节点编号,如果是写操作,更新块的数据,然后的将stash中块写回到当前读取的路径中。
(4)具体流程:
a.用户要请求获取标识为i的块,首先在本地position map中找到i对应的叶子节点编号为lf,给i随机分配一个叶子节点编号并更新到position map中,然后向存储数据的第三方请求获取lf路径;
b.第三方收到请求后,将从根节点到编号为lf的叶子节点之间(包括根节点和叶子节点)所有的桶发送给用户;
c.用户收到桶后,将桶中的所有块写入到本地stash,扫描stash,找到标识为i的块,读取数据,然后将position map中的叶子节点编号更新lf,如果是写操作,更新块中的数据;
d.用户将stash中能够写回当前路径的块放入合适的桶中,如果桶未被填满,使用虚块填充,然后将所有的桶写回到第三方存储的树的第lf条路径中,不能写回的块将留在stash中。
发明内容
本发明所要解决的技术问题还是,提出了一种数据转化方案,使得关系数据库中的数据能适用于DOSM索引结构,以实现可查询加密的方法。
本发明为解决上述技术问题所采用的技术方案是,一种适用于关系数据库的可查询加密方法,由一个转发模块和多个子查询模块构造的分布式的可查询加密系统进行执行,所述转发模块和多个子查询模块被加载在云服务器的硬件飞地中;各子查询模块对应负责云服务器内的一块存储区域,各子查询模块内部有一个本地可信存储stash,可查询加密具体包括以下步骤:
1)初始化阶段:转发模块与用户进行身份认证并进行会话密钥协商,每个子查询模块初始化自己负责的云服务器内的存储区为Path ORAM结构;
2)当用户需要存储数据时:
2-1)由转发模块接收用户向云服务器发起数据插入请求;
2-2)转发模块从数据插入请求获取待存储数据,将待存储数据以表项为单位重新划分,对每一个表项封装为表项插入请求并转发,一个表项插入请求转发至一个子查询模块;
2-3)子查询模块对接收到一个表项插入请求通过以下方式在存储区中插入一条新表项:
a.子查询模块从表项插入请求获取待插入表项data后,构造用于存放data的块bl,并且构造指向块bl的指针ptr;
b.子查询模块提取data中的全部查询标签构成列表TAG,并对于列表TAG中的每一个查询标签tagi生成映射(tagi,ptr),将一个映射(tagi,ptr)作为一条DOSM的映射条目,将列表TAG对应的全部映射条目组成关键字映射列表ListP;tagi表示TAG中第i个标签;
c.子查询模块利用DOSM的INSERT算法将ListP中每一条映射条目以加密形式存储至其负责的云服务器内的存储区中;
d.子查询模块对步骤a中产生的块bl与stash中的块bl进行分组,以桶为单位进行加密后存储至其负责的云服务器内的存储区中;
3)当用户需要查询数据时:
3-1)由转发模块接收用户向云服务器发起的查询请求;
3-2)转发模块将查询请求转发所有子查询模块;
3-3)各子查询模块通过以下方式进行数据查询得到查询结果:
a.子查询模块从查询请求获取查询标签tag,使用DOSM的FIND算法与其负责的云服务器内的存储区交互获取符合查询标签tag的表项的指针所组成的指针列表PTR;
b.子查询模块对于PTR中的每一个指针,子查询模块与存储区交互获取指针指向的路径上的所有桶至stash,再在stash中找到包含有查询标签的表项的块bl作为查询结果;当子查询模块获取的PTR为空时,则构造随机值填充的查询结果;
c.子查询模块在stash中更新被查询到的表项的指针生成新的映射条目,调用DOSM中的DELETE算法将删除其负责的云服务器内的存储区中旧的指针列表PTR中对应的所有映射条目,调用DOSM中的INSERT算法将新的映射条目以加密形式存储至其负责的云服务器内的存储区中,最后将stash中的块bl进行分组,以桶为单位进行加密后存储至其负责的云服务器内的存储区中,从而完成存储区内被查询的表项的存储位置以及对应指针的更新;
3-4)云服务器返回查询结果:各子查询模块将查询结果进行填充后返回给转发模块;转发模块使用会话密钥加密查询结果返回给用户。
进一步的,本发明还包括:
4)当用户需要更新数据时:
4-1)由转发模块接收用户发起的数据更新请求;数据更新请求中包含有为需要更新的数据的查询标签tag以及更新的数据;
4-2)转发模块从数据更新请求中获取待更新的数据,将数据以表项为单位重新划分,对每一个待更新的表项data′封装为表项更新请求并转发至所有子查询模块;data′为空时,表示对此表项的删除操作;
4-3)各子查询模块对接收到一个表项更新请求通过以下方式在存储区中更新一条新表项:
a.子查询模块从接收表项更新请求中获取需要更新的查询标签tag,并以与3-3)的a至b步骤相同的方式从其负责的云服务器的存储区中查找待更新的旧表项所在的块bl;若查询结果为空,则终止更新操作;若查询结果不为空,则进入步骤b;
b.子查询模块构造与旧表项data有关的所有映射条目的关键字映射列表ListP;
c.子查询模块判断待更新的表项data′是否空:若data′为空,子查询模块将查找到的块bl标记为虚拟块,再进入步骤d;若data′不为空,子查询模块更新每一个块bl存储的原始表项data至表项data′,并构造与data′有关的所有映射条目的新的关键字映射列表ListP′,再进入步骤d;
d.若data′为空,子查询模块调用DOSM中的DELETE算法从其负责的云服务器内的存储区中删除ListP中每一个映射条目,再进入步骤e;若data′不为空,子查询模块调用DOSM中的DELETE算法从其负责的云服务器内的存储区中删除ListP中每一个映射条目,再调用DOSM中的INSERT算法将ListP′中每一个映射条目以加密形式存储至其负责的云服务器内的存储区中,再进入步骤e;
e.子查询模块最后将stash中的块bl进行分组,以桶为单位进行加密后存储至其负责的云服务器内的存储区中。
本发明子查询模块将关系数据以表项为单位转化为DOSM索引结构中的关键字k,再将对表项分配的指针作为DOSM索引结构中k-v映射的v值进行存储,一条表项的一个标签产生1个映射条目。云服务器只需要存储一份加密的关系数据表,从而节省存储空间。按照本发明的对关系数据进行转化之后,子查询模块可以调用现有DOSM的各种算法完成对其负责的存储区中数据的存储、查询以及更新。
转发模块与子查询模块同过硬件飞地的保护来使用DOSM索引结构,降低因为网络往返而带来的时延。为了不向服务器泄露数据的访问模式,关系数据的表项以块为生成单位,以桶为加密单位存储在子查询模块负责的存储区域的ORAM树中。由于对数据的查询以及更新请求会被所有子查询模块接收并返回处理结果以及path ORAM技术本身的加密访问优势,云服务无法获得用户目标数据存储的具体位置。
本发明的有益效果是,支持对关系数据库中的数据进行安全高效地并行查询及动态更新操作(包括插入、删除和修改数据)。
具体实现方式
由云服务器内部由多个模块构造分布式的可查询加密系统,包括一个转发模块和多个子查询模块,所述转发模块和多个子查询模块被加载在部署在云服务器的硬件飞地中。硬件飞地为由硬件支撑的可信执行环境,云服务器无法探寻到飞地内部程序运行的状态。因此,分布式的可查询加密系统由于硬件飞地的保护,转发模块和多个子查询模块之间的数据通信以及内部数据处理过程对于云服务器而言是无法获取的。各子查询模块对应负责云服务器内的一块存储区域。
系统通过以下步骤实现关系数据库的可查询加密:
1)初始化阶段:
转发模块与用户进行身份认证并进行会话密钥密钥协商,同时每个子查询模块将自己负责的存储空间初始化为Path ORAM结构,每个子查询模块本地存储区为stash。
2)当用户需要存储数据时:
2-1)用户向云服务器发起数据插入请求:用户通过安全信道向云服务器发起数据插入请求INSERT(DATA),其中,DATA为用户需要在云服务器存储的数据,由一条或多条表项data组成;
2-2)转发模块接收INSERT(DATA),再逐条提取每一条表项data,重新构造表项插入请求INSERT(datai),并将每一条插入请求INSERT(datai)加密后转发给某一个子查询模块;datai表示DATA中第i条表项;具体的,转发模块可根据情况随机均匀地,或者转发模块考虑某些因素选择一个子查询模块,将加密后的INSERT(datai)转发给该子查询模块;对INSERT(datai)进行加密的密钥为硬件飞地之间使用的对称密钥;
2-3)子查询模块向本地存储区中插入接收到的新表项:
a.子查询模块解密接收到的插入请求INSERT(datai)获取待插入表项datai,之后子查询模块对表项datai进行如下处理:
b.子查询模块按照Path ORAM构造用于存放datai的块bl以及指向bl的指针ptr;一个datai对应生成一个bl;ptr=(bid,lf),bid表示bl的标识符bid,lf为Path ORAM中存储bl所属路径的叶子节点编号;
c.子查询模块提取datai中的全部查询标签构成列表TAG;其中,TAG由多个标签tag组成;对列表TAG中的每一个标签tagi生成标签到所在bl的指针ptr的映射(tagi,ptr);tagi表示TAG中第i个标签;将一个映射(tagi,ptr)作为一条DOSM的映射条目;将列表TAG对应的全部映射条目组成关键字映射列表;
d.子查询模块将列表TAG中每一个标签tagi以及对应ptr构成一个DOSM中k-v映射的键-值对映射条目k-v,最终形成关键字映射列表ListP;不同于现有DOSM一个关键字k可以被映射到多个不同且有序的值v,本发明的关键字k=tagi被映射到其对应ptr,即仅有被映射到一个v,但是通过本发明在执行后续存储、查询或者更新步骤时,每个请求均会被云服务器中每个子查询模块执行,云服务无法获知用户目标的数据的具体存储位置;
e.子查询模块通过DOSM的INSERT算法将生成的ListP中每一个映射(tagi,ptr)作为待插入的映射条目以加密形式存储至其负责的存储区中;
DOSM的INSERT算法将从子查询模块负责的存储区中取回的若干的块,再将待插入的映射条目构造为块bl与从子查询模块负责的存储区中取回的块组成桶后,将桶以加密的形式发送并存储至其负责的存储区中;DOSM的INSERT算法为DOSM中的成熟技术,目的是将待插入的映射条目的加密副本以安全的方式外包至云服务进行存储;DOSM的INSERT算法从存储区中取回的块可以是由映射条目构造成的块,也可以是由映射条目构造成的块;每次子搜索模块与存储区的交互都会导致ORAM树中的一整条路径上的块被取回,因此随着包含了待插入的映射条目的桶存储至其负责的存储区,一部分取回的块可能被写回了存储区,还有部分取回的块可能未被写回,这取决于被取回的块被随机分配的路径,是否允许该块被写回原路径;
f.子查询模块将由datai生成的bl与步骤e取回但未写回的块进行分组,组成桶,未填满的桶填充虚块,将桶以加密的形式发送并存储至其负责的存储区中;即,将子查询模块本地暂存的块按桶进行分组,以桶为单位进行加密,将加密后的桶作为一个桶节点存储至存储区的ORAM树中。
本发明中由映射条目构造成的块至少包含三个字段:(标识符bid,叶子节点编号lf,数据(tagi,ptr)),即将映射条目作为块的数据部分;由表项生成的块至少包含三个字段:(标识符bid,叶子节点编号lf,数据datai),即将表项作为块的数据部分。
3)当用户需要查询数据时:
3-1)用户向云服务器发起查询请求:用户通过安全信道向云服务器发起查询请求SEARCH(tag);
3-2)转发模块进行接收,并将SEARCH(tag)加密后转发给所有子查询模块;具体的,对SEARCH(tag)加密的密钥为硬件飞地之间使用的对称密钥;
3-3)各子查询模块执行数据查询:
a.子查询模块解密查询请求SEARCH(tag),得到需要查询的tag,使用DOSM的FIND算法与存储区交互获取符合查询标签tag的表项的指针所组成的指针列表PTR;
b.子查询模块利用指针列表PTR中的每一个指针ptri从其负责的存储区中获取指针指向的路径上的所有桶,并解密为块后,通过标识符bid找到包含有目标表项的块,并从该块中取出表项data添加至查询结果的列表DATA中,并将查询结果加密后发送至转发模块;对查询结果进行加密的密钥为硬件飞地之间使用的对称密钥;当子查询模块获取符合查询标签tag的指针列表PTR为空,则就将构造随机值填充至查询结果的列表DATA,使得云服务器分无法知道在该子查询模块中是否有用户所需数据;
c.子查询模块给查询结果中的各表项data重新分配指针ptr,再生成新的表项的各标签到所在bl的指针ptr的映射;调用DOSM中的DELETE算法将存储区中旧的表项的各标签到所在bl的指针ptr的映射安全地一一删除,再调用DOSM中的INSERT算法将新的表项的各标签到所在bl的指针ptr的映射一一存储至存储区,再将stash中的块bl存储至存储区中,以完成存储区内被查询的表项的存储位置以及对应指针的更新;
3-4)云服务器返回查询结果:各子查询模块将查询结果进行填充并加密后返回给转发模块;转发模块解密后,使用会话密钥重新加密查询结果,通过安全信道将加密的查询结果返回给用户,用户解密并将冗余数据剔除后得到查询结果。
4)当用户需要更新数据时:
4-1)用户通过安全信道向云服务器发起数据更新请求UPDATE(tag,DATA′);tag为更新的数据的查询标签,DATA′为需要更新的数据;
4-2)转发模块接收UPDATE(tag,DATA′),再中DATA′逐条提取每一条表项data′,并将表项更新请求UPDATE(tag,data′)重新封装后转发给每一个子查询模块;data′可以为空,data′为空代表执行数据删除;
4-3)各子查询模块执行数据更新:
a.每一个子查询模块接收到表项更新请求后,获取需要更新的表项的查询标签tag,并以与步骤3-3)中a到b的相同的方式,查找到所有存储着需要更新的表项的块bl。若查询结果为空,则终止更新操作。若查询结果不为空,则子查询模块以步骤3-3)中c相同的方式更新查询到的块bl在Path ORAM系统中的指针。
b.对于每一个块bl中存储的旧表项data,子查询模块以与步骤2-3)中c和d相同的方式重构与data有关的所有原始关键字映射列表ListP。
c.判断需要更新的表项data′是否空:若data′为空,子查询模块将每一个搜索到的块bl标记为虚拟块;若data′不为空,子查询模块更新每一个块bl存储的旧表项data至更新后表项data′,并构造与data′有关的新的关键字映射列表ListP′。
d.若data′为空,子查询模块再将ListP中的每一个旧关键字映射从存储区中删除。若data′不为空,子查询模块在删除旧关键字映射的基础上,将ListP′中的每一个新关键字映射存储至该子查询模块在云服务器的负责存储区中。
e.最后,子查询模块将飞地内剩余的块写回存储区,写回方式与步骤2-3)的f相同。
DOSM(Doubly-Oblivious Sorted Multimaps)是一种不经意的有序键-值对映射数据结构,本发明使用到DOSM中INSERT算法、FIND算法以及DELETE算法均为已有算法。如,DOSM的INSERT算法DOSM.Insert(st,k,v)使得子查询模块可以将本地状态st、待插入的映射条目(k,v)以安全的方式外包至云服务器进行存储。
实施例
将分布式可查询加密系统设置在云服务器内,包括一个转发模块和多个子查询模块,每个子查询模块负责云服务器内的一块存储区域。每个转发模块和子查询模块被IntelSGX这类硬件飞地平台保护起来,不同的硬件飞地之间使用对称密钥进行加密通信。由硬件飞地提供运行在其中的程序和数据的完整性和机密性保护。
1)系统初始化:
子查询模块初始化存储空间时,通过将存储区初始化为一个以Path ORAM结构构造的存储区,该存储区是一个以N个桶为节点构造的二叉树,每个叶子节点拥有自己的一个唯一的编号。每个桶承载C个块,每个块可以承载B比特的数据。关系数据库的表项以块为单位进行存储,数据以桶为单位使用用户的数据加密密钥加密。
2)用户需要向云服务器存储数据时:
2-1)用户向云服务器发起数据插入请求:用户向云服务器发起数据插入请求INSERT(DATA),转发模块接收到用户的数据插入请求INSERT(DATA)后,转发模块解密请求,确认操作为INSERT,并获取用户请求插入的表项列表DATA(用户可能在一次操作中插入多条表项)。
2-2)转发模块向子查询模块发起表项插入请求:转发模块将DATA中的每一条表项datai提取出来,重新构造单独的插入请求INSERT(datai),并将每一条新的插入请求加密后均匀随机地发送给不同的子查询模块。
2-3)各子查询模块向其负责的存储区中插入新表项,其中一个查询模块向其负责的存储区中插入一条新表项的具体步骤为:
a.子查询模块解密并获取由转发模块发送的表项插入请求INSERT(data)。
b.子查询模块为表项data构造一个Path ORAM的块bl,并由该块bl存储其数据内容。随后,子查询模块为块bl分配一个唯一的标识符bid,并为标识符bid分配一个PathORAM中的叶子节点编号lf。随后,子查询模块构造指向块bl的指针ptr=(bid,lf)。
c.子查询模块从表项data中提取出其所有的查询标签tag构成列表TAG,每一个标签tag其格式一般为(attribute,value)的(属性,属性值)对。子查询模块将TAG中第i个标签查询标签构造为DOSM中的关键字ki=tagi=(attributei,valuei)的列表n为表项data的标签(关键字)的总个数。
f.子查询模块将飞地内本地存储的块重新分组,并以桶为单位进行加密,写回存储区的ORAM树中。其中,每个块只能被写回它被分配的路径(从ORAM树的根节点到块被分配的叶子节点的所构成的路径)中,未被填满的桶将会使用虚拟的块进行填充。
3)当用户需要查询数据时:
3-1)用户通过安全信道向云服务器发起查询请求SEARCH(tag);tag为查询关键字,即标签;
3-2)转发模块进行接收,并将SEARCH(tag)使用硬件飞地之间使用的对称密钥加密后转发给所有子查询模块;
3-3)子查询模块执行数据查询:
a.子查询模块解密并获取由转发模块发送的数据查询请求SEARCH(tag)。一般而言,查询tag拥有形式tag=(attribute,value)。
b.子查询模块输入本地状态st,查询关键字tag,通过DOSM的FIND算法DOSM.Find(st,tag)与存储区交互,并获取符合k=tag=(attribute,value)的k所映射的值的列表Listv=(v1,v2,v3,...),其中列表Listv中第i个vi=(bidi,lfi)。
c.当列表Listv为空时,子查询模块构造一个表项的列表DATA,并将其数据条目数填充至一个随机值。
d.当列表Listv不为空时,对于Listv中的每一个vi,子查询模块从存储区中取回ORAM树中从根到叶子节点lfi的路径上所有的桶节点,并将其解密获取桶中存储的块。随后,子查询模块根据块标识符bidi找到存放着目标表项的块bli,并将bli中存放的目标表项data取出,添加到查询结果的列表DATA中。
e.子查询模块从块bli存放的表项datai中提取出其所有的查询关键字kij=(attributej,valuej),kij表示datai的第j个查询关键字;将其与原始指针ptri=vi=(bidi,lfi)一起构造成一个bli的原始键-值对映射列表
f.对于每一个查询到的目标块,子查询模块为块bli重新分配一个新的标识符bidi′和叶子节点编号lfi′,并构造新的指针vi′=(bidi′,lfi′);子查询模块将列表ListM中的每一个元组中的ptri用新分配的指针ptri′=vi′=(bidi′,lfi′)替换,并构造bli的新的键值对映射列表
g.对于原始键值对映射列表ListM中的每一个元素(ki,v),其中v=ptri,子查询模块调用DOSM中的DELETE算法DOSM.Delete(st,ki,v)将旧映射从存储区中安全地删除,其中st是子查询模块的本地状态。
h.对于ListM′中的每一个元素(ki,v′),其中v′=ptri′,子查询模块调用DOSM结构中的INSERT算法DOSM.Insert(st,ki,v′)将新映射的加密副本存储至存储区中,其中st是子查询模块的本地状态。
i.子查询模块将飞地内本地存储的块(包括更新后的块)重新分组,并以桶为单位进行加密,写回云服务存储区的ORAM树中。写回规则与步骤2-3)的f所述的方式相同。
3-4)云服务器返回查询结果:所有的子查询模块将各自的查询结果加密后发送给转发模块,转发模块解密后,使用会话密钥重新加密查询结果,并将结果通过可信信道发送给用户。用户将冗余数据剔除后得到查询结果。
5)当用户需要更新数据时:
4-1)用户通过安全信道向云服务器发起数据更新请求UPDATE(tag,DATA′);tag为更新的数据的查询标签;data′为需要更新的数据
4-2)转发模块接收UPDATE(tag,DATA′)并封装为表项更新请求UPDATE(tag,data′)后,
将UPDATE(tag,data′)转发给每一个子查询模块;
4-3)各子查询模块执行数据更新:
a.每一个子查询模块接收到UPDATE(tag,data′)后,获取需要data′的查询标签tag,并以与步骤3-3)中b到d的相同的方式,查找到所有存储着需要更新的表项的块bl。若查询结果为空,则终止更新操作。若查询结果不为空,则子查询模块以步骤3-3)中e相同的方式更新查询到的块bl在Path ORAM系统中的指针为(bidi′,lfi′)。
c.判断需要更新的da′是否空:若data′为空,子查询模块将每一个搜索到的块bl标记为虚拟块;若data′不为空,子查询模块更新每一个块bl存储的旧表项data至更新后data′,并以与步骤2-3)的c和d中相同的方式构造与data′有关的新的关键字映射列表
d.若data′为空,子查询模块以与步骤3-3)的h和j相同的方式,使用算法DOSM.Delete(st,ki,ptr)将ListP中的每一个旧关键字映射从存储区中删除。若data′不为空,子查询模块在删除旧关键字映射的基础上,使用算法DOSM.Insert(st,ki′,ptr′)将ListP′中的每一个新关键字映射存储至该子查询模块在云服务器的负责存储区中。
e.最后,子查询模块将飞地内剩余的块写回存储区,写回方式与步骤2-3)的f相同。
本方案支持用户对加密的动态关系数据库进行可选择性的并行查询,支持对数据的增、删、改操作,并且可以防止数据访问模式和查询模式的泄露。由于数据库通过PathORAM方案进行存储,同一个数据在每一次取回后都会被存放在一个新的路径中,服务器无法判断两次查询是否是重复的。并且由于每一次子查询模块从存储区取回的是ORAM树中一条路径上所有的结点,服务器无法判断查询目标数据的具体存放地址。作为一个支持动态操作的可查询加密方案,本方案可以保证当用户插入一条新数据时,服务器不知道新数据包含的关键字之前是否有被查询过。并且由于查询过程由多个子查询模块并行进行,我们的方案相比之前的方案拥有更高的查询效率。
Claims (6)
1.一种适用于关系数据库的可查询加密方法,其特征在于,由一个转发模块和多个子查询模块构造的分布式的可查询加密系统进行执行,所述转发模块和多个子查询模块被加载在云服务器的硬件飞地中;各子查询模块对应负责云服务器内的一块存储区域,各子查询模块内部有一个本地可信存储stash,可查询加密具体包括以下步骤:
1)初始化阶段:转发模块与用户进行身份认证并进行会话密钥协商,每个子查询模块初始化自己负责的云服务器内的存储区为Path ORAM结构;
2)当用户需要存储数据时:
2-1)由转发模块接收用户向云服务器发起数据插入请求;
2-2)转发模块从数据插入请求获取待存储数据,将待存储数据以表项为单位重新划分,对每一个表项封装为表项插入请求并转发,一个表项插入请求转发至一个子查询模块;
2-3)该子查询模块对接收到一个表项插入请求通过以下方式在存储区中插入一条新表项:
a.子查询模块从表项插入请求获取待插入表项data后,构造用于存放data的块bl,并且构造指向块bl的指针ptr;
b.子查询模块提取data中的全部查询标签构成列表TAG,并对于列表TAG中的每一个查询标签tag生成映射(tag,ptr),将一个映射(tag,ptr)作为一条DOSM的映射条目,将列表TAG对应的全部映射条目组成关键字映射列表ListP;
c.子查询模块利用DOSM的INSERT算法将ListP中每一条映射条目以加密形式存储至其负责的云服务器内的存储区中;
d.子查询模块对步骤a中产生的块bl与stash中的块bl进行分组,以桶为单位进行加密后存储至其负责的云服务器内的存储区中;
3)当用户需要查询数据时:
3-1)由转发模块接收用户向云服务器发起的查询请求;
3-2)转发模块将查询请求转发所有子查询模块;
3-3)各子查询模块通过以下方式进行数据查询得到查询结果:
a.子查询模块从查询请求获取查询标签tag,使用DOSM的FIND算法与其负责的云服务器内的存储区交互获取符合查询标签tag的表项的指针所组成的指针列表PTR;
b.子查询模块对于PTR中的每一个指针,子查询模块与存储区交互获取指针指向的路径上的所有桶至stash,再在stash中找到包含有查询标签的表项的块bl作为查询结果;当子查询模块获取的PTR为空时,则构造随机值填充的查询结果;
c.子查询模块在stash中更新被查询到的表项的指针,生成新的映射条目,调用DOSM中的DELETE算法将删除其负责的云服务器内的存储区中旧的指针列表PTR中对应的所有映射条目,调用DOSM中的INSERT算法将新的映射条目以加密形式存储至其负责的云服务器内的存储区中,最后将stash中的块bl进行分组,以桶为单位进行加密后存储至其负责的云服务器内的存储区中,从而完成存储区内被查询的表项的存储位置以及对应指针的更新;
3-4)云服务器返回查询结果:各子查询模块将查询结果进行填充后返回给转发模块;转发模块使用会话密钥加密查询结果返回给用户。
2.如权利要求1所述方法,其特征在于,还包括4)当用户需要更新数据时:
4-1)由转发模块接收用户发起的数据更新请求;数据更新请求中包含有为需要更新的数据的查询标签tag以及更新的数据;
4-2)转发模块从数据更新请求中获取待更新的数据,将数据以表项为单位重新划分,对每一个待更新的表项data′封装为表项更新请求并转发至所有子查询模块;
4-3)各子查询模块对接收到一个表项更新请求通过以下方式在存储区中更新一条新表项:
a.子查询模块从接收表项更新请求中获取需要更新的查询标签tag,并以与3-3)的a至b步骤相同的方式从其负责的云服务器的存储区中查找待更新的旧表项所在的块bl;若查询结果为空,则终止更新操作;若查询结果不为空,则进入步骤b;
b.子查询模块构造与旧表项data有关的所有映射条目的关键字映射列表ListP;
c.子查询模块判断待更新的表项data′是否空:若data′为空,子查询模块将查找到的块bl标记为虚拟块,再进入步骤d;若data′不为空,子查询模块更新每一个块bl存储的原始表项data至表项data′,并构造与data ′有关的所有映射条目的新的关键字映射列表ListP′,再进入步骤d;
d.若data′为空,子查询模块调用DOSM中的DELETE算法从其负责的云服务器内的存储区中删除ListP中每一个映射条目,再进入步骤e;若data′不为空,子查询模块调用DOSM中的DELETE算法从其负责的云服务器内的存储区中删除ListP中每一个映射条目,再调用DOSM中的INSERT算法将ListP′中每一个映射条目以加密形式存储至其负责的云服务器内的存储区中,再进入步骤e;
e.子查询模块最后将stash中的块bl进行分组,以桶为单位进行加密后存储至其负责的云服务器内的存储区中。
3.如权利要求1所述方法,其特征在于,步骤2-2)中子查询模块均匀随机地选择接收表项插入请求的子查询模块。
4.如权利要求1或2所述方法,其特征在于,指针ptr=(bid,lf),bid表示bl的标识符bid,lf为Path ORAM中存储bl所属路径的叶子节点编号;
步骤3-3)b中子查询模块与存储区交互获取指针ptr中Path ORAM的根点到叶子节点lf的路径上的所有桶至stash后,再通过bid在stash中找到包含有查询标签的表项的块bl作为查询结果。
5.如权利要求1或2所述方法,其特征在于,查询标签tag的格式为(attribute,value),attribute表示属性,value表示属性值。
6.如权利要求1或2所述方法,其特征在于,子查询模块对块bl以桶为单位进行加密之前,对于未被填满的桶将先会使用虚拟的块进行填充。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110380758.2A CN113157821B (zh) | 2021-04-09 | 2021-04-09 | 一种适用于关系数据库的可查询加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110380758.2A CN113157821B (zh) | 2021-04-09 | 2021-04-09 | 一种适用于关系数据库的可查询加密方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113157821A CN113157821A (zh) | 2021-07-23 |
CN113157821B true CN113157821B (zh) | 2022-03-15 |
Family
ID=76889197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110380758.2A Expired - Fee Related CN113157821B (zh) | 2021-04-09 | 2021-04-09 | 一种适用于关系数据库的可查询加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157821B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116167092B (zh) * | 2023-04-21 | 2023-07-18 | 支付宝(杭州)信息技术有限公司 | 一种密态数据查询方法、装置、存储介质以及电子设备 |
CN116430347B (zh) * | 2023-06-13 | 2023-08-22 | 成都实时技术股份有限公司 | 一种雷达数据采集与存储方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106503084A (zh) * | 2016-10-10 | 2017-03-15 | 中国科学院软件研究所 | 一种面向云数据库的非结构化数据的存储与管理方法 |
CN106776904A (zh) * | 2016-11-30 | 2017-05-31 | 中南大学 | 一种不可信云计算环境中支持动态验证的模糊查询加密方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7269729B2 (en) * | 2001-12-28 | 2007-09-11 | International Business Machines Corporation | Relational database management encryption system |
-
2021
- 2021-04-09 CN CN202110380758.2A patent/CN113157821B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106503084A (zh) * | 2016-10-10 | 2017-03-15 | 中国科学院软件研究所 | 一种面向云数据库的非结构化数据的存储与管理方法 |
CN106776904A (zh) * | 2016-11-30 | 2017-05-31 | 中南大学 | 一种不可信云计算环境中支持动态验证的模糊查询加密方法 |
Non-Patent Citations (2)
Title |
---|
Multi user searchable encryption schemes using Trusted Proxy for cloud based Relational Databases;Kurra Mallaiah等;《2015 International Conference on Green Computing and Internet of Things (ICGCIoT)》;20160114;全文 * |
基于云计算的可查询加密研究综述;朱艳琴等;《南京师大学报(自然科学版)》;20140320;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113157821A (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112800088B (zh) | 基于双向安全索引的数据库密文检索系统及方法 | |
CN113157821B (zh) | 一种适用于关系数据库的可查询加密方法 | |
CN113254955A (zh) | 前向安全的连接关键词对称可搜索加密方法、系统及应用 | |
WO2022099893A1 (zh) | 数据查询方法、装置、系统以及数据集处理方法 | |
CN112231752B (zh) | 一种无交互频率隐藏的密文插入查询删除方法 | |
CN117834109B (zh) | 一种基于混淆模分量的密文数据库系统及其应用方法 | |
Kim et al. | Hilbert-curve based cryptographic transformation scheme for protecting data privacy on outsourced private spatial data | |
CN114254344B (zh) | 一种基于区块链的共享数据库的隐私数据范围查询方法 | |
Wu et al. | OBI: a multi-path oblivious RAM for forward-and-backward-secure searchable encryption. | |
Cui et al. | Secure boolean spatial keyword query with lightweight access control in cloud environments | |
Ananthi et al. | FSS-SDD: fuzzy-based semantic search for secure data discovery from outsourced cloud data | |
CN116107967B (zh) | 基于同态加密和树结构的多关键词密文搜索方法及系统 | |
Zhang et al. | S-oram: A segmentation-based oblivious ram | |
CN113722366A (zh) | 一种基于不经意密文倒排索引的安全数据检索方法 | |
Bacis et al. | Distributed shuffle index in the cloud: Implementation and evaluation | |
Talha et al. | DISC: Query processing on the cloud service provider for dynamic spatial databases | |
Indhuja et al. | A multi-keyword ranked search scheme over encrypted based on hierarchical clustering index | |
Loh et al. | Data privacy in multi-cloud: an enhanced data fragmentation framework | |
CN116670741A (zh) | 隐匿检索系统和隐匿检索方法 | |
CN111797097A (zh) | 一种基于软硬件结合的方式实现安全范围查询的方法 | |
US11669506B2 (en) | Searchable encryption | |
CN114579999B (zh) | 一种面向外包云环境的动态可验证关键词密文检索方法 | |
Degitz et al. | Access Pattern Confidentiality-Preserving Relational Databases: Deployment Concept and Efficiency Evaluation. | |
di Vimercati et al. | Access Privacy in the Cloud. | |
CN115576987A (zh) | 加密数据查询方法、装置、存储介质、处理器及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220315 |
|
CF01 | Termination of patent right due to non-payment of annual fee |