1.一种区块链协助搜索的物联网数据共享方法,其特征在于,该方法具体如下:S1、可信权威机构、属性管理机构、数据所有者和数据使用者进行初始化操作:可信权威机构生成公共参数 ,各个属性管理机构生成各自的属性管理公钥 和属性管理私钥 ,数据所有者和数据使用者生成各自的公钥 和私钥,并向区块链协助搜索的物联网数据共享系统成员公开公共参数、属性管理公钥、数据所有者和数据使用者公钥;具体如下:S101、可信权威机构执行初始化操作:定义两个阶数为素数 的乘法循环群 ,并定义一个整数群 ;再选择双线性映射 和三个哈希函数 ;可信权威机构从 群中选择一个随机数 并将公共参数组织为:;
其中,是乘法循环群 的生成元;代指双线性映射; 是根据随机数 计算的一个公共参数的元素; 表示一个将关键字映射为 群元素的哈希函数; 表示一个将身份标识符 映射为 群元素的哈希函数; 表示一个将属性映射为 群元素的哈希函数;
其中,选定的乘法循环群和双线性映射满足以下三个条件:①双线性:对于任意的群元素: , ,有和 或 ;
②非退化性:设 是 的生成元,有 ;
③可计算性:对于任意的群元素: ,存在有效的方法计算一个双线性映射;
S102、各个属性管理机构分别从 群中选择两个随机数 , 作为属性管理私钥 ,并计算属性管理公钥 ;
其中, 是两个随机数,用于构成属性管理私钥 ,属性管理公钥根据属性管理私钥和群 的生成元计算得来;
S103、数据所有者和数据使用者分别从 群中选择随机数 , 分别作为数据所有者和数据使用者的私钥 ,并分别计算数据所有者和数据使用者的公钥 ;
其中,数据所有者和数据使用者各自的公钥是根据私钥和群 的生成元计算; 表示数据所有者的私钥; 表示数据使用者的私钥; 表示数据所有者的公钥;
表示数据使用者的公钥;
S2、物联网数据上传:数据所有者根据预定义的数据访问结构将物联网数据加密生成物联网数据密文 并从物联网数据中抽取一组能够描述对应数据的关键字生成数据索引 ;数据所有者将物联网数据密文上传到云计算中心,将数据索引上传到区块链;
S3、物联网数 据检索 :数据使 用者根 据自己感 兴趣的 关键字集 合生成搜索陷门 并将搜索陷门发送到区块链,区块链智能合约根据数据索引和搜索陷门执行搜索操作;当搜索成功时,返回物联网数据密文的云上存储地址;具体如下:S301、数据使用者根据自身感兴趣的关键字集合 并从 群中选择一个随机数 计算搜索陷门的各个组件如下:;
;
;
根据搜索陷门的各个组件 、 和 ,数据使用者将搜索陷门组织为:;
其中, 表示数据使用者感兴趣的关键字集合; 表示关键字; 表示数据使用者感兴趣的关键字集合中关键字的个数;
S302、数据使用者将搜索陷门上传到区块链上,部署在区块链上的智能合约验证数据索引和搜索陷门是否匹配,验证公式如下:;
若 成立,则表明数据索引和搜索陷门匹配成功,区块链将物联网数据密文的云上存储地址返回给数据使用者;
其中,验证数据索引和搜索陷门是否匹配的过程在区块链上利用智能合约执行;
S4、物联网数据解密:各个属性管理机构根据数据使用者的属性集合为数据使用者生成属性解密密钥 ,云计算中心根据数据使用者的属性解密密钥为数据使用者提供预解密操作生成中间密文 ,数据使用者利用自己的私钥解密中间密文最终获得数据使用者感兴趣的物联网数据;其中,云计算中心执行预解密和数据使用者解密中间密文具体如下:S401、各个属性管理机构根据数据使用者的属性集合 为数据使用者生成属性解密密钥 ;对于数据使用者的属性集合 中的一个属性 ,属性管理机构从群中选择一个随机数 并结合数据使用者的公钥 计算属性解密密钥的各个组件,具体如下:
;
;
根据属性解密密钥的各个组件 和 ,属性管理机构将数据使用者的属性解密密钥组织为: ;
其中, 是由任一个属性管理机构具体管理的属性集合,任一个属性管理机构具体管理的属性集合 和数据使用者的属性集合 的关系是: ;
S402、云计算中心利用数据使用者的属性解密密钥为数据使用者提供物联网数据密文预解密操作;云计算中心定义满足数 据访问 结构 的属性 集合为,对于集合 中的每个元素 ,云计算中心计算一组中间变量、 、 及 ,公式如下:
;
;
;
;
云计算中心根据中间变量 、 、 及 计算中间密文变量 ,公式如下:;
云计算中心计算一组常数 ,使得等式 和等式成立,即利用常数 恢复出 和 ;
结合常数 ,云计算中心执行如下的计算获取中间密文的组件 :;
根据中间密文的组件 云计算中心将中间密文组织为:;其中, 是物联网数据密文 的一个组件;
S403、数据使用者解密中间密文:数据使用者利用数据使用者私钥 执行如下计算解密中间密文获得物联网数据 :。
2.根据权利要求1所述的区块链协助搜索的物联网数据共享方法,其特征在于,步骤S2中的数据所有者将物联网数据密文上传到云计算中心,将数据索引上传到区块链具体如下:S201、数据所有者将物联网数据 加密,具体为:数据所有者定义一个数据访问结构 并从 群中选择一组随机数;其中, 表示一个 行 列的矩阵;表示一个将矩阵的行映射到属性的函数;
数据所有者构造 两个向量 并计 算, ;其中, 表示矩阵的一行; 表示 的第 个秘密分片, 表示0的第 个秘密分片;
数据所有者从 群中选择一个随机数 并计算物联网数据密文的各个组件如下:;
;
;
;
;
根据物联网数据密文的各个组件 、 、 、 和 ,数据所有者将物联网数据密文组织为: ;
S202、数据所有者从物联网数据中抽取一组关键字 ,再加密该组关键字生成数据索引;数据所有者从 群中选择两个随机数 及 并计算数据索引的各个组件如下:;
;
;
;
根据数据索引的各个组件 、 、 和 ,数据所有者将物联网数据索引组织为:;
其中, 表示关键字集合; 表示关键字;表示关键字集合中关键字的个数;
S203、数据所有者将物联网数据密文上传到云计算中心,上传的形式为:;物联网数据索引上传到区块链,上传的形式为: ;云计算中心将物联网数据密文的存储地址 上传到区块链,上传的形式为:;其中, 是一个抗碰撞的哈希函数。