一种基于零知识证明的区块链账户模型隐私保护方法技术

技术编号:21300143 阅读:32 留言:0更新日期:2019-06-12 08:04
本发明专利技术公开了一种基于零知识证明的区块链账户模型隐私保护方法,包括以下步骤:转账人将明文余额转换为零知识余额;对零知识余额进行转账操作;转账人更新自己的余额;收款人更新自己的余额;用户将零知识余额转换为明文余额。本发明专利技术将零知识证明和区块链账户模型结合,实现了交易数据的隐私保护,可以有效保证数据不被泄漏。通过本发明专利技术技术方案,明文的数据交易将会被隐藏,虽然知道双方进行了某笔无标记的交易,但是当同时进行许多笔交易时,就会产生许多个发送方与接收方,这样每笔特定交易的双方就被掩盖起来了,无法将交易双方对应起来,并且交易金额完全保密。

A Privacy Protection Method for Block Chain Account Model Based on Zero Knowledge Proof

The invention discloses a block chain account model privacy protection method based on zero-knowledge proof, which includes the following steps: the transferor converts the clear balance into zero-knowledge balance; transfers the zero-knowledge balance; the transferor updates its own balance; the payee updates its own balance; and the user converts the zero-knowledge balance into clear balance. The invention combines zero knowledge proof with block chain account model, realizes the privacy protection of transaction data, and can effectively ensure that data is not leaked. Through the technical scheme of the invention, the plaintext data transaction will be hidden. Although it is known that both parties have made an unmarked transaction, when many transactions are carried out simultaneously, many senders and receivers will be generated, so that the two sides of each particular transaction will be covered up, the two sides of the transaction can not correspond to each other, and the transaction amount is completely confidential.

【技术实现步骤摘要】
一种基于零知识证明的区块链账户模型隐私保护方法
本专利技术属于区块链及信息安全
,具体涉及一种基于零知识证明的区块链账户模型隐私保护方法。
技术介绍
区块链作为一种不可篡改和不可伪造的分布式账本,实质上是一种链式数据结构,这种链式数据结构特点在于按照时间顺序将数据区块以顺序相连的方式组合。区块链系统分为UTXO(unspendtransactionoutput)和账户两种模型体系,账户模型系统中由每一个账户负责对应的事务处理,类似于银行账户,这也是我们日常生活中最成熟的交易模型;UTXO是指地址上所有未花费交易的总和,它的最小单位是交易,每个交易对应到金额。区块链中每一个参与者都能够获得完整的数据备份,所有交易数据都是公开和透明的,这个是区块链的特点,这种特点对于某些应用是优点,但在很多情况下这是个缺点,现有的绝大部分具有隐私保护(即保护交易双方信息以及交易内容不被第三方知晓)功能的区块链如zcash是基于UTXO的。关于区块链的隐私保护问题,目前有混币、环签名、同态加密、零知识证明等几种方式:混币原理(CoinJoin)的实现思路是割裂输入地址和输出地址之间的关系。在一个交易中,假如有很多人参与,其中包括大量输入和输出,这样会比较难在输入和输出中找出每个人的对应对,这样一来,输入与输出之间的联系被事实上割裂;多次混币、每次少量币,效果更好。此方法虽然高度匿名,但其风险评估不到位,必须信赖匿名的第三方。环签名是一种简化的类群签名,它因为签名由一定的规则组成一个环而得名。在环签名方案中,环中一个成员利用他的私钥和其他成员的公钥进行签名,但却不需要征得其他成员的允许,而验证者只知道签名来自这个环,但不知到谁是真正的签名者。环签名解决了对签名者完全匿名问题,环签名允许一个成员代表一组人进行签名而不泄漏签名者的信息,但环签名技术只解决了交易者匿名问题,无法对交易内容进行隐私保护。同态加密是一种无需对加密数据进行提前解密就可以执行计算的方法,通过使用同态加密技术在区块链上存储数据可以达到一种完美的平衡,不会对区块链属性造成任何重大的改变,可利用加法同态加密技术隐藏区块链上的交易金融和用户余额,且保证其余用户对公共账目上余额的操作,但同态加密无法确认交易的一致性,缺少对交易有效性的验证环节。零知识证明作为一种密码学技术,起源于最小泄漏证明,证明者能够在不向验证者泄漏关于被证明消息的情况下使验证者相信该消息是正确的;零知识证明技术即可以证明消息的正确性,又可以不泄露消息的具体信息。相应地,目前流行的zk-SNARK(zero-knowledgeSuccinctNon-interactiveARgumentofKnowledge)即为零知识证明的标准代码库,已经成功应用到匿名数字货币ZeroCash中,而基于零知识证明得区块链账户模型隐私保护方法目前应用较少。现有的基于账户模型的区块链模型比如以太坊并不能保护用户的隐私,交易的双方以及金额都会明文记录在区块中,任何人都可以查看这些内容,故本专利技术的目的就在于为交易双方保护隐私。
技术实现思路
鉴于上述,本专利技术提供了一种基于零知识证明的区块链账户模型隐私保护方法,将零知识证明和区块链账户模型结合,实现了交易数据的隐私保护,可以有效保证数据不被泄漏。一种基于零知识证明的区块链账户模型隐私保护方法,包括如下步骤:(1)转账人将明文余额转换为零知识余额;(2)对零知识余额进行转账操作;(3)转账人更新自己的余额;(4)收款人更新自己的余额;(5)用户将零知识余额转换为明文余额。其中步骤(1)必须先执行,步骤(2)~(4)可循环执行,步骤(5)的执行可选可不选。进一步地,所述步骤(1)的具体实现过程为:首先定义明文余额转换为零知识余额的零知识转化函数Mint;然后调用函数Mint对指定账户的明文余额进行转化并产生相应的零知识证明,该证明内容包括:①证明转化前指定账户的零知识余额确实是由该账户已有的明文余额币值转化而来;②证明当前指定账户待转化的零知识余额确实是由明文余额币值转化而来且币值小于该账户当前持有的明文余额;③证明转化操作完成后指定账户的零知识余额确实为转化前的零知识余额与新转化的零知识余额的累加。进一步地,所述步骤(2)的具体实现过程如下:2.1转账人选择一个随机数,并利用椭圆曲线的基点在椭圆曲线上相应生成一个随机的点;2.2使用Diffie-Hellman密钥交换(一种确保共享KEY安全穿越不安全网络的方法,目的在于使得两个用户安全地交换一个秘密密钥,以便用于以后的报文加密)计算得到收款人相应的随机化公私钥;2.3定义转账交易函数Send,调用函数Send进行转账操作并产生相应的零知识证明,该证明内容包括:①证明转账人当前的零知识余额确实是由转账人已有明文余额转化而来的且已有的零知识余额大于待转账的零知识余额;②待转账的零知识余额确实是由转账人实际转账的明文余额转化而来的;2.4待转账的零知识余额使用默克尔树进行组织处理,记录在以零知识余额rtcmt为树根的默克尔树上(记录在区块头部);2.5交易双方所共享的参数使用收款人随机化公钥加密,转账交易产生后,转账人将该交易的哈希值通过链下告知收款人,转账交易记录上链,转账人当前账户的零知识余额所对应的序列号链上公开。进一步地,所述步骤(3)的具体实现过程如下:对于记录在区块链上的转账交易,定义相应的转账人更新零知识余额函数Update,转账人通过调用函数Update进行零知识余额更新操作并产生相应的零知识证明,该证明内容包括:①证明存在一个零知识余额,确实是由转账人账户的明文余额转化而来,并记录在以零知识余额rtcmt为树根的默克尔树上,此过程中使用的参数为交易发起方在转账操作中生成转账交易所缓存的参数;②证明转账人当前的零知识余额确实是由其账户的明文余额币值转化而来;③证明更新后账户的零知识余额确实为转账人账户已有的零知识余额与转账消耗的零知识余额的差值;最后,转账人根据转账交易变量使用一个新的序列号关联更新后的零知识余额,并通过矿工共识验证后更新转账人的零知识余额。进一步地,转账人账户的零知识余额发生改变后,需使用一个新的序列号关联起来,以保证同一个零知识余额不被多次花费,当前账户内零知识余额减去已转账的零知识余额确定更新后的零知识余额。进一步地,所述步骤(4)的具体实现过程如下:4.1收款人根据记录在区块链上的转账交易中的属性值,计算其随机公钥对应的私钥,并利用该私钥解密交易双方所共享的参数;4.2定义收款人更新零知识余额函数Deposit,收款人通过调用函数Deposit进行零知识余额更新操作并产生相应的零知识证明,该证明内容包括:①证明存在一个新产生的零知识余额记录在以零知识余额rtcmt为根的默克尔树上;②证明收款人当前的零知识余额确实是由其账户的明文余额币值转化而来;③证明更新后账户的零知识余额确实为收款人账户已有的零知识余额与转账收到的零知识余额的加和;4.4最终共识验证上述零知识证明的合法性,验证存款账户的数字签名(即将摘要信息用发送者的私钥加密,与原文一起传送给接收者,保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生)是相对于随机化公钥的合法签名,并通过矿工共识验证后更新收款人的本文档来自技高网
...

【技术保护点】
1.一种基于零知识证明的区块链账户模型隐私保护方法,包括如下步骤:(1)转账人将明文余额转换为零知识余额;(2)对零知识余额进行转账操作;(3)转账人更新自己的余额;(4)收款人更新自己的余额;(5)用户将零知识余额转换为明文余额。

【技术特征摘要】
1.一种基于零知识证明的区块链账户模型隐私保护方法,包括如下步骤:(1)转账人将明文余额转换为零知识余额;(2)对零知识余额进行转账操作;(3)转账人更新自己的余额;(4)收款人更新自己的余额;(5)用户将零知识余额转换为明文余额。2.根据权利要求1所述的区块链账户模型隐私保护方法,其特征在于:所述步骤(1)的具体实现过程为:首先定义明文余额转换为零知识余额的零知识转化函数Mint;然后调用函数Mint对指定账户的明文余额进行转化并产生相应的零知识证明,该证明内容包括:①证明转化前指定账户的零知识余额确实是由该账户已有的明文余额币值转化而来;②证明当前指定账户待转化的零知识余额确实是由明文余额币值转化而来且币值小于该账户当前持有的明文余额;③证明转化操作完成后指定账户的零知识余额确实为转化前的零知识余额与新转化的零知识余额的累加。3.根据权利要求1所述的区块链账户模型隐私保护方法,其特征在于:所述步骤(2)的具体实现过程如下:2.1转账人选择一个随机数,并利用椭圆曲线的基点在椭圆曲线上相应生成一个随机的点;2.2使用Diffie-Hellman密钥交换计算得到收款人相应的随机化公私钥;2.3定义转账交易函数Send,调用函数Send进行转账操作并产生相应的零知识证明,该证明内容包括:①证明转账人当前的零知识余额确实是由转账人已有明文余额转化而来的且已有的零知识余额大于待转账的零知识余额;②待转账的零知识余额确实是由转账人实际转账的明文余额转化而来的;2.4待转账的零知识余额使用默克尔树进行组织处理,记录在以零知识余额rtcmt为树根的默克尔树上;2.5交易双方所共享的参数使用收款人随机化公钥加密,转账交易产生后,转账人将该交易的哈希值通过链下告知收款人,转账交易记录上链,转账人当前账户的零知识余额所对应的序列号链上公开。4.根据权利要求3所述的区块链账户模型隐私保护方法,其特征在于:所述步骤(3)的具体实现过程如下:对于记录在区块链上的转账交易,定义相应的转账人更新零知识余额函数Update,转账人通过调用函数Update进行零知识余额更新操作并产生相应的零知识证明,该证明内容包括:①证明存在一个零知识余额,确实是由转账人账户的明文余额转化而来,并记录在以零知识余额rtcmt为树根的默克尔树上,此过程中使用的参数为交易发起方在转账操作中生成转账交易所缓存的参数;②证明转账人当前的零知识余额确实是由其账户的明文余额币值转化而来;③证明更新后账户的零知识余额确实为转账人账户已有...

【专利技术属性】
技术研发人员:黄步添俞之贝杨文龙蔡玉生卢瑞瑞
申请(专利权)人:杭州云象网络技术有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1