本发明属于密码技术领域,更进一步涉及网络安全技术领域中的一种去中心化的数据验证及数据安全交易系统及方法。本发明可用于虚拟网络中对任意数据进行验证并对已验证的数据进行交易。
背景技术:
由于数据与传统产品相比,存在容易复制、篡改和丢失等特点,所以在进行数据交易时,人们往往采用线下面对面交易或是对交易数据进行加密后,再进行线上交易。因此,使用安全的数据交易方法来保证数据交易过程中数据所有者和数据购买者的权益是有必要的,这样可以有效地保证交易顺利完成。
北京明朝万达科技股份有限公司在其申请的专利文献“一种基于区块链的数据交易方法和系统”(公开号:cn107784546a,申请号:201610799011.x,申请日:2016年08月31日)中公开了一种基于区块链的数据交易系统和方法。该系统包括:至少两个可信节点、至少一个大数据中心;由所述至少两个可信节点及大数据中心组建大数据交易区块链但是,该系统仍然存在的不足之处是,该系统需要可信节点及大数据中心,系统的构建过于复杂。该方法的步骤包括:由所述大数据交易区块链中的可信节点与所述大数据交易区块链建立智能合约;当建立所述智能合约的可信节点向所述大数据交易区块链发起数据交易请求时,所述大数据交易区块链对所述数据交易请求认证通过后,按照所述智能合约执行数据交易合约。但是,该方法仍然存在的不足之处是,进行数据交易完全依赖智能合约,只有通过可信节点才可以进行交易,并且没有验证数据的方法。
广东工业大学在其申请的专利文献“一种基于区块链的数据交易方法及系统”(公开号:cn108681898a,申请号:201810491753.2,申请日:2018年05月15日)中公开了一种基于区块链的数据交易系统,应用发布终端,用于生成与发布的应用对应的智能交易合约,并将所述智能交易合约,部署至区块链网络;其中,所述智能交易合约用于建立存在数据交易需求双方间的交易渠道,第一数据终端具体为获取自身的身份识别信息和各所述预设周期的周期起始时间,建立密钥保存队列,并利用所述密钥保存队列成对的保存每对公钥和私钥,第二数据终端用于:向位于所述区块链网络中的所有节点广播自己的公钥,以使第一数据终端利用所述第二数据终端的公钥加密所述目标种类数据对应的数据索引和解密密钥。但是,该系统仍然存在的不足之处是,第一终端需要建立密钥保存队列,保存公钥和私钥,必须保证第一终端为可信机构。该申请还同时公开了一种基于区块链的数据交易方法,利用区块链的去中心化特性解决了集中式存储的缺陷,每个用户都是区块链网络中的一个节点,通过将智能交易合约部署至区块链网络,以期建立数据生成方和数据购买间的数据交易通道,数据存储方面选用存储成本较低、安全性能较高的分布式存储网络,将可交易数据以密文形式存储并生成数据量极小的数据索引以便定位对应的密文,区别于直接将数据保存至区块链网络,可有效降低数据存储成本。同时,区块链网络会保存所有交易记录,并同步至所有节点,极大的避免了遭到篡改的可能性,也使得所有交易记录公开、透明。但是,该方法仍然存在的不足之处是,区块链网络仅保存交易记录,并且没有数据验证的方法,无法在交易完成后反映数据质量。
技术实现要素:
本发明的目的在于针对上述现有技术的不足,提出一种去中心化的数据验证及数据安全交易系统及方法,用户匿名注册,已注册的用户通过身份认证模块,将各自当前的身份选择为数据出售方、数据购买方、临时维护人员,建立一个私有区块链,用于记录用户的验证记录、交易信息及信誉信息,克服了数据验证及数据交易过程中需要第三方的问题,实现了数据的公平交易。
实现本发明目的的思路是,用户通过身份认证模块注册并选择身份,数据出售方模块处理需要出售的数据,维护人员模块选择临时维护人员,数据购买方模块和数据购买方模块通过临时维护人员,验证分割后的数据及对称密钥的哈希值,确保数据购买方模块没有篡改数据及对称密钥,通过查看解密出的部分明文,验证数据的内容;数据出售方和数据购买方通过公有区块链交易加密数据的密钥,确保数据出售方得到货币的同时,数据购买方得到加密数据的密钥,实现密钥及货币的公平交易;用户匿名注册,数据出售方和购买方通过平台交易数据,由注册的用户担任平台的临时维护人员,使用私有区块链记录用户的验证记录、交易信息及信誉信息;
本发明去中心化的数据验证及数据安全交易系统,包括数据出售方模块、数据购买方模块、身份认证模块、信息发布模块、维护人员模块、随机数生成模块;所述数据出售方模块分别与维护人员模块、身份认证模块、信息发布模块、随机数生成模块相连,数据购买方模块分别与维护人员模块、身份认证模块、信息发布模块相连,维护人员模块分别与身份认证模块、信息发布模块、随机数生成模块相连;其中:
所述数据出售方模块,用于处理数据;接收临时维护人员发送的随机数;加密随机数对应的对称密钥;将对称密钥的密文、数据文件的密文文件、数据文件的密文文件的签名、对称密钥的密文文件、对称密钥的密文文件的签名发送给临时维护人员;交易加密的rsa私钥;在公有区块链上生成手续费交易;生成对维护人员的评价信息,登记到私有区块链;
所述身份认证模块,用于记录每个用户将其公有区块链公钥;为每个用户分配唯一对应的身份编号;将已注册的用户的身份选择为数据出售方、数据购买方、临时维护人员;
所述数据购买方模块,用于申请验证数据;接收临时维护人员发送的随机数和数据购买方的公有区块链公钥;解密对称密钥的密文;计算对称密钥的哈希值;从数据文件的密文文件中,提取出随机数对应的加密数据的密文;解密提取出的密文;计算随机数对应的数据文件的明文的哈希值;判断对称密钥的哈希值与对称密钥的哈希值文件中的哈希值是否相等,判断数据明文的哈希值与数据文件的哈希值文件的哈希值是否相等;申请购买数据;生成购买rsa私钥的交易;加密公有区块链特殊交易中的随机数,将加密后的随机数,通过临时维护人员发送给数据出售方模块;提取rsa私钥;解密对称密钥的密文文件中所有对称密钥的密文;解密数据文件的密文文件中所有密文;将分割后数据的明文合成一个文件;生成对数据及维护人员的评价信息,登记到私有区块链;
所述信息发布模块,用于接收并存储数据出售方模块发送的数据文件的哈希值文件及签名、对称密钥的哈希值文件及签名、分割前数据的摘要;生成数据对应的数据编号;
所述维护人员模块,用于授权所有已注册用户查看该私有区块链,授权临时维护人员在该区块链登记用户的验证记录及交易记录,授权数据出售方在该私有区块链登记他对临时维护人员的评价,授权数据购买方在该私有区块链登记他对已购买数据的评价以及对临时维护人员的评价;选择临时维护人员;通过信息发布模块,查找数据购买方发送的数据编号对应的数据提供方,将数据提供方及数据购买方的身份编号发送给临时维护人员,并将该临时维护人员踢出队列;判断数据购买方在私有区块链上的验证次数是否达到10次;
所述随机数生成模块,用于生成确定需要验证的数据密文的随机数。
本发明去中心化的数据验证及数据安全交易方法的具体步骤如下:
(1)用户匿名注册:
每个用户将其公有区块链公钥记录在身份认证模块中,身份认证模块为每个用户分配唯一对应的身份编号,实现用户的匿名注册;
(2)用户选择身份:
已注册的用户通过身份认证模块,将各自当前的身份选择为数据出售方、数据购买方、临时维护人员;
(3)数据出售方模块处理数据:
(3a)利用等比特分割的工具,将需要出售的数据文件分割为1000份,得到分割后的数据文件;
(3b)使用高级加密标准aes对称密钥生成算法,生成1000个对称密钥,使用每一个对称密钥逐一加密分割后的数据文件,得到分割后数据文件的密文;
(3c)使用安全抗碰撞的哈希函数,计算每个分割后的数据文件的哈希值和对称密钥的哈希值;
(3d)使用rsa-oaep算法,生成一对rsa公钥私钥对,使用其中的rsa公钥,对每个对称密钥逐一加密,得到每个对称密钥的密文;
(3e)将分割后的1000个数据文件密文级联成数据文件的密文文件;将1000个对称密钥的密文级联成对称密钥的密文文件;将1000个分割后数据文件的哈希值级联成数据文件的哈希值文件;将1000个对称密钥的哈希值级联成对称密钥的哈希值文件;
(3f)利用椭圆曲线签名算法,分别对数据文件的密文文件、对称密钥的密文文件、数据文件的哈希值文件、对称密钥的哈希值文件签名;
(3g)将数据文件的哈希值文件及签名、对称密钥的哈希值文件及签名发送给信息发布模块,信息发布模块存储上述两个文件及签名,数据出售方将分割前数据的摘要发送给信息发布模块,信息发布模块存储该摘要,并生成该数据对应的数据编号;
(4)维护人员模块建立私有区块链:
维护人员模块建立一个私有区块链,用于记录用户的验证记录、交易信息及信誉信息;维护人员模块授权所有已注册用户查看该私有区块链,授权临时维护人员在该区块链登记用户的验证记录及交易记录,授权数据出售方在该私有区块链登记他对临时维护人员的评价,授权数据购买方在该私有区块链登记他对已购买数据的评价以及对临时维护人员的评价;
(5)数据购买方模块申请验证数据:
(5a)查看信息发布模块中的摘要,根据摘要查找自己感兴趣的数据,查看私有区块链,确认数据出售方的信誉信息,将该数据的编号发送给维护人员模块;
(5b)维护人员模块通过选择临时维护人员的方法选择一名临时维护人员;
(5c)维护人员模块通过信息发布模块,查找数据购买方发送的数据编号对应的数据提供方,将数据提供方及数据购买方的身份编号发送给临时维护人员,并将该临时维护人员踢出队列;
(6)数据购买方模块验证数据:
(6a)临时维护人员通过随机数生成模块,生成用于确定需要验证的数据密文的随机数,通过身份认证模块查看数据购买方的公有区块链公钥,将随机数和数据购买方的公有区块链公钥发送给数据出售方模块,将随机数发送给数据购买方模块;
(6b)数据出售方模块利用公有区块链公钥加密算法,使用数据购买方的公有区块链公钥,加密随机数对应的对称密钥,得到对称密钥的密文;
(6c)数据出售方模块将对称密钥的密文、数据文件的密文文件、数据文件的密文文件的签名、对称密钥的密文文件、对称密钥的密文文件的签名发送给临时维护人员,由临时维护人员转发给数据购买方;
(6d)数据购买方模块利用公有区块链私钥解密算法,解密对称密钥的密文,得到随机数对应的对称密钥,利用安全抗碰撞的哈希函数,计算对称密钥的哈希值;
(6e)数据购买方模块从数据文件的密文文件中,提取出随机数对应的加密数据的密文;
(6f)数据购买方模块使用随机数对应的对称密钥解密提取出的密文,得到随机数对应的数据文件的明文,使用抗碰撞的哈希函数计算随机数对应的数据文件的明文的哈希值;
(6g)数据购买方模块查看随机数对应的数据文件的明文;
(6h)临时维护人员将数据购买方选择的数据的验证次数登记在私有区块链上;
(7)数据购买方模块判断对称密钥的哈希值与对称密钥的哈希值文件中的哈希值是否相等,若是,则执行步骤(8),否则,执行步骤(12);
(8)数据购买方模块判断数据明文的哈希值与数据文件的哈希值文件的哈希值是否相等,若是,则执行步骤(9),否则,执行步骤(12);
(9)维护人员模块判断数据购买方在私有区块链上的验证次数是否达到10次,若是,执行步骤(10),否则,执行步骤(5);
(10)数据购买方模块申请购买数据:
(10a)数据购买方模块将需要购买的数据的编号发送给维护人员模块;
(10b)通过选择临时维护人员的方法,维护人员模块选择一名临时维护人员;
(10c)维护人员模块通过信息发布模块查到数据购买方发送的数据编号对应的数据出售方,将该数据出售方及数据购买方的身份编号发送给临时维护人员,将该临时维护人员踢出队列;
(11)数据购买方模块购买数据:
(11a)临时维护人员将数据出售方的公有区块链的公钥发送给数据购买方模块;
(11b)利用公有区块链特殊交易生成方法,数据购买方模块生成购买rsa私钥的交易;
(11c)利用公有区块链公钥加密算法,数据购买方模块加密公有区块链特殊交易中的随机数,将加密后的随机数,通过临时维护人员发送给数据出售方模块;
(11d)利用达成公有区块链特殊交易的方法,数据出售方模块交易加密的rsa私钥;
(11e)利用rsa私钥提取方法,数据购买方模块提取rsa私钥;
(11f)数据购买方模块使用rsa私钥解密对称密钥的密文文件中所有对称密钥的密文,得到所有对称密钥的明文,使用对称密钥解密数据文件的密文文件中所有密文,得到数据出售方分割后数据的明文,将分割后数据的明文合成一个文件,得到数据购买方所购买的数据;
(11g)数据出售方模块在公有区块链上生成手续费交易,向临时维护人员支付手续费;
(11h)临时维护人员将手续费的交易记录登记到私有区块链;
(11i)数据出售方模块生成对维护人员的评价信息,登记到私有区块链,数据购买方模块生成对数据及维护人员的评价信息,登记到私有区块链;
(12)退出系统。
本发明与现有技术相比具有以下优点:
第一,由于本发明的系统中的数据出售方模块和维护人员模块相连,数据购买方模块和维护人员模块相连,数据出售方和数据购买方通过临时维护人员验证及交易数据,克服了现有技术中需要可信节点及大数据中心的缺点,使得本发明的系统结构更加简单,同时降低了通信过程中数据泄露的可能性。
第二,由于本发明的方法使用私有区块链记录用户的验证记录、交易信息及信誉信息,克服了现有技术中的方法无法反映已交易的数据质量,无法反映用户的可信程度的缺点,使得本发明在用户购买数据前,可以为用户提供参考信息,避免用户买到质量差的数据。
第三,由于本发明的方法通过对比数据文件及对称秘钥哈希值、查看随机数对应的明文验证数据,利用达成公有区块链特殊交易的方法,交易加密的rsa私钥,克服了现有技术中的方法交易数据完全依赖智能合约的功能,无法在数据交易前验证数据的缺点,使得本发明的方法能够实现数据公平交易。
附图说明
图1为本发明系统的方框图;
图2为本发明方法的流程图。
具体实施措施
下面结合附图对本发明做进一步的详细描述。
参照附图1,对本发明的系统做进一步的详细描述。
本发明的系统包括数据出售方模块、数据购买方模块、身份认证模块、信息发布模块、维护人员模块、随机数生成模块;所述数据出售方模块分别与维护人员模块、身份认证模块、信息发布模块、随机数生成模块相连,数据购买方模块分别与维护人员模块、身份认证模块、信息发布模块相连,维护人员模块分别与身份认证模块、信息发布模块、随机数生成模块相连。
所述数据出售方模块,用于处理数据;接收临时维护人员发送的随机数;加密随机数对应的对称密钥;将对称密钥的密文、数据文件的密文文件、数据文件的密文文件的签名、对称密钥的密文文件、对称密钥的密文文件的签名发送给临时维护人员;交易加密的rsa私钥;在公有区块链上生成手续费交易;生成对维护人员的评价信息,登记到私有区块链。
所述身份认证模块,用于记录每个用户将其公有区块链公钥;为每个用户分配唯一对应的身份编号;将已注册的用户的身份选择为数据出售方、数据购买方、临时维护人员。
所述数据购买方模块,用于申请验证数据;接收临时维护人员发送的随机数和数据购买方的公有区块链公钥;解密对称密钥的密文;计算对称密钥的哈希值;从数据文件的密文文件中,提取出随机数对应的加密数据的密文;解密提取出的密文;计算随机数对应的数据文件的明文的哈希值;判断对称密钥的哈希值与对称密钥的哈希值文件中的哈希值是否相等,判断数据明文的哈希值与数据文件的哈希值文件的哈希值是否相等;申请购买数据;生成购买rsa私钥的交易;加密公有区块链特殊交易中的随机数,将加密后的随机数,通过临时维护人员发送给数据出售方模块;提取rsa私钥;解密对称密钥的密文文件中所有对称密钥的密文;解密数据文件的密文文件中所有密文;将分割后数据的明文合成一个文件;生成对数据及维护人员的评价信息,登记到私有区块链。
所述信息发布模块,用于接收并存储数据出售方模块发送的数据文件的哈希值文件及签名、对称密钥的哈希值文件及签名、分割前数据的摘要;生成数据对应的数据编号。
所述维护人员模块,用于授权所有已注册用户查看该私有区块链,授权临时维护人员在该区块链登记用户的验证记录及交易记录,授权数据出售方在该私有区块链登记他对临时维护人员的评价,授权数据购买方在该私有区块链登记他对已购买数据的评价以及对临时维护人员的评价;选择临时维护人员;通过信息发布模块,查找数据购买方发送的数据编号对应的数据提供方,将数据提供方及数据购买方的身份编号发送给临时维护人员,并将该临时维护人员踢出队列;判断数据购买方在私有区块链上的验证次数是否达到10次。
所述随机数生成模块,用于生成确定需要验证的数据密文的随机数。
参照附图2,对本发明的方法做进一步的详细描述。
步骤1,用户匿名注册。
每个用户将其在公有区块链注册过的公有区块链公钥,记录在身份认证模块中,身份认证模块为每个用户分配唯一对应的身份编号,实现用户的匿名注册。
身份编号用于通过身份认证模块查找用户的公有区块链公钥;利用公有区块链的匿名性,达到本方法匿名注册的目的。
步骤2,用户选择身份。
已注册的用户通过身份认证模块,将各自当前的身份选择为数据出售方、数据购买方、临时维护人员。
用户通过身份认证模块选择完身份后,可以通过数据出售方模块处理需要出售的数据,或者通过数据购买方模块验证数据,或者通过维护人员模块成为临时维护人员。
步骤3,数据出售方模块处理数据。
利用等比特分割的工具,将需要出售的数据文件分割为1000份,得到分割后的数据文件。
使用高级加密标准aes对称密钥生成算法,生成1000个对称密钥,使用每一个对称密钥逐一加密分割后的数据文件,得到分割后数据文件的密文。
使用安全抗碰撞的哈希函数,计算每个分割后的数据文件的哈希值和对称密钥的哈希值。
使用rsa-oaep算法,生成一对非对称公钥私钥对,使用该rsa公钥对每个对称密钥进行逐一加密,得到对称密钥的密文。由于原本的rsa没有随机数,存在安全性问题,这里必须使用rsa-pss算法生成公钥私钥对。
所述的rsa-oaep算法的具体步骤如下:
密钥生成过程:
第一步,选择两个大素数p和q,且2511<p<2512,2511<q<2512,计算rsa的模数n=p·q和模数n的欧拉函数
第二步,选择整数e,其中e与
第三步,计算私钥
公钥为(n,e),私钥为(n,d);
加密过程:
第一步,在消息m末尾填充len1个0,得到长度达到lenrsa-len0的消息m',随机生成长度为len0字符串ran,计算:
em=x||y
其中,len1和len0表示两个指定的字符串长度,lenrsa表示rsa的模数n的位数,h1表示安全抗碰撞的哈希函数,输出位数为lenrsa-len0,h2表示另一个安全抗碰撞的哈希函数,输出位数为len0,em为填充后的数据;
第二步,转换填充后的数据:
em=eml-1·256l-1+eml-2·256l-2+...+em1·256+em0
emi=eml-i
em=em1em2...eml
其中,em表示转换后的数据;
第三步,使用rsa加密算法加密转换后的数据:
cip=eme(modn)
其中,cip表示加密后的密文,(n,e)表示rsa公钥;
第四步,转换加密后的数据:
cip=cipl-1·256l-1+cipl-2·256l-2+...+cip1·256+cip0
cipi=cipl-i
cip=cip1cip2...cipl
其中,cip为加密后的密文;
解密过程:
第一步,转换密文:
cip=cipl-1·256l-1+cipl-2·256l-2+...+cip1·256+cip0
cipi=cipl-i
cip=cip1cip2...cipl
第二步,使用rsa解密算法解密转换后的密文:
em=cipd(modn)
其中,d表示rsa私钥;
第三步,转换解密后的密文:
em=eml-1·256l-1+eml-2·256l-2+...+em1·256+em0
emi=eml-i
em=em1em2...eml
第四步,去除填充数据,恢复明文:
x||y=em
第五步,去掉m'末尾的len1个字符0,恢复出消息m。
将分割后的1000个数据文件密文级联成数据文件的密文文件;将1000个对称密钥的密文级联成对称密钥的密文文件;将1000个分割后数据文件的哈希值级联成数据文件的哈希值文件;将1000个对称密钥的哈希值级联成对称密钥的哈希值文件。
利用椭圆曲线签名算法,分别对数据文件的密文文件、对称密钥的密文文件、数据文件的哈希值文件、对称密钥的哈希值文件签名。
椭圆曲线签名算法的具体步骤如下:
第一步,按照下式,计算消息的哈希值:
e=h(m)
其中,e表示消息的哈希值,h(·)表示安全抗碰撞哈希函数,m表示要签名的消息;
第二步,按照下式,计算签名消息:
s=f-1(e+r·l)(modn)
其中,s表示签名消息,f-1表示不同于f的整数,且满足f-1·f=1(modn),f表示该地址的秘密值,r表示秘密值对应的公钥,l表示该地址的私钥。
将数据文件的哈希值文件及签名、对称密钥的哈希值文件及签名发送给信息发布模块,信息发布模块存储上述两个文件及签名,数据出售方将分割前数据的摘要发送给信息发布模块,信息发布模块存储该摘要,并生成该数据对应的数据编号。
步骤4,维护人员建立私有区块链。
维护人员模块建立一个私有区块链,用于记录用户的验证记录、交易信息及信誉信息。
维护人员模块授权所有已注册用户查看该私有区块链,授权临时维护人员在该区块链登记用户的验证记录及交易记录,授权数据出售方在该私有区块链登记他对临时维护人员的评价,授权数据购买方在该私有区块链登记他对已购买数据的评价以及对临时维护人员的评价。
步骤5,数据购买方模块申请验证数据。
查看信息发布模块中的摘要,根据摘要查找自己感兴趣的数据,查看私有区块链,确认数据出售方的信誉信息,将该数据的编号发送给维护人员模块。
维护人员模块通过选择临时维护人员的方法选择一名临时维护人员。
所述的选择临时维护人员的方法如下:
第一步,按照注册的先后顺序建立已注册用户队列,队列中的每个用户通过私有区块链上队列中其他用户的信誉信息,对队列中其他用户投同意票或是反对票,维护人员模块将收到反对票超过队列人数一半以上的用户踢出队列,将剩余队列中队首的用户作为下一个临时维护人员;
第二步,队列外的已注册用户,按照申请加入队列的先后顺序排在队列的末尾;原队列中的每个用户通过私有区块链上新加入队列的用户的信誉信息,对新加入队列的用户投同意票或是反对票,维护人员模块将收到反对票超过队列人数一半以上的用户踢出队列。
维护人员模块通过信息发布模块,查找数据购买方发送的数据编号对应的数据提供方,将数据提供方及数据购买方的身份编号发送给临时维护人员,并将该临时维护人员踢出队列。
步骤6,数据购买方模块验证数据。
临时维护人员通过随机数生成模块,生成用于确定需要验证的数据密文的随机数,通过身份认证模块查看数据购买方的公有区块链公钥,将随机数和数据购买方的公有区块链公钥发送给数据出售方模块,将随机数发送给数据购买方模块。
数据出售方模块利用公有区块链公钥加密算法,使用数据购买方的公有区块链公钥,加密随机数对应的对称密钥,得到对称密钥的密文。
所述的公有区块链公钥加密算法如下:
选择随机数r,计算:
r=r·g
c=m+r·pk
其中,g表示椭圆曲线上的基点,m表示需要加密的消息,(r,c)表示计算出的秘密值,pk表示公有区块链公钥。
数据出售方模块将对称密钥的密文、数据文件的密文文件、数据文件的密文文件的签名、对称密钥的密文文件、对称密钥的密文文件的签名发送给临时维护人员,由临时维护人员转发给数据购买方。
数据购买方模块利用公有区块链私钥解密算法,解密对称密钥的密文,得到随机数对应的对称密钥,利用安全抗碰撞的哈希函数,计算对称密钥的哈希值,对比该哈希值与对称密钥的哈希值文件中的哈希值。
所述的公有区块链私钥解密算法如下:
m=c-sk·r
其中,sk表示公有区块链私钥,m表示解密出的消息。
数据购买方模块从数据文件的密文文件中,提取出随机数对应的加密数据的密文。
数据购买方模块使用随机数对应的对称密钥解密提取出的密文,得到随机数对应的数据文件的明文,使用抗碰撞的哈希函数计算该明文的哈希值,对比该哈希值与数据文件的哈希值文件中的哈希值。
数据购买方模块查看随机数对应的明文。
临时维护人员将数据购买方对该数据的验证次数登记在私有区块链上。
步骤7,数据购买方模块判断对称密钥的哈希值与对称密钥的哈希值文件中的哈希值是否相等,若是,则执行步骤(8),否则,执行步骤(12)。
步骤8,数据购买方模块判断数据明文的哈希值与数据文件的哈希值文件的哈希值是否相等,若是,则执行步骤(9),否则,执行步骤(12)。
步骤9,维护人员模块判断数据购买方在私有区块链上的验证次数是否达到10次,若是,执行步骤(10),否则,执行步骤(5)。
步骤10,数据购买方模块申请购买数据。
数据购买方模块将需要购买的数据的编号发送给维护人员模块。
维护人员模块通过选择临时维护人员的方法选择一名临时维护人员。
所述的选择临时维护人员的方法如下:
第一步,按照注册的先后顺序建立已注册用户队列,队列中的每个用户通过私有区块链上队列中其他用户的信誉信息,对队列中其他用户投同意票或是反对票,维护人员模块将收到反对票超过队列人数一半以上的用户踢出队列,将剩余队列中队首的用户作为下一个临时维护人员;
第二步,队列外的已注册用户,按照申请加入队列的先后顺序排在队列的末尾;原队列中的每个用户通过私有区块链上新加入队列的用户的信誉信息,对新加入队列的用户投同意票或是反对票,维护人员模块将收到反对票超过队列人数一半以上的用户踢出队列。
维护人员模块通过信息发布模块查到数据购买方发送的数据编号对应的数据出售方,将该数据出售方及数据购买方的身份编号发送给临时维护人员,将该临时维护人员踢出队列。
步骤11,数据购买方模块购买数据。
临时维护人员将数据出售方的公有区块链公钥送给数据购买方。
利用公有区块链特殊交易生成方法,数据购买方模块生成购买rsa私钥的交易。
所述的公有区块链特殊交易生成方法如下:
第一步,生成随机数r,r与
其中,
第二步,将公有区块链交易的花费的额外条件设置为:
其中,si表示数据购买方选择的密钥的密文,ki表示与对称密钥的密文对应的明文,x表示数据出售方需要提供的秘密值,pkm表示数据出售方的公有区块链公钥,pkc表示数据购买方的公有区块链公钥,timelock表示时间锁。
利用公有区块链公钥加密算法,数据购买方模块加密公有区块链特殊交易中的随机数,将加密后的随机数,通过临时维护人员发送给数据出售方模块。
所述的公有区块链公钥加密算法如下:
选择随机数r,计算:
r=r·g
c=m+r·pk
其中,g表示椭圆曲线上的基点,m表示需要加密的消息,(r,c)表示计算出的秘密值,pk表示公有区块链公钥。
所述的公有区块链私钥解密算法如下:
m=c-sk·r
其中,sk表示公有区块链私钥,m表示解密出的消息。
利用达成公有区块链特殊交易的方法,数据出售方模块交易加密的rsa私钥。
所述的达成公有区块链特殊交易的方法如下:
第一步,利用随机数r,计算数据出售方需要提供的秘密值:
其中,x表示数据出售方需要提供的秘密值,r-1表示r模
第二步,利用公有区块链公钥及x达成条件
利用rsa私钥提取方法,数据购买方模块提取rsa私钥。
所述的rsa私钥提取方法如下:
第一步,通过公有区块链查看数据出售方完成的交易,得到
第二步,计算rsa私钥:
其中,d表示rsa私钥。
数据购买方模块使用rsa私钥解密对称密钥的密文文件中所有对称密钥的密文,得到所有对称密钥的明文,使用对称密钥解密数据文件的密文文件中所有密文,得到数据出售方分割后数据的明文,将分割后数据的明文合成一个文件,得到数据购买方所购买的数据。
数据出售方模块在公有区块链上生成手续费交易,向临时维护人员支付手续费。
临时维护人员将手续费的交易记录登记到私有区块链。
数据出售方模块生成对维护人员的评价信息,登记到私有区块链,数据购买方模块生成对数据及维护人员的评价信息,登记到私有区块链。
步骤12,退出系统。