区块链上基于身份的数据快速交易方法与流程

文档序号:19158242发布日期:2019-11-16 01:04阅读:282来源:国知局
区块链上基于身份的数据快速交易方法与流程

本发明属于密码技术领域,更进一步涉及数据快速交易方法,可用于虚拟网络中隐私数据的快速公平交易。



背景技术:

如今,人们经常在网络中进行敏感数据的交易。在进行数据交易时,网络环境可能会暴露交易双方的真实身份和数据的隐私。此外,由于商家和用户没有任何的信任基础,所以容易导致欺骗行为的发生。而且,网络无法实现对买家身份的控制,交易数据可能被恶意买家用作其他用途。因此,使用安全可靠的数据快速交易方法来实现公平交易是十分必要的,这样可以有效的保证交易双方的合法权益。

杭州珞珈数据科技有限公司在其申请的专利文献“一种公共数据平台上的私有数据交易方法”(公开号:cn109377227a,申请号:201811296869.x,申请日:2018年11月1日)中公开了一种私有数据的交易方法。该方法由可信任的第三方机构、后台控制系统、以太坊私有链,以及分布式数据库所构建的交易环境;后台控制系统控制所述以太坊私有链及节点的运行,以及分布式数据库的运行;当有数据拥有者申请加入所述私有链网络进行数据交易时,系统自动获取账户地址,将所需交易数据上传至所述分布式数据库,数据拥有者在私有链上部署智能合约,并设定密钥和价格;数据购买方通过智能合约付款,并获取数据库中对应数据。该方法保证了交易的安全性,降低了交易成本。该方法存在的不足之处是,数据购买者要购买的数据可能被篡改。此外,整个交易过程都需要第三方作为中间人参与,该交易方法需要确认交易时间,存在交易延迟。

重庆邮电大学在其申请的专利文献“基于以太坊的数据交易平台”(公开号:cn109389500a,申请号:201811148017.6,申请日:2018年9月29日)中公开了一种基于以太坊的数据交易方法。该方法的数据提供方和数据需求方通过以太坊节点加入到交易平台的底层以太坊平台中,用户双方通过操作自己的以太坊节点,在以太坊平台中通过智能合约完成交易过程。数据交易平台通过以太坊平台的智能合约实现交易规则的制定,数据提供方通过智能合约注册所提供的数据的描述信息,并将其保存在区块链上;数据需求方通过智能合约查询当前平台中已经注册的数据信息,选择自己想要的数据进行交易;买家、卖家双方通过智能合约完成交易流程。该方法的数据交易平台没有第三方控制机构,解决了交易数据存储的安全问题,保证了参与用户的个人隐私安全。该方法存在的不足之处是,由于以太坊用户的匿名性,任何用户都可以购买数据,可能导致数据被恶意买家购买用作其他用途。此外,该交易平台在支付成功前无法验证数据的有效性。



技术实现要素:

本发明的目的在于针对上述现有技术的不足,提出一种区块链上基于身份的数据快速交易方法,以通过属性加密保证数据只能被合法用户购买和解密,保证数据的存储安全和交易的公平性。

为实现上述目的,本发明采用的技术方案包括以下步骤:

(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进行解密,得到数据,完成交易。

本发明与现有技术相比具有以下优点:

第一,本发明由于使用基于身份的签名算法对数据进行签名,使得数据存储在公有云中无法被篡改,保证了数据的真实性,克服了现有技术中交易数据可能被恶意攻击者修改的缺点,使得本发明的方法的交易数据更加安全。

第二,本发明由于使用属性加密对交易的秘密信息进行加密,使得只有满足访问策略对应属性的用户才能解密,阻止了非法用户购买数据,克服了现有技术中恶意用户可以购买数据的缺点,使得本发明的方法能够对数据购买方的身份进行控制,防止恶意用户进行攻击,实现了数据交易的可控性。

第三,本发明由于中使用快速支付地址进行支付,可以即时的完成数据交易,数据出售方想要拿到区块链资产,就必须暴露加密数据的密钥,保证了交易双方的公平性,克服了现有技术中的方法存在交易时间延迟的缺点,使得本发明的方法减少了交易确认时间,实现了交易的快速完成。

附图说明

图1是本发明的实现流程图。

具体实施方式

以下结合附图对本发明的具体实例做进一步详细描述。

参照图1,本实例的具体实现步骤如下:

步骤1,初始化。

管理者随机选择两个大小不同的正整数α和β,计算公共参数pp和主密钥msk。

初始化的方法有基于大数分解的密码体制和基于离散对数的密码体制,本实例采用基于离散对数的密码体制对参数进行初始化,具有更强的安全性。初始化算法计算公式如下:

pp=(g,e(g,g)α,gβ,h(·)),

msk=gα

其中,g表示生成元,e(·)表示双线性映射,h(·)表示安全抗碰撞哈希函数。

步骤2,用户注册。

2.1)数据出售方和数据购买方向管理者进行身份注册,管理者根据用户的身份信息,计算用户的身份密钥skid,发送给数据出售方和数据购买方:

现有技术计算用户身份密钥的算法有基于证书的密码算法和基于身份的密码算法,本实例采用基于身份的密钥生成算法生成用户的身份密钥skid,能够对用户的身份进行灵活控制,计算公式如下:

skid={gαgβt,gt,h(id)t},

其中,g表示生成元,t表示随机选择的正整数,h(·)表示安全抗碰撞哈希函数,id表示用户的身份信息;

2.2)数据出售方和数据购买方向管理者进行属性注册,管理者根据用户的属性集合,计算用户的属性密钥sks,发送给数据出售方和数据购买方:

现有计算用户的属性密钥算法有基于密文策略的属性加密算法和基于密钥策略的属性加密算法,本实例采用基于密文策略的属性加密算法计算用户的属性密钥sks,能够实现对加密密文的访问控制,公式如下:

sks={gαgβb,gb,h(x)bx∈s},

其中,g表示生成元,h(·)表示安全抗碰撞哈希函数,b表示随机选择的正整数,x表示用户的子属性,s表示用户的属性集合。

步骤3,数据出售方上传数据。

3.1)数据出售方将要交易的数据平均分成n份,即m1,m2,…,mn,并随机选择n个不同正整数作为aes加密算法的n个种子密钥k1,k2,…,kn,使用aes加密算法,分别对n份数据m1,m2,…,mn进行加密,生成n份数据密文c1,c2,…,cn,n≥1;

3.2)数据出售方使用安全抗碰撞哈希函数,计算数据密文c1,c2,…,cn的密文哈希值h1,并对密文哈希值h1进行签名,生成身份签名sig1:

现有签名算法有dsa签名算法,rsa签名算法,椭圆曲线签名算法以及基于身份的签名算法等,本实例采用基于身份的签名算法,签名更加安全,任何人都无法伪造签名,保证了数据的真实性,使得数据无法被篡改。计算公式如下:

sig1=(id,gαgβ(t+τ),gt,gτ,h(id)t·h(h1)τ),

其中,id表示用户的身份信息,g表示生成元,t和τ表示随机选择的正整数,h(·)表示安全抗碰撞哈希函数;

3.3)数据出售方将数据密文c1,c2,…,cn,密文哈希值h1和身份签名sig1上传到公有云。

步骤4,密钥加密。

4.1)数据购买方在公有云下载数据密文c1,c2,…,cn,密文哈希值h1和身份签名sig1,并使用基于身份的签名验证算法对身份签名sig1进行验证,即验证如下公式是否成立:

如果等式成立,则签名通过验证,否则,签名不通过验证,其中,e(·)表示双线性映射,g表示生成元,t和τ表示随机选择的正整数,h(·)表示安全抗碰撞哈希函数;

4.2)数据出售方随机选择正整数作为加密私钥sk,计算加密私钥对应的加密公钥pk,计算公式如下:

pk=sk·g,

其中,·表示相乘操作,g表示椭圆曲线上的基点;

4.3)数据出售方使用椭圆曲线加密算法对n个种子密钥k1,k2,…,kn进行加密,生成n个密钥密文d1,d2,…,dn,并使用安全抗碰撞哈希函数计算密钥密文d1,d2,…,dn的密钥哈希值h2;

4.4)数据出售方对密钥密文d1,d2,…,dn进行加密,生成属性密文z:

现有对密文加密的基于密钥策略的属性加密和基于密文策略的属性加密,本实例采用基于密文策略的属性加密,能够实现对密钥密文d1,d2,…,dn的访问控制,使得只有满足访问条件的用户才能解密,实现步骤如下:

4.4a)数据出售方制定访问控制策略t,并生成线性秘密共享体制lsss构造访问控制结构(m,ρ),其中m是l行d列的生成矩阵,ρ是将集合{1,2,…,l}中的元素映射到密文策略属性集l中属性的映射,密文策略属性集l是访问控制策略t中所有属性的集合;

4.4b)数据出售方随机选择正整数s作为秘密值,并计算秘密值s的l个秘密份额λi,

λi=mi·v,

其中,mi表示矩阵m的第i行,i∈[1,l],v表示随机向量(s,v2,...,vl),v2,...,vl表示随机选择的l-1个正整数;

4.4c)数据出售方随机选择l个正整数r1,…,rl,计算属性密文z:

其中,d表示密钥密文,e(·)表示双线性映射,g表示生成元,s表示随机选择的正整数,h(·)表示安全抗碰撞哈希函数。

步骤5,数据验证。

5.1)数据出售方将密钥哈希值h2、属性密文z和加密公钥pk发送给数据购买方;

5.2)数据购买方判断自己的属性是否满足属性密文的访问策略,若满足,则继续交易,执行5.3),否则,结束交易;

5.3)数据购买方使用属性加密的解密算法对属性密文z进行解密,得到n个密钥密文d1,d2,…,dn,并选择一个正整数作为验证组号j发送给数据出售方,解密步骤如下:

5.3a)根据拉格朗日插值公式,计算随机数s;

5.3b)按照下式,计算密钥密文d:

其中,g表示生成元,e(·)表示双线性映射,t表示随机选择的正整数,h(·)表示安全抗碰撞哈希函数;

5.4)数据出售方将验证组号j对应的数据mj,种子密钥kj发送给数据购买方;

5.5)数据购买方验证数据mj是否真实,若真实,则执行步骤(6),否则,结束交易。验证步骤如下:

5.5a)验证明文数据是否是自己想要的数据,如果是,则继续验证,否则,结束交易;

5.5b)验证明文和密文是否对应,如果对应,则继续验证,否则,结束交易;

5.5c)验证密钥和密钥密文是否对应,如果对应,则数据真实,否则,数据不真实。

步骤6,承诺签名。

6.1)数据出售方使用椭圆曲线签名算法对消息进行签名计算承诺签名sig2,将承诺签名sig2发送给数据购买方,计算步骤如下:

6.1a)按照下式,计算消息的哈希值e1:

e1=h(o1),

其中,h(·)表示安全抗碰撞哈希函数,o1表示要签名的消息;

6.1b)随机选择一个整数f,按照下式计算临时公钥r:

r=xmodn,

(x,y)=f·g,

其中,(x,y)表示秘密值的公钥对应的坐标值,·表示相乘操作,g表示椭圆曲线上的基点,n表示生成元的阶;

6.1c)按照下式,计算签名sig2:

sig2=f-1(e1+r·sk)(modn),

其中,f-1表示不同于f的整数,且满足f-1·f=1(modn);

6.2)数据购买方使用椭圆曲线签名验证算法对承诺签名sig2进行验证,验证步骤如下:

6.2a)按照下式,计算消息的哈希值e:

e=h(o),

其中,h(·)表示安全抗碰撞哈希函数,o表示要签名的消息;

6.2b)按照下式,计算解点(x1,y1):

(x1,y1)=e·sig2-1·g+r·sig2-1·pk,

其中,·表示相乘操作,sig2-1表示不同于sig2的整数,且满足sig2-1·sig2=1(modn),n表示生成元的阶,g表示椭圆曲线上的基点,r表示临时公钥;

6.2c)验证下式是否成立:

x1modn=r,

如果成立,则签名正确,否则,签名不正确;

6.3)数据出售方随机选择正整数作为接收私钥w,使用椭圆曲线密钥生成算法计算接收私钥w对应的接收公钥w,将接收公钥w发送给数据购买方,计算公式如下:

w=w·g,

其中,·表示相乘操作,g表示椭圆曲线上的基点。

步骤7,快速支付。

7,1)数据购买方使用快速支付账户将区块链资产发送到加密公钥pk和接收公钥w的联合地址上,该地址的锁定脚本是加密公钥pk和接收公钥w,只有同时提供对应两个公钥的签名,才能花费资产;此外,公钥pk的签名必须采用固定的随机数f;

7.2)数据出售方花费联合地址的区块链资产,使用椭圆曲线签名算法对交易进行签名sig3,将交易广播到区块链网络中,实现步骤如下:

7.2a)按照下式,计算消息的哈希值e2:

e2=h(o2),

其中,h(·)表示安全抗碰撞哈希函数,o2表示要签名的消息;

7.2b)随机选择一个整数f,按照下式计算临时公钥r:

r=xmodn,

(x,y)=f·g,

其中,(x,y)表示秘密值的公钥对应的坐标值,·表示相乘操作,g表示椭圆曲线上的基点,n表示生成元的阶;

7.2c)按照下式,计算签名sig3:

sig3=f-1(e2+r·sk)(modn),

其中,f-1表示不同于f的整数,且满足f-1·f=1(modn)。

步骤8,提取密钥。

数据购买方监听区块链网络中关于联合地址的交易,并计算私钥sk:

本实例使用椭圆曲线签名漏洞算法,根据两次使用同一随机数f的签名sig2和sig3,得到私钥sk,以在数据出售方拿到资产的同时,数据购买方也拿到私钥,实现快速交易,减少交易时间,保证交易的公平性。具体计算公式如下:

其中,f表示两次签名时使用的随机数,e1表示承诺签名的消息哈希,r表示f对应的临时公钥,e2表示监听到的交易信息哈希。

步骤9,解密数据。

数据购买方使用椭圆曲线解密算法对n个密钥密文d1,d2,…,dn进行解密,得到n个种子密钥k1,k2,…,kn,并使用aes解密算法对数据密文c1,c2,…,cn进行解密,得到数据,完成交易。

以上描述仅是本发明的一个具体实例,并未构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修改和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围内之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1