1.一种区块链上基于身份的数据快速交易方法,其特征在于,包括如下:
(1)管理者随机选择两个大小不同的正整数α和β,使用初始化算法计算公共参数pp和主密钥msk;
(2)用户注册:
(2a)数据出售方和数据购买方向管理者进行身份注册,管理者根据用户的身份信息,使用基于身份的密钥生成算法计算用户的身份密钥skid,发送给数据出售方和数据购买方;
(2b)数据出售方和数据购买方向管理者进行属性注册,管理者根据用户的属性集合,使用属性加密的密钥生成算法计算用户的属性密钥sks,发送给数据出售方和数据购买方;
(3)数据上传:
(3a)数据出售方将要交易的数据平均分成n份,即m1,m2,…,mn,并随机选择n个不同正整数作为aes加密算法的n个种子密钥k1,k2,…,kn,使用aes加密算法,分别对n份数据m1,m2,…,mn进行加密,生成n份数据密文c1,c2,…,cn,n≥1;
(3b)数据出售方使用安全抗碰撞哈希函数,计算数据密文c1,c2,…,cn的密文哈希值h1,并使用基于身份的签名算法对密文哈希值h1进行签名,生成身份签名sig1;
(3c)数据出售方将数据密文c1,c2,…,cn,密文哈希值h1和身份签名sig1上传到公有云;
(4)密钥加密:
(4a)数据购买方在公有云下载数据密文c1,c2,…,cn,密文哈希值h1和身份签名sig1,并使用基于身份的签名验证算法对身份签名sig1进行验证;
(4b)数据出售方随机选择正整数作为加密私钥sk,使用椭圆曲线密钥生成算法计算加密私钥对应的加密公钥pk;
(4c)数据出售方使用椭圆曲线加密算法对n个种子密钥k1,k2,…,kn进行加密,生成n个密钥密文d1,d2,…,dn,并使用安全抗碰撞哈希函数计算密钥密文d1,d2,…,dn的密钥哈希值h2;
(4d)数据出售方使用属性加密算法对密钥密文d1,d2,…,dn进行加密,生成属性密文z;
(5)数据验证:
(5a)数据出售方将密钥哈希值h2、属性密文z和加密公钥pk发送给数据购买方;
(5b)数据购买方判断自己的属性是否满足属性密文的访问策略,若满足,则执行步骤(5c),否则,结束交易;
(5c)数据购买方使用属性加密的解密算法对属性密文z进行解密,得到n个密钥密文d1,d2,…,dn,并选择一个正整数作为验证组号j发送给数据出售方;
(5d)数据出售方将验证组号j对应的数据mj,种子密钥kj发送给数据购买方;
(5e)数据购买方验证数据mj是否真实,若真实,则执行步骤(6),否则,结束交易;
(6)承诺签名:
(6a)数据出售方使用椭圆曲线签名算法对消息进行签名计算承诺签名sig2,将承诺签名sig2发送给数据购买方;
(6b)数据购买方使用椭圆曲线签名验证算法对承诺签名sig2进行验证;
(6c)数据出售方随机选择正整数作为接收私钥w,使用椭圆曲线密钥生成算法计算接收私钥w对应的接收公钥w,将接收公钥w发送给数据购买方;
(7)快速支付:
(7a)数据购买方使用快速支付账户将区块链资产发送到加密公钥pk和接收公钥w的联合地址上;
(7b)数据出售方花费联合地址的区块链资产,使用椭圆曲线签名算法对交易进行签名sig3,将交易广播到区块链网络中;
(8)提取密钥:数据购买方监听区块链网络中关于联合地址的交易,并使用椭圆曲线签名漏洞算法计算加密私钥sk;
(9)解密数据:数据购买方使用椭圆曲线解密算法对n个密钥密文d1,d2,…,dn进行解密,得到n个种子密钥k1,k2,…,kn,并使用aes解密算法对数据密文c1,c2,…,cn进行解密,得到数据,完成交易。
2.根据权利要求1所述的方法,其特征在于,步骤(1)中使用初始化算法计算公共参数pp和主密钥msk,计算公式如下:
pp=(g,e(g,g)α,gβ,h(·)),
msk=gα,
其中,g表示生成元,e(·)表示双线性映射,h(·)表示安全抗碰撞哈希函数。
3.根据权利要求1所述的方法,其特征在于,步骤(2a)中计算用户的身份密钥skid,公式如下:
skid={gαgβt,gt,h(id)t},
其中,g表示生成元,t表示随机选择的正整数,h(·)表示安全抗碰撞哈希函数,id表示用户的身份信息。
4.根据权利要求1所述的方法,其特征在于,步骤(2b)中计算用户的属性密钥sks,公式如下:
sks={gαgβb,gb,h(x)bx∈s},
其中,g表示生成元,h(·)表示安全抗碰撞哈希函数,b表示随机选择的正整数,x表示用户的子属性,s表示用户的属性集合。
5.根据权利要求1所述的方法,其特征在于,步骤(3b)中对密文哈希值h1进行签名,公式如下:
sig1=(id,gαgβ(t+τ),gt,gτ,h(id)t·h(h1)τ),
其中,id表示用户的身份信息,g表示生成元,t和τ表示随机选择的正整数,h(·)表示安全抗碰撞哈希函数。
6.根据权利要求1所述的方法,其特征在于,步骤(4a)中对身份签名sig1进行验证,验证如下公式是否成立:
如果等式成立,则签名通过验证,否则,签名不通过验证,其中,e(·)表示双线性映射,g表示生成元,t和τ表示随机选择的正整数,h(·)表示安全抗碰撞哈希函数。
7.根据权利要求1所述的方法,其特征在于,步骤(4d)中使用属性加密算法对密钥密文d1,d2,…,d100进行加密,实现步骤如下:
(4d1),数据出售方制定访问控制策略t,并生成线性秘密共享体制lsss构造访问控制结构(m,ρ),其中m是l行d列的生成矩阵,ρ是将集合{1,2,…,l}中的元素映射到密文策略属性集l中属性的映射,密文策略属性集l是访问控制策略t中所有属性的集合;
(4d2)数据出售方随机选择正整数s作为秘密值,并计算秘密值s的l个秘密份额λi,
λi=mi·v,
其中,mi表示矩阵m的第i行,i∈[1,l],v表示随机向量(s,v2,...,vl),v2,...,vl表示随机选择的l-1个正整数;
(4d3)数据出售方随机选择l个正整数r1,…,rl,计算属性密文z:
其中,d表示密钥密文,e(·)表示双线性映射,g表示生成元,s表示随机选择的正整数,h(·)表示安全抗碰撞哈希函数。
8.根据权利要求1所述的方法,其特征在于,步骤(5c)中对属性密文z进行解密,步骤如下:
(5c1)根据拉格朗日插值公式,计算随机数s;
(5c2)按照下式,计算密钥密文d:
其中,g表示生成元,e(·)表示双线性映射,t表示随机选择的正整数,h(·)表示安全抗碰撞哈希函数。
9.根据权利要求1所述的方法,其特征在于,步骤(5e)中数据购买方验证数据mj是否真实,验证步骤如下:
(5e1)验证明文数据是否是自己想要的数据,如果是,则执行步骤(5e2),否则,结束交易;
(5e2)验证明文和密文是否对应,如果对应,则执行步骤(5e3),否则,结束交易;
(5e3)验证密钥和密钥密文是否对应,如果对应,则数据真实,否则,数据不真实。
10.根据权利要求1所述的方法,其特征在于,步骤(8)中计算加密私钥sk,公式如下:
其中,f表示两次签名时使用的随机数,e1表示承诺签名的消息哈希,r表示f对应的临时公钥,e2表示监听到的交易信息哈希。