1.一种基于区块链的多关键字可搜索加密方法,其特征在于:初始化:数据所有者生成公共参数和密钥,并创建智能合约,将公共参数和公钥公开,将私钥保密;
索引构建:数据所有者生成密文文件、索引、共享密钥和其他参数,将生成的密文文件发送至存储服务器,将索引发送至搜索服务器,将共享密钥发送给其他用户,将生成的其他参数保密;
陷门生成:用户将需要检索的多个关键字生成检索陷门,并发起检索请求;
分发:智能合约将用户的检索请求分解后发送给各个搜索服务器;
检索:搜索服务器处理检索请求,将得到的检索结果发送给用户和智能合约;
验证:智能合约对检索结果进行验证,对验证失败的结果发起仲裁请求;
解密:用户根据检索结果进行计算,根据计算结果向存储服务器请求对应的密文文件,将密文文件解密后得到对应的明文文件,如果计算或解密失败则发起仲裁请求;
仲裁:数据所有者处理仲裁请求,校验检索结果;
所述分发包括如下步骤:
1)合约账户收到用户发送的陷门集合和服务费之后的时间t内,参与检索的搜索服务器将押金发送至合约账户;合约账户收到押金后将在时间t内成功支付押金的搜索服务器按支付顺序排序,向这些服务器分发检索陷门,超时的支付押金的交易将被退回原账户;最后得到参与检索的搜索服务器集合S;
2)为保证检索结果的可靠性,每个陷门都要由2台或以上数量的搜索服务器检索;智能合约将收到的陷门集合Tw分解为多个子集,然后将得到的子集分发给搜索服务器,Tw中的每个陷门至少包含于2个子集中;搜索服务器S所述检索包括如下步骤:
1)各搜索服务器收到智能合约发送的陷门集合TS
2)搜索服务器执行本地检索时对于每个陷门
3)搜索服务器将检索结果集合RS
4)对于陷门集合TS
所述验证包括如下步骤:
1)假设2台搜索服务器对某一关键字的检索结果为Nw
2)智能合约验证完成后将验证结果发送至用户,同时发起一笔交易将押金退回给搜索服务器;经过时间t后,再将服务费发送给搜索服务器;在时间t内,若用户对检索结果有怀疑可向数据所有者发起仲裁请求,该笔支付服务费的交易将被暂停;
所述仲裁包括如下步骤:
1)对于来自智能合约的仲裁请求,数据所有者利用待仲裁的检索结果Nw”,计算H
2)对于来自用户的仲裁请求,数据所有者利用待仲裁的检索结果Nw”和用户提交的原始关键字w”计算H
2.如权利要求1所述的基于区块链的多关键字可搜索加密方法,其特征在于,所述初始化包括如下步骤:
1)数据所有者生成两个阶为素数p的乘法循环群G数据所有者随机选取s∈Z
2)数据所有者创建智能合约并将其发布至区块链;用户及搜索服务器在方案执行过程中需要调用智能合约以完成整个检索过程;在每次检索完成后,用户可提取智能合约中扣留的押金;智能合约的功能包括:暂存用户服务费和搜索服务器的押金,分解和发送检索任务,验证检索结果。
3.如权利要求1所述的基于区块链的多关键字可搜索加密方法,其特征在于,所述索引构建包括如下步骤:
1)数据所有者将明文文件进行关键字拆分,得到关键字集合W={w
2)数据所有者利用密文文件编号及其对应的关键字,构建关键字-文档编号文件索引I,计算过程如下:设包含关键字w的密文文件编号集合为{FN
2-1)利用关键字w,计算y=H
2-2)计算C
2-3)令Key=g
2-4)计算verify_bit=e(H
2-5)计算聚合后的文件编号Nw=FN关键字w对应的索引为Iw=[Cw,Nw],数据所有者对关键字集合W中的每个关键字均执行以上操作,生成索引I={Iw
3)数据所有者将共享密钥Key=gsx发至各个用户,用户必须利用此密钥才能构造合法的检索陷门;数据所有者将x,VRs,VRu,S
4.如权利要求1所述的基于区块链的多关键字可搜索加密方法,其特征在于,所述陷门生成包括如下步骤:
1)设待检索关键字集合为W’={w
对于关键字w∈W’,其陷门的计算过程如下:
1-1)计算y=H
1-2)随机选取r∈Z
1-3)关键字w的检索陷门
2)对每个待检索关键字执行以上操作后得到陷门集合Tw={[tw
5.如权利要求1所述的基于区块链的多关键字可搜索加密方法,其特征在于,所述解密包括如下步骤:
1)参与检索的搜索服务器为n个时,用户收到n个检索结果{R_TS用户计算b=F(Key),然后将R_Tw’的第b个比特位删除,得到最终的结果R_Tw;用户将结果R_Tw发送至存储服务器请求对应的文件;存储服务器从R_Tw按比特位拆分出文件编号,查找到对应的文件后将其发送给用户;
2)用户获取密文文件C后首先计算得到对称密钥