[发明专利]一种区块链的数据可追踪方法有效
申请号: | 201810862064.0 | 申请日: | 2018-08-01 |
公开(公告)号: | CN109274481B | 公开(公告)日: | 2020-03-27 |
发明(设计)人: | 马添军;徐海霞;李佩丽;穆永恒 | 申请(专利权)人: | 中国科学院数据与通信保护研究教育中心 |
主分类号: | H04L9/06 | 分类号: | H04L9/06;H04L9/08;H04L9/14;H04L9/32;H04L29/06 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 司立彬 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 区块 数据 追踪 方法 | ||
1.一种区块链的数据可追踪方法,其步骤包括:
1)监管机构生成公共参数pp;各用户生成自己的注册信息Cloginfo并发送给监管机构;
2)监管机构验证用户的注册信息,并将各注册用户身份所对应的h||CHid公开;h为变色龙哈希的公钥,CHid为身份id的变色龙哈希值;
3)当区块链应用中的数据需要间接参与用户的公开信息且需要提供身份证明时;Acreate中的各用户获取Bother中自己所需的间接参与数据创建的用户身份证明;Acreate中各用户创建自己的身份证明,然后生成数据datatrace=[{proofid}id∈I,databody]crytool并发送到节点网络中;其中,{proofid}id∈I为用户身份证明集合,身份id的用户身份证明为proofid,I为需提供身份证明的用户身份id集合,Acreate={a1,...,an}是直接参与数据创建且需提供身份证明的用户公开信息集合,Bother={b1,...,bn’}是间接参与数据创建且需提供身份证明的用户公开信息集合;databody包含数据内容以及不需要提供身份证明的用户公开信息,crytool代表密码学工具;
4)每当节点网络中的验证节点收到用户数据,会验证数据中的用户身份和数据内容,如果均通过验证,则将数据记入区块中,之后节点网络根据共识机制对网络中的某个区块达成共识,并记入区块链;
5)监管机构从区块链获取数据,并对数据中相应的密文进行解密,之后查询相关记录得到每个数据所对应的身份集合;
其中,所述公共参数pp=(pkloginfo,vkloginfo,pkidproof,vkidproof,pkau,ppchash);(pkloginfo,vkloginfo)为证明(statement,witness)∈Rloginfo的证明密钥/验证密钥对,(pkidproof,vkidproof)为证明(statement′,witness′)∈Ridproof的证明密钥/验证密钥对,pkau为监管机构的公钥,ppchash为变色龙哈希方案的公共参数,陈述statement=(id,g,h,CHid),证据witness=(x,r),关系Rloginfo为:{(statement,witness)|h=gx∧CHid=gidhr};陈述statement′=(rt,pub,g,pkau,Cid),证据witness′=(pathid,CHid,x,h,priv,r′,rn),关系Ridproof为:{(statement′,witness′)|pub=gen(priv)∧h=gx∧CHid=cham_hash.CHash(h,priv,r′)∧Cid=Γ.ENC(pkau,rn,h)∧TreeBranch(rt,pathid,h||CHid)};其中,g为乘法循环群中阶为q的元素,x为乘法循环群中一随机数,并且是计算CHid的私钥,r为计算CHid的随机数,rt为Merkle树的树根,pathid为从h||CHid到rt的路径,pub为用户的公开信息,priv为用户的私密信息,Cid代表使用监管机构公钥pkau对h加密的密文,rn为用于加密的随机数,注册用户身份所对应的h||CHid以Merkle树的形式公开;
用户使用zk-SNARK证明算法Prove(pkloginfo,statement,witness)生成证明πloginfo;πloginfo用以向监管机构证明用户知道witness使得(statement,witness)满足关系Rloginfo,但不会泄露关于证据witness的任何信息;用户保存(id,g,h,CHid,x,r),并使用监管机构公钥将(statement,πloginfo)加密发送给监管机构
监管机构收到密文后解密恢复出(statement,πloginfo),首先检查身份id的有效性,然后使用zk-SNARK验证算法Verify(vkloginfo,statement,πloginfo)来验证用户是否知道证据witness使得(statement,witness)满足关系Rloginfo;若验证都通过,则保存(h,id,CHid),并将h||CHid以Merkle树的形式公开;
生成所述身份证明的方法为:身份id的用户P注册成功后,从监管机构公开的Merkle树中获取路径pathid,然后根据所拥有的公开信息和私密信息(pub,priv),计算r′=cham_hash.UForge(CK,id,r,priv),其中CK代表生成身份id的变色龙哈希的私钥,之后用户P使用监管机构公钥对h进行加密得密文Cid=Γ.ENC(pkau,rn,h);用户P生成陈述statement′=(rt,pub,g,pkau,Cid)和证据witness′=(pathid,CHid,x,h,priv,r′,rn),然后使用zk-SNARK证明算法Prove(pkidproof,statement′,witness′)生成证明πid,最终用户P得到关于身份id的证明信息proofid=(statement′,πid);
验证节点使用zk-SNARK验证算法Verify(vkidproof,proofid)来验证用户是否知道证据witness′使得(statement′,witness′)满足关系Ridproof,若验证通过,则身份证明合法,否则身份证明验证失败;
监管机构从区块链数据datatrace中获取密文集合对于密文集合C中每一计算其中skau为监管者私钥,查询(h,id,CHid)记录,获取hi所对应的身份idi并将idi加入到身份集合ID中;最终,获取datatrace所对应的身份集合ID。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院数据与通信保护研究教育中心,未经中国科学院数据与通信保护研究教育中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810862064.0/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置