基于区块链的动态可搜索加密方法及装置

文档序号:28928314发布日期:2022-02-16 14:44阅读:233来源:国知局
基于区块链的动态可搜索加密方法及装置

1.本技术涉及网络信息安全技术领域,特别涉及一种基于区块链的动态可搜索加密方法及装置。


背景技术:

2.随着云计算技术的发展,作为允许数据用户在密文空间进行关键字检索的一项新兴技术,可搜索加密技术正逐渐成为安全搜索领域的核心。然而,相关技术中的可搜索加密方案中,由于加密数据的存储和检索均是由第三方服务器来完成,因此会存在数据隐私泄露、查询结果不可信、单点失效、数据存储低效等问题,亟待解决。


技术实现要素:

3.本技术提供一种基于区块链的动态可搜索加密方法、装置、电子设备及存储介质,以解决相关技术中由第三方服务器实现加密数据的存储和检索,导致数据隐私泄露、查询结果不可信、单点失效、数据存储低效等问题。
4.本技术第一方面实施例提供一种基于区块链的动态可搜索加密方法,包括以下步骤:使用对称加密算法对数据拥有者的数据文件进行加密,并将加密后的数据文件上传至ipfs网络,并获取所述加密后的数据文件在所述ipfs网络的唯一标识符;从所述数据文件中抽取关键字,并利用预设加密算法对所述关键字进行加密运算,以生成安全索引;将所述唯一标识符和所述安全索引上传至区块链网络,根据认证请求对数据用户进行身份认证,在认证通过后发送秘密参数给所述数据用户,以使得所述数据用户利用根据所述秘密参数和搜索请求生成的查询陷门在所述区块链网络上进行搜索。
5.进一步地,所述从所述数据文件中抽取关键字,并利用预设加密算法对所述关键字进行加密运算,以生成安全索引,包括:根据从所述数据文件中抽取关键字生成关键字集合;并根据随机生成的临时密钥对所述关键字集合中的所有关键字进行加密运算,并在布隆过滤器中对级联后的关键字进行哈希运算计算的位置进行填充得到所述安全索引。
6.进一步地,在生成安全索引之后,还包括:根据从所述数据文件中抽取新关键字生成新关键字集合;对所述新关键字集合创建新安全索引,并利用所述新安全索引对所述数据文件的安全索引进行更新。
7.进一步地,在使用对称加密算法对数据拥有者的数据文件进行加密之前,还包括:对所述数据拥有者进行身份验证;在所述数据拥有者验证通过后,根据所述数据拥有者的共享参数生成秘密参数。
8.进一步地,所述查询陷门为:
[0009][0010]
其中,表示所述搜索请求中的关键字集合,u表示所述数据用户,t1表示查询陷门
中被链上节点用于和索引进行匹配所需要的关键参数,表示对查询集合中所有关键字进行加密运算后的值,表示查询集合的大小,即查询关键字的个数,h(wk)表示第k个关键字的哈希值,wk表示第k个关键字,k∈[1,n],n为正整数,t2表示链上节点进行匹配运算时所需要的一个参数,t3表示链上节点进行匹配运算时所需要的另一个参数,表示哈希值,h1(),h2(),

,hn()表示哈希函数,w1表示第1个查询关键字,w2表示第2个查询关键字,表示第个查询关键字,||表示级联运算,表示qu的逆,q2表示所述秘密参数,qu和ru表示所述数据用户从哈希函数中随机选择的临时密钥。
[0011]
本技术第二方面实施例提供一种基于区块链的动态可搜索加密装置,包括:第一加密模块,用于使用对称加密算法对数据拥有者的数据文件进行加密,并将加密后的数据文件上传至ipfs网络,并获取所述加密后的数据文件在所述ipfs网络的唯一标识符;第二加密模块,用于从所述数据文件中抽取关键字,并利用预设加密算法对所述关键字进行加密运算,以生成安全索引;搜索模块,用于将所述唯一标识符和所述安全索引上传至区块链网络,根据认证请求对数据用户进行身份认证,在认证通过后发送秘密参数给所述数据用户,以使得所述数据用户利用根据所述秘密参数和搜索请求生成的查询陷门在所述区块链网络上进行搜索。
[0012]
进一步地,所述第二加密模块用于根据从所述数据文件中抽取关键字生成关键字集合,并根据随机生成的临时密钥对所述关键字集合中的所有关键字进行加密运算,并在布隆过滤器中对级联后的关键字进行哈希运算计算的位置进行填充得到所述安全索引。
[0013]
进一步地,还包括:更新模块,用于在生成安全索引之后,根据从所述数据文件中抽取新关键字生成新关键字集合,对所述新关键字集合创建新安全索引,并利用所述新安全索引对所述数据文件的安全索引进行更新;验证模块,用于在使用对称加密算法对数据拥有者的数据文件进行加密之前,对所述数据拥有者进行身份验证,在所述数据拥有者验证通过后,根据所述数据拥有者的共享参数生成秘密参数。
[0014]
本技术第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述实施例所述的基于区块链的动态可搜索加密方法。
[0015]
本技术第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现上述实施例所述的基于区块链的动态可搜索加密方法。
[0016]
由此,本技术至少具有如下有益效果:
[0017]
可以在无第三方可信机构参与的情况下实现对加密数据安全高效的检索,并有效保护了数据用户的多关键字查询隐私,通过引入区块链和ipfs保证了查询结果可信性,提高了加密文档的存储安全性和效率。由此,解决了相关技术中由第三方服务器实现加密数据的存储和检索,导致数据隐私泄露、查询结果不可信、单点失效、数据存储低效等技术问题。
[0018]
本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
[0019]
本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0020]
图1为根据本技术实施例提供的基于区块链的动态可搜索加密方法的流程示意图;
[0021]
图2为根据本技术实施例提供的基于区块链的动态可搜索加密系统的模型示例图;
[0022]
图3为根据本技术一个实施例提供的基于区块链的动态可搜索加密方法的流程示意图;
[0023]
图4为根据本技术实施例提供的数据文档对应索引的示例图;
[0024]
图5为根据本技术实施例提供的基于区块链的动态可搜索加密装置的示例图;
[0025]
图6为根据本技术实施例提供的电子设备的结构示意图。
具体实施方式
[0026]
下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。
[0027]
区块链作为一项包含了密码学和共识算法的新兴技术,具有分布式可信、公开透明、信息不可篡改等优良特性。因此,为了解决上述问题,区块链开始被应用于可搜索加密技术来替代第三方云服务器的角色。然而,现有的基于区块链的可搜索加密方案只解决了上述的部分问题,本技术实施例可以结合分布式技术提出基于区块链的动态可搜索加密框架,实现数据查询隐私保护和查询结果可信性,同时支持对加密文档安全高效的存储。
[0028]
下面参考附图描述本技术实施例的基于区块链的动态可搜索加密方法、装置、电子设备及存储介质。针对上述背景技术中提到的相关技术中由第三方服务器实现加密数据的存储和检索,导致数据隐私泄露、查询结果不可信、单点失效、数据存储低效等问题,本技术提供了一种基于区块链的动态可搜索加密方法,在该方法中,可以在无第三方可信机构参与的情况下实现对加密数据安全高效的检索,并有效保护了数据用户的多关键字查询隐私,通过引入区块链和ipfs保证了查询结果可信性,提高了加密文档的存储安全性和效率。由此,解决了相关技术中由第三方服务器实现加密数据的存储和检索,导致数据隐私泄露、查询结果不可信、单点失效、数据存储低效等技术问题。
[0029]
具体而言,图1为本技术实施例所提供的一种基于区块链的动态可搜索加密方法的流程示意图。
[0030]
需要说明的是,本技术实施例的方法可以应用在各个领域内与可搜索加密相关的场景中,以下实施例中,本技术实施例涉及的实体如图2所示,可以包括数据拥有者、数据用户、区块链网络和ipfs网络。
[0031]
如图1所示,该基于区块链的动态可搜索加密方法包括以下步骤:
[0032]
在步骤s101中,使用对称加密算法对数据拥有者的数据文件进行加密,并将加密后的数据文件上传至ipfs网络,并获取加密后的数据文件在ipfs网络的唯一标识符。
[0033]
可以理解的是,数据拥有者可以使用对称加密算法对数据文件进行加密,将加密
文档上传至ipfs网络并记录下文件在网络中的唯一标识符。其中,ipfs在系统中则负责存储加密文档,从而可以实现更加安全高效的加密文档存储。
[0034]
在本实施例中,在使用对称加密算法对数据拥有者的数据文件进行加密之前,还包括:对数据拥有者进行身份验证;在数据拥有者验证通过后,根据数据拥有者的共享参数生成秘密参数。
[0035]
可以理解的是,在如图2所示的系统正式运行之前,需要先对系统进行初始化操作。
[0036]
具体而言,如图3所示,在该阶段,需要向系统输入一个安全参数l用来生成相关参数。g1和g2是两个具有相同阶数q的乘法循环群,且g是g1的一个生成元。同时,g1×
g1→
g2和分别代表一个双线性映射e和一个哈希函数。初始化阶段的主要任务是生成两个l比特长的素数且满足q=q1·
q2。
[0037]
所有数据拥有者在进入系统之前都需要进行严格的身份验证,经过验证的数据拥有者将秘密共享参数q1和q2,而经过数据拥有者认证的数据用户则通过安全信道获得参数q2用于后续生成查询陷门。
[0038]
在步骤s102中,从数据文件中抽取关键字,并利用预设加密算法对关键字进行加密运算,以生成安全索引。
[0039]
可以理解的是,数据拥有者是负责对数据文档抽取关键字,构建相应索引的个体,具体地,本技术实施例可以为数据文档抽取关键字并对这些关键字进行相应加密运算来生成对应的索引。
[0040]
在本实施例中,从数据文件中抽取关键字,并利用预设加密算法对关键字进行加密运算,以生成安全索引,包括:根据从数据文件中抽取关键字生成关键字集合;并根据随机生成的临时密钥对关键字集合中的所有关键字进行加密运算,并在布隆过滤器中对级联后的关键字进行哈希运算计算的位置进行填充得到所述安全索引。
[0041]
可以理解的是,在搜索阶段,索引被用来直接与查询陷门进行匹配,因此索引的安全创建与更新在本方案中十分重要。
[0042]
具体而言,如图3所示,数据拥有者进行安全索引的创建包括:
[0043]
索引本质上是一个属性布隆过滤器,给定第i个数据拥有者doi第j个文件的关键字集合w
i,j
,数据拥有者doi首先随机选择一个临时密钥sk
i,j
,对于关键字集合w
i,j
中的所有关键字,doi计算接下来doi随机生成n-1个元素并对第n个元素作如下操作:
[0044][0045]
然后,doi用n个独立的哈希函数h1(),h2(),

,hn()对作哈希运算得到:
[0046][0047]
其中,每个代表属性布隆过滤器中的地址。如
图4所示,索引将会按照所标示的位置来存储第k个随机元素。
[0048]
在为数据文档f
i,j
创建好索引后,数据拥有者会将索引与加密文档在ipfs中的存储地址以交易的形式上传至区块链,同时区块链上的各节点也会将该比交易的交易序号添加到有效交易序号列表中。
[0049]
在本实施例中,在生成安全索引之后,还包括:根据从数据文件中抽取新关键字生成新关键字集合;对新关键字集合创建新安全索引,并利用新安全索引对数据文件的安全索引进行更新。
[0050]
具体而言,如图3所示,数据拥有者进行安全索引的更新包括:
[0051]
如果需要为数据文档f
i,j
更新索引,那么数据拥有者首先根据文档的新关键字集按照上述方法创建新索引,之后同样将新的索引及加密文档的存储地址以交易的形式上传并注明该笔交易是对之前交易的更新,最后区块链上各节点将交易序号替换有效交易序号列表中的更新步骤完成。
[0052]
在步骤s103中,将唯一标识符和安全索引上传至区块链网络,根据认证请求对数据用户进行身份认证,在认证通过后发送秘密参数给数据用户,以使得数据用户利用根据秘密参数和搜索请求中的至少一个关键字加密生成的查询陷门在区块链网络上进行搜索。
[0053]
其中,区块链主要负责执行搜索操作,在收到数据用户的查询陷门后,区块链上的各节点会根据维护的有效交易序号列表遍历对应序号的交易将陷门与文档索引进行匹配,并在经过共识后将查询结果返回给数据用户。
[0054]
可以理解的是,本技术实施例可以将安全索引和ipfs的唯一标识符一起上传至区块链,经过数据拥有者认证的数据用户可以根据自己想要搜索的关键字构建陷门发送至区块链网络进行搜索。由此,本技术实施例可以实现对数据用户查询隐私保护的多关键字搜索,支持多数据拥有者和多数据用户设定下的可搜索加密,保证搜索结果的可信性,同时实现对加密文档的关键字更新。
[0055]
具体而言,如图3所示,步骤s103可以包括查询陷门生成、链上搜索和ipfs搜索,其中,
[0056]
1、查询陷门生成
[0057]
经过验证的数据用户通过参数q2和两个随机生成的密钥对想要搜索的多关键字进行加密从而生成对应的查询陷门。具体来说,给定一个查询关键字集数据用户u首先从中选择一个临时密钥qu,对于中的所有关键字u计算同时u还需计算n个哈希值接下了u再从中选择另一个临时密钥ru计算出和对于一个查询关键字集查询陷门表示如下:
[0058]
[0059]
其中,表示搜索请求中的关键字集合,u表示数据用户,t1表示查询陷门中被链上节点用于和索引进行匹配所需要的关键参数,表示对查询集合中所有关键字进行加密运算后的值,表示查询集合的大小,即查询关键字的个数,h(wk)表示第k个关键字的哈希值,wk表示第k个关键字,k∈[1,n],n为正整数,t2表示链上节点进行匹配运算时所需要的一个参数,t3表示链上节点进行匹配运算时所需要的另一个参数,表示哈希值,h1(),h2(),

,hn()表示哈希函数,w1表示第1个查询关键字,w2表示第2个查询关键字,表示第个查询关键字,||表示级联运算,表示qu的逆,q2表示秘密参数,qu和ru表示数据用户从哈希函数中随机选择的临时密钥。
[0060]
2、链上搜索
[0061]
区块链由一系列节点构成,除了存储加密文档索引和ipfs地址,区块链还负责为数据用户在密文空间执行搜索操作。以文档f
i,j
的索引为例,在收到由数据用户u发送的查询陷门后,区块链上的所有节点首先根据陷门从索引中的n个哈希函数所代表的位置取出对应的元素然后按如下方式计算
[0062][0063]
接下来各节点判断如下等式是否成立:
[0064][0065]
如果等式成立,那么数据文件f
i,j
就是满足数据用户查询条件的文件,节点会将文件f
i,j
在ipfs中的唯一标识符添加到列表中。上述等式的正确性证明如下:
[0066]
[0067][0068]
如果查询关键字集与文件f
i,j
的关键字集w
i,j
包含相同关键字,则等式一定成立。在各节点完成了搜索算法后,整个区块链网络会使用特定的共识算法对搜索结果达成一致以消除恶意节点的影响。在收到各节点发送的列表后,主节点会与上传中文档的数据拥有者交互来获得对应的解密密钥并将其添加到一个新的列表中。最后,主节点会将列表和一起返回给数据用户。
[0069]
3、ipfs搜索
[0070]
在该阶段,数据用户首先会将存有符合查询条件数据文档在ipfs中唯一标识符的列表发送给本地节点,之后本地节点会进行查询并判断表中对应的加密文档是否在储存在该节点的存储设备中。若存在,那么该节点会直接将加密文档返回给数据用户,若不存在,那么本地节点将继续和存有对应加密文档的节点进行交互,再将文档返回给数据用户。
[0071]
综上,本技术实施例提供了一种在无可信第三方机构参与情况下的分布式可搜索加密架构,可以使用属性布隆过滤器保护了数据用户的多关键字查询隐私,同时支持多数据拥有者和多数据用户设定下的文档索引动态更新;且与传统的可搜索加密方案相比,通过引入区块链和ipfs保证了查询结果可信性,并提高了加密文档的存储安全性和效率。
[0072]
根据本技术实施例提出的基于区块链的动态可搜索加密方法,可以在无第三方可信机构参与的情况下实现对加密数据安全高效的检索,并有效保护了数据用户的多关键字查询隐私,通过引入区块链和ipfs保证了查询结果可信性,提高了加密文档的存储安全性和效率。
[0073]
其次参照附图描述根据本技术实施例提出的基于区块链的动态可搜索加密装置。
[0074]
图5是本技术实施例的基于区块链的动态可搜索加密装置的方框示意图。
[0075]
如图5所示,该基于区块链的动态可搜索加密装置10包括:第一加密模块100、第二加密模块200和搜索模块300。
[0076]
其中,第一加密模块100用于使用对称加密算法对数据拥有者的数据文件进行加密,并将加密后的数据文件上传至ipfs网络,并获取加密后的数据文件在ipfs网络的唯一标识符;第二加密模块200用于从数据文件中抽取关键字,并利用预设加密算法对关键字进行加密运算,以生成安全索引;搜索模块300用于将唯一标识符和安全索引上传至区块链网络,根据认证请求对数据用户进行身份认证,在认证通过后发送秘密参数给数据用户,以使得数据用户利用根据秘密参数和搜索请求生成的查询陷门在区块链网络上进行搜索。
[0077]
进一步地,第二加密模块200用于根据从数据文件中抽取关键字生成关键字集合,并根据随机生成的临时密钥对关键字集合中的所有关键字进行加密运算,并在布隆过滤器
中对级联后的关键字进行哈希运算计算的位置进行填充得到所述安全索引。
[0078]
进一步地,本技术实施例的装置10还包括:更新模块和验证模块。
[0079]
其中,更新模块,用于在生成安全索引之后,根据从数据文件中抽取新关键字生成新关键字集合,对新关键字集合创建新安全索引,并利用新安全索引对数据文件的安全索引进行更新;验证模块,用于在使用对称加密算法对数据拥有者的数据文件进行加密之前,对数据拥有者进行身份验证,在数据拥有者验证通过后,根据数据拥有者的共享参数生成秘密参数。
[0080]
需要说明的是,前述对基于区块链的动态可搜索加密方法实施例的解释说明也适用于该实施例的基于区块链的动态可搜索加密装置,此处不再赘述。
[0081]
根据本技术实施例提出的基于区块链的动态可搜索加密装置,可以在无第三方可信机构参与的情况下实现对加密数据安全高效的检索,并有效保护了数据用户的多关键字查询隐私,通过引入区块链和ipfs保证了查询结果可信性,提高了加密文档的存储安全性和效率。
[0082]
图6为本技术实施例提供的电子设备的结构示意图。该电子设备可以包括:
[0083]
存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机程序。
[0084]
处理器602执行程序时实现上述实施例中提供的基于区块链的动态可搜索加密方法。
[0085]
进一步地,电子设备还包括:
[0086]
通信接口603,用于存储器601和处理器602之间的通信。
[0087]
存储器601,用于存放可在处理器602上运行的计算机程序。
[0088]
存储器601可能包含高速ram(random access memory,随机存取存储器)存储器,也可能还包括非易失性存储器,例如至少一个磁盘存储器。
[0089]
如果存储器601、处理器602和通信接口603独立实现,则通信接口603、存储器601和处理器602可以通过总线相互连接并完成相互间的通信。总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component,外部设备互连)总线或eisa(extended industry standard architecture,扩展工业标准体系结构)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0090]
可选的,在具体实现上,如果存储器601、处理器602及通信接口603,集成在一块芯片上实现,则存储器601、处理器602及通信接口603可以通过内部接口完成相互间的通信。
[0091]
处理器602可能是一个cpu(central processing unit,中央处理器),或者是asic(application specific integrated circuit,特定集成电路),或者是被配置成实施本技术实施例的一个或多个集成电路。
[0092]
本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的基于区块链的动态可搜索加密方法。
[0093]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不
是必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或n个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0094]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“n个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0095]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更n个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
[0096]
应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,n个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列,现场可编程门阵列等。
[0097]
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1