zkLedger: Privacy-Preserving Auditing for Distributed Ledgers

                                                             世界上第一个能保护隐私同时实施有效审计监管的区块链系统 

解决的问题和挑战

分布式账本(例如区块链)使金融机构能够有效地协调跨组织交易。例如,银行可能会使用分布式帐本作为数字资产的结算日志。但是这些帐本或者完全公开给所有参与者,揭示了敏感的策略和交易信息,或者是私有的,在不向审计员透露交易内容的情况下不支持第三方审计。如何在保护参与者隐私的情况下,向监管机构提供审计和财务监督能力,同时能高效的运行,成为分布式账本在金融领域遇到的主要挑战。

创新点

作者来自于MIT的Media Lab,论文中设计的zkLedger是世界上第一个能同时保护参与者隐私并提供快速的正确的审计和监管的系统。zkLedger主要有三个创新点:

1)     同时支持隐私保护和审计支持。通过使用Schnorr型非交互式零知识证明的新证明方案提供快速,丰富的审计支持。与zk-SNARK不同,该技术不需要可信赖的设置,只依赖广泛使用的加密假设。

2)     提供了完整性。通过使用多栏式总账账本结构,银行不能向审计员隐藏交易。

3)     高效。设计了zkLedger的分布式版本,通过缓存“承诺”和审计令牌,该版本可以为账本上的审计查询产生可靠的正确答案,完成十万次交易审计耗时少于10毫秒。

系统设计

1)   ZkLedger系统设计

ZkLedger系统设计整体架构如下图所示,包含系统参与者,交易,账本三部分。

 

l  系统参与者

作者假定有N个参与者Bank1,… BankN和一个审计师。银行之间进行数字资产的交易,审计师通过对交易数据进行一些查询操作来确认是否合规或是否存在风险。

l  交易

在zkLedger中,银行之间的每一条交易对应于在分布式账本中添加一条记录,但这个记录中会隐藏参与交易的参与者和交易的金额,只记录交易的时间和类型。

l  仅可追加记录的账本

参与交易的银行创建相关记录并添加到账本中,这个账本可以是可信任的第三方来维护,也可以建立在现有的公有区块链上,如比特币区块链或以太坊区块链上。

  系统设计主要有三点:

a)     隐藏交易细节,每一条记录无法确认参与者和金额。

b)     使用多栏式总账账本结构, 提供完整性支持,监管者可以验证每一条记录。

多栏式总账账本结构如下图所示,每一条交易数据都包含了每个银行的交易金额的“承诺”( zkLedger使用的是Pedersen承诺算法),“承诺”是交易金额的函数,其中,转出金额的银行的交易金额为负数,转入金额的银行的交易金额为正数,为参与交易的银行的交易金额为0,。由于并不记录交易金额,而是记录的交易金额的“承诺”值,如comm(0), 无法根据“承诺”值确认该银行是否参与了交易。同时,每个银行的所有交易数据都在记帐本里面,要么是真正的参与了交易,要么是伪参与(交易额为0),当审计者向银行询问某种类型的交易时,银行如果隐藏了某种交易,comm验证就后验证失败。

 

 

c)      零知识证明

零知识证明的核心是在不提供交易内容的情况下,让审查人员验证银行答案的正确性。如下图所示,审查人员要调查巴克莱拥有的欧元情况,只需要找到巴克莱的那一列数据中和欧元有关的交易,找到对应的comm值(“承诺”值),以及巴克莱银行的答案,通过分布式账本提供的一系列线性的审查函数验证答案是否正确。如果巴克莱银行隐藏其中的某一条记录就会验证失败。

 

 

 

 

特别地, ZkLedger中采用的是Schnorr型非交互性零知识证明,对各种机密的数据可以生成不同的“承诺”值。

2)   系统效率

zkLedger中使用了一种新颖的多栏式表格结构,交易是一个包含每个参与者的条目的行,空的条目与涉及资产转移的条目无法区分,所有参与者的转账都在分类账中的列中。审计员在审计参与者时审计所有的交易,这遇到了性能和效率方面的挑战。

为了提高效率,作者通过使用“承诺“缓存和审计令牌来解决该问题。

a)     缓存

每个参与者和审计人员对”承诺“进行缓存,每个参与者列的”缓存“不断更新,这使得生成资产证明和回答审计变得很快。

b)     审计令牌

为了减少沟通成本,zkLedger的设计使参与者不必为交易构建证据,用户可以单独创建交易(这与其他区块链系统的工作方式类似),但是恶意的消费者可能会尝试在其他银行的承诺中编码不正确的值,为此,作者设计了一套每个人都可以公开验证的证明,含有不正确证据的交易将被忽略。每个参与者都有一个审计令牌,他们可以使用该令牌稍后为该行开放承诺,并确保所有证明和承诺是一致的。审计令牌和一致性证明可公开验证交易的有效性,同时不泄露任何交易信息。另外,令牌是针对特定银行编码的,因此一家银行的令牌不能被另一家银行用来骗取审计师。

含有令牌的交易项如下图所示,其中Bank3下面的Token下标错了,不是token2,应该是Token3。

 

posted @ 2018-05-10 10:00  Joe_jiang  阅读(1034)  评论(1编辑  收藏  举报