1.一种基于隐藏第三方账号的区块链隐私数据管理方法,其特征在于,包括以下步骤:
(1)客户端从其多个第三方信息服务商中选择至少一个第三方信息服务商的地址,获取操作客户端的用户在每一个第三方信息服务商的地址上已经注册过的手机号和对应的密钥,对该第三方信息服务商的地址、手机号、以及密钥进行哈希和处理,以得到对应于该第三方信息服务商的哈希值,并将得到的所有哈希值构造成默克尔树;
(2)客户端随机生成随机数,对步骤(1)中构造的默克尔树的根值和随机数进行哈希和处理,并将得到的哈希值提交到区块链网络,并判断是否从区块链网络接收到交易号,如果接收到则表示哈希值提交成功,并进入步骤(3),否则重复提交操作,直到从区块链网络接收到交易号为止;
(3)客户端在用户丢失私钥之后,生成彼此对应的一对新的公私钥对和用户地址,并对该用户地址和步骤(1)中构造的默克尔树的根值进行哈希和处理,以得到新的哈希值。利用该哈希值和步骤(2)中提交到区块链网络的哈希值生成第一零知识证明,利用用户在第三方信息服务商的地址上已经注册过的手机号和对应的密钥生成第二零知识证明,并将第一零知识证明和第二零知识证明打包成协助恢复资产请求发送给步骤(1)中选择的第三方信息服务商;
(4)接收到协助协助恢复资产请求的第三方信息服务商利用恢复资产请求中的第二零知识证明验证对应的用户是否是该第三方信息服务商提供服务的用户,如果是则转入步骤(5),否则过程结束;
(5)接收到协助协助恢复资产请求的第三方信息服务商利用恢复资产请求中的第一零知识证明验证该用户丢失私钥是否属实,如果属实则向区块链网络提交身份确认凭证,然后转入步骤(6),否则过程结束;
(6)区块链中的节点在收到身份确认凭证后,将其作为叶子节点添加至区块链网络预先建立的验证默克尔树中,并向客户端发送身份确认凭证;
(7)客户端在获取到身份确认凭证之后,使用零知识证明的方法来证明在区块链网络预先建立的验证默克尔树中存在身份确认凭证,并且提交该身份确认凭证的第三方信息服务商的地址位于步骤(1)构造的默克尔树中,从而得到第三零知识证明,并将该第三零知识证明提交给区块链网络;
(8)区块链网络中的节点验证客户端提交的第三零知识证明是否正确,如果验证通过,则返回交易号给客户端,并进入步骤(9),否则返回步骤(6);
(9)客户端判断收到的身份确认凭证的数量是否大于等于恢复阈值,如果是,则进入步骤(10),否则返回步骤(6);
(10)客户端将收到的所有交易号构成的集合、以及步骤(2)所收到的交易号一起打包成交易提交给区块链网络;
(11)区块链网络中的节点验证客户端提交的交易是否有效;如果是则进入步骤(12),否则过程结束;
(12)区块链网络中的节点将用户在区块链网络中的隐私数据恢复到步骤(3)生成的新用户地址上;
(13)区块链网络中的节点判断新用户地址上恢复的隐私数据是否是转账数据,如果是,则利用新用户地址对应的私钥对转账数据进行签名,并将签名后的转账数据转给收账用户,过程结束,否则过程结束。
2.根据权利要求1所述的区块链隐私数据管理方法,其特征在于,所述方法进一步包括在步骤(12)中将用户在区块链网络中的隐私数据恢复到步骤(3)生成的新用户地址上之前,区块链网络中的节点选择等待一段时延,判断是否有其他用户执行隐私数据恢复撤销操作如果有则中断该隐私数据恢复操作,过程结束,否则将用户在区块链网络中的隐私数据恢复到步骤(3)生成的新用户地址上。
3.根据权利要求1或2所述的区块链隐私数据管理方法,其特征在于,身份确认凭证中包括:对步骤(3)中新的公私钥对中的公钥、以及该第三方信息服务商生成的第一随机数进行哈希计算后得到的哈希值,以及利用该公钥对该第三方信息服务商生成的第二随机数进行加密后得到的加密结果。
4.根据权利要求1至3中任意一项所述的区块链隐私数据管理方法,其特征在于,零知识证明的生成和验证过程都是通过Bellman库实现的。
5.根据权利要求1至4中任意一项所述的区块链隐私数据管理方法,其特征在于,恢复阈值应大于等于1,且小于等于步骤(1)中构建的默克尔树中叶子节点的数量。
6.一种基于隐藏第三方账号的区块链隐私数据管理系统,其特征在于,包括:
第一模块,其设置于客户端中,用于从其多个第三方信息服务商中选择至少一个第三方信息服务商的地址,获取操作客户端的用户在每一个第三方信息服务商的地址上已经注册过的手机号和对应的密钥,对该第三方信息服务商的地址、手机号、以及密钥进行哈希和处理,以得到对应于该第三方信息服务商的哈希值,并将得到的所有哈希值构造成默克尔树;
第二模块,其设置于客户端中,用于随机生成随机数,对第一模块构造的默克尔树的根值和随机数进行哈希和处理,并将得到的哈希值提交到区块链网络,并判断是否从区块链网络接收到交易号,如果接收到则表示哈希值提交成功,并进入第三模块,否则重复提交操作,直到从区块链网络接收到交易号为止;
第三模块,其设置于客户端中,用于在用户丢失私钥之后,生成彼此对应的一对新的公私钥对和用户地址,并对该用户地址和第一模块中构造的默克尔树的根值进行哈希和处理,以得到新的哈希值,利用该哈希值和第二模块中提交到区块链网络的哈希值生成第一零知识证明,利用用户在第三方信息服务商的地址上已经注册过的手机号和对应的密钥生成第二零知识证明,并将第一零知识证明和第二零知识证明打包成协助恢复资产请求发送给第一模块选择的第三方信息服务商;
第四模块,其设置于接收到协助协助恢复资产请求的第三方信息服务商中,用于利用恢复资产请求中的第二零知识证明验证对应的用户是否是该第三方信息服务商提供服务的用户,如果是则转入第五模块,否则过程结束;
第五模块,其设置于接收到协助协助恢复资产请求的第三方信息服务商中,用于利用恢复资产请求中的第一零知识证明验证该用户丢失私钥是否属实,如果属实则向区块链网络提交身份确认凭证,然后转入第六模块,否则过程结束;
第六模块,其设置于区块链中的节点中,用于在收到身份确认凭证后,将其作为叶子节点添加至区块链网络预先建立的验证默克尔树中,并向客户端发送身份确认凭证;
第七模块,其设置于客户端中,用于在获取到身份确认凭证之后,使用零知识证明的方法来证明在区块链网络预先建立的验证默克尔树中存在身份确认凭证,并且提交该身份确认凭证的第三方信息服务商的地址位于第一模块构造的默克尔树中,从而得到第三零知识证明,并将该第三零知识证明提交给区块链网络;
第八模块,其设置于区块链网络中的节点中,用于验证客户端提交的第三零知识证明是否正确,如果验证通过,则返回交易号给客户端,并进入第九模块,否则返回第六模块;
第九模块,其设置于客户端中,用于判断收到的身份确认凭证的数量是否大于等于恢复阈值,如果是,则进入第十模块,否则返回第六模块;
第十模块,其设置于客户端中,用于将收到的所有交易号构成的集合、以及第二模块所收到的交易号一起打包成交易提交给区块链网络;
第十一模块,其设置于区块链网络中的节点中,用于验证客户端提交的交易是否有效;
如果是则进入第十二模块,否则过程结束;
第十二模块,其设置于区块链网络中的节点中,用于将用户在区块链网络中的隐私数据恢复到第三模块生成的新用户地址上;
第十三模块,其设置于区块链网络中的节点中,用于判断新用户地址上恢复的隐私数据是否是转账数据,如果是,则利用新用户地址对应的私钥对转账数据进行签名,并将签名后的转账数据转给收账用户,过程结束,否则过程结束。