利索能及
我要发布
收藏
专利号: 2022103557929
申请人: 石家庄铁道大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-05-14
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于区块链的多关键字可搜索加密方法,其特征在于:

初始化:数据所有者生成公共参数和密钥,并创建智能合约,将公共参数和公钥公开,将私钥保密;

索引构建:数据所有者生成密文文件、索引、共享密钥和其他参数,将生成的密文文件发送至存储服务器,将索引发送至搜索服务器,将共享密钥发送给其他用户,将生成的其他参数保密;

陷门生成:用户将需要检索的多个关键字生成检索陷门,并发起检索请求;

分发:智能合约将用户的检索请求分解后发送给各个搜索服务器;

检索:搜索服务器处理检索请求,将得到的检索结果发送给用户和智能合约;

验证:智能合约对检索结果进行验证,对验证失败的结果发起仲裁请求;

解密:用户根据检索结果进行计算,根据计算结果向存储服务器请求对应的密文文件,将密文文件解密后得到对应的明文文件,如果计算或解密失败则发起仲裁请求;

仲裁:数据所有者处理仲裁请求,校验检索结果;

所述分发包括如下步骤:

1)合约账户收到用户发送的陷门集合和服务费之后的时间t内,参与检索的搜索服务器将押金发送至合约账户;合约账户收到押金后将在时间t内成功支付押金的搜索服务器按支付顺序排序,向这些服务器分发检索陷门,超时的支付押金的交易将被退回原账户;最后得到参与检索的搜索服务器集合S;

2)为保证检索结果的可靠性,每个陷门都要由2台或以上数量的搜索服务器检索;智能合约将收到的陷门集合Tw分解为多个子集,然后将得到的子集分发给搜索服务器,Tw中的每个陷门至少包含于2个子集中;搜索服务器Si收到的子集为TSi;

所述检索包括如下步骤:

1)各搜索服务器收到智能合约发送的陷门集合TSi后,对集合中每个陷门执行本地检索,得到检索结果集合RSi={Nw1,Nw2,...,Nwj,j∈(1,m)},j代表陷门编号,Nwj代表编号为j的陷门的检索结果;

2)搜索服务器执行本地检索时对于每个陷门 利用本地存储

的索引1w’=[Cw’,Nw’],计算等式t1’·Cw’=t2’是否成立,若成立则输出1,将对应的Nw’加入集合RSi中;若不成立则输出0,将0加入集合RSi中,表明该陷门对应的检索结果为空;

3)搜索服务器将检索结果集合RSi发送至智能合约用于验证;若集合RSi中检索结果均为0,则表明本次检索结果为空,检索流程结束;若集合RSi中检索结果中存在非0结果,则继续进行计算;

4)对于陷门集合TSi,对应包含该集合中所有关键字的检索结果为R_TSi=Nw1&Nw2&...&Nwj,参与检索的服务器首先计算R_TSi,若R_TSi>0,表明检索结果不为空,则将检索结果R_TSj发送给用户;若R_TSi=0,则按照关键字权重计算陷门TSi的子集的检索结果的权重,将权重最大的结果R_SubTSi作为模糊结果返回给用户;

所述验证包括如下步骤:

1)假设2台搜索服务器对某一关键字的检索结果为Nwi与Nwi’,智能合约验证Nwi=Nwi’是否成立,即每个编号相同的陷门对应的检索结果是否相同,若成立则输出1;如果不成立则输出0,并向数据所有者发起仲裁请求,请求中包含Nwi与Nwi’;所有结果验证通过后,智能合约退回各个搜索服务器的押金,并按照检索的陷门数量向搜索服务器分发服务费;若验证失败,智能合约保留押金并拒绝支付对应搜索服务器的服务费;

2)智能合约验证完成后将验证结果发送至用户,同时发起一笔交易将押金退回给搜索服务器;经过时间t后,再将服务费发送给搜索服务器;在时间t内,若用户对检索结果有怀疑可向数据所有者发起仲裁请求,该笔支付服务费的交易将被暂停;

所述仲裁包括如下步骤:

1)对于来自智能合约的仲裁请求,数据所有者利用待仲裁的检索结果Nw”,计算H4(Nw”||x)∈VRs是否成立;若成立则输出1,表明检索结果合法;否则输出0,表明检索结果不合法,此时智能合约扣留押金并拒绝向搜索服务器支付服务费;

2)对于来自用户的仲裁请求,数据所有者利用待仲裁的检索结果Nw”和用户提交的原始关键字w”计算H4(w”||Nw”||x)∈VRu是否成立;若成立则输出1,表明检索结果准确;否则输出0,表明检索结果不准确;数据所有者将对应搜索服务器的信息广播至区块链中,智能合约不再向该服务器支付服务费。

2.如权利要求1所述的基于区块链的多关键字可搜索加密方法,其特征在于,所述初始化包括如下步骤:

1)数据所有者生成两个阶为素数p的乘法循环群G1和G2,g为G1的生成元;生成一个双线* k *性映射e:G1×G1→G2;选择伪随机函数F:{0,1}→{0,1};选择两个密码哈希函数H1:{0,1}k * k * k→G1与H2:G2→{0,1},k为整数;选择抗碰撞哈希函数H3:{0,1}→{0,1},H4:{0,1}→{0,1} ;

选择对称加密算法(Enc,Dec);数据所有者公布系统公共参数pub={p,G1,G2,e,F,H1,H2,H3,H4,(Enc,Dec)},并将其发布至区块链;

s

数据所有者随机选取s∈Zp计算SDO=g作为私钥,并计算公钥 用户随机选u

取u∈Zp,计算 作为私钥,计算用户公钥Pu=g;数据所有者和用户将私钥保存,将公钥作为公开信息发布至区块链;

2)数据所有者创建智能合约并将其发布至区块链;用户及搜索服务器在方案执行过程中需要调用智能合约以完成整个检索过程;在每次检索完成后,用户可提取智能合约中扣留的押金;智能合约的功能包括:暂存用户服务费和搜索服务器的押金,分解和发送检索任务,验证检索结果。

3.如权利要求1所述的基于区块链的多关键字可搜索加密方法,其特征在于,所述索引构建包括如下步骤:

1)数据所有者将明文文件进行关键字拆分,得到关键字集合W={w1,w2,w3,...};数据所有者使用对称算法加密明文文件得到密文文件,随机选取x∈Zp,对于明文文件Mi,其对应x的密文文件Ci=Enc(Mi,k),k为对称密钥,k=H2(e(g,g ));密文文件集合为C={C1,C2,i‑1C3,..,},对于文件Ci,将密文文件排序后按照序号i分配文件编号FNi=2 ,并计算H4(Ci),得到VC={[FN1,H4(C1)],[FN2,H4(C2)],...,[FNi,H4(Ci)]};数据所有者将所有密文文件C及其编号发送至存储服务器,将VC发布至区块链;

2)数据所有者利用密文文件编号及其对应的关键字,构建关键字‑文档编号文件索引I,计算过程如下:设包含关键字w的密文文件编号集合为{FN1,FN2,FN3,...};

2‑1)利用关键字w,计算y=H3(w);

x y xy

2‑2)计算Cw=e(g,g)=e(g,g) ;

sx

2‑3)令Key=g ,计算b=F(Key);

2‑4)计算verify_bit=e(H1(w),Key)mod 2;

2‑5)计算聚合后的文件编号Nw=FN1&FN2&FN3&...,并将verify_bit插入到Nw的第b个比特位中,&表示与运算;

关键字w对应的索引为Iw=[Cw,Nw],数据所有者对关键字集合W中的每个关键字均执行以上操作,生成索引I={Iw1,Iw2,...},之后将索引上传至各个搜索服务器;同时,数据所有者计算VN=H4(Nw||x),Vw=H4(w||Nw||x)生成集合VRs={VN1,VN2,VN3,...}和VRu={Vw1,Vw2,Vw3,...},用于对有争议的检索结果进行仲裁;

3)数据所有者将共享密钥Key=gsx发至各个用户,用户必须利用此密钥才能构造合法的检索陷门;数据所有者将x,VRs,VRu,SDO作为秘密信息保存。

4.如权利要求1所述的基于区块链的多关键字可搜索加密方法,其特征在于,所述陷门生成包括如下步骤:

1)设待检索关键字集合为W’={w1,w2,w3,...},用户需要同时为每个关键字指定权重p,得到集合Wp={[w1,p1],[w2,p2],[w3,p3],....};权重代表各个关键字的检索优先级,主要用于在检索结果为空时计算模糊结果,权重越高的关键字包含在检索结果中的可能性越i大;如用户不指定权重,则默认按照顺序分配,pi=2,i为关键字序号;

对于关键字w∈W’,其陷门的计算过程如下:

1‑1)计算y=H3(w);

y r

1‑2)随机选取r∈Zp,计算 t2=e(Key·g·g,PDO)=ersxy rxy

(g ,PDO)=e(g,g) ;

1‑3)关键字w的检索陷门

2)对每个待检索关键字执行以上操作后得到陷门集合Tw={[tw1,p1],[tw2,p2],[tw3,p3],...},之后用户将陷门集合Tw及服务费发送至智能合约;由于智能合约在验证检索结果时可能需要数据所有者进行仲裁,用户在发送的服务费需要包含一部分仲裁费用。

5.如权利要求1所述的基于区块链的多关键字可搜索加密方法,其特征在于,所述解密包括如下步骤:

1)参与检索的搜索服务器为n个时,用户收到n个检索结果{R_TS1,R_TS2,R_TS3,...,R_TSn},检索结果代表包含相应关键字的密文文件编号集合;将检索结果求交集即可得到R_Tw’,R_Tw’=R_TS1&R_TS2&R_TS3&...&R_TSn;

用户计算b=F(Key),然后将R_Tw’的第b个比特位删除,得到最终的结果R_Tw;用户将结果R_Tw发送至存储服务器请求对应的文件;存储服务器从R_Tw按比特位拆分出文件编号,查找到对应的文件后将其发送给用户;

2)用户获取密文文件C后首先计算得到对称密钥

之后执行对称解密算法即可获取对应

的明文文件M=Dec(C,k);根据密文文件C还可以计算H4(C)’并将其与区块链中存储的H4(C)进行比较,从而判断密文文件是否被篡改。