当前位置: 首页 > 专利查询>中山大学专利>正文

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

技术编号:33778455 阅读:18 留言:0更新日期:2022-06-12 14:32
本发明专利技术属于信息检索和密码学技术领域,更具体地,涉及一种基于区块链存储的可验证的可搜索对称加密方法。本发明专利技术为方便查找表数据结构和可搜索对称加密方案的设计与实现,对区块链的存储机制进行高层次的功能抽象,屏蔽了区块链具体实现的细节;为实现紧密的空间存储和高效的检索性能,本发明专利技术基于二叉搜索树提出了一个高效的查找表数据结构实现,其中节点使用仅追加块存储的数据块进行紧密的打包存储,而检索操作则使用二分查找的思路来减少查询工作量;为实现可搜索对称加密的可验证性,本发明专利技术使用消息认证码,对与关键字所关联的次序和结果等信息进行了签名,实现了结果的可验证性和不可伪造性,从而抵御了恶意服务器的伪造行为。为。为。

【技术实现步骤摘要】
基于区块链存储的可验证的可搜索对称加密方法


[0001]本专利技术属于信息检索和密码学
,更具体地,涉及一种基于区块链存储的可验证的可搜索对称加密方法。

技术介绍

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

技术实现思路

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

妥善保存在本地存储中;
[0008]S2.初始化算法:运行于数据用户端,用户输入密钥K,K

,以及数据库DB,初始化算法为数据库DB生成加密数据库EDB=(LT1,LT2),并写入到仅追加块存储ABS模型中;其中,LT1存储了加密数据库,用于加密搜索;而LT2存储了每个关键字对应的证据,用于结果验证;
[0009]S3.令牌生成算法:运行于数据用户端,用户输入待搜索关键字w,以及密钥K1,K2,令牌生成算法生成一个与待搜索关键字w相关联的搜索令牌τ=(K1,K2,label),并将搜索令牌τ发送至服务提供者端;
[0010]S4.搜索算法:运行于服务提供者端,当服务提供者收到数据用户发来的搜索令牌τ后,对保存在ABS模型的加密数据库EDB=(LT1,LT2)进行检索,调用搜索算法从LT1中得到相匹配的文件标识符集合并从LT2提取出相应的证据prf,最后将和prf发送至数据用户端;
[0011]S5.验证算法:运行于数据用户端,当数据用户收到服务提供者返回的结果后,输入上述结果、密钥K

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

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


[0016](ABS

,addr)

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

以及该数据所在的块地址addr。
[0017]进一步的,还包括基于区块链存储的静态查找表数据结构的实现方法,用于在区块链存储中实现较高效的键

值存储和读取效率,包括:
[0018](LT,ABS

)

LTInit({(l1,v1),...,(l
n
,v
n
)},ABS):初始化算法LTInit,其接受一组键

值对{(l
i
,v
i
)}
1≤i≤n
和仅追加块存储ABS作为输入,然后输出更新后的块存储ABS

,以
及存储在ABS

中的查找表LT;
[0019]v/
⊥←...

【技术保护点】

【技术特征摘要】
1.一种基于区块链存储的可验证的可搜索对称加密方法,其特征在于,包括:S1.密钥生成算法:运行于数据用户端,数据用户输入安全参数λ,密钥生成算法使用随机数生成算法产生密钥K,K
′←
{0,1}
λ
,之后,数据用户将密钥K,K

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

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

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

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

;(ABS

,addr)

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

以及该数据所在的块地址addr。4.根据权利要求3所述的基于区块链存储的可验证的可搜索对称加密方法,其特征在于,还包括基于区块链存储的静态查找表数据结构的实现方法,用于在区块链存储中实现较高效的键

值存储和读取效率,包括:(LT,ABS

)

LTInit({(l1,v1),...,(l
n
,v
n
)},ABS):初始化算法LTInit,其接受一组键

值对{(l
i
,v
i
)}
1≤i≤n
和仅追加块存储ABS作为输入,然后输出更新后的块存储ABS

,以及存储在ABS

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

。5.根据权利要求4所述的基于区块链存储的可验证的可搜索对称加密方法,其特征在于,基于二叉搜索树的思想,给出具体的基于区块链存储的静态查找表数据结构的实现方法,即BinST;给定n个键

值对{(l1,v1),...,(l
n
,v
n
)},M阶BinST的初始化算法LTInit包括:若n=0,返回空树,其中根节点地址表示为空指示符

;否则,对{(l1,v1),...,(l
n
,v
n
)}按键的非降序进行排序,结果为{(l
′1,v
′1),...,(l

n
,v

n
)};将有序的键

值对{(l
′1,v
′1),...,(l

n
,v

n
)}切分为个子集合为简化表示,使用符号B
i
来表示第i个子集合;对于子集合列表调用以下子例程自底向上地构造BinST:读取子例程的输入,即子集合列表B={B1,B2,...,B
m
};若列表B为空,输出空树,其中根节点地址表示为空指示符

;否则,从列表B中选择中间元素构造BinST结点x,将中的键

值对按序写入到结点x的相应数据成员中;对于位于左边的子列表递归调用该子例程生成左子树b
l
,将b
l
的根结点作为x的左孩子;同理,对于位于右边的子列表递归调用该子例程生成右子树b
r
,将b
r
的根结点作为x的右孩子;通过调用方法(ABS,addr
x
)

Put(ABS,x),将节点x写入到块存储ABS中,输出以结点x为根的BinST子树b,其中b的根节点地址为addr
x
;在BinSTb(其中b的根节点表示为b.root,而根节点地址表示为addr
...

【专利技术属性】
技术研发人员:张方国陈建彰
申请(专利权)人:中山大学
类型:发明
国别省市:

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

1