zkLedger-Privacy-Preserving-Auditing-for-Distributed-Ledgers
slug
series-status
status
summary
date
series
type
password
icon
tags
category
摘要
- 对于联盟链来说分类账要么对所有参与者完全公开,暴露了敏感的策略和交易信息,要么是私有的,但不支持第三方审计,而不向审计师透露交易内容。
- 然而审计和财务监督对于证明机构遵守法规至关重要。
- 因此,本文提出了zkLedger,这是第一个保护分类账参与者的隐私并提供快速、可证明正确的审计的系统。
示例
- 审计员向银行发出询问,例如 "你的资产负债表上某项数字资产的未偿付金额是多少?",并得到回应和密码学保证该回应是正确的。
实现概述
- 首先,zkLedger通过使用Schnorr型非交互式零知识证明的新证明方案提供快速、丰富的审计。
- 与zk-SNARKs不同,我们的技术不需要可信的设置,只依赖于广泛使用的密码学假设。
- 其次,zkLedger提供了完整性;它使用列式账本结构,因此银行不能对审计师隐藏交易,而参与者可以使用滚动缓存来快速产生和验证答案。
结果
- 实现了一个分布式版本的zkLedger,它可以在不到10毫秒的时间内对审计师在一个有十万笔交易的账本上的查询产生可证明正确的答案。
引言
- 由于第三方审计机构的信任问题,最近,金融机构正在探索分布式账本(或区块链),以减少在有多个不信任方的环境中的验证和对账成本。
- 分布式账本可以让所有参与者进行实时验证(称为公共可验证性),但代价是隐私--每个参与者都必须下载所有交易,以验证其完整性。
- 这对于依靠保密来保护战略和知识产权(例如交易策略)的机构,以及必须遵守围绕数据隐私的法律和法规(例如欧洲的《通用数据保护条例》)的组织来说是站不住脚的。
当时支持隐私的分布式账本的两种方案
- 只承诺账本上的交易哈希值,使用受信任的第三方独立验证交易
- 使用加密承诺方案来隐藏交易内容
💯 前一类账本的缺点是,参与者不能再验证私人交易的完整性,从而消除了分布式账本的好处。 后一类账本仍然具有公共可验证性,但要么揭示交易图,要么需要可信的设置,如果被破坏,会让对手无法察觉地创造新资产。
- 现有的保护隐私的分布式账本都没有为现实世界的系统提供一个重要的属性--高效审计。
本文提出的方案
- zkLedger,它是第一个支持强大的交易隐私、公共可验证性和实际有用的审计的分布式账本系统。zkLedger提供了强大的交易隐私:对手无法知道谁在参与交易或正在进行多少交易,关键是,zkLedger不会透露交易图,或交易之间的联系。
- 交易的时间和被转移的资产类型是公开的。zkLedger的所有参与者仍然可以验证交易是在维护重要的金融不变性,比如资产的保存,审计师可以向参与者发出丰富的审计查询,并收到与分类账可证明的一致的答案。
- zkLedger支持一套有用的审计原语,包括总和、移动平均数、方差、标准差和比率。审计员可以使用这些基元来衡量整个系统或单个参与者的金融杠杆、资产流动性不足、对手方风险暴露和市场集中度。
示例
- 一组银行可能使用zkLedger为交易数字资产的场外市场构建一个结算日志。在这些市场中,买家和卖家通过电子交易所进行匹配,交易很频繁,快速结算有助于降低对手方风险。
- 一旦交易被确认,银行就可以在zkLedger中作为交易发起资产转移,当分类账被接受时,该交易就会被结算。每家银行都将纯文本交易数据存储在自己的私人数据存储中。
- 在zkLedger中,参与者在分布式账本上存储价值承诺,而不是存储纯文本交易。重要的是,这些承诺可以被同态地组合。
- 一家银行可以向审计师证明它在资产负债表上有多少资产,方法是打开它引用该资产的所有交易承诺的积。审计员可以确认,打开的产品与分类账上的承诺产品是一致的。
难点
- 提供隐私和审计。第一个挑战是如何在保护隐私的同时,允许审计师对账本中的数据进行可证明的正确测量。zkLedger是第一个通过结合几种加密原素同时实现这一目标的系统。为了隐藏数值,zkLedger使用Pedersen承诺。Pedersen承诺可以同态组合,因此验证者可以,例如,确认输出之和小于或等于输入之和,以保存资产。不止如此,审计师可以结合承诺来计算账本中不同行的数值的线性组合。以前的保密区块链系统也使用Pedersen承诺来隐藏价值,但最终暴露了交易之间的联系,并且不支持私人审计。 zkLedger在账本上使用交互式map/reduce范式,使用非交互式零知识证明(NIZKs)来计算超越和的测量。这些是广义施诺尔证明(Generalized Schnorr Proofs),它速度快,只依赖广泛接受的加密假设。银行可证明地重新承诺对账簿中的数值的函数,这让审计师可以计算方差、倾斜和离群值等测量值,而不透露个别交易细节。
- 保证审计的完整性。由于审计师无法确定谁参与了哪些交易,因此zkLedger必须确保在审计过程中,参与者不能遗漏交易以对审计师隐藏资产。我们称这一属性为完整性。同时,我们不希望向审计师透露谁参与了哪些交易。 zkLedger在账本中使用了一种新的表格结构。一笔交易是一个行,其中包括每个参与者的条目,而一个空条目与涉及资产转移的条目是无法区分的。一个参与者的所有转移都在账本中的那一栏。审计员在审计参与者时,会审计每一笔交易,这意味着参与者不能隐藏交易。这带来了效率方面的挑战,zkLedger通过使用承诺缓存和审计令牌来解决这个问题,下文将介绍。
<aside> 💯 表格分类账的概念在这里引入。
</aside>
- 效率。第三个挑战是有效地支持所有的上述功能。zkLedger实现了一些优化:
- 每个参与者和审计师都保持承诺缓存,这是每个参与者在分类账中的滚动产品;这使得生成资产证明和回答审计变得快速。
- 为了减少通信成本,zkLedger被设计成参与者不需要互动来构建交易证明;花费者可以单独创建交易(这与其他区块链系统的工作方式类似)。
- 但是,一个恶意的花费者可以尝试在其他银行的承诺中编码不正确的值--我们必须确保所有的承诺和证明都是正确的,并且每个参与者都有他们需要的东西,以便以后回应审计。
- 为了做到这一点,我们设计了一套证明,每个人都可以公开验证--证明不正确的交易将被忽略。
- 这些证明确保每个参与者都有一个审计令牌,他们可以用这个令牌来开启该行的承诺,并且所有的证明和承诺都是一致的。审计令牌和一致性证明是可以公开验证的,但不会泄露任何交易信息。它们也是非交互式的,所以即使银行无法沟通,zkLedger也会取得进展,而且它们是为特定银行编码的,所以一家银行的令牌不能被另一家银行用来向审计师撒谎。
- 交易创建和验证中最慢的部分是范围证明,它确保资产的价值在预先指定的范围内,并防止恶意攻击者以不可察觉的方式创建新资产。范围证明的大小是其他证明的10倍,需要5倍的时间来证明和验证。
贡献
- zkLedger,第一个实现强隐私和完全审计的分布式账本系统。
- 一种设计,结合了快速的、广为人知的加密基元,使用审计令牌和map/reduce来计算查询的可证明的正确答案。
- 对zkLedger的评估显示了高效的交易创建和审计。
- 对zkLedger可以支持的查询类型的分析,表明zkLedger可以有效地处理一组有用的审计测量。
相关工作
隐私计算
多方计算方案
- 之前的工作提出了一个多方计算方案,其中参与者使用一个安全协议来计算函数的结果,这些函数回答了关于系统性金融风险的问题,这也是zkLedger旨在解决的问题,以及网络安全。
Provisions
- 是一种让比特币交易所证明他们有偿付能力而不透露他们的总持有量的方法。
- Provisions使用资产证明和负债证明,这与我们在zkLedger中使用的零知识证明非常相似。然而,在Provisions中,一个交易所可以从另一个比特币持有者那里 "借用 "私钥,从而证明他们实际上没有持有的资产;事实上,多个交易所可以共享相同的资产。此外,Provisions并没有提供完整性。通过使用分布式账本的柱状结构,zkLedger实现了完整性
Prio
- 不受信任的服务器可以在移动客户端数据上进行私人计算。Prio不在分布式账本上操作,因此不能保证公共可验证性。
- Prio要求所有服务器合作,以使客户端的证明生效;zkLedger可以容忍不合作的参与者。
补充
- 有几个系统使用受信任的硬件提供私有和正确的计算。在我们的设置中,我们不能保证所有参与者都信任同一个硬件供应商。此外,使用这样的系统来审计提供可信硬件的公司,会有利益冲突。
- 有许多系统在加密数据上进行计算,以便在服务器被破坏的情况下保护用户的机密性 。这些系统解决的问题与zkLedger所要解决的问题不同。相反,我们对许多方面产生的私人数据提供互动的、可证明正确的审计。
区块链隐私保护
- 在比特币和大多数其他区块链中,所有交易都是公开的:每个参与者都会收到每笔交易,并可以验证所有细节。用户通过为支付地址生成一次性使用的公钥来创建假名,但交易金额和交易之间的联系仍然是全球可见的。
- 保密交易和保密资产是对比特币的扩展,它们在交易中隐藏资产和金额,同时仍然确保所有参与者可以验证交易。虽然这些系统隐藏了资产和金额,但它们泄露了交易图,并且不支持私人审计--审计师需要访问所有纯文本交易以确保完整性。
- 仅仅是交易图就泄露了大量的信息;例如,有FBI跟踪链接的交易来追踪比特币,并将其作为法庭上的证据的实例存在。
- zkLedger提供了更强的交易隐私和私人审计,但代价是可扩展性。zkLedger中的交易的大小是按照整个系统中的参与者的数量排序的,随着参与者数量的增加,需要更多的时间来产生和验证。这使得zkLedger更适合于参与者较少、需要更多隐私的账本。
Solidus
- Solidus是一个分布式账本系统,它使用Oblivious RAM来隐藏交易图和银行客户之间的金额。虽然这种结构也提供了私人交易,但Solidus只能通过向审计师透露系统中使用的所有密钥来支持审计,并打开交易。 zkLedger在提供私人审计的同时实现了与Solidus类似的性能。
R3的Corda 和 Digital Asset Holding的Global Synchronization Log(GSL)
- R3的Corda和Digital Asset Holding的Global Synchronization Log(GSL)是面向金融机构的分布式账本,依靠可信的第三方来传递信息。在Corda中,公证人验证交易并维护参与者的隐私,而GSL则对其账本进行细分,只在全球范围内存储数值的哈希值并限制对细粒度交易数据的访问。两者都不支持私人审计。
Zerocash 和 Zcash
- 一种基于比特币的匿名加密货币。Zerocash使用zk-SNARKs来隐藏交易金额、参与者和交易图。Zcash中使用的zk-SNARKs可以扩展到处理政策,以执行法规、KYC/AML法律和税收。这些政策不支持任意查询,而是对可以发生的新交易类型进行限制。这些想法还没有在实际系统中实现。
zk-SNARKs
- zk-SNARKs对于某些语句是相当有效的,但不幸的是,这种效率的代价是在设置假设中付出的:到目前为止,所有具体有效的zk-SNARKs都需要一个可信的第三方进行设置。不正确的或被破坏的设置的后果可能是灾难性的:一个能够了解设置过程中使用的秘密随机性的对手可以做出虚假声明的欺诈性证明,这些证明与真实声明的证明是无法区分的。
- 在我们的环境中(国际银行业),这种证明将允许不受限制地创造或破坏金融资产或负债。甚至可能没有一个可行的一方来进行一次性的信任设置。例如,俄罗斯可能不信任美联储或欧洲中央银行,或者从政治上看,这样做可能不合适。虽然有可能减轻这种担忧,例如,通过在多方之间分配设置,但这个过程是繁琐和昂贵的。理想情况下,系统的财务完整性根本不依赖于可信的设置。我们选择将zkLedger的设计中关键的共识部分建立在标准的NIZKs上。
Loading...