一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于区块链存储的可验证的可搜索对称加密方法

2022-06-11 12:18:13 来源:中国专利 TAG:


1.本发明属于信息检索和密码学技术领域,更具体地,涉及一种基于区块链存储的可验证的可搜索对称加密方法。


背景技术:

2.可搜索对称加密(searchable symmetric encryption,缩写sse)是近年来应用密码学领域的研究热点之一,其旨在保护外包数据隐私性的同时,使得对密文数据的检索成为可能。2000年,song等人首次提出可搜索对称加密方案;随后,goh以及chang等人分别提出两个基于正向索引的可搜索对称加密方案;2006年,curtmola等人研究了基于倒排索引的可搜索对称加密,并第一次对sse的安全性做出正式定义。此后,许多sse方案被相继提出,就sse的功能和安全性方面做出了扩展。可验证的可搜索对称加密(verifiable sse,缩写vsse)是该领域的一个研究分支,其使用消息认证码等工具,使得数据用户能够校验服务器返回结果的正确性,从而抵御了不诚实的服务器返回不正确或不完整结果的问题。
3.然而,现有的大多数工作都聚焦单一服务器的场景,因此可能会导致以下问题:第一,单一服务器场景容易发生单点故障,即一旦服务器发生了故障,则索引数据有可能会丢失且不可挽回;第二,不诚实的服务器可能会返回不正确的结果,但由于只有一台服务器,数据用户不能通过切换服务器来寻求正确的结果;第三,在不清楚数据是否有效、服务器是否可靠的情况下,数据用户将索引数据迁移到其他云服务器上是困难的。近年来学术界有多个工作聚焦于基于区块链存储的可搜索对称加密,根据加密数据库存储的方式,主要分为两个主流研究方向:第一,将加密数据库存储在交易数据中,以李会格等人的工作为代表,其使用多个交易分块地存储大规模的索引数据,并使用链表的机制将这些索引分块串接起来。但该方案涉及较多的区块链运作细节,因此可读性和可扩展性不够强,且使用链表机制存储大规模数据的做法使得方案的存取效率仍有一定的提升空间;第二,采取智能合约来存储索引数据,以胡胜山等人的工作为代表。这些方案屏蔽了区块链底层的运作细节,因而具备较强的可扩展性,但由于该方案的初始化操作和搜索操作都交由智能合约完成,因此会引入高昂的性能开销和金钱开销,导致方案对于大规模数据的场合不够高效和实用。
4.综上所述,即便有些基于区块链存储的工作针对单一服务器场景的三个问题提出了优秀的解决方法,但仍不可避免地在可扩展性、性能等方面做出了妥协。因此,如何在大数据的背景下针对上述问题设计一个高效的、高可扩展性的可验证的可搜索对称加密搜索方法,成为急需解决的关键问题。


技术实现要素:

5.本发明为克服上述现有技术中的缺陷,提供一种基于区块链存储的可验证的可搜索对称加密方法,可用于在大数据的背景下实现索引数据的多服务器去中心化存储,并具有良好的扩展性和高效的搜索效率。
6.为解决上述技术问题,本发明采用的技术方案是:一种基于区块链存储的可验证的可搜索对称加密方法,包括:
7.s1.密钥生成算法:运行于数据用户端,数据用户输入安全参数λ,密钥生成算法使用随机数生成算法产生密钥k,k
′←
{0,1}
λ
,之后,数据用户将密钥k,k

妥善保存在本地存储中;
8.s2.初始化算法:运行于数据用户端,用户输入密钥k,k

,以及数据库db,初始化算法为数据库db生成加密数据库edb=(lt1,lt2),并写入到仅追加块存储abs模型中;其中,lt1存储了加密数据库,用于加密搜索;而lt2存储了每个关键字对应的证据,用于结果验证;
9.s3.令牌生成算法:运行于数据用户端,用户输入待搜索关键字w,以及密钥k1,k2,令牌生成算法生成一个与待搜索关键字w相关联的搜索令牌τ=(k1,k2,label),并将搜索令牌τ发送至服务提供者端;
10.s4.搜索算法:运行于服务提供者端,当服务提供者收到数据用户发来的搜索令牌τ后,对保存在abs模型的加密数据库edb=(lt1,lt2)进行检索,调用搜索算法从lt1中得到相匹配的文件标识符集合并从lt2提取出相应的证据prf,最后将和prf发送至数据用户端;
11.s5.验证算法:运行于数据用户端,当数据用户收到服务提供者返回的结果后,输入上述结果、密钥k

以及令牌生成阶段输出的label,验证算法校验服务提供者返回的结果是否正确,如果结果正确,则读取结果集合的文件标识符进行后续的操作;否则,数据用户选择继续和其他服务提供者沟通,重新执行搜索算法和验证算法以获取可靠的结果。
12.进一步的,所述的仅追加块存储abs模型用于对区块链存储进行高层次的功能抽象,以屏蔽区块链的运作细节,以便基于区块链存储的可搜索对称加密方法的设计与分析;abs模型使用数据块的结构组织数据,不能修改或删除已写入的块,只能将新的块写入到存储中;当一个块被写入后,abs模型会返回指向该块的地址;abs模型的数据块长度是固定的,由公共参数γ指定;当待写入数据的长度大于γ时,abs模型终止写入而不会切分数据;如果待写入数据的长度小于块的长度,abs模型在写入前使用足够多个0填充数据,直至数据长度等于块的长度。
13.进一步的,所述的abs模型包括:
14.abs

init(γ):初始化abs算法,其接受一个公开参数γ作为输入,并输出一个仅追加块存储abs,其中γ指定块的长度;
15.v/
⊥←
get(abs,addr):获取块数据算法,其输入一个仅追加块存储abs和一个块地址addr,如果addr指定的块存在,它返回该块所有的内容v;否则,它返回空指示符


16.(abs

,addr)

put(abs,v):写入块数据算法,其输入一个仅追加块存储abs和一个要写入的数据v,如果v的长度大于块长度γ,算法就会终止;否则,算法输出更新后的仅追加块存储abs

以及该数据所在的块地址addr。
17.进一步的,还包括基于区块链存储的静态查找表数据结构的实现方法,用于在区块链存储中实现较高效的键-值存储和读取效率,包括:
18.(lt,abs

)

ltinit({(l1,v1),...,(ln,vn)},abs):初始化算法ltinit,其接受一组键-值对{(li,vi)}
1≤i≤n
和仅追加块存储abs作为输入,然后输出更新后的块存储abs

,以
及存储在abs

中的查找表lt;
19.v/
⊥←
ltget(l,lt,abs):查找表检索算法ltget,其接受一个键l、查找表lt以及仅追加块存储abs作为输入,如果查找表lt中存在键为l的项,则输出对应的值v;否则,输出空指示符


20.进一步的,基于二叉搜索树的思想,给出具体的基于区块链存储的静态查找表数据结构的实现方法,即binst;一棵m阶的binst结点的数据成员中,最多有m个键-值对,且最多包含两个子结点(左孩子和右孩子)。对于binst的结点,将该结点所包含的键集合中的最小者称为结点的最小键,将其中最大者称为结点的最大键。m阶binst具有以下性质:若任意结点的左子树不空,则左子树上所有结点的键均小于它的根结点的最小键;若任意结点的右子树不空,则右子树上所有结点的键均大于它的根结点的最大键;任意结点的左、右子树也分别为m阶binst。
21.给定n个键-值对{(l1,v1),...,(ln,vn)},m阶binst的初始化算法ltinit包括:
22.若n=0,返回空树(其中根节点地址表示为空指示符

);否则,对{(l1,v1),...,(ln,vn)}按键的非降序进行排序,结果为{(l
′1,v
′1),...,(l
′n,v
′n)};
23.将有序的键-值对{(l
′1,v
′1),...,(l
′n,v
′n)}切分为个子集合为简化表示,使用符号bi来表示第i个子集合;
24.对于子集合列表调用以下子例程自底向上地构造binst:
25.读取子例程的输入,即子集合列表b={b1,b2,...,bm};若列表b为空,输出空树(其中根节点地址表示为空指示符

);否则,从列表b中选择中间元素构造binst结点x,将中的键-值对按序写入到结点x的相应数据成员中;对于位于左边的子列表递归调用该子例程生成左子树b
l
,将b
l
的根结点作为x的左孩子;同理,对于位于右边的子列表递归调用该子例程生成右子树br,将br的根结点作为x的右孩子;通过调用方法(abs,addr
x
)

put(abs,x),将节点x写入到块存储abs中,输出以结点x为根的binst子树b,其中b的根节点地址为addr
x

26.在binstb(其中b的根节点表示为b.root,而根节点地址表示为addr
b.root
)中查找键l详细步骤,即查找表检索算法ltget包括:
27.根据b的根节点地址addr
b.root
,如果addr
b.root
为空指示符

,则b为空树,查找失败,算法结束;否则,调用方法b.root

get(abs,addr
b.root
)读取b.root的详细数据;
28.若l小于b.root的最小键,则根据b.root的左孩子地址,递归搜索左子树;
29.若l大于b.root的最大键,则根据b.root的右孩子地址,递归搜索右子树,重复查找步骤;否则,
30.对b.root中包含的键集合进行二分查找,如果查找成功,返回相应的值;否则,查找失败,算法结束。
31.进一步的,s2中的初始化算法具体包括:
32.s21.初始化两个空列表l1,l2;
33.s22.对于数据库db包含的每一个关键字w,进行以下操作:
34.计算k1←
f(1||w),k2←
f(2||w),并初始化一个用于计数的变量c

0以及一个空字
符串
35.对于包含于db(w)的每一个文档标识符id,计算l

f(k1,c),d

e(k2,id),并自增计数器c

c 1,然后将二元组(l,d)添加至列表l1中,并将id追加到字符串上,即
36.计算labelw←
f(k3,w),以及并将二元组(labelw,prfw)添加到列表l2中;
37.s23.对列表l2按字典序的增序进行排序;
38.s24.初始化另一个空列表l
′2,并令i

0;
39.s25.顺序遍历列表l2中的每一个元组(label,prf),计算prf
′←
sign(k

,label||i),将四元组(label,prf,i,prf

)添加到列表l
′2中,并自增计数器i

i 1;
40.s26.最后将两个列表分别构建两个静态查找表
41.(lt1,abs

)

ltinit(l1,abs),(lt2,abs

)

ltinit(l
′2,abs)。
42.进一步的,s3中的令牌生成算法具体包括:
43.s31.计算k1←
f(1||w),k2←
f(2||w)以及label

f(k3,w);
44.s32.返回搜索令牌τ=(k1,k2,label)。
45.进一步的,s4中的搜索算法具体包括:
46.s41.将加密数据库edb解析为二元组(lt1,lt2),并将搜索令牌τ解析为三元组(k1,k2,label);
47.s42.初始化一个空列表并初始化一个计数器c

0;
48.s43.开始以下循环,直至循环内部发生终止:
49.获取d

ltget(f(k1,c),lt1,abs),如果d为空白指示符

,则循环终止;否则,计算id

d(k2,d),并将id添加到列表上;
50.自增计数器c

c 1;
51.s44.如果列表不为空,则获取(prf,i,prf

)

ltget(label,lt2,abs),并跳过步骤s45执行步骤s46;否则,执行步骤s45;
52.s45.找到i,使得labeli<label<label
i 1
,并获取(prfi,i,prfi′
)

ltget(labeli,lt2,abs),以及(prf
i 1
,i 1,prfi′
1)

ltget(label
i 1
,lt2,abs);此时,构造证据prf

(labeli,i,prfi′
,label
i 1
,i 1,prf

i 1
);
53.s46.返回二元组
54.进一步的,s5中的验证算法具体包括:
55.s51.如果服务提供者返回的结果集合不为空,则算法将其解析为并依次串接成字符串最后调用消息认证码的验证算法如果验证算法校验成功,则结果集合是正确且完整的,算法返回true;否则,服务提供者返回的结果有误,算法返回false;
56.s52.如果服务提供者返回的结果集合为空,则解析prf为(labeli,i,prfi′
,label
i 1
,i 1,prf

i 1
);并检查是否满足labeli≤label≤label
i 1
,如果不满足,意味着服务提供者返回的结果有误,算法返回false;否则,继续执行步骤s53;
57.s53.分别调用两次消息认证码的验证算法verify(k

,labeli||i,prfi′
)以及verify(k

,label
i 1
||i 1,prf

i 1
);如果两次消息认证码的验证算法都返回成功,则意味
store,缩写abs)模型,该模型用于对区块链存储进行高层次的功能抽象,以屏蔽区块链的运作细节,方便下文查找表数据结构和可搜索对称加密方法的设计与分析。abs模型使用数据块的结构组织数据,其不能修改或删除已写入的块,只能将新的块写入到存储中。当一个块被写入后,abs模型会返回指向该块的地址。abs模型的数据块长度是固定的,由公共参数γ指定。当待写入数据的长度大于γ时,abs模型终止写入而不会切分数据,这意味着调用者必须自行切分数据。如果待写入数据的长度小于块的长度,abs在写入前使用足够多个0填充数据,直至数据长度等于块的长度。
70.具体而言,abs模型具有下述三个方法:
71.abs

init(γ):初始化abs算法,其接受一个公开参数γ作为输入,并输出一个仅追加块存储abs。其中γ指定块的长度;
72.v/
⊥←
get(abs,addr):获取块数据算法,其输入一个仅追加块存储abs和一个块地址addr。如果addr指定的块存在,它返回该块所有的内容v;否则,它返回空指示符


73.(abs

,addr)

put(abs,v):写入块数据算法,其输入一个仅追加块存储abs和一个要写入的数据v。如果v的长度大于块长度γ,算法就会终止;否则,算法输出更新后的仅追加块存储abs

以及该数据所在的块地址addr。
74.实施例2
75.本实施例公开了一种基于区块链存储的静态查找表数据结构的实现方法,该方法用于在区块链存储中实现较高效的键-值存储和读取效率,方便可搜索对称加密方案的设计与分析。
76.基于区块链存储的静态查找表数据结构在abs模型的基础上建立,其提供两个方法:
77.(lt,abs

)

ltinit({(l1,v1),...,(ln,vn)},abs):初始化算法,其接受一组键-值对{(li,vi)}
1≤i≤n
和仅追加块存储abs作为输入,然后输出更新后的块存储abs

,以及存储在abs

中的查找表lt;
78.v/
⊥←
ltget(l,lt,abs):查找表检索算法,其接受一个键l、查找表lt以及仅追加块存储abs作为输入。如果查找表lt中存在键为l的项,则输出对应的值v;否则,输出空指示符


79.本实施例基于二叉搜索树的设计思想,提出了静态查找表的一种名为binst的实现方法。一棵m阶的binst中单个结点的数据成员中,最多有m个键-值对,且最多包含两个子结点(左孩子和右孩子)。对于binst的结点,将该结点所包含的键集合中的最小者称为结点的最小键,将其中最大者称为结点的最大键。图1所示的是一棵三阶的binst,其中键的数据类型为整型,每个结点最多能存放3个键。在图1中,每个结点的左孩子和右孩子的指针显式地表示为“lc”和“rc”。为了简化表示,图1不展示binst结点中键所对应的值。
80.一棵m阶的binst具有以下性质:
81.1、若任意结点的左子树不空,则左子树上所有结点的键均小于它的根结点的最小键;
82.2、若任意结点的右子树不空,则右子树上所有结点的键均大于它的根结点的最大键;
83.3、任意结点的左、右子树也分别为m阶binst。
84.m阶binst的初始化算法和搜索算法的具体步骤如下:
85.根据附图2所示,给定n个键-值对{(l1,v1),...,(ln,vn)},m阶binst的初始化算法步骤如下:
86.若n=0,返回空树(其中根节点地址表示为空指示符

);否则,对{(l1,v1),...,(ln,vn)}按键的非降序进行排序,结果为{(l
′1,v
′1),...,(l
′n,v
′n)};
87.将有序的键-值对{(l
′1,v
′1),...,(l
′n,v
′n)}切分为个子集合为简化表示,使用符号bi来表示第i个子集合;
88.如图3所示,对于子集合列表调用以下子例程自底向上地构造binst:
89.读取子例程的输入,即子集合列表b={b1,b2,...,bm};若列表b为空,输出空树(其中根节点地址表示为空指示符

);否则,从列表b中选择中间元素构造binst结点x,将中的键-值对按序写入到结点x的相应数据成员中;对于位于左边的子列表递归调用该子例程生成左子树b
l
,将b
l
的根结点作为x的左孩子;同理,对于位于右边的子列表递归调用该子例程生成右子树br,将br的根结点作为x的右孩子;通过调用方法(abs,addr
x
)

put(abs,x),将节点x写入到块存储abs中,输出以结点x为根的binst子树b,其中b的根节点地址为addr
x

90.如图4所示,在binstb(其中b的根节点表示为b.root,而根节点地址表示为addr
b.root
)中查找键l详细步骤,即查找表检索算法ltget包括:
91.根据b的根节点地址addr
b.root
,如果addr
b.root
为空指示符

,则b为空树,查找失败,算法结束;否则,调用方法b.root

get(abs,addr
b.root
)读取b.root的详细数据;
92.若l小于b.root的最小键,则根据b.root的左孩子地址,递归搜索左子树;
93.若l大于b.root的最大键,则根据b.root的右孩子地址,递归搜索右子树,重复查找步骤;否则,
94.对b.root中包含的键集合进行二分查找,如果查找成功,返回相应的值;否则,查找失败,算法结束。
95.图5给出了binst查找算法的例子。在图5中,待查找的键为49。算法首先从根结点出发,发现49大于根结点的最大键21,此时进入右子树继续查找;在该右子树的根结点中,算法发现49小于其最小键56,此时进入该结点的左子树继续下去;最终,在查找路径的第三个结点中,算法发现待查找键49位于该结点的最小键和最大键之间,并通过二分查找找到了键49对应的项,搜索成功。
96.实施例3
97.本实施例公开了一种基于区块链存储的可验证的可搜索对称加密方法。该方法以实施例1的abs模型和实施例2的查找表数据结构作为基础,可用于在大数据的背景下实现索引数据的多服务器去中心化存储,并具有良好的扩展性和高效的搜索效率。该方法支持单关键字检索,并支持结果的可验证性。
98.该方法应用于包含数据用户端、服务提供者端和区块链平台的应用系统中,其中数据用户是一个想在区块链平台上存储以及搜索其数据的实体,而服务提供者是一个拥有
完整区块链数据的全节点。由于数据用户端本地不存储完整的区块链数据,它需要将查询操作外包给存储完整区块链数据的服务提供者。当服务提供者成功地从区块链中搜索到数据用户的数据时,它将结果和相应的证据发送给数据用户。数据用户可以通过校验服务提供者返回的证据,检查结果是否正确和完整。一旦数据用户发现结果有误,其可以选择请求其他的服务提供者检索其数据。由于区块链具有去中心化和不可篡改的特性,因此所述方法保证了索引数据的可靠性和去中心化。
99.在介绍所述方法的详细步骤前,首先给出符号定义。假设有一个由d个文件组成的集合,文件标识符分别为id1,id2,

,idd。数据库是一个由索引-关键字集合对组成的元组列表,其中idi∈{0,1}
l
以及关键字w∈wi当且仅当idi标识的文件包含关键词w。数据库db包含的关键词集合为令|w|表示不同关键词的总数,n表示文件-关键词对的数量(即)。db(w)={idi|w∈wi}指的是包含关键词w的文件标识符集合,则nw=|db(w)|表示db(w)的大小。令f:{0,1}
λ
×
{0,1}
*

{0,1}
λ
为一个可变长输入的伪随机函数;ε=(e,d)为一个对称密钥加密方案,其中e为加密算法,d为解密算法;为一个消息认证码方案,其中sign为签名算法,verfiy为验证算法。
100.根据附图6所示,一种基于区块链存储的可验证的可搜索对称加密方法的详细步骤如下:
101.s1.密钥生成算法:运行于数据用户端。数据用户输入安全参数λ,算法使用随机数生成算法产生密钥k,k
′←
{0,1}
λ
。之后,数据用户将密钥k,k

妥善保存在本地存储中。
102.s2.初始化算法:运行于数据用户端。用户输入密钥k,k

,以及数据库db,算法为数据库db生成加密数据库edb,并写入到仅追加块存储abs中。值得注意的是,数据用户端本身不存储完整的区块链数据,因此在abs模型下,其只能对abs存储进行写入操作,而不具备读取功能。初始化算法的详细步骤如下:
103.s21.初始化两个空列表l1,l2;
104.s22.对于数据库db包含的每一个关键字w,进行以下操作:
105.计算k1←
f(1||w),k2←
f(2||w),并初始化一个用于计数的变量c

0以及一个空字符串
106.对于包含于db(w)的每一个文档标识符id,计算l

f(k1,c),d

e(k2,id),并自增计数器c

c 1,然后将二元组(l,d)添加至列表l1中,并将id追加到字符串上,即
107.计算labelw←
f(k3,w),以及并将二元组(labelw,prfw)添加到列表l2中;
108.s23.对列表l2按字典序的增序进行排序;
109.s24.初始化另一个空列表l
′2,并令i

0;
110.s25.顺序遍历列表l2中的每一个元组(label,prf),计算prf
′←
sign(k

,label||i),将四元组(label,prf,i,prf

)添加到列表l
′2中,并自增计数器i

i 1;
111.s26.最后将两个列表分别构建两个静态查找表(lt1,abs

)

ltinit(l1,abs),(lt2,abs

)

ltinit(l
′2,abs)。
112.s3.令牌生成算法:运行于数据用户端。用户输入待搜索关键字w,以及密钥k1,k2,
算法生成一个搜索令牌τ,并将搜索令牌τ发送至服务提供者端。该算法生成令牌的步骤如下:
113.s31.计算k1←
f(1||w),k2←
f(2||w)以及label

f(k3,w);
114.s32.返回搜索令牌τ=(k1,k2,label)。
115.s4.搜索算法:运行于服务提供者端。当服务提供者收到数据用户发来的搜索令牌τ后,对保存在abs的加密数据库edb进行检索,调用该算法得到相匹配的文件标识符集合及相应的证据prf,并将和prf发送至数据用户端。值得注意的是,服务提供者端本身存储着完整的区块链数据,因此在abs模型下,其具备读取功能。搜索算法的详细步骤如下:
116.s41.将加密数据库edb解析为二元组(lt1,lt2),并将搜索令牌τ解析为三元组(k1,k2,label);
117.s42.初始化一个空列表并初始化一个计数器c

0;
118.s43.开始以下循环,直至循环内部发生终止:
119.获取d

ltget(f(k1,c),lt1,abs),如果d为空白指示符

,则循环终止;否则,计算id

d(k2,d),并将id添加到列表上;
120.自增计数器c

c 1;
121.s44.如果列表不为空,则获取(prf,i,prf

)

ltget(label,lt2,abs),并跳过步骤s45执行步骤s46;否则,执行步骤s45;
122.s45.找到i,使得labeli<label<label
i 1
,并获取(prfi,i,prfi′
)

ltget(labeli,lt2,abs),以及(prf
i 1
,i 1,prf

i 1
)

ltget(label
i 1
,lt2,abs);此时,构造证据prf

(labeli,i,prfi′
,label
i 1
,i 1,prf

i 1
);
123.s46.返回二元组
124.s5.验证算法:运行于数据用户端。当数据用户收到服务提供者返回的结果后,输入上述结果、密钥k

以及令牌生成阶段产生的label,调用该算法校验服务提供者返回的结果是否正确。如果结果正确,则可以读取结果集合的文件标识符进行后续的操作;否则,数据用户可以选择联系其他的服务提供者,重新执行步骤s3-s5以获取可靠的结果。验证算法的详细步骤如下:
125.s51.如果服务提供者返回的结果集合不为空,则算法将其解析为并依次串接成字符串最后调用消息认证码的验证算法如果验证算法校验成功,则结果集合是正确且完整的,算法返回true;否则,服务提供者返回的结果有误,算法返回false;
126.s52.如果服务提供者返回的结果集合为空,则解析prf为(labeli,i,prfi′
,label
i 1
,i 1,prf

i 1
);并检查是否满足labeli≤label≤label
i 1
,如果不满足,意味着服务提供者返回的结果有误,算法返回false;否则,继续执行步骤s53;
127.s53.分别调用两次消息认证码的验证算法verify(k

,labeli||i,prfi′
)以及verify(k

,label
i 1
||i 1,prf

i 1
);如果两次消息认证码的验证算法都返回成功,则意味着相应关键字的结果确实为空,算法返回true;否则,服务提供者返回的结果有误,算法返回false。
128.在本发明中,为方便查找表数据结构和可搜索对称加密方案的设计与实现,本发明对区块链的存储机制进行高层次的功能抽象,屏蔽了区块链具体实现的细节;为实现紧
密的空间存储和高效的检索性能,本发明基于二叉搜索树提出了一个高效的查找表数据结构实现,其中节点使用仅追加块存储的数据块进行紧密的打包存储,而检索操作则使用二分查找的思路来减少查询工作量;为实现可搜索对称加密的可验证性,本发明使用消息认证码,对与关键字所关联的次序和结果等信息进行了签名,实现了结果的可验证性和不可伪造性,从而抵御了恶意服务器的伪造行为。
129.显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献