本发明涉及区块链多链、溯源存储,尤其是涉及溯源存储方法、溯源方法、溯源存储系统及溯源系统。
背景技术:
1、区块链是一种公开且分布式的账本,采用去中心化的记录方式,区块链与溯源结合,可以利用区块链来构建新的信任体系,所有上传区块链的数据,不会被第三方或者任何一方随意修改。在现有的点对点(peer to peer,简称p2p)区块链网络模型中,所有网络节点都参与数据存储,生成的区块需要在全网节点之间进行验证。这种方法存在系统事务吞吐量和数据存储冗余低的问题。因此,设计一个合理的存储机制来提高存储容量是溯源研究领域的一个重要问题。
2、现有区块链溯源存储方案首先是采用链上链下协作存储来提高存储容量,增加系统的灵活性。常见的有基于云的链下存储和基于inter planetary file system(ipfs)的链下存储。其次,现有方案中溯源数据存储常使用单链,受限于网络中单节点的性能极限,无法满足应用的性能、容量、隐私、扩展、用户体验及其他要求。因此需要多链的溯源存储方案,提供溯源系统的可扩展性、高性能、互操作等特性。
3、另外,在区块链中所有记录到区块链节点上的数据,可根据时间戳来追溯历史记录,保证了目录数据在区块链的可控环境下进行数据交换。在数据交换的同时,并不是所有数据都是公开的,涉及大量隐私数据,共享数据很容易导致个人隐私泄露。因此多链存储模型下的用户的隐私性和数据的安全性问题必须考虑。
技术实现思路
1、本发明提供了溯源存储方法、溯源方法、溯源存储系统及溯源系统,利用区块链技术去中心化、不可篡改的特点,解决可信第三方带来的信任问题,保证了区块链的完整性和安全性;采用多链进行数据存储,提高存储容量和查询效率。
2、本发明实施例的第一方面公开了溯源存储方法,包括如下步骤:
3、s1.生成数据拥有者私钥skowner和数据使用者私钥skuser,并由各自私钥计算出数据拥有者公钥pkowner和数据使用者公钥pkuser;
4、s2.在上传数据时,将交易信息分为公开信息和隐私信息,使用私钥skowner对所述公开信息进行对称加密得到公开信息密文,对所述隐私信息进行属性加密得到隐私信息密文;
5、s3.使用私钥skowner对所述公开信息密文和隐私信息密文产生的摘要进行签名,得到签名signowner;
6、使用私钥skuser对所述公开信息密文和隐私信息密文产生的摘要进行签名,得到签名signuser;
7、s4.使用公钥pkowner对所述公开信息密文、隐私信息密文和签名signuser进行加密,得到第一密文数据;
8、使用公钥pkuser对所述公开信息密文、隐私信息密文和签名signowner进行加密,得到第二密文数据;
9、s5.将所述公开信息密文和隐私信息密文的哈希值记录在链上,将所述第一密文数据和第二密文数据存储在链外。
10、在一些实施例中,s1中包括:
11、生成主密钥mk和公钥pk,并定义用户属性集y;
12、使用密文策略属性基加密方法在访问结构下加密隐私信息m,得到密文c;
13、通过所述主密钥mk的方式创建与所述用户属性集y相关联的解密密钥dk。
14、本发明实施例的第二方面公开了溯源方法,包括如下步骤:
15、执行上述的溯源存储方法;
16、获取私钥skowner,对所述第一密文数据进行解密,得到所述公开信息密文、隐私信息密文和签名signuser;
17、获取公钥pkuser,对所述公开信息密文、隐私信息密文和签名signuser,进行解密和解签名,得到所述公开信息、隐私信息和摘要;
18、和/或,
19、获取私钥skuser,对所述第二密文数据进行解密,得到所述公开信息密文、隐私信息密文和签名signowner;
20、获取公钥pkowner,对所述公开信息密文、隐私信息密文和签名signowner,进行解密和解签名,得到所述公开信息、隐私信息和摘要。
21、在一些实施例中,将加密前的所述摘要与解密后得到的所述摘要进行比较,若一致,则数据没有被篡改。
22、本发明实施例的第三方面公开了溯源存储系统,包括:
23、密钥生成模块,用于生成数据拥有者私钥skowner和数据使用者私钥skuser,并由各自私钥计算出数据拥有者公钥pkowner和数据使用者公钥pkuser;
24、第一加密模块,用于在上传数据时,将交易信息分为公开信息和隐私信息,使用私钥skowner对所述公开信息进行对称加密得到公开信息密文,对所述隐私信息进行属性加密得到隐私信息密文;
25、签名模块,用于使用私钥skowner对所述公开信息密文和隐私信息密文产生的摘要进行签名,得到签名signowner;
26、使用私钥skuser对所述公开信息密文和隐私信息密文产生的摘要进行签名,得到签名signuser;
27、第二加密模块,用于使用公钥pkowner对所述公开信息密文、隐私信息密文和签名signuser进行加密,得到第一密文数据;
28、使用公钥pkuser对所述公开信息密文、隐私信息密文和签名signowner进行加密,得到第二密文数据;
29、存储模块,同于将所述公开信息密文和隐私信息密文的哈希值记录在链上,将所述第一密文数据和第二密文数据存储在链外。
30、在一些实施例中,溯源存储系统还包括:
31、第一处理器,与所述密钥生成模块、第一加密模块、签名模块、第二加密模块和存储模块连接;
32、第一存储器,与所述第一处理器连接,并存储有可在所述第一处理器上运行的第一计算机程序;其中,当所述第一处理器执行所述第一计算机程序时,所述第一处理器控制所述密钥生成模块、第一加密模块、签名模块、第二加密模块和存储模块工作,以实现上述的溯源存储方法。
33、本发明实施例的第四方面公开了溯源系统,包括:
34、第一解密模块,用于获取私钥skowner,对所述第一密文数据进行解密,得到所述公开信息密文、隐私信息密文和签名signuser;
35、第二解密模块,用于获取公钥pkuser,对所述公开信息密文、隐私信息密文和签名signuser,进行解密和解签名,得到所述公开信息、隐私信息和摘要;
36、和/或,
37、第三解密模块,用于获取私钥skuser,对所述第二密文数据进行解密,得到所述公开信息密文、隐私信息密文和签名signowner;
38、第四解密模块,用于获取公钥pkowner,对所述公开信息密文、隐私信息密文和签名signowner,进行解密和解签名,得到所述公开信息、隐私信息和摘要。
39、在一些实施例中,溯源系统还包括:
40、第二处理器,与所述第一解密模块、第二解密模块、第三解密模块和第四解密模块连接;
41、第二存储器,与所述第二处理器连接,并存储有可在所述第二处理器上运行的第二计算机程序;其中,当所述第二处理器执行所述第二计算机程序时,所述第二处理器控制所述第一解密模块、第二解密模块、第三解密模块和第四解密模块工作,以实现上述的溯源方法。
42、本发明实施例的第五方面公开了计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取所述计算机指令时,所述计算机执行如上述的溯源存储方法,和/或,如上述的溯源方法。
43、综上所述,本发明至少具有以下有益效果:
44、本发明在多链模型中提高溯源存储的可扩展性,利用区块链技术去中心化、不可篡改的特点,解决可信第三方带来的信任问题,保证了区块链的完整性和安全性;利用多链技术,解决了所有数据存在一条链上的存储容量问题,提高存储可扩展性的同时提高了查询效率;利用基于属性加密,加密隐私信息,解决了隐私信息的泄露,只有符合特定访问结构的用户才能获取隐私信息。
45、采用多链溯源模型,当数据拥有者上传数据时,用一条链记录交易密文的哈希值;数据处理者收到数据拥有者上传的数据后,记录其信息;数据使用者收到数据后,交易密文的哈希值单独存储在另一条链上。不同的身份所产生的交易密文的哈希值记录在各自的链上,原始信息加密存储在链外,实现存储容量的扩展。通过溯源让数据流向有迹可循,让数据拥有者知道自己的数据流向以及数据使用者知道使用数据的来源。当数据存储在多条链时,采用中继链实现链与链之间数据的交互。
46、针对多链存储模型下的用户的隐私性和数据的安全性问题,将密文策略属性基加密(cp-abe)与多链溯源存储模型结合,将不同身份的用户构造属于自己的属性集,当有数据使用者需要访问数据拥有者的隐私数据时,只有满足特定访问结构的数据使用者才能读取隐私数据,保证数据隐私,并实现特定用户数据共享。