首席数据官

Hi, 请登录

一种基于链上链下协同的数据分享方法

一种基于链上链下协同的数据分享方法

1.本发明涉及区块链技术领域,具体涉及一种基于链上链下协同的数据分享方法。

背景技术:

2.区块链技术是一种分布式账本技术,提供了数据的不可篡改,可追溯的特性。但是为了建立这种信任机制。区块链将数据冗余存储在每个节点中,如果将大文件上链会造成很大的负担。常见的做法是将大文件在链下存储,在链上存储文件的指纹信息,如哈希值。

3.目前链上链下数据协同的基本思路为,数据提供者首先将文件上传至传统信息系统,数据的指纹信息上传至区块链。数据使用者从传统信息系统中获取数据文件,并通过查询链上数据的指纹信息,进行对比指纹信息确定数据文件的真实性。由于链下存储通常是在云环境中,云环境通常是半信任的环境。数据有泄漏的风险,因此数据的隐私需要得到保护。常见的密文传输思路有数据提供者下载密文解密后再利用数据请求者的公钥加密后,将密文发送给数据请求者。需要数据提供者反复加解密文件,系统开销大,流程繁琐。

4.为了解决以上问题,如何设计合理的智能合约管理数据分享过程,并在此基础上提供高效可信的数据分享方法,是亟待解决的一个问题。

技术实现要素:

5.针对以上问题,本发明提供了一种基于链上链下协同的数据分享方法,为基于智能合约和代理重加密的链上链下数据协同方法。

6.本发明的主要特点为:个人数据钱包、区块链上智能合约、链下存储系统。所述个人数据钱包包括:钱包地址管理模块、数据令牌模块、区块链交互模块、存储系统交互模块。所述链下存储系统包括:代理中间件、数据库。所述区块链上智能合约包括:数据令牌管理合约。

7.一种基于链上链下协同的数据分享方法,包括如下步骤:(1)系统初始化与用户注册;(2)用户一作为数据提供者,使用个人数据钱包通过数据令牌管理合约铸造数据令牌;(3)用户二作为数据请求者,使用个人数据钱包通过数据令牌管理合约发起数据请求;(4)用户一作为数据提供者使用个人数据钱包通过数据令牌管理合约授权数据请求;(5)用户二作为数据请求者使用个人数据钱包通过数据令牌管理合约和代理中间件访问数据;(6)用户一作为数据提供者使用个人数据钱包通过数据令牌管理合约销毁数据令牌。

8.本发明通过链上智能合约管理数据分享过程,将密文转换过程转移到链下代理重

加密中间件上,能够保证分享数据的保密性、完整性和真实性,并且具有较低的链上开销。

9.步骤(1)中,系统初始化与用户注册的具体步骤如下:(1-1) 在区块链上部署数据令牌管理合约,在区块链下部署存储系统,所述的存储系统包括:代理中间件和数据库,在用户端上部署个人数据钱包,完成系统初始化;数据令牌管理合约包括铸造数据令牌、数据请求、数据授权和数据令牌销毁方法;(1-2) 用户通过用户端采用对应区块链平台要求的算法生成公私钥对,然后通过公钥推算出钱包地址,个人数据钱包保存生成的公私钥对和钱包地址。

10.步骤(2)中,使用个人数据钱包通过数据令牌管理合约铸造数据令牌,具体包括:(2-1) 用户一将要数据传入个人数据钱包,发起数据令牌铸造流程;(2-2)用户一的公钥对步骤(2-1)传入的数据使用哈希算法生成数据的哈希值,并对步骤(2-1)传入的数据进行加密获得密文,并将密文发送到存储系统中,获得密文路径,由用户一填入和个人数据钱包计算生成元数据;

13.(2-3) 个人数据钱包调用区块链的数据令牌管理合约的铸造方法数据销毁技术,传入步骤(2-2)生成的元数据;(2-4) 数据令牌管理合约收到调用后,将调用用户一的钱包地址设为令牌拥有者,并分配一个数据令牌id,铸造一个数据令牌,一个数据令牌包括:令牌id、对应数据的元数据。

11.步骤(2-2)中,由用户一填入和个人数据钱包计算生成元数据具体包括:用户一填入的描述信息、数据类型和数据名称;计算生成的数据的哈希值、密文路径;以及采用的哈希算法。

12.本发明中,通过将发起铸造数据令牌的用户一的钱包地址和数据的元数据写入区块链。依赖于区块链的不可篡改特性,能够证明用户一对数据的拥有权。配合密文的链下保存,可以保证数据的真实性、完整性和保密性。

13.步骤(3)中,使用个人数据钱包通过数据令牌管理合约发起数据请求,具体包括:(3-1) 用户二通过个人数据钱包调用区块链的数据令牌管理合约的数据请求方法,传入所请求的数据令牌id和用户二的公钥;(3-2) 数据令牌管理合约收到调用后,将数据请求添加到数据请求列表中,设置请求状态为未授权,保存用户二的公钥,并发起数据请求事件。

14.步骤(3-2)中,数据请求事件包括请求用户的地址、请求的令牌id、数据令牌所属用户的地址、该次数据请求编号。

15.步骤(4)中,用户一作为数据提供者使用个人数据钱包通过数据令牌管理合约授权数据请求,具体包括:(4-1) 用户一的个人数据钱包监听到步骤(3-2)用户二发起的数据请求事件,如果事件中的数据令牌所属的钱包地址为用户一的个人数据钱包的地址,则向用户一发起授权确认请求;(4-2) 用户一收到授权请求后,选择是否同意授权,如果选择同意,个人数据钱包使用自己的密钥和对方的公钥生成代理重加密密钥,并调用智能合约的同意授权方法,发送重加密密钥,如果选择拒绝则调用智能合约的拒绝授权方法;

小米手机怎么销毁数据_数据销毁技术_常用的数据销毁软件

(4-3) 数据令牌管理合约收到调用后,如果是同意授权,保存重加密密钥,设置授权状态为通过授权,如果是拒绝授权,设置授权状态为拒绝授权,并发起授权结果通知。

16.本发明中,通过数据令牌管理的请求和授权两个方法,提供了对数据的控制访问能力。与现有的基于属性加密的控制访问技术相比,该方法计算量小。

17.步骤(5)中,用户二作为数据请求者使用个人数据钱包通过数据令牌管理合约和代理中间件访问数据,具体包括:(5-1) 用户二的个人数据钱包监听到授权通过事件后,用户二选择访问数据,获取对应的原密文地址、重加密密钥,发送到代理中间件;(5-2) 代理中间件收到用户二的个人数据钱包的请求后,访问数据库获取原密文,利用重加密密钥转换密文,将转换后的新密文返回给用户二的个人数据钱包;(5-3) 用户二的个人数据钱包收到密文后,使用私钥解密密文,得到明文数据,使用数据令牌中的哈希算法计算数据的哈希值,然后判断计算出的哈希值是否与数据令牌中记录的哈希值相等,如果相等则代表数据是原数据文件。否则代表数据被篡改。

18.本发明中,与使用对称密钥加密算法的密文的现有技术相比,数据分享是通过交换加密密钥进行的,一旦在数据分享时泄露了加密密钥,就会导致数据泄露。在本发明中通过生成代理重加密密钥转换密文,存储系统中的数据库所存储的密文数据是使用用户一的公钥加密获得的,只有数据拥有者的私钥泄露会导致数据泄露。另外,通过引入代理中间件进行密文的转换工作,该组件将这部分密文转换的计算移到了链下系统,节省了在区块链上进行计算的开销。

19.步骤(6)中,用户一作为数据提供者使用个人数据钱包通过数据令牌管理合约销毁数据令牌,具体包括:(6-1) 用户一通过个人数据钱包进行数据令牌销毁,调用数据令牌管理合约的销毁方法,发送需要销毁的数据令牌id;(6-2) 数据令牌管理合约收到调用后,判断发起人的地址是否是数据令牌的拥有者,如果是则删除对应数据令牌,发起数据令牌销毁事件;(6-3) 代理中间件监听到销毁事件,删除数据库中对应的数据文件。

20.本发明中,数据令牌管理合约提供的数据令牌销毁方法可以防止旧数据对存储系统的压力。

21.与现有技术对比,本发明的有益效果主要表现在:1、设计基于智能合约的数据令牌,便于数据分享过程的控制。2、分享数据采用密文存储在链下传统信息系统,以链上链下数据协同的方式减少链上压力,保护数据隐私。3、采用代理重加密的密文共享机制,能够减少密文传输次数,提升整体数据分享效率,提供访问控制能力。

附图说明

22.图1为本发明系统结构示意图。

23.图2为用户铸造数据令牌的时序图。

24.图3为数据请求、授权、访问时序图。

25.图4为用户销毁数据令牌时序图。

具体实施方式

26.下面将结合附图对本发明作进一步描述。

27.参照图1,一种基于链上链下的协同的数据分享方法,包含以下特点:个人数据钱包、区块链上智能合约、链下存储系统。个人数据钱包包括:钱包地址管理模块、数据令牌模块、区块链交互模块、存储系统交互模块。所述链下存储系统包括:代理中间件、数据库。区块链上智能合约包括:数据令牌管理合约。包括如下步骤:(1) 系统初始化与用户注册;(2) 数据提供者使用个人数据钱包通过数据令牌管理合约铸造数据令牌;(3) 数据请求者使用个人数据钱包通过数据令牌管理合约发起数据请求;(4) 数据提供者使用个人数据钱包通过数据令牌管理合约授权数据请求;(5) 数据请求者使用个人数据钱包通过数据令牌管理合约和代理中间件访问数据;(6) 数据提供者使用个人数据钱包通过数据令牌管理合约销毁数据令牌;假设有两个用户alice和bob,alice为数据提供者,bob为数据请求者。

28.步骤(1)中,系统初始化与用户注册的具体步骤如下:(1-1) 在区块链上部署数据令牌管理合约,部署存储系统包括代理中间件和数据库软件。部署个人数据钱包。

29.(1-2) alice和bob采用ecdsa算法生成公私钥对,并通过公钥推算出钱包地址(address)。参考公式(1),使用密码学安全伪随机数生成器(cspng)生成一个256长度的随机数作为私钥。参考公式(2),通过椭圆曲线密码学算法生成公钥。参考公式(3),钱包地址由公钥经过单向哈希算法sha256和ripemd160生成后,再经过base58check编码后得到。随后个人数据钱包保存生成的公私钥对和地址。

30.其中,cspng为密码学安全伪随机数生成器,seed为生成器种子参数,sk为生成的私钥;其中,g为一个生成点,sk为私钥,pk为生成的公钥;其中,sha256和ripemd160为哈希算法,base58check为编码算法,address为生成的钱包地址。

31.一个生成的公私钥对和钱包地址参考示例如下:{"privatekey":"0xb5f7d093227d0dee1f3ca961d215e0f41f2e1a424f3fd6b90cdf629175154b1c","publickey":"0x04a22333fa5096127fa4e50a0adbad975b3c0ef0af9575454cdc70e353e5c9a2cb5ca1e8e303237dde7bcfcf10fd528418406f3d01c1ce05c02782c15da156ba33","address": "0x15dxjyvf55nfuhwvqfke3upxpanajzh5tk"};

其中,"privatekey"为生成的私钥,"publickey"为生成的公钥,"address"为生成的钱包地址。

32.步骤(2)中,参考图2,数据提供者铸造数据令牌,包括:1.alice铸造数据令牌,上传数据文件;2. alice的个人数据钱包生成对应数据的元数据,加密数据文件;3. 保存加密后的数据文件至数据库中;4. 调用合约的铸造方法;5. 链上数据令牌管理合约保存元信息,拥有者,生成数据令牌;6. 数据令牌id返回至alice的个人数据钱包。

33.数据提供者铸造数据令牌的具体步骤如下:(2-1) alice将数据(file)传入个人数据钱包,发起数据令牌铸造流程。

34.(2-2) 参考公式(4),个人数据钱包使用哈希算法生成数据的哈希值。参考公式(5),使用alice的公钥对数据进行加密,获得密文。随后生成数据的元数据,方式包括用户填入和个人数据钱包计算,元数据包括数据的哈希值、采用的哈希算法、数据类型、数据名称、描述信息、密文路径;其中h为哈希运算,file为数据文件,hashvalue为计算出的哈希值;其中enc为加密运算,file为数据文件,为alice的公钥,为生成的密文。

35.(2-3) 个人数据钱包调用区块链的数据令牌管理合约的铸造方法,传入步骤(2-2)生成的元数据。并将密文发送到存储系统保存。

36.(2-4) 数据令牌管理合约收到调用后,将调用alice的地址设为令牌拥有者,并分配一个数据令牌id。铸造一个数据令牌。一个数据令牌包括:令牌id、对应数据的元数据。

37.步骤(3)中,参考图3,数据请求者发起数据请求,包括:1. bob发起数据请求;2.bob的个人数据钱包向链上数据令牌管理合约发送数据请求。

38.数据请求者发起数据请求的具体步骤如下:(3-1) bob通过个人钱包调用区块链的数据令牌管理合约的数据请求方法,传入所请求的数据令牌id和bob的公钥。

39.(3-2) 数据令牌管理合约收到调用后,将该请求添加到数据请求列表中,设置请求状态为未授权,保存bob的公钥。并发起数据请求事件,事件包括bob的地址、请求的令牌id、数据令牌所

试看结束,如继续查看请付费↓↓↓↓
打赏0.5元才能查看本内容,立即打赏

来源【首席数据官】,更多内容/合作请关注「辉声辉语」公众号,送10G营销资料!

版权声明:本文内容来源互联网整理,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 jkhui22@126.com举报,一经查实,本站将立刻删除。

相关推荐

二维码
评论