CN109495446B - 基于平衡排序树存储结构的保序加密算法 - Google Patents
基于平衡排序树存储结构的保序加密算法 Download PDFInfo
- Publication number
- CN109495446B CN109495446B CN201811163799.0A CN201811163799A CN109495446B CN 109495446 B CN109495446 B CN 109495446B CN 201811163799 A CN201811163799 A CN 201811163799A CN 109495446 B CN109495446 B CN 109495446B
- Authority
- CN
- China
- Prior art keywords
- algorithm
- tree
- ciphertext
- node
- query
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- 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
-
- 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/606—Protecting data by securing the transmission between two devices or processes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于密码技术领域,具体为基于平衡排序树存储结构的保序加密算法。本发明算法中,其数据存储基本结构包括AVL树、红黑树、B树、B+树或B*树;不同的数据存储结构,其算法表述略有差异。本发明算法以AVL树结构为例,其包括基本的基于AVL树的理想安全的保序加密算法以及一些改进的的保序加密算法。各种算法都从树形结构、初始化算法、加密算法、解密算法、orderby排序算法、范围查询算法、删除算法、平衡算法、交互式查询算法进行描述。相对于大多数无法达到理想安全的保序加密,本发明中的算法安全性有绝对的优势,本发明给出的算法也进行了全方位的对比,适用于绝大多数***,尤其适用于安全性需求较高、带宽配置足量的***。
Description
技术领域
本发明属于密码技术领域,具体涉及基于平衡排序树存储结构的保序(编码)加密算法。
背景技术
预备知识和符号标示:
本发明的数据存储基本结构采用AVL树、红黑树(RBT)、B树、B+树、B*树,在此对其特征进行简单描述:
AVL树本质上还是一棵二叉(排序)搜索树,它的特点是:
(a)本身首先是一棵二叉搜索树;
(b)带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。
红黑树(RBT)是每个节点都带有颜色属性的二叉(排序)查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树增加了如下的额外要求:
(a)节点是红色或黑色;
(b)根节点是黑色;
(c)每个叶节点(空节点)是黑色的;
(d)每个红色节点的两个子节点都是黑色(从每个叶子到根的所有路径上不能有两个连续的红色节点);
(e)从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
一棵m阶B树是一棵平衡的m路搜索(排序)树。它或者是空树,或者是满足下列性质的树:
(a)根结点至少有两个子女;
(d)所有的叶子结点都位于同一层。
B+树是应文件***所需而出的一种B树的变型树。一棵m阶的B+树和m阶的B树的差异在于:
(a)有n棵子树的结点中含有n个关键字,每个关键字不保存数据,只用来索引,所有数据都保存在叶子节点;
(b)所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接;
(c)所有的非终端结点可以看成是索引部分,结点中仅含其子树(根结点)中的最大(或最小)关键字;
(d)通常在B+树上有两个头指针,一个指向根结点,一个指向关键字最小的叶子结点。
B*树是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针;B*树定义了非叶子结点关键字个数至少为2m/3,即块的最低使用率为2/3(代替B+树的1/2)。
具有伪随机输出性质的哈希函数在密码学分析中常被理想化为一个“随机预言机(random oracle)”。常用的伪随机函数也出于此。
前向安全在属性保留加密和属性揭示加密领域首先被应用在动态对称可搜索加密,是一个很强的属性。前向安全意味着过去的数据操作不会造成任何关于新***数据的信息泄露。我们给出其对于揭序加密的定义,如下:
一个泄露函数为L,针对敌手适应性攻击为安全的揭序加密是前向安全的,它的数据***操作的泄露Ladd需要可以表示成为:
Ladd(add,Wadd)=L(add,INDadd)。
其中,Wadd是包含其特定存储结构、指针和约束等事项的数据***数据集。INDadd仅表示关系型数据库中***了数据的数据表或者费关系型数据库中***了数据的数据文件的集合,以及***数据的数量。
保序加密和揭序加密是属性保留加密和属性揭示加密中的重要加密方法,且属性保留加密和属性揭示加密又是私钥加密中的重要成员。保序加密是揭序加密的一种特殊形式,最早可追溯到2004年Agrawal等人发表的针对于数值型数据的保序加密方法。2009年Boldyreva等人正式开启了学术界对保序加密研究的浪潮,涌现了诸多安全性与效率上权衡的算法,产生了诸多对算法结构的变革。此后,Boneh等人于2015年第一次提出揭序加密的一种算法。由于其采用多线性映射,效率低下,近几年便有诸多揭序加密算法推陈出新。加之以2013年Popa等人发表的第一个实用加密数据库***CryptDB的推动,保序加密和揭序加密作为其内部算法组件在近几年受到极大关注和开发。
满足一个私钥加密算法是一个揭序加密算法,此算法可表示成为一个定义在完美排序的明文空间上的算法元组:
ORE=(ORE.Setup,ORE.Encrypt,ORE.Compare);
并具有以下性质:
(1)ORE.Setup(1λ)→sk。输入一个安全参数λ,该算法输出一个私钥用于后续算法加密;
(2)ORE.Encrypt(sk,m)→c。利用先前产生的私钥,加密算法将输入的明文m加密成为一个可以利用比较算法揭示正确顺序的密文c;
(3)ORE.Compare(c1,c2)→b。输入两个密文,比较函数返回一个比特b∈{0,1}揭示两者的正确顺序。
上文的完美排序指的是类似于数字、字符串等通过正常比较大小就得知其正确的顺序的情况。此外,并不是所有揭序加密都具有解密算法ORE.Decrypt,数据拥有者可以通过二分查找解密数据。
保序加密是揭序加密的一种特殊情况,只需要令揭序加密的密文空间一样是完美排序的,同时令比较算法为正常的大小比较方法即可。
目前,并没有太多基于树形存储结构的保序加密。仅2013年Popa等人的mOPE、2015年Kerschbaum的频率隐藏OPE、Roche等人2016年发表的POPE(partial order-preservingencryption)。前两者是基于AVL树,最后者是基于B树。后两者拥有频率隐藏机制,最前者拥有数据表结构,最后者拥有buffer结构。但本发明提出的诸多算法与他们又有足量的差异,且可以达到至今最强的保序加密安全性IND-FAPOCPA(indistinguishability underfrequency-analyzing partial ordered chosen-plaintext attack),即频率分析下部分保序选择明文攻击不可区分。
发明内容
本发明的目的在于提供一种安全性高、实用性强的基于平衡排序树存储结构的理想安全的保序(编码)加密算法。
本发明提供的基于平衡排序树存储结构的理想安全的保序(编码)加密算法,其数据存储基本结构可以采用AVL树、红黑树(RBT)、B树、B+树或B*树;不同的数据存储基本结构,其算法表述基本一致(略有差异)。为叙述方便,下面以AVL树结构为例,说明本发明算法,其包括基本的基于AVL树的理想安全的保序加密算法,以及一些改进的基于AVL树的理想安全的保序加密算法。
本发明提供的基本的基于AVL树的理想安全的保序加密算法,其中,密文的存储及其顺序编码是基于AVL树完成的,仅仅泄露顺序信息;该算法可以表示为算法元组mOPEAVL=(Init,Enc,Dec,OB,RQ,Del,Bal,IS),由于基于树存储的理想安全的保序加密均为(密文)可变保序加密(mOPE),遂命名为mOPEAVL,其中,八个元素分别是Init:初始化算法,Enc:加密算法,Dec:解密算法,OB:排序查询算法,RQ:范围查询算法,Del:删除算法,Bal:树型平衡算法,IS:交互式查询算法。
依据AVL树结构,设本发明算法中,树节点的存储结构为:
structTree{Treeleft;Treeright;intbf;intcounter;bitstringcipher;}
其中,各元素分别表示节点的左子树节点(Treeleft)、节点的右子树节点(Treeright)、平衡因子(intbf)、密文计数器(intcounter)、密文(bitstringcipher)。
令m为明文;c为密文;sk为私钥;λ为安全参数;q为查询语句,若为范围查询,则包含q.cl或/和q.cr作为查询边界值密文(也即,cl、cr分别表示查询左边界和右边界的密文,例如在查询“大于3小于等于7的数据”中,为3和7的密文);st为服务器端存储状态,可简单的理解为树的根节点;本算法还利用了其他算法作为加密、解密功能性和基本安全性的支持,后文中采用确定性加密的算法元组DET=(DET.KeyGen,DET.Enc,DET.Dec)表示,其中三个元素分别为密钥生成算法(DET.KeyGen)、加密算法(DET.Enc)和解密算法(DET.Dec);后文的描述中,还涉及遍历算法和平衡算法,与原始AVL树算法一致(即非本发明创新点),仅作简略表述。
mOPEAVL中,八个元素具体描述如下:
Init(1λ),初始化算法:依据输入的安全参数λ,进行如下操作:
ⅰ,sk←DET.KeyGen(1λ),客户端执行密钥生成算法产生私钥;
ⅱ,服务器端初始化用于密文存储的AVL树的根节点st,申请对应空间并置空;
Enc(sk,m,st),加密算法:依据输入的私钥、明文和AVL树根节点,进行如下操作:
ⅰ,c←DET.Enc(sk,m),客户端利用私钥计算密文,并传输到服务器;
ⅱ,p←IS(sk,c,st),服务器依据私钥、密文、AVL树根节点发起执行交互式查询算法,查询到最终***节点;
ⅳ,返回根节点st和密文c,完成加密(数据***)算法;
Dec(sk,c),解密算法:依据输入的私钥、密文,进行如下操作:
ⅰ,m←DET.Dec(sk,c),客户端利用私钥解密密文,并返回明文;
OB(st,q),order排序查询算法:依据AVL树根节点(服务器端状态)和查询语句,进行如下操作:
ⅰ,服务器端执行AVL树的中序遍历,将各节点密文返回至客户端;
RQ(st,q,sk),范围查询算法:依据AVL树根节点(服务器端状态)、查询语句和私钥,进行如下操作:
ⅰ,o←IS(sk,q.cl,st),p←IS(sk,q.cr,st),服务器端执行交互式查询算法,获取范围查询左右边界值的密文位置;
ⅱ,依据边界值位置,执行树的遍历,并将满足条件的密文数据返回客户端;
Del(st,c,sk),删除算法:依据AVL树根节点(服务器端状态)、密文和私钥,进行如下操作:
ⅰ,p←IS(sk,c,st),服务器端执行交互式查询算法,获取需要删除的数据的位置;
ⅱ,若p为空,返回;若不为空,执行p.counter--;若p.counter为0,将p的右子树链接到p左子树的最右叶子节点,将p的左子树取代(赋值给)p;
ⅳ,返回根节点st和密文c,完成数据删除算法;
Bal(x),平衡算法:依据输入的节点进行树型的平衡操作,保障最佳查询效率,此算法与基本的AVL树的平衡算法一致,不作为发明内容,不再赘述:
IS(sk,c,st),交互式查询算法:依据私钥、密文和AVL树根节点(服务器端状态),在客户端和服务器间进行交互式查询,具体进行如下操作:
ⅰ,若st为空,返回st;若不为空,服务器发送st.cipher到客户端;
ⅱ,客户端通过m←DET.Dec(sk,st.cipher)解密获得明文,若m小于当前数据操作中的明文,向服务器发送标志变量flag="right";若m大于当前数据操作中的明文,向服务器发送标志变量flag="left";若m等于当前数据操作中的明文,向服务器发送标志变量flag="bingo";
ⅲ,若标志变量为"bingo",服务器返回当前节点st,完成交互式查询算法;若标志变量为"left",递归执行p←IS(sk,c,st→left),返回节点p,完成交互式查询算法;若标志变量为"right",递归执行p←IS(sk,c,st→right),返回节点p,完成交互式查询算法。
对于红黑树、B树、B+树或B*树数据存储结构,其基本的保序加密算法,与基本的基于AVL树的保序加密算法一致。
根据上述的基于AVL树的理想安全的保序加密算法,为了便于数据遍历,可以额外利用数据表存储全部密文、密文计数器和路径编码,于是,具体算法改动如下:
AVL树节点结构中不再包含counter,存在平行的存储结构Table,包含(bitstringcipher,intcounter,bitstringPathcoding)。其中,节点的Pathcoding应具体表示为x…x10…0,前面的x…x由树的节点在AVL树中的路径确定,从根部开始,左子树为0,右子树为1,若节点在AVL树的第d层,则x…x由d-1位的0/1构成,随后由1位1和若干位0补全,保障所有节点的Pathcoding位数一致;
Init(1λ),初始化算法中增加第三步操作:
ⅲ,服务器端初始化存储密文、计数器和路径编码的表Table,申请对应空间并置空;
Enc(sk,m,st),加密算法中:
第ⅱ步最前增加判断,若c∈Table,则对应数据的counter++,继续执行第ⅳ步;若不满足,则继续执行第ⅱ步;
第ⅲ步最后增加更新Table操作,添加新数据,更新Pathcoding;
OB(st,q),order排序查询算法改为:依据AVL树根节点(服务器端状态)和查询语句,进行如下操作:
ⅰ,服务器端直接对Table进行数据查询,查询语句拟为select cipher,counterfrom Table order by Pathcoding,将数据返回至客户端;
RQ(st,q,sk),范围查询算法中:
第ⅱ步改为,依据边界值路径编码,对Table进行数据查询,查询语句拟为selectcipher,counter from Table where Pathcoding满足条件,将满足条件的数据返回至客户端;
Del(st,c,sk),删除算法改为:依据AVL树根节点(服务器端状态)、密文和私钥,进行如下操作:
ⅱ,若counter≠0,返回;若counter=0,依据Pathcoding找到树中对应节点p,将p的右子树链接到p左子树的最右叶子节点,将p的左子树取代(赋值给)p;
ⅳ,返回根节点st和密文c,完成数据删除算法。
根据上述的基于AVL树的理想安全的保序加密算法,为了实现前向安全,防止文件注入攻击,可以额外在树的各个节点增加缓冲区buffer用于暂存数据,且令交互式查询需通过客户端认证,而非自动进行,因此,在未进行查询时***露顺序信息,达成前向安全性。于是,具体算法改动如下:
定义密文结构向量如下,包含密文和计数器:
vector<int,bitstring>ciphertext{counter,cipher}
树节点存储结构如下,相比基本的保序加密算法,增加了缓冲区指针buffer和缓冲区长度lengthbuffer:
structTree{Treeleft;Treeright;intbf;ciphertextc;ciphertext*buffer;intlengthbuffer}
Enc(sk,m,st),加密算法改为:依据输入的私钥、明文和AVL树根节点,进行如下操作:
ⅰ,若c存在于st的缓冲区buffer中,则对应计数器增加1,返回;若不存在,则添加向量<1,c>到st的缓冲区buffer中,返回;
OB(st,q),order排序查询算法改为:依据AVL树根节点(服务器端状态)和查询语句,进行如下操作:
ⅰ,服务器端执行AVL树的只读遍历ISRO(st),将各节点密文向量和缓冲区密文向量返回至客户端;
ⅱ,客户端解密全部数据后执行数据排序(例如,可采用简单排序、快速排序等),直接得到查询的结果,将全部密文向量排序结果返回服务器方便范围查询;
ⅲ,服务器依据排序密文向量进行中序建树,获得新的树st,清除旧树;
RQ(st,q,sk),范围查询算法改为:依据AVL树根节点(服务器端状态)、查询语句和私钥,进行如下操作:
ⅰ,o←ISWO(sk,q.cl,st),p←ISWO(sk,q.cr,st),服务器端执行缓冲区划分型交互式查询算法,获取范围查询左右边界值的密文位置;
ⅱ,依据边界值位置,执行树的遍历,并将满足条件的密文数据(节点数据和缓冲区数据)返回客户端;
Del(st,c,sk),删除算法改为:依据AVL树根节点(服务器端状态)、密文和私钥,进行如下操作:
ⅰ,p←ISDO(sk,c,st),服务器端执行删除型交互式查询算法,获取需要删除的数据的位置;
ⅱ,若p为空,返回;若不为空且c位于缓冲区,计数器减少1,若计数器归零则删除该向量;若不为空且c不位于缓冲区,计数器减少1,若计数器归零,将p的右子树链接到p左子树的最右叶子节点,将当前p的缓冲区合并到p的左子树,令p的左子树取代(赋值给)p;
ⅳ,返回根节点st和密文c,完成数据删除算法;
ISRO(st),只读遍历算法为:依据AVL树根节点(服务器端状态)进行数据遍历,利用堆栈实现全部密文数据向量的获取,与原有AVL树的算法一致,非本发明创新点,不再赘述;
ISWO(sk,c,st),缓冲区划分型交互式查询算法为:依据私钥、密文和AVL树根节点(服务器端状态),在客户端和服务器间进行交互式查询,具体进行如下操作:
ⅰ,若st为空,返回st;
ⅱ,若缓冲区不为空,且节点密文向量为空,服务器随机选取缓冲区中的一个数据向量作为节点密文向量;
ⅲ,若缓冲区和节点密文向量均不为空,服务器发送st.c和缓冲区内容到客户端,客户端解密数据,并按照针对st.c小于、等于、大于的关系,将缓冲区数据分为三组,返回服务器,服务器对三组数据分别执行添加到st→left缓冲区、增加节点密文向量等量计数、添加到st→right缓冲区的操作;
ⅳ,服务器端将st.c发送到客户端,客户端通过m←DET.Dec(sk,st.c)解密获得明文,若m小于当前数据操作中的明文,向服务器发送标志变量flag="right";若m大于当前数据操作中的明文,向服务器发送标志变量flag="left";若m等于当前数据操作中的明文,向服务器发送标志变量flag="bingo";
ⅴ,若标志变量为"bingo",服务器返回当前节点st,完成交互式查询算法;若标志变量为"left",递归执行p←ISWO(sk,c,st→left),返回节点p,完成交互式查询算法;若标志变量为"right",递归执行p←ISWO(sk,c,st→right),返回节点p,完成交互式查询算法。
ISDO(sk,c,st),删除型交互式查询算法为:依据私钥、密文和AVL树根节点(服务器端状态),在客户端和服务器间进行交互式查询,具体进行如下操作:
ⅰ,若st为空,返回NULL;若不为空,且c位于st的缓冲区中,则返回st和标志变量flag="buffer",完成删除型交互式查询算法;若不为空,且c位于st的节点密文向量中,则返回st和标志变量flag="node",完成删除型交互式查询算法;
ⅱ,若c不位于st,服务器端将st.c发送到客户端,客户端通过m←DET.Dec(sk,st.c)解密获得明文,若m小于当前数据操作中的明文,向服务器发送标志变量flag="right";若m大于当前数据操作中的明文,向服务器发送标志变量flag="left";
ⅲ,若标志变量为"left",递归执行p←ISDO(sk,c,st→left),返回节点p,完成删除型交互式查询算法;若标志变量为"right",递归执行p←ISDO(sk,c,st→right),返回节点p,完成删除型交互式查询算法。
基于上述包含数据表的和包含缓冲区的两种改进方案,为了达到减少交互需求、提升功能性的同时,保障前向安全性质,可以将两种方案融合。融合方案相似度高且较为简单,不再赘述。
基于上述原始的、包含数据表的、包含缓冲区的、包含数据表和缓冲区的基于AVL树的理想安全的保序加密算法,为了实现频率隐藏安全性(仅保留大小顺序信息,不保留相等信息),可进一步采用以下两种改进方案:
频率隐藏方案一,在原有密文加密前,添加指定位数的后缀mb,为了保障随机性的引入不会导致范围查询的错误结果,需要在后缀mb和明文m之间添加标志位ma,即完整明文表示为m|ma|mb,正常数据ma=01,范围查询左边界值ma=00,范围查询右边界值ma=11。由于该方案频率隐藏的能力受限于后缀mb的位数,因此频率隐藏效果不如方案二;
频率隐藏方案二,采用随机加密的算法元组
RND=(RND.KeyGen,RND.Enc,RND.Dec)替换确定性加密的算法元组
DET=(DET.KeyGen,DET.Enc,DET.Dec),并当交互式查询算法中节点密文和查询密文的明文大小相等时,随机选取(可由具有伪随机性质的哈希函数实现)标志变量flag="left"或flag="right",仅删除算法中调用的交互式查询算法不做改变。
根据上述基于AVL树的理想安全的保序加密原型及其各式变体,为了获取存储复杂度和计算复杂度上不一样的平衡结果,以应对不同应用场景和需求,可以将基本存储结构——AVL树替换为红黑树(RBT)、B树、B+树、B*树。其中仅B+树和B*树由于自带数据(链)表结构,无需采用包含数据表的算法改进方案。
本发明中,各种算法都达到了保序加密的理想安全——除了顺序信息***露任何数据信息。额外的安全性质(例如,前向安全、频率隐藏)也在本发明中做出考量。为了满足保序加密的应用场景——密态数据库中的相应需求(例如,***、orderby排序、范围查询、删除),每个保序编码(加密)算法都将从树形结构、初始化算法Init、加密算法Enc、解密算法Dec、orderby排序算法OB、范围查询算法RQ、删除算法Del、平衡算法Bal、交互式查询算法IS进行描述,也即,每个树形存储保序加密算法均可表示为算法元组(Init,Enc,Dec,OB,RQ,Del,Bal,IS)。相对于大多数无法达到理想安全的保序加密,本发明中的算法安全性有绝对的优势,本发明给出的算法也进行了全方位的对比,适用于绝大多数***,尤其适用于安全性需求较高、带宽配置足量的***。
为了便于分析和比较,现给出针对AVL-mOPE(基于AVL树的理想安全的保序加密)、AVL-mOPE(table)、AVL-mOPE(buffer)、RBT-mOPE、B-mOPE、B-mOPE(buffer)、B+-mOPE、B*-mOPE共8种基本算法,10个维度的比较分析,如下表。其中,表示针对服务器客户端交互次数的复杂度,Ο表示依赖于提供基本加密DET和RND的复杂度,表格中分析时仅记作Ο(1),表示需要堆栈(客户端动态存储)实现树形遍历的复杂度。
具体实施方式
下面以客户端向服务器依次加密并传输数据“5”、“3”、“2”、“3”、“6”为例,描述本发明主要内容:
由于任意的确定性对称加密算法(例如AES)都可以作为上文提及的提供基本安全性支持的DET,为了简洁明了,本示例不进行明确的算法选取,而假设一个有效的密文结果输出。RND同理。
Init(1λ),初始化
服务启动初期,客户端及服务器进行相应初始化操作
ⅰ,客户端依据自我的密钥管理规则,或简单地依照所选确定性对称加密算法的密钥生成函数,产生私钥,设之为123A32F;
ⅱ,服务器端初始化用于密文存储的AVL树的根节点st,申请对应空间并置空;
Enc(sk,m,st),加密
首先,加密并传输“5”,依据输入的私钥123A32F、明文“5”和AVL树根节点,进行如下操作:
ⅰ,客户端利用私钥123A32F和明文计算得到密文2951FF67E321E,并传输到服务器;
ⅱ,若不考虑前向安全,则服务器依据私钥123A32F、密文2951FF67E321E、AVL树根节点发起执行交互式查询算法,现AVL树根节点为空,申请新节点tnew=(NULL,NULL,0,1,2951FF67E321E),令st=tnew,并修改查询路径中节点的平衡因子bf(由于为根节点,没有相关修改发生),密文最终***根节点,且检验后不存在|bfx|≥2;
ⅲ,向服务器返回新状态,也即根节点st,向客户端返回密文2951FF67E321E代表成功执行,完成“5”的加密。
其次,加密并传输“3”,依据输入的私钥123A32F、明文“3”和AVL树根节点,进行如下操作:
ⅰ,客户端利用私钥123A32F和明文计算得到密文65BD612A84052,并传输到服务器;
ⅱ,若不考虑前向安全,则服务器依据私钥123A32F、密文65BD612A84052、AVL树根节点发起执行交互式查询算法,向客户端传输根节点密文2951FF67E321E,客户端解密后比较两个明文,发现“5”>“3”,并向服务器发送“left”,由于左子树为空,服务器申请新节点tnew1=(NULL,NULL,0,1,65BD612A84052),令st→left=tnew,并修改查询路径中节点的平衡因子bf,根节点变为(tnew1,NULL,1,1,2951FF67E321E),密文最终***根节点,且检验后不存在|bfx|≥2;
ⅲ,向服务器返回新状态,也即根节点st,向客户端返回密文65BD612A84052代表成功执行,完成“3”的加密。
然后,加密并传输“2”,依据输入的私钥123A32F、明文“2”和AVL树根节点,进行如下操作:
ⅰ,客户端利用私钥123A32F和明文计算得到密文45FBC32950AB1,并传输到服务器;
ⅱ,若不考虑前向安全,则服务器依据私钥123A32F、密文45FBC32950AB1、AVL树根节点发起执行交互式查询算法,向客户端传输根节点密文2951FF67E321E,客户端解密后比较两个明文,发现“5”>“2”,并向服务器发送“left”,由于左子树不为空,服务器向客户端传输其密文65BD612A84052,客户端解密后比较两个明文,发现“3”>“2”,并向服务器发送“left”,由于其左子树为空,服务器申请新节点tnew2=(NULL,NULL,0,1,45FBC32950AB1),令tnew1→left=tnew2,并修改查询路径中节点的平衡因子bf,tnew1变为(tnew2,NULL,1,1,65BD612A84052),根节点变为(tnew1,NULL,,2,1,2951FF67E321E),检验后根节点st的|bf|≥2,执行平衡算法Bal(st),经过右旋之后tnew1变为根节点st,内容为(tnew2,tnew,0,1,65BD612A84052),tnew2内容不变,原根节点tnew变为(NULL,NULL,0,1,2951FF67E321E);
ⅲ,向服务器返回新状态,也即根节点st,向客户端返回密文45FBC32950AB1代表成功执行,完成“2”的加密。
随后,加密并传输“3”,依据输入的私钥123A32F、明文“3”和AVL树根节点,进行如下操作:
ⅰ,客户端利用私钥123A32F和明文计算得到密文65BD612A84052,并传输到服务器;
ⅱ,若不考虑前向安全,则服务器依据私钥123A32F、密文65BD612A84052、AVL树根节点发起执行交互式查询算法,服务器发现根节点不为空且密文相等(在选用RND而非DET时,可传输至客户端由判定相等),修改根节点计数,内容变为(tnew2,tnew,0,2,65BD612A84052),无需修改查询路径中节点的平衡因子bf;
ⅲ,向服务器返回新状态,也即根节点st,向客户端返回密文65BD612A84052代表成功执行,完成“3”的加密。
最后,加密并传输“6”,依据输入的私钥123A32F、明文“6”和AVL树根节点,进行如下操作:
ⅰ,客户端利用私钥123A32F和明文计算得到密文12FC61ABDCF96,并传输到服务器;
ⅱ,若不考虑前向安全,则服务器依据私钥123A32F、密文12FC61ABDCF96、AVL树根节点发起执行交互式查询算法,向客户端传输根节点密文65BD612A84052,客户端解密后比较两个明文,发现“3”<“6”,并向服务器发送“right”,由于右子树不为空,服务器向客户端传输其密文2951FF67E321E,客户端解密后比较两个明文,发现“5”<“6”,并向服务器发送“right”,由于其右子树为空,服务器申请新节点tnew3=(NULL,NULL,0,1,12FC61ABDCF96),令tnew→right=tnew3,并修改查询路径中节点的平衡因子bf,tnew变为(NULL,tnew3,-1,1,2951FF67E321E),根节点变为(tnew2,tnew,-1,2,65BD612A84052),检验后不存在|bfx|≥2,不进行平衡操作;
ⅲ,向服务器返回新状态,也即根节点st,向客户端返回密文12FC61ABDCF96代表成功执行,完成“6”的加密。
注:
ⅰ,对于频率隐藏的方案,具体的实施方案正如上文所述增加随机数后缀,或将DET替换为RND并在客户端与服务器交互式查询时对于等值数据随机返回“right”或“left”;
ⅱ,交互式查询算法的过程都已在上述加密和后续删除中融入,不再单独列举;
ⅲ,对于包含table的算法版本,正如上文所述,table中包含密文、计数及其Pathcoding(设明文空间较小,8位可有效表示),树结构中将不再包含计数,例如上述加密例子最后,表结构中各密文Pathcoding应为(2951FF67E321E,11000000)、(65BD612A84052,10000000)、(45FBC32950AB1,01000000)、(12FC61ABDCF96,11100000),各项简化操作也不再赘述(减少通信复杂度,部分交互式查询可采用table的遍历,orderby查询的转化,范围查询的转化);
iv,若考虑前向安全,DET需替换为RND,密文不再确定,获取密文间顺序的交互式查询不安排在数据加密和存储的阶段,而在查询的阶段,加密和存储时暂时存储于根节点缓冲区,查询时依据必要性执行各密文的交互式查询获取其顺序;
v,其余树形结构(红黑树、B-树、B+树、B*树)的具体实施方案与AVL实施方案的整体逻辑一致,只是存储结构和平衡算法存在差异,由于它们算法广为人知,不再分别赘述。
Dec(sk,c),解密
依据输入的私钥123A32F、任意密文均可以正确解密,例如:
5←DET.Dec(123A32F,2951FF67E321E)、3←DET.Dec(123A32F,65BD612A84052)、
2←DET.Dec(123A32F,45FBC32950AB1)、6←DET.Dec(123A32F,12FC61ABDCF96);
OB(st,q),order by排序查询
在完成了上述数据加密和存储,服务器端依据orderby查询语句执行AVL树的中序遍历,将各节点密文及其计数依序返回至客户端,即45FBC32950AB1(1)、65BD612A84052(2)、2951FF67E321E(1)、12FC61ABDCF96(1);
RQ(st,q,sk),范围查询
依据AVL树根节点(服务器端状态)、密态查询语句(左右边界值“951268AAFCBDD”和“ADB95100DCAA3”分别对应“1”和“4”)以及私钥123A32F,进行如下操作:
ⅰ,服务器端执行交互式查询算法,获取范围查询左右边界值的密文位置,根节点不为空,将密文65BD612A84052发送到客户端,客户端解密后得“3”>“1”,发送“left”到服务器,由于左子树不为空,服务器发送左子树密文45FBC32950AB1到客户端,客户端解密后得“2”>“1”,发送“left”到服务器,由于左子树为空,左边界值密文位置确定,右边界值密文ADB95100DCAA3的位置同理可得;
ⅱ,依据边界值位置,执行树的遍历,并将满足条件的密文数据及其计数返回客户端,内容为5FBC32950AB1(1)、65BD612A84052(2),内容的顺序依赖于该算法遍历的具体实现(前序、中序和后序皆可);
Del(st,c,sk),删除
若删除数据“2”“3”“4”,依据AVL树根节点(服务器端状态)、加密而来密文45FBC32950AB1、65BD612A84052、ADB95100DCAA3和私钥123A32F,具体操作如下
ⅰ,服务器端发起交互式查询,获取需要删除的数据的位置(也可采用遍历的方法);
ⅱ,删除数据“2”——45FBC32950AB1,由于根节点不为空,服务器发送根节点密文65BD612A84052到客户端,客户端解密后比较,得“3”>“2”,发送“left”到服务器,由于其左子树不为空且密文相等,tnew2的计数减一,内容变为(NULL,NULL,0,0,45FBC32950AB1),由于计数归零,删除该节点,更新路径上全部的平衡因子,根节点变为(NULL,tnew,-2,2,65BD612A84052),根节点|bf|≥2,执行平衡算法Bal(st),经过左旋后根节点变为tnew,内容为(tnew1,tnew3,0,1,2951FF67E321E),tnew3内容不变,原根节点tnew1内容变为(NULL,NULL,0,2,65BD612A84052);
ⅲ,删除数据“3”——65BD612A84052,由于根节点不为空,服务器发送根节点密文2951FF67E321E到客户端,客户端解密后比较,得“5”>“3”,发送“left”到服务器,由于其左子树不为空且密文相等,tnew1的计数减一,内容变为(NULL,NULL,0,1,65BD612A84052),计数未归零,完成删除;
ⅳ,删除数据“4”——ADB95100DCAA3,由于根节点不为空,服务器发送根节点密文2951FF67E321E到客户端,客户端解密后比较,得“5”>“4”,发送“left”到服务器,由于其左子树不为空,发送其密文65BD612A84052到客户端,客户端解密后比较,得“3”<“4”,发送“right”到服务器,由于其右子树为空,返回错误信息到客户端,删除失败(不存在对应数据);
Bal(x),平衡算法:依据输入的节点进行树型的平衡操作,保障最佳查询效率,此算法与基本的AVL树的平衡算法一致,不再赘述。
Claims (4)
1.一种基于平衡排序树存储结构的保序加密算法,其特征在于,数据存储基本结构采用AVL树、红黑树、B树、B+树或B*树;不同的数据存储基本结构,其算法表述基本一致;对于AVL树数据存储结构,其包括基本的基于AVL树的理想安全的保序加密算法,以及一些改进的基于AVL树的理想安全的保序加密算法;其中,基本的基于AVL树的理想安全的保序加密算法,其密文的存储及其顺序编码是基于AVL树完成的,仅仅泄露顺序信息;该算法表示为算法元组mOPEAVL=(Init,Enc,Dec,OB,RQ,Del,Bal,IS),命名为mOPEAvL,其中,八个元素分别是Init:初始化算法,Enc:加密算法,Dec:解密算法,OB:排序查询算法,RQ:范围查询算法,Del:删除算法,Bal:树型平衡算法,IS:交互式查询算法;
依据AVL树结构,树节点的存储结构为:
struct Tree{Tree left;Tree right;int bf;int counter;bitstring cipher;}
其中,各元素分别表示节点的左子树节点、节点的右子树节点、平衡因子、密文计数器、密文;
令m为明文;c为密文;sk为私钥;λ为安全参数;q为查询语句,若为范围查询,则包含q.cl或/和q.cr作为查询边界值密文,cl、cr分别表示查询左边界和右边界的密文;st为服务器端存储状态,可理解为树的根节点;
mOPEAVL中,八个元素具体描述如下:
Init(1λ),初始化算法:依据输入的安全参数λ,进行如下操作:
i,sk←DET.KeyGen(1λ),客户端执行密钥生成算法产生私钥;
ii,服务器端初始化用于密文存储的AVL树的根节点st,申请对应空间并置空;
Enc(sk,m,st),加密算法:依据输入的私钥、明文和AVL树根节点,进行如下操作:
i,c←DET.Enc(sk,m),客户端利用私钥计算密文,并传输到服务器;
ii,p←IS(sk,c,st),服务器依据私钥、密文、AVL树根节点发起执行交互式查询算法,查询到最终***节点;
iv,返回根节点st和密文c,完成加密算法;
Dec(sk,c),解密算法:依据输入的私钥、密文,进行如下操作:
i,m←DET.Dec(sk,c),客户端利用私钥解密密文,并返回明文;
OB(st,q),order排序查询算法:依据AVL树根节点和查询语句,进行如下操作:
i,服务器端执行AVL树的中序遍历,将各节点密文返回至客户端;
RQ(st,q,sk),范围查询算法:依据AVL树根节点、查询语句和私钥,进行如下操作:
i,o←IS(sk,q.cl,st),p←IS(sk,q.cr,st),服务器端执行交互式查询算法,获取范围查询左右边界值的密文位置;
ii,依据边界值位置,执行树的遍历,并将满足条件的密文数据返回客户端;
Del(st,c,sk),删除算法:依据AVL树根节点、密文和私钥,进行如下操作:
i,p←IS(sk,c,st),服务器端执行交互式查询算法,获取需要删除的数据的位置;
ii,若p为空,返回;若不为空,执行p.counter--;若p.counter为0,将p的右子树链接到p左子树的最右叶子节点,将p的左子树取代p;
iv,返回根节点st和密文c,完成数据删除算法;
Bal(x),平衡算法:依据输入的节点进行树型的平衡操作,保障最佳查询效率;
IS(sk,c,st),交互式查询算法:依据私钥、密文和AVL树根节点,在客户端和服务器间进行交互式查询,具体进行如下操作:
i,若st为空,返回st;若不为空,服务器发送st.cipher到客户端;
ii,客户端通过m←DET.Dec(sk,st.cipher)解密获得明文,若m小于当前数据操作中的明文,向服务器发送标志变量fla.g=″right″;若m大于当前数据操作中的明文,向服务器发送标志变量flag=″left″;若m等于当前数据操作中的明文,向服务器发送标志变量flag=″bingo″;
iii,若标志变量为″bingo″,服务器返回当前节点st,完成交互式查询算法;若标志变量为″left″,递归执行p←IS(sk,c,st→left),返回节点p,完成交互式查询算法;若标志变量为″right″,递归执行p←IS(sk,c,st→right),返回节点p,完成交互式查询算法;
对于红黑树、B树、B+树或B*树数据存储结构,其基本的保序加密算法,与基本的基于AVL树的保序加密算法一致。
2.根据权利要求1所述的基于平衡排序树存储结构的保序加密算法,其特征在于,还利用数据表存储全部密文、密文计数器和路径编码,便于数据遍历,于是,算法相应改动如下:
AVL树节点结构中不再包含counter,存在平行的存储结构Table,包含(bitstringcipher,int counter,bitstring Pathcoding);其中,节点的Pathcoding具体表示为x...x10...0,前面的x...x由点在AVL树中的路径确定,从根部开始,左子树为0,右子树为1,若节点在AVL树的第d层,则x...x由d-1位的0/1构成,随后由1位1和若干位0补全,保障所有节点的Pathcoding位数一致;
Init(1λ),初始化算法中增加第三步操作:
iii,服务器端初始化存储密文、计数器和路径编码的表Table,申请对应空间并置空;
Enc(sk,m,st),加密算法中:
第ii步最前增加判断,若c∈Table,则对应数据的counter++,继续执行第iv步;若不满足,则继续执行第ii步;
第iii步最后增加更新Table操作,添加新数据,更新Pathcoding;
OB(st,q),order排序查询算法改为:依据AVL树根节点和查询语句,进行如下操作:
i,服务器端直接对Table进行数据查询,查询语句拟为select cipher,counter fromTable order by Pathcoding,将数据返回至客户端;
RQ(st,q,sk),范围查询算法中:
第ii步改为,依据边界值路径编码,对Table进行数据查询,查询语句拟为selectcipher,counter from Table where Pathcoding满足条件,将满足条件的数据返回至客户端;
Del(st,c,sk),删除算法改为:依据AVL树根节点、密文和私钥,进行如下操作:
ii,若counter≠0,返回;若counter=0,依据Pathcoding找到树中对应节点p,将p的右子树链接到p左子树的最右叶子节点,将p的左子树取代p;
iv,返回根节点st和密文c,完成数据删除算法;
由于B+树和B*树由于自带数据(链)表结构,算法中不采用包含数据表的算法。
3.根据权利要求1所述的基于平衡排序树存储结构的保序加密算法,其特征在于,在树的各个节点增加缓冲区buffer用于暂存数据,且令交互式查询需通过客户端认证,在未进行查询时***露顺序信息,达成前向安全性,具体算法改动如下:
定义密文结构向量如下,包含密文和计数器:
vector<int,bitstring>ciphertext{counter,cipher}
树节点存储结构如下:
struct Tree{Tree left;Tree right;int bf;ciphertext c;ciphertext *buffer;int lengthbuffer}
即增加了缓冲区指针buffer和缓冲区长度lengthbuffer;
于是:
Enc(sk,m,st),加密算法改为:依据输入的私钥、明文和AVL树根节点,进行如下操作:
i,若c存在于st的缓冲区buffer中,则对应计数器增加1,返回;若不存在,则添加向量<1,c>到st的缓冲区buffer中,返回;
OB(st,q),order排序查询算法改为:依据AVL树根节点和查询语句,进行如下操作:
i,服务器端执行AVL树的只读遍历ISRO(st),将各节点密文向量和缓冲区密文向量返回至客户端;
ii,客户端解密全部数据后执行数据排序,直接得到查询的结果,将全部密文向量排序结果返回服务器方便范围查询;
iii,服务器依据排序密文向量进行中序建树,获得新的树st,清除旧树;
RQ(st,q,sk),范围查询算法改为:依据AVL树根节点、查询语句和私钥,进行如下操作:
i,o←ISWO(sk,q.cl,st),p←ISWO(sk,q.cr,st),服务器端执行缓冲区划分型交互式查询算法,获取范围查询左右边界值的密文位置;
ii,依据边界值位置,执行树的遍历,并将满足条件的密文数据包括节点数据和缓冲区数据,返回客户端;
Del(st,c,sk),删除算法改为:依据AVL树根节点、密文和私钥,进行如下操作:
i,p←ISDO(sk,c,st),服务器端执行删除型交互式查询算法,获取需要删除的数据的位置;
ii,若p为空,返回;若不为空且c位于缓冲区,计数器减少1,若计数器归零则删除该向量;若不为空且c不位于缓冲区,计数器减少1,若计数器归零,将p的右子树链接到p左子树的最右叶子节点,将当前p的缓冲区合并到p的左子树,令p的左子树取代p;
iv,返回根节点st和密文c,完成数据删除算法;
ISRO(st),只读遍历算法为:依据AVL树根节点进行数据遍历,利用堆栈实现全部密文数据向量的获取;
ISWO(sk,c,st),缓冲区划分型交互式查询算法为:依据私钥、密文和AVL树根节点,在客户端和服务器间进行交互式查询,具体进行如下操作:
i,若st为空,返回st;
ii,若缓冲区不为空,且节点密文向量为空,服务器随机选取缓冲区中的一个数据向量作为节点密文向量;
iii,若缓冲区和节点密文向量均不为空,服务器发送st.c和缓冲区内容到客户端,客户端解密数据,并按照针对st.c小于、等于、大于的关系,将缓冲区数据分为三组,返回服务器,服务器对三组数据分别执行添加到st→left缓冲区、增加节点密文向量等量计数、添加到st→right缓冲区的操作;
iv,服务器端将st.c发送到客户端,客户端通过m←DET.Dec(sk,st.c)解密获得明文,若m小于当前数据操作中的明文,向服务器发送标志变量flag=″right″;若m大于当前数据操作中的明文,向服务器发送标志变量flag=″left″;若m等于当前数据操作中的明文,向服务器发送标志变量flag=″bingo″;
v,若标志变量为″bingo″,服务器返回当前节点st,完成交互式查询算法;若标志变量为″left″,递归执行p←ISWO(sk,c,st→left),返回节点p,完成交互式查询算法;若标志变量为″right″,递归执行p←ISWO(sk,c,st→right),返回节点p,完成交互式查询算法;
ISDO(sk,c,st),删除型交互式查询算法为:依据私钥、密文和AVL树根节点,在客户端和服务器间进行交互式查询,具体进行如下操作:
i,若st为空,返回NULL;若不为空,且c位于st的缓冲区中,则返回st和标志变量flag=″buffer″,完成删除型交互式查询算法;若不为空,且c位于st的节点密文向量中,则返回st和标志变量flag=″node″,完成删除型交互式查询算法;
ii,若c不位于st,服务器端将st.c发送到客户端,客户端通过m←DET.Dec(sk,st.c)解密获得明文,若m小于当前数据操作中的明文,向服务器发送标志变量flag=″right″;若m大于当前数据操作中的明文,向服务器发送标志变量flag=″left″;
iii,若标志变量为″left″,递归执行p←ISDO(sk,c,st→left),返回节点p,完成删除型交互式查询算法;若标志变量为″right″,递归执行p←ISDO(sk,c,st→right),返回节点p,完成删除型交互式查询算法。
4.根据权利要求1、2或3所述的基于平衡排序树存储结构的保序加密算法,其特征在于,通过以下两种方案实现频率隐藏安全性:
频率隐藏方案一,在原有密文加密前,添加指定位数的后缀mb,并在后缀mb和明文m之间添加标志位ma,即完整明文表示为m|ma|mb,正常数据ma=01,范围查询左边界值ma=00,范围查询右边界值ma=11;
频率隐藏方案二,采用随机加密的算法元组RND=(RND.KeyGen,RND.Enc,RND.Dec)替换确定性加密的算法元组DET=(DET.KeyGen,DET.Enc,DET.Dec),并当交互式查询算法中节点密文和查询密文的明文大小相等时,随机选取标志变量flag=″left″或flag=″right″,仅删除算法中调用的交互式查询算法不做改变。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811163799.0A CN109495446B (zh) | 2018-10-02 | 2018-10-02 | 基于平衡排序树存储结构的保序加密算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811163799.0A CN109495446B (zh) | 2018-10-02 | 2018-10-02 | 基于平衡排序树存储结构的保序加密算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109495446A CN109495446A (zh) | 2019-03-19 |
CN109495446B true CN109495446B (zh) | 2020-12-22 |
Family
ID=65690079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811163799.0A Active CN109495446B (zh) | 2018-10-02 | 2018-10-02 | 基于平衡排序树存储结构的保序加密算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109495446B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457922A (zh) * | 2019-08-02 | 2019-11-15 | 湖南大学 | 一种云环境下的数据完整性验证方法 |
CN111680317B (zh) * | 2020-04-27 | 2021-05-25 | 华东师范大学 | 一种面向区块链的乐观并发保序编码方法 |
CN112231752B (zh) * | 2020-10-20 | 2022-09-09 | 南开大学 | 一种无交互频率隐藏的密文***查询删除方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138478A (zh) * | 2015-07-28 | 2015-12-09 | 哈尔滨工程大学 | 一种非平衡哈希树的存储器完整性保护方法 |
CN107292192A (zh) * | 2017-05-25 | 2017-10-24 | 南京邮电大学 | 一种云计算环境中低调整率的保序加密方法 |
CN108075879A (zh) * | 2016-11-10 | 2018-05-25 | ***通信集团安徽有限公司 | 一种数据加密和解密的方法、装置及*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7647291B2 (en) * | 2003-12-30 | 2010-01-12 | Microsoft Corporation | B-tree compression using normalized index keys |
US10164983B2 (en) * | 2017-01-20 | 2018-12-25 | Verizon Patent And Licensing Inc. | Distributed authentication for internet-of-things resources |
-
2018
- 2018-10-02 CN CN201811163799.0A patent/CN109495446B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138478A (zh) * | 2015-07-28 | 2015-12-09 | 哈尔滨工程大学 | 一种非平衡哈希树的存储器完整性保护方法 |
CN108075879A (zh) * | 2016-11-10 | 2018-05-25 | ***通信集团安徽有限公司 | 一种数据加密和解密的方法、装置及*** |
CN107292192A (zh) * | 2017-05-25 | 2017-10-24 | 南京邮电大学 | 一种云计算环境中低调整率的保序加密方法 |
Non-Patent Citations (1)
Title |
---|
严格平衡二叉排序树及其构造;岑岗等;《计算机工程与应用》;20050501;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109495446A (zh) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sun et al. | Practical backward-secure searchable encryption from symmetric puncturable encryption | |
US11023477B2 (en) | Method and system for fuzzy keyword search over encrypted data | |
Demertzis et al. | {SEAL}: Attack mitigation for encrypted databases via adjustable leakage | |
Chase et al. | Substring-searchable symmetric encryption | |
Li et al. | Searchable symmetric encryption with forward search privacy | |
Demertzis et al. | Dynamic searchable encryption with small client storage | |
Kuzu et al. | Efficient similarity search over encrypted data | |
US11709948B1 (en) | Systems and methods for generation of secure indexes for cryptographically-secure queries | |
Kamara et al. | Dynamic searchable symmetric encryption | |
CN109495446B (zh) | 基于平衡排序树存储结构的保序加密算法 | |
WO2017036547A1 (en) | Method for providing encrypted data in a database and method for searching on encrypted data | |
Bartusek et al. | New techniques for obfuscating conjunctions | |
Persiano et al. | Lower bounds for differentially private RAMs | |
Wei et al. | FSSE: Forward secure searchable encryption with keyed-block chains | |
US20170091475A1 (en) | Method and System for Range Search on Encrypted Data | |
CN109740362B (zh) | 一种基于熵编码的密文索引生成与检索方法及*** | |
CN108768639B (zh) | 一种公钥保序加密方法 | |
Garg et al. | TWORAM: round-optimal oblivious RAM with applications to searchable encryption | |
Boelter et al. | A secure one-roundtrip index for range queries | |
Zhang et al. | Dynamic and Efficient Private Keyword Search over Inverted Index--Based Encrypted Data | |
Patel et al. | Lower bounds for encrypted multi-maps and searchable encryption in the leakage cell probe model | |
CN106980796A (zh) | 云环境下基于mdb+树的多域连接关键词的搜索方法 | |
Zhao et al. | Volume-hiding dynamic searchable symmetric encryption with forward and backward privacy | |
Wang et al. | Enabling efficient approximate nearest neighbor search for outsourced database in cloud computing | |
Peng et al. | A reusable and single-interactive model for secure approximate k-nearest neighbor query in cloud |
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 |