论文部分内容阅读
由于区块链具有透明性、容错性和分散性等优点,所以拥有广泛的应用场景,诸如信息共享、版权保护、物流溯源、供应链金融、跨境支付等。作为公共记账本,区块链记录了交易的所有信息,包括账户余额、交易金额和交易双方的信息等。但是,区块链的这一特性也带来了严重的隐私问题。由于任何人都可以访问查看区块链上记录的所有交易信息,所以攻击者可以通过分析大量的交易数据,推断出交易所涉及的相关账户的个人信息。此外,这些交易信息被永久记录在区块链上,这将会导致另一个问题:一旦某笔历史交易泄露了某个用户的真实身份,与该用户相关的所有交易记录中的信息也都将被泄露。因此,保护区块链隐私显得尤为重要。区块链主要有两种流行的余额表示模型:未花费的交易输出(UTXO,Unspent Transaction Output)模型和账户模型。UTXO模型区块链中的交易就像钱包里的现金钞票一样,每个用户将钱包中的现金钞票的数量进行累加即可获得钱包余额;而账户模型区块链中的交易更类似于现代银行系统中的信用卡,始终显示该用户的账户余额;两个模型在其区块链系统中都实现了相同的资金管理。显然,对于用户来说,账户模型区块链比UTXO模型更友好,但是其隐私保护也比UTXO模型更加困难。这是因为在账户模型中,不仅要实现私人资金转移,还要更新相关账户的累计余额。然而,在UTXO模型中,用户可以为自己的账户(实际的钱包)生成许多随机地址,而不必费劲地将每个地址的金额累计在一起。加强隐私保护的一个简单方法是,用户生成许多随机账户地址,并且每个地址只使用一次。然而,对于每个用户以及智能合约来说,持有大量地址都会很麻烦。因此,本文的目标是解决区块链中每个用户只有一个地址/账户的隐私问题,这比UTXO模型更具挑战性。本文基于零知识证明为账户模型区块链设计了一种有效的隐私保护方法,并命名为BlockMaze,旨在保护账户模型区块链的账户隐私信息,主要包括:账户余额、交易发送方、交易接收方和转账金额。为保护账户余额和转账金额,本文利用了承诺机制的隐藏和绑定特性,并提出了一个双余额模型以记录零知识余额和明文余额。为隐藏交易双方间转账关系,本文结合零知识证明机制设计了两步资金转移操作,发送方执行转账操作产生资金转移承诺并将其隐藏到默克尔树中,接收方执行存款操作将默克尔树中具体的资金转移承诺提取并存到自己的账户中。每笔交易的有效合法性,通过零知识证明进行保证,即保证每个账户转账前后的余额变化是合法的,并且同一笔资金不能被多次花费。矿工们验证交易是否有效时,只需要验证每笔交易中所包含的零知识证明,进而更新相应账户的余额即可。此外,本文为BlockMaze提供了一个详细的构造方案,并为相应转账操作的零知识证明设计了电路图。同时,为BlockMaze提供了一个形式化的的安全模型,在此模型下,定义了账本不可区分性、交易不可链接性、交易不可延展性和余额守恒性四大属性,并且证明了 BlockMaze机制的安全性。然后,本文还对BlockMaze的兼容性和可扩展性等实际问题、隐私保护和所面临的攻击进行了的全面讨论。最后,基于Libsnark和Go-Ethereum,对BlockMaze的构造方案进行了具体实现,并且在阿里云上搭建了一个由300节点组成的区块链网络。借助于这个区块链测试网络,本文通过大量的综合实验来评估BlockMaze的性能,其中,300节点搭建的区块链测试网络的实验结果表明BlockMaze能够较快速的计算和处理交易:一笔交易的验证时间大约为13.8毫秒,零知识交易的生成时间大约为4.6~18.2秒,系统在PoW共识算法下每秒大约能处理20笔交易。