本发明涉及加密数据搜索,尤其涉及一种云际环境下基于区块链的关键词语义可搜索加密方法。
背景技术:
1、云际计算是新一代云计算模式,以多方云服务提供商为基础,构建全套计算、存储、数据通信服务。在现实应用中,可以以华为云、腾讯云、百度云等多方云为基础,构建一个提供计算、存储等服务的云际环境,在此云际环境下,云服务消费者可以将数据及业务分散迁移到各个云中进行存储。现有的云际计算相关研究成果有inter-cloud、supercloud、multi-cloud、federated cloud等。
2、在云际环境下,为了数据的隐私性,数据“上云”之前都会进行加密处理。然而,现实应用中云服务提供商提供的云服务器是不可以完全信任的,可以认为云服务器是半诚实的,即云服务器可能存在恶意行为,例如,云服务器可能获取文档信息或者篡改文档内容,云服务器也可能出于某种原因不完整地执行搜索操作,返回部分搜索结果或不正确的搜索结果,因此,存在搜索结果不可信问题。
3、区块链具有去中心化、不可篡改特性,可以利用区块链作为可信第三方搜索实体,可解决搜索结果不可信问题。此外,关键词语义搜索能够进一步满足用户的搜索意图,从而返回较为完整的搜索结果。
4、大多数传统的可搜索加密方法都是在单云环境下,且针对诚实的云服务器,但在实际应用中,云服务器往往是半诚实的,是不可以完全信任的,也就说云服务器可能存在恶意行为,如返回部分搜索结果或不正确的搜索结果。
5、中国专利“cn115757676a模糊可搜索加密方法、装置及电子设备”所述的技术方案是在单云环境下,且假设云服务器是诚实的,不存在恶意行为,但在实际应用中,云服务提供商提供的云服务器是不能完全相信的,需要对云服务器返回的搜索结果进行验证。此外,此技术方案也只是实现了模糊查询,并没有语义查询,语义搜索能够进一步满足用户的搜索意图,从而可以返回较为完整的搜索结果。
技术实现思路
1、本发明要解决的技术问题是针对上述现有技术的不足,提供一种云际环境下基于区块链的关键词语义可搜索加密方法,确保搜索结果是可信的以及数据文件没有被篡改,并支持语义搜索。
2、为解决上述技术问题,本发明所采取的技术方案是:一种云际环境下基于区块链的关键词语义可搜索加密方法,包括初始化阶段、文档加密阶段、加密文档上传阶段、安全索引生成及上传阶段、陷门生成阶段、搜索阶段、获取加密文档阶段和验证阶段;初始化阶段数,据拥有者生成安全秘钥;文档加密阶段,数据拥有者加密文档;加密文档上传阶段,数据拥有者将加密文档分散存储到多方云中;安全索引生成及上传阶段,数据拥有者为明文文档构建安全索引,并将其上传至区块链;陷门生成阶段,数据使用者根据查询关键词集合得到陷门;搜索阶段,区块链的智能合约收到陷门执行搜索操作;获取加密文档阶段,数据使用者从云服务器请求加密文档;验证阶段,数据使用者对云服务器返回的加密文档集合进行完整性验证;
3、所述数据拥有者生成安全秘钥的具体方法为:
4、随机生成两个λ×λ维的可逆矩阵m1、m2,随机生成一个λ维向量s∈{0,1}λ,令安全knn加密算法秘钥sk=(m1,m2,s),其中,λ为安全参数;
5、选取一个对称加密算法生成对称加密秘钥k;
6、输出k=(sk,k)作为安全秘钥。
7、所述数据拥有者加密文档的具体方法为:
8、用对称加密秘钥k把明文文档集合f={f1,f2,…,fn}加密成密文文档集合c={c1,c2,…,cn},其中,n表示文档的数量,fn为第n个明文文档,cn表示第n个密文文档;
9、所述数据拥有者将加密文档分散存储到多方云中的具体方法为:
10、将密文文档集合c分散存储至多方云中,并记录下密文文档ce所在云的位置信息addre=[namee,ipe],其中name表示云商的名称,ip表示云服务器的ip地址,e∈[1,n];
11、输出存储加密文档的云的位置信息集合addr={addr1,addr2,…,addrn};
12、所述数据拥有者为明文文档构建安全索引,并将其上传至区块链的具体方法为:
13、对明文文档集合f={f1,f2,…,fn}提取出关键词集合w={w1,w2,…,wm},其中,w表示关键词,m表示关键词的数量,m<<n;
14、将密文文档集合c={c1,c2,…,cn}进行哈希得到哈希值集合h={h1,h2,…,hn},并根据关键词与明文文档的关系得到关键词-文档集合db(wi)={[id1,h1,addr1],…,[idsize,hsize,addrsize]},其中,hn为密文文档cn对应的哈希值,id表示文档标识符,size表示含有关键词wi的明文文档的数量,i∈[1,m];
15、通过word2vec模型将关键词集合w={w1,w2,…,wm}转换成关键词向量集合v={v1,v2,…,vm},其中,vm为关键词wm对应的向量;
16、使用位置敏感哈希函数对关键词向量集合v={v1,v2,…,vm}进行计算得到关键词敏感哈希值集合l={l1,l2,…,lm},其中,lm为关键词向量vm对应的关键词敏感哈希值;
17、使用安全knn加密算法对关键词向量集合v进行加密得到加密向量集合i={i1,i2,…,im},其中,im为关键词向量vm对应的加密向量;
18、构建安全索引index,索引结构由哈希表和哈希桶组成,哈希表结构采用数组结构,哈希桶结构采用红黑树结构,哈希表中的每一个元素为哈希桶,即数组中的每一个元素为一棵红黑树;根据关键词敏感哈希值li将数据(ii,db(wi),|vi|)插入安全索引index对应哈希桶中,哈希桶结构采用红黑树的树节点的数据格式为nodej=(j,ii,db(wi),|vi|),其中j表示树节点在红黑树中的编号,|vi|表示向量vi的绝对值;
19、将安全索引index上传至区块链;安全索引index在区块链中的数据格式为t=[num,j,ii,db(wi),|vi|],其中num表示哈希桶在哈希表中的哈希地址。
20、所述数据使用者根据查询关键词集合得到陷门的具体方法为:
21、通过word2vec模型将查询关键词集合q={w'1,w'1,…,w'b}转换成向量集合q={q1,q2,…,qb},其中,b表示查询关键词的数量,qb为查询关键词w'b对应的向量;
22、使用位置敏感哈希函数将查询关键词向量集合q={q1,q2,…,qb}进行计算得到查询关键词敏感哈希值集合l'={l'1,l'2,…,l'b},其中,l'b为关键词向量qb对应的关键词敏感哈希值;
23、使用安全knn加密算法对查询关键词向量集合q进行加密得到加密集合t={t1,t2,…,tb};
24、输出陷门集合t={t1,t2,…,tb},其中,陷门ts=(ts,l's,|qs|),|qs|表示向量qs的绝对值,s∈[1,b];
25、所述区块链的智能合约收到陷门执行搜索操作的具体方法为:
26、对于x∈[1,b],根据陷门tx中的敏感哈希值l'x找到安全索引index对应的哈希桶地址,然后遍历该红黑树的所有索引节点node算计算索引节点与陷门的文档分数d并记录该索引节点中的文档信息集合db(wy);按照文档分数d对文档信息记录进行降序排列,然后返回文档分数最高的前k个文档信息搜索结果r={[id1,h1,addr1],…,[idk,hk,addrk]};
27、所述计算索引节点与陷门的文档分数d并记录该索引节点中的文档信息集合db(wy)的具体方法为:
28、设定哈希桶中β个索引节点,对于y∈[1,β],计算向量iy与向量tx的余弦值d,将余弦值作为文档分数,若d>δ,则记下该索引节点中的文档信息集合db(wy)以及文档分数d,δ为文档的关键词与搜索关键词之间的语义相似的阈值;
29、若有文档标识符id重复,则将文档分数d进行累加;
30、所述数据使用者从云服务器请求加密文档的具体方法为:根据智能合约执行搜索操作返回的搜索结果r={[id1,h1,addr1],…,[idk,hk,addrk]},数据使用者根据文档位置信息addr和文档标识符id请求对应云服务器获得对应加密文档r′={c1,…,ck};
31、云服务器返回对应的加密文档集合r′={c1,…,ck}给数据使用者;
32、所述数据使用者对云服务器返回的加密文档集合进行完整性验证的具体方法为:
33、对云服务器返回的加密文档集合r′={c1,…,ck}中的加密文档cp进行哈希得到哈希值cp',p∈[1,k];
34、将搜索结果r中的哈希值hp与哈希值cp'进行比较,若一致,则表示加密文档cp未被篡改,输出1;若不一致,则表示加密文档cp被篡改,输出0。
35、采用上述技术方案所产生的有益效果在于:本发明提供的一种云际环境下基于区块链的关键词语义可搜索加密方法,首先,针对云服务器不可信问题,引入区块链技术,利用区块链、智能合约确保搜索结果的完整性与正确性;其次,为丰富查询方式,提出了多关键词语义搜索方法;并设计了一个索引,加快查询效率。
36、该方法将加密索引生成至区块链,保证了索引数据的安全性,防止云服务器对索引数据的篡改,使用智能合约代替云服务器执行搜索操作,保证了搜索结果的完整性与正确性。此外,本发明还实现了多关键词语义搜索,返回更加符合用户需求的搜索结果;同时基于位置敏感哈希函数构建索引,在搜索过程中只需遍历索引中少量哈希桶(即红黑树),加快查询效率。