V神最新论文:隐私池协议如何保护用户隐私又满足合规要求

从隐私角度来看,公共数据集拥有包含每个区块链地址的每笔交易。

今日,V神等人联合撰写了一篇有关隐私协议的研究论文,题目为“Blockchain Privacy and Regulatory Compliance: Towards a Practical Equilibrium”(区块链隐私和监管合规:走向实际平衡)。

论文阐述了一种新的基于智能合约的隐私增强协议——隐私池,并讨论其优缺点,展示其如何平衡诚实用户和不诚实用户。该协议旨在使用零知识证明来验证用户资金的合法性,而不泄露其完整的交易历史记录,在过滤掉与犯罪活动相关资金的同时权衡了隐私和监管要求。

Odaily星球日报现将论文精华编译如下。

一、引言

公共区块链设计上是透明的。基本思想是任何人都可以选择验证交易,而不必依赖于中心化的第三方;通过降低依赖性,为各种应用提供了一个中立的基础,包括但不限于金融和自我主权身份。

然而,从隐私角度来看,公共数据集拥有包含每个区块链地址的每笔交易。每当有人将资产转移到另一个地址,或与智能合约交互时,该交易将永远在区块链上可见。 这显然不符合隐私要求。

例如: Alice  在餐馆用区块链钱包支付晚餐。收款方现在知道了 Alice 的地址,并且可以分析该地址的所有过去和未来活动。同样,Alice 现在知道了餐厅的钱包地址,并可以使用这些信息来获取其他客人的钱包地址或查看餐厅的收入。或者第三方(如社交媒体)知道餐厅和 Alice 钱包地址,就可以轻松推导出 Alice 的实际居住地址,并研究她的过去和未来的交易。

隐私增强协议的兴起是为了解决上述问题。它允许用户将资金存入协议,使用一个地址,并在以后的某个时间点从协议中提取资金,使用另一个地址。所有存款和提款仍然可在区块链上看到,但特定转入与转出的对应关系不再公开。

最著名的隐私增强协议之一是 Tornado Cash。它成功解决了上述问题,允许用户保留一些隐私。然而,除了合法用户试图保护他们的数据之外,Tornado Cash 还被各种不良行为者使用。通过存款数据表明,黑客组织通过该协议转移资金。有证据表明,朝鲜黑客组织也使用了这个隐私增强协议,最终导致该协议的智能合约地址被列入美国外国资产控制办公室(OFAC)维护的特别指定国民和被封锁人员名单(常称为 SDN 名单)。 

Tornado Cash 的关键问题在于合法用户和犯罪用户的分界模糊。因此,Tornado Cash 提供了一个合规功能,允许用户创建一个证据,证明给定提款来自哪个存款。虽然这个机制确实允许人们证明自己的清白,但代价是必须信任一个集中的中介,并且会产生信息不对称。最终,该机制几乎没有用户使用。

本文讨论了这种方法的扩展,使用户能够公开证明关于他们的提款可能来自哪些存款的信息,但又不失隐私。隐私池提出一个通用概念:允许成员资格证明(“我证明我的提款来自这些存款中的一个”)或排除证明(“我证明我的提款不来自这些存款中的任何一个”)。本文讨论了这个提案,并解释了如何使用它来实现诚实和不诚实用户之间的均衡。 

请注意,隐私池通过扩展用户的行动集合提供了额外的选择。如果需要,他们仍然可以向特定的交易对方提供更详细的证明。然而,在某些情况下,成员资格或排除证明可能已经足够。此外,公开发布这些证明的选择与双边披露相比具有许多优势。 

二、技术背景

在本节中,我们提供一个简短的技术概述,并讨论 Privacy Pools(隐私池)等协议的技术构建和一般原则。

1、 ZK-SNARKs 之前的区块链隐私

历史上,区块链的支持者认为,尽管所有交易都是透明的,但区块链可以保护隐私,因为它们提供了匿名性。

随着现代聚类和分析工具的出现,这种隐私保护已经变得不够。为了改善公共区块链的隐私,人们引入了更强大的技术,如代币 Join 和  Monero 。然而,这些技术仍然存在数据泄漏的风险。

随后出现了通用的零知识证明技术,如  Zcash  和 Tornado Cash,可以使每笔交易的匿名集等于所有先前交易的整个集合。这种技术通常被称为 ZK-SNARKs。

2、 ZK-SNARKs

ZK-SNARKs 是一种技术,允许证明者证明某个关于公共数据和私有数据的数学声明,同时满足两个关键属性:零知识和简洁性。

 零知识:除了证明所述的私有数据符合声明之外,不会泄露有关私有数据的任何信息。

● 简洁性:证明很短,并且可以快速验证,即使所证明的声明需要进行耗时的计算。

ZK-SNARKs 受到区块链社区的广泛关注,因为它们在可扩展性方面具有重要意义,例如 ZK-rollups。对于隐私方面的应用,简洁性并不是特别重要,但零知识性是必不可少的。

ZK-SNARKs 证明的”声明”可以看作是一个被称为”电路”的程序类型,它通过公共输入和私有输入计算函数 f(x, w)的结果,然后证明对于给定的公共输入 x,存在一个私有输入 w,使得 f(x, w)的结果为 True。

3、ZK-SNARKs 在 Zcash 和 Tornado Cash 等系统中的应用

不同版本的 Zcash 以及受其启发的系统(如 Tornado Cash)之间存在一些微小的差异。然而,它们所依赖的基本逻辑非常相似。本节描述了一个简单版本,大致对应于这些协议的工作方式。

代币由其所有者持有的秘密 s 组成。可以从 s 中派生出两个值:

● 公共的代币 ID L = hash(s + 1)

● 零化器(nullifier)U = hash(s + 2) 

其中,哈希(hash)指的是密码哈希函数,如 SHA 256 。给定 s,可以计算出代币 ID 和零化器。然而,给定一组零化器和公共代币 ID,哈希函数的伪随机行为确保你无法确定哪个零化器与哪个代币 ID 相关联,除非你知道生成两者的秘密 s。

区块链跟踪已经”创建”的所有代币 ID,以及已经”花费”的所有零化器。这两个集合都在不断增长(除非协议希望强制规定代币必须在何时花费)。 

代币 ID 的集合存储在称为 Merkle 树的数据结构中:如果树包含 N 个项目,则每个相邻的项目进行哈希(导致⌈ N/2 ⌉个哈希),每个相邻的这些哈希再进行哈希(导致⌈ N/4 ⌉个哈希),依次类推,直到整个数据被提交到单个”根哈希”中。 

给定树中的特定值和根哈希,可以提供一个 Merkle 分支:在从该值到根的路径上的每个步骤中一起进行哈希的”姐妹值”。这个 Merkle 分支非常有用,因为它是一个小的(log 2(N)个哈希)数据片段,可用于证明任何特定的值实际上在树中。下图展示了一个高度为 4 的 Merkle 树的示例。 

Tornado Cash

当用户将币发送给其他人时,他们提供以下内容:

● 想要花费的零化器 U

● 想要创建的新代币的代币 ID L’(收件人被要求提供此项)

● 一个 ZK-SNARK。 

ZK-SNARK 包含以下私有输入:

● 用户的秘密 s

● 代币 ID 树中的 Merkle 分支,证明代币 ID 为 L = hash(s + 1)的代币实际上在过去的某个时刻被创建 

它还包含以下公共输入:

● U,正在花费的代币的零化器

● R,Merkle 证据正在针对的根哈希 

ZK-SNARK 证明了两个属性:

● U = hash(s + 2)

● Merkle 分支是有效的 

在 ZK-SNARK 之外,协议还检查以下内容:

● R 是代币 ID 树的当前或历史根哈希

● U 不在已经花费的零化器集合中 

Tornado Cash

如果交易是有效的,它将 U 添加到已花费的零化器集合中,并将 L’添加到代币 ID 列表中。显示 U 防止单个代币被重复花费。然而,不会透露任何其他信息。外部世界只能看到何时发送交易;他们无法获得关于谁发送或接收这些交易的模式,无法区分代币统一来源。

上述模式有两个例外:存款和取款。在存款中,可以创建代币 ID,而无需使某个先前的代币无效。从隐私保护的角度来看,存款并不是匿名的,因为给定的 L 与允许添加 L 的外部事件之间的关联(在 Tornado Cash 中,是将 ETH 存入系统;在 Zcash 中,是新挖掘的 ZEC)是公开的。

换句话说,存款与其过去的交易历史相关联。在取款中,将消耗一个零化器而不添加新的代币 ID。这可能会断开取款与相应存款的连接,并间接断开与过去交易历史的连接。然而,取款可以与取款事件之后发生的任何未来交易相关联。 

Tornado Cash 的第一个版本没有内部转账的概念,它只允许存款和取款。后来的版本,仍处于实验阶段,也允许内部转账和各种面额的币,包括对”分割”和”合并”操作的支持。我们将在后面的章节中讨论如何将基本的隐私保护币转账系统和隐私池扩展到任意面额的情境中。

4、隐私池中的 ZK-SNARKs

隐私池的核心思想是:用户不仅仅通过零知识证明来证明取款与之前的某个存款相关联,还证明其属于一个更严格的关联集合。关联集合可以是之前所做的全部存款的子集,也可以是只包含用户自己存款的集合,或者介于两者之间的任何集合。用户通过提供关联集合的 Merkle 根作为公共输入来指定该集合。

如下图所示,为了简单起见,我们不直接证明关联集合确实是之前所做的存款的子集;相反,我们只要求用户使用相同的币 ID 作为叶子节点,通过零知识证明两个 Merkle 分支:

● 进入总币 ID 集合的根 R 的 Merkle 分支

 进入提供的关联集合根 RA 的 Merkle 分支

Tornado Cash

这样做的意图是将完整的关联集合放置在某个地方(可以是链上)。核心概念是:不要求用户准确地指定他们的取款来自哪个存款,或者在另一极端,除了证明没有双重花费之外,不提供任何其他信息,我们允许用户提供一组可能是资金来源的选项,而这个集合可以根据他们的意愿来选择多宽或多窄。

我们鼓励形成一个生态系统,使用户更容易指定与其偏好相一致的关联集合。本文的其余部分将仅描述基于此简单核心机制的基础设施以及其带来的后果。

三、实际考虑与用例

从应用方面分析隐私增强协议如何在实践中使用。

1、 关联集合的用例 

为了在执法环境中说明该方案的价值,举个例子:

假设我们有五个用户:Alice、Bob、Carl、David、Eve。前四个用户是诚实守法但注重隐私的用户,而 Eve 是一个小偷。因为公众通过标记为“Eve”的地址的硬币是被盗的信息,知晓 Eve 是小偷。在实践中,这种情况经常发生:在公共区块链上,因为 DeFi 协议的漏洞被利用而产生的资金被追踪标记,从而识别流入 Tornado Cash 的非法资金。

当这五个用户每个人提款时,他们可以选择指定哪个关联集合。他们的关联集合必须包括他们自己的存款,但他们可以自由选择包括其他地址中的哪个。前四个用户的动机是一方面,他们想最大程度地保护他们的隐私。这促使他们倾向于使他们的关联集合更大。另一方面,他们希望减少他们的币被商家或交易所视为可疑的机会。有一个简单的方法来做到这一点:他们不包括 Eve 在他们的关联集合中。因此,对于他们四个人来说,选择是明确的:使他们的关联集合为{Alice、Bob、Carl、David}。 

当然,Eve 也想最大化她的关联集合。但她不能排除自己的存款,所以她被迫使她的关联集合等于所有五个存款的集合。参与者的关联集合选择如下图所示。 

Tornado Cash

尽管 Eve 本人没有提供任何信息,但通过简单的排除过程,我们可以得出明确的推论:第五步提款只能来自 Eve。 

2、关联集合的构建 

前一节说明了在类似于隐私池的协议中使用关联集合的一种可能方式,以及诚实参与者如何与不良参与者进行分离。请注意,系统不依赖于 Alice、Bob、Carl 和 David 的利他主义;他们有明确的激励证明他们的分离。 现在让我们更详细地看一下关联集合的构建。通常情况下,有两种主要策略来生成关联集合。它们如下所述,并在下图中进行了可视化。

● 包含(或成员资格):确定一组具体的存款,我们有确切证据认为它们是低风险的,并构建一个只包含这些存款的关联集合。

● 排除:确定一组具体的存款,我们有确切证据认为它们是高风险的,并构建一个包含除这些存款以外的所有存款的关联集合。

Tornado Cash

在实践中,用户不会手动选择要包括在其关联集合中的存款。相反,用户将订阅我们称为关联集合提供者(ASPs)的中间人,这些中间人生成具有特定属性的关联集合。在某些情况下,ASPs 可以完全在链上构建,不需要人工(或 AI)干预。在其他情况下,ASPs 将独立生成关联集合,并将关联集合在链上或其他位置发布。

我们强烈建议至少将关联集合的 Merkle 根发布在链上;这消除了恶意 ASP 对用户进行某些类型的攻击的能力(例如,给不同的用户提供不同的关联集合,试图对其进行去匿名化)。整个集合应该通过 API 或理想情况下通过低成本的分散存储系统(如  IPFS )进行提供。

下载整个关联集合的能力很重要,因为这使得用户可以在本地生成关于成员资格的证明,而不需要向 ASP 透露任何额外信息,甚至不需要透露与其提款相对应的存款。

以下是 ASPs 在实践中可能的构建方式:

● 延迟添加,排除不良参与者:任何存款在固定时间后(例如 7 天)会自动添加到关联集合中,但如果系统检测到某个存款与已知的不良行为(如大规模盗窃或政府公布的制裁名单上的地址)有关联,则永远不会添加该存款。在实践中,这可以通过社区策定的集合或已经执行识别和追踪与不良行为相关的存款工作的现有交易筛选服务提供商来实现。

● 单人每月收费:为了加入关联集合,存款的价值必须低于某个固定的最大值,并且存款人必须用零知识证明他们持有某些身份证明令牌(例如由政府支持的国家身份证系统或轻量级机制,如社交媒体账户验证)。使用一个附加参数混合在一起,表示当前月份的废弃符机制,以确保每个身份每个月仅能将存款提交到关联集合中一次。该设计试图实施许多常见的反洗钱规则的精神,即低于某个阈值的小额支付允许更高级别的隐私。请注意,这可以完全作为智能合约实现,不需要手动监督来维护持续的运行。

● 信任的社区成员每月收费:与单人每月收费类似,但限制更严格:用户必须证明自己是一个高度信任的社区的成员。高度信任的社区成员彼此同意互相提供隐私。

● 基于人工智能的实时评分:AI ASP 系统可以实时为每个存款提供风险评分,并且系统会输出一个包含风险评分低于某个阈值的存款的关联集合。潜在地,ASP 可以输出与多个风险评分阈值相对应的多个集合。

四、进一步的技术说明

在本节中,我们将分析该提案如何支持任意面额,并讨论重新证明、双边直接证明和顺序证明等特殊情况。

1、支持任意面额

上面简化的隐私保护币系统仅支持相同面额的币转账。Zcash 通过使用 UTXO 模型来支持任意面额。每个交易可以有多个输入(需要发布每个输入的零化器)和多个输出(需要发布每个输出的代币 ID)。创建的每个代币 ID 必须附带一个加密的面额值。除了证明零化器的有效性外,每个交易还必须附带额外的证明,证明被创建的币的面额之和不超过被花费的币的面额之和。下图说明了这个额外的证明。

Tornado Cash

这个设计可以通过将存款视为(未加密的)输入和取款视为(未加密的)输出来进行扩展以支持存款和取款。另外,为了简化分析,可以限制设计。例如,可以仅允许部分取款,使交易具有一个加密输入和两个输出:一个表示取款的未加密输出,以及表示剩余资金的加密的“找零”输出,可用于将来的取款。

一个自然的问题是如何扩展这个设计以支持隐私池。将其原封不动地插入隐私池并不理想,因为交易图与我们直观上期望的不一致:如果一个用户存入 10 个代币,然后在四次连续的取款中花费 1 + 2 + 3 + 4 个代币,我们希望将这四次取款都视为原始的 10 个代币存款的来源。但实际上得到的结果如下图所示:第一次取款的来源是 10 个代币的存款,然后第二次取款的来源是第一次取款创建的 9 个代币的找零输出,依此类推。这在实践中会导致问题,因为它要求 ASP 验证中间存款并将其添加到其关联集合中。

Tornado Cash

为了在这个示例中的所有四次取款中都能够将原始的 10 个币存款作为它们的来源,我们需要解决两个问题:

● 确保每次部分取款不会公开地与其他取款相关联

● 允许每次部分取款将存款作为其关联集合的成员

如果我们只支持部分取款,而不是更复杂的多输入多输出交易,并确保每次取款都具有单一定义的对应的”原始存款”,则有多种直接实现这一点的方法。一种自然且可扩展的方法是通过交易传播一些信息的承诺。例如,我们可以要求交易包含一个承诺 hash(coinID+hash®),其中加入一些随机值 r 以保证盲化,并要求 ZK-SNARK 证明交易中的承诺与其父交易相同。如果父交易本身是一次取款,则承诺与原始存款的币 ID 相同,如果父交易是一次存款,则承诺与初始存款的币 ID 相同。因此,链中的每个交易都必须包含对原始存款币 ID 的承诺,并需要证明该值在交易提供的关联集合中。

为了提高抵抗余额合计攻击的隐私性,我们还可以支持币合并。例如,如果我还剩下一些币,我可以在下一次存款时将它们与之合并。为了适应这种情况,我们可以要求交易对一组币 ID 进行承诺,并要求具有多个输入的交易对其父交易的并集进行承诺。一次取款将包含证明其所有承诺的币 ID 都在其关联集合中。

2、特殊情况

● 重新证明:用户需要秘密的存款信息来提取类似隐私池协议中的存款。同样的秘密信息也用于构建关联集合成员证明。保留秘密信息可以让用户生成新的证明,以适应不同集合或更新后的关联集合。这给予用户更大的灵活性,但也可能带来额外的风险。

● 双边直接证明:在某些情况下,用户可能需要向另一方披露取款的确切来源。用户可以创建一个只包含自己存款的关联集合,并生成针对该集合的证明。这些证明通常是例外情况,只在双方共享时对部分隐私起到贡献。然而,共享证明需要建立强烈的信任假设。

● 顺序证明:在一个使用类似隐私池系统的快速交易经济中,需要对协议进行修改以适应这种环境。除了存款和取款交易类型,协议还需要支持内部发送操作,以提高效率。此外,通过传递 Merkle 分支和密钥,用户可以传播与交易历史相关的信息,以便接收方验证资金的来源。这样可以确保每个用户获得所需的最少信息,以对所接收的资金具有信心。

在实践中,一枚代币可能有多个“来源”。例如,Bob 是一家咖啡摊主,他从 Alice 那里收到了 5 枚代币,从 Ashley 那里收到了 4 枚代币,从 Anne 那里收到了 7 枚代币,而在一天结束时他需要向 Carl 支付 15 枚代币来支付晚餐。相反,David 可能从 Carl 那里收到了 15 枚代币,又从 Chris 那里收到了 25 枚代币,并希望向 Emma(一家交易所)存入 30 枚代币。在这些更复杂的情况下,我们遵循同样的原则:足够早已被添加到关联集合中的历史可以被忽略,而较新的历史需要继续传递。

五、更多细节

类似隐私池的系统可以让用户在保持证明与已知非法活动的分离能力的同时,在其金融交易数据隐私方面获得更多保护。我们预计,诚实用户将通过两个因素的结合来激励参与这种方案:

● 对隐私的渴望

● 避免引起怀疑的愿望

1、社会共识和关联集合 

如果在判断资金好坏方面存在完全共识,该系统将产生一个简单的分离均衡。所有拥有“好”的资产的用户都有强烈的激励和能力证明他们属于一个“只有好的”关联集合。另一方面,不良参与者将无法提供这种证明。他们仍然可以将“坏”的资金存入池中,但这不会为他们带来任何好处。每个人都可以轻松地确定资金是从一个增强隐私的协议中提取的,并看到该提款引用了一个包含来自可疑来源的存款的关联集合。更重要的是,“坏”的资金不会玷污“好”的资金。当从合法存款中提取资金时,其所有者可以简单地在他们的关联集合中排除所有已知的“坏”存款。

在存在全局共识的情况下,并且关于资金被认为是“好的”还是“坏的”取决于社会观点或司法管辖权的结论,关联集合可能会有很大的差异。假设有两个具有不同规则集的司法管辖权。A 和 B 司法管辖权下的主体都可以使用相同的隐私增强协议,并选择发出满足各自司法管辖要求的证明。两者都可以轻松地在自己的关联集合中实现隐私,并排除不符合各自司法管辖要求的提款。如果需要,可以对两个关联集合的交集发出成员资格证明,从而可靠地证明与其提款对应的存款符合两个司法管辖权的要求。

因此,该提案非常灵活,并应被视为中立的基础设施。一方面,它对抗审查。它允许任何人加入他们选择的关联集合,并在自己的社区内保持隐私。另一方面,外部人可以要求针对符合其监管要求的特定关联集合的证明。因此,即使在隐私增强协议中存在一个不良参与者的社区,只要信息在关联集合的构建中准确反映,他们将无法掩盖存款的可疑来源。

2、关联集合的属性 

关联集合需要具备一定的属性才能发挥作用。集合需要准确无误,以便用户可以相信他们安全地使用提款后的资金。此外,每个集合的属性应该是稳定的,即随时间变化的可能性较小。这减少了对新集合进行重新验证提款的需求。最后,为了实现有意义的隐私保护,关联集合应足够大且包含各种类型的存款。然而,这些特性彼此之间存在冲突。一般来说,大而多样的集合可能具有更好的隐私属性,但可能不够准确和稳定,而较小的集合更容易维护,但提供的隐私较少。

3、实践考虑和竞争 

接受加密资产的受监管实体必须确保他们所受的法律和法规允许接受此类资金。如今,许多这些实体依赖所谓的交易筛选工具:一种软件或服务,分析区块链以识别潜在的可疑活动、与非法地址的联系或其他不符合要求的交易。筛选工具常通过风险评分来表达与每笔交易相关的风险。此评分基于传输资金的目的地和其交易历史。在这方面,隐私增强协议可能会带来挑战。它们消除了存款和提款之间的可见链接。因此,在隐私增强协议存在的情况下,风险评分需要考虑证明,并根据关联集合分配评分。

交易筛选的工具和服务主要由专业公司提供,这些公司具有区块链分析和相关法律领域的专业知识。理想情况下,这些公司(以及其他任何人)都可以访问所有成员资格证明及其相应的关联集合,以便为所有交易提供准确的风险评分。因此,我们建议所有证明都存储在区块链或其他公开可访问的证明存储库中。唯一的例外是与特定交易对方共享的大小为一的成员资格证明。出于明显的原因,这些证明不应公开提供。

将证明直接存储在链上会增加额外的交易成本,但减少了协调工作,使竞争更加公平,并减轻了筛选工具提供商由于掌握非公开证明的知识而可能形成的准垄断风险。

隐私池的一般设置非常灵活。通过创建特定的关联集合,该协议可以根据各种用例进行定制。以下是这些特殊关联集合的两个示例:

● 商业银行联盟可以创建一个仅包含其客户存款的关联集合。这可以确保任何提款创建的对该集合的证明已在其中一家参与的银行进行了了解您的客户(KYC)和反洗钱(AML)程序,但不会透露哪笔提款属于哪个客户。

● 在需要财务中介明确记录资金来源的情况下,他们可以要求用户提供针对仅包含用户存款的关联集合的证明。然后,这个证明将与中介进行双边交换,使他们能够跟踪资金,就好像用户从未使用隐私池一样。虽然这要求用户相信中介不会透露证明,但理想情况下,它使用户能够遵守法规,而无需将信息透露给公众。

4、设计选择和替代方案

基于关联集合、zk 证明和自愿披露的设置非常灵活。虽然这对于确保该提案可以适应不同的司法管辖权非常有用,但在特定设计选择方面应该非常谨慎。尤其是我们反对的两个潜在调整。我们认为它们在信任要求方面存在问题,并可能产生准垄断的市场结构。以下我们简要描述和讨论这些替代方法:

● 中心化访问:执法机构、加密风险评分提供商或类似的参与者可以获得查看用户交易之间链接的权限,同时对其他人保持隐私。

● 系统范围的白名单:隐私系统可以对可以向其池中存入硬币的用户类型进行限制,要求他们提供附加证明或要求存款在等待一段时间期间,在此期间,中心化的风险评分系统可以拒绝存款。

这两种方法相似,因为它们给予特定实体特权。这将引发复杂的治理问题:谁可以访问这些信息?谁有管理权限的权力?私营公司似乎不是一个好的选择,因为任何特权可能会产生寡头垄断的市场结构,少数公司可以访问能够提供这些服务的数据,而其他人则无法竞争。

同样,在授予公共机构权力时,将面临许多治理和政治问题,特别是在国际环境中。即使到目前为止,某个机构是 100% 值得信赖的,不会滥用权力以追求政治议程,并且没有依赖于可能迫使其滥用权力的其他实体,但这种情况是静止状态的表现。随着时间的推移,组织、成员、国家和组织内的政治结构都会发生变化。可能会有外部压力,这些特权的存在可能会产生额外的激励,以破坏并获得对组织治理系统的影响力。

此外,组织内部或外部的攻击,或中心化实体代表的错误可能会产生深远的后果。我们认为应该防止创建这种中心化的故障点。

话虽如此,我们承认不同的交易规模和情况可能需要不同的证明组合。例如,对于大额交易,许多用户可能最终会在链上提供基本的排除证明,并向其交易对手提供有关资金来源的更详细信息。

5、深入研究的方向

虽然本文研究提供了关于如何在受监管环境中使用基于 zkSNARK 的隐私增强协议的概述,但还有几个方面值得进一步研究。

首先,大家需要意识到通过这些协议获得的隐私取决于许多不同的因素。攻击者可能根据关联集合不够大、根选择不当和用户错误,从而能够将提款与特定存款关联起来。

此外,其他用户的选择可能会对您自己的隐私产生不利影响。在极端情况下,池中的其他所有人都会发布一个大小为一的成员资格证明,揭示他们的存款和提款之间的直接链接。显然,这将隐含地揭示剩下的唯一存款和提款交易之间的链接。在一个更微妙的例子中,来自各种成员资格证明的约束条件可以用来提取信息,并有可能以很高的概率将存款和提款关联起来。一旦这些证明的信息与交易元数据相结合,协议的隐私属性可能会受到损害。

最后,恶意 ASP 可以选择以一种方式编译所提议的关联集合,使他们能够最大限度地提取信息或通过添加已知相应提款的存款来增加感知的匿名性。所有这些问题需要进一步研究以评估所提供的隐私属性。在类似的思路中,进一步研究分离均衡的属性,建模在特定假设下好的和坏的参与者的行为方式以及前者的公开证明如何影响后者的隐私将是有趣的。

法学专家可以进一步研究具体的披露要求。本文提出的方案非常灵活,法律专家的见解可以帮助定制协议和围绕其建立的生态系统,以确保在各个法律管辖区的合规性。

六、结论

在许多情况下,隐私和合规性被认为是相互冲突的。本文提出,如果隐私增强协议使用户能够证明其资金来源的某些属性,那么情况不一定如此。例如,假设用户可以证明他们的资金与已知的非法来源存款没有关联,或者证明这些资金是特定存款集合的一部分,同时不透露任何进一步的信息。

这样的设置可以产生一个分离均衡,诚实用户被强烈激励证明他们属于某个合规的关联集合,并在该集合内保持隐私。相反,对于不诚实的用户来说,他们无法提供这样的证明。这使得诚实用户能够与他们不同意的第三方存款脱离关系,或者阻止他们在合规环境中使用资金。我们认为该提案非常灵活,并可以根据潜在的各种监管要求进行调整。

本文应被视为对未来潜在可能存在的金融隐私和监管共存的贡献。我们希望促进讨论,并将对话引向更积极、建设性的方向。实践者、各学科的学者、决策者和监管机构之间的合作将需要扩展和修改这个提案;其最终目标是创建能够在受监管环境中使用的隐私增强基础设施。

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年9月8日 上午1:35
下一篇 2023年9月8日 上午1:35

相关推荐

V神最新论文:隐私池协议如何保护用户隐私又满足合规要求

星期五 2023-09-08 1:35:51

今日,V神等人联合撰写了一篇有关隐私协议的研究论文,题目为“Blockchain Privacy and Regulatory Compliance: Towards a Practical Equilibrium”(区块链隐私和监管合规:走向实际平衡)。

论文阐述了一种新的基于智能合约的隐私增强协议——隐私池,并讨论其优缺点,展示其如何平衡诚实用户和不诚实用户。该协议旨在使用零知识证明来验证用户资金的合法性,而不泄露其完整的交易历史记录,在过滤掉与犯罪活动相关资金的同时权衡了隐私和监管要求。

Odaily星球日报现将论文精华编译如下。

一、引言

公共区块链设计上是透明的。基本思想是任何人都可以选择验证交易,而不必依赖于中心化的第三方;通过降低依赖性,为各种应用提供了一个中立的基础,包括但不限于金融和自我主权身份。

然而,从隐私角度来看,公共数据集拥有包含每个区块链地址的每笔交易。每当有人将资产转移到另一个地址,或与智能合约交互时,该交易将永远在区块链上可见。 这显然不符合隐私要求。

例如: Alice  在餐馆用区块链钱包支付晚餐。收款方现在知道了 Alice 的地址,并且可以分析该地址的所有过去和未来活动。同样,Alice 现在知道了餐厅的钱包地址,并可以使用这些信息来获取其他客人的钱包地址或查看餐厅的收入。或者第三方(如社交媒体)知道餐厅和 Alice 钱包地址,就可以轻松推导出 Alice 的实际居住地址,并研究她的过去和未来的交易。

隐私增强协议的兴起是为了解决上述问题。它允许用户将资金存入协议,使用一个地址,并在以后的某个时间点从协议中提取资金,使用另一个地址。所有存款和提款仍然可在区块链上看到,但特定转入与转出的对应关系不再公开。

最著名的隐私增强协议之一是 Tornado Cash。它成功解决了上述问题,允许用户保留一些隐私。然而,除了合法用户试图保护他们的数据之外,Tornado Cash 还被各种不良行为者使用。通过存款数据表明,黑客组织通过该协议转移资金。有证据表明,朝鲜黑客组织也使用了这个隐私增强协议,最终导致该协议的智能合约地址被列入美国外国资产控制办公室(OFAC)维护的特别指定国民和被封锁人员名单(常称为 SDN 名单)。 

Tornado Cash 的关键问题在于合法用户和犯罪用户的分界模糊。因此,Tornado Cash 提供了一个合规功能,允许用户创建一个证据,证明给定提款来自哪个存款。虽然这个机制确实允许人们证明自己的清白,但代价是必须信任一个集中的中介,并且会产生信息不对称。最终,该机制几乎没有用户使用。

本文讨论了这种方法的扩展,使用户能够公开证明关于他们的提款可能来自哪些存款的信息,但又不失隐私。隐私池提出一个通用概念:允许成员资格证明(“我证明我的提款来自这些存款中的一个”)或排除证明(“我证明我的提款不来自这些存款中的任何一个”)。本文讨论了这个提案,并解释了如何使用它来实现诚实和不诚实用户之间的均衡。 

请注意,隐私池通过扩展用户的行动集合提供了额外的选择。如果需要,他们仍然可以向特定的交易对方提供更详细的证明。然而,在某些情况下,成员资格或排除证明可能已经足够。此外,公开发布这些证明的选择与双边披露相比具有许多优势。 

二、技术背景

在本节中,我们提供一个简短的技术概述,并讨论 Privacy Pools(隐私池)等协议的技术构建和一般原则。

1、 ZK-SNARKs 之前的区块链隐私

历史上,区块链的支持者认为,尽管所有交易都是透明的,但区块链可以保护隐私,因为它们提供了匿名性。

随着现代聚类和分析工具的出现,这种隐私保护已经变得不够。为了改善公共区块链的隐私,人们引入了更强大的技术,如代币 Join 和  Monero 。然而,这些技术仍然存在数据泄漏的风险。

随后出现了通用的零知识证明技术,如  Zcash  和 Tornado Cash,可以使每笔交易的匿名集等于所有先前交易的整个集合。这种技术通常被称为 ZK-SNARKs。

2、 ZK-SNARKs

ZK-SNARKs 是一种技术,允许证明者证明某个关于公共数据和私有数据的数学声明,同时满足两个关键属性:零知识和简洁性。

 零知识:除了证明所述的私有数据符合声明之外,不会泄露有关私有数据的任何信息。

● 简洁性:证明很短,并且可以快速验证,即使所证明的声明需要进行耗时的计算。

ZK-SNARKs 受到区块链社区的广泛关注,因为它们在可扩展性方面具有重要意义,例如 ZK-rollups。对于隐私方面的应用,简洁性并不是特别重要,但零知识性是必不可少的。

ZK-SNARKs 证明的”声明”可以看作是一个被称为”电路”的程序类型,它通过公共输入和私有输入计算函数 f(x, w)的结果,然后证明对于给定的公共输入 x,存在一个私有输入 w,使得 f(x, w)的结果为 True。

3、ZK-SNARKs 在 Zcash 和 Tornado Cash 等系统中的应用

不同版本的 Zcash 以及受其启发的系统(如 Tornado Cash)之间存在一些微小的差异。然而,它们所依赖的基本逻辑非常相似。本节描述了一个简单版本,大致对应于这些协议的工作方式。

代币由其所有者持有的秘密 s 组成。可以从 s 中派生出两个值:

● 公共的代币 ID L = hash(s + 1)

● 零化器(nullifier)U = hash(s + 2) 

其中,哈希(hash)指的是密码哈希函数,如 SHA 256 。给定 s,可以计算出代币 ID 和零化器。然而,给定一组零化器和公共代币 ID,哈希函数的伪随机行为确保你无法确定哪个零化器与哪个代币 ID 相关联,除非你知道生成两者的秘密 s。

区块链跟踪已经”创建”的所有代币 ID,以及已经”花费”的所有零化器。这两个集合都在不断增长(除非协议希望强制规定代币必须在何时花费)。 

代币 ID 的集合存储在称为 Merkle 树的数据结构中:如果树包含 N 个项目,则每个相邻的项目进行哈希(导致⌈ N/2 ⌉个哈希),每个相邻的这些哈希再进行哈希(导致⌈ N/4 ⌉个哈希),依次类推,直到整个数据被提交到单个”根哈希”中。 

给定树中的特定值和根哈希,可以提供一个 Merkle 分支:在从该值到根的路径上的每个步骤中一起进行哈希的”姐妹值”。这个 Merkle 分支非常有用,因为它是一个小的(log 2(N)个哈希)数据片段,可用于证明任何特定的值实际上在树中。下图展示了一个高度为 4 的 Merkle 树的示例。 

Tornado Cash

当用户将币发送给其他人时,他们提供以下内容:

● 想要花费的零化器 U

● 想要创建的新代币的代币 ID L’(收件人被要求提供此项)

● 一个 ZK-SNARK。 

ZK-SNARK 包含以下私有输入:

● 用户的秘密 s

● 代币 ID 树中的 Merkle 分支,证明代币 ID 为 L = hash(s + 1)的代币实际上在过去的某个时刻被创建 

它还包含以下公共输入:

● U,正在花费的代币的零化器

● R,Merkle 证据正在针对的根哈希 

ZK-SNARK 证明了两个属性:

● U = hash(s + 2)

● Merkle 分支是有效的 

在 ZK-SNARK 之外,协议还检查以下内容:

● R 是代币 ID 树的当前或历史根哈希

● U 不在已经花费的零化器集合中 

Tornado Cash

如果交易是有效的,它将 U 添加到已花费的零化器集合中,并将 L’添加到代币 ID 列表中。显示 U 防止单个代币被重复花费。然而,不会透露任何其他信息。外部世界只能看到何时发送交易;他们无法获得关于谁发送或接收这些交易的模式,无法区分代币统一来源。

上述模式有两个例外:存款和取款。在存款中,可以创建代币 ID,而无需使某个先前的代币无效。从隐私保护的角度来看,存款并不是匿名的,因为给定的 L 与允许添加 L 的外部事件之间的关联(在 Tornado Cash 中,是将 ETH 存入系统;在 Zcash 中,是新挖掘的 ZEC)是公开的。

换句话说,存款与其过去的交易历史相关联。在取款中,将消耗一个零化器而不添加新的代币 ID。这可能会断开取款与相应存款的连接,并间接断开与过去交易历史的连接。然而,取款可以与取款事件之后发生的任何未来交易相关联。 

Tornado Cash 的第一个版本没有内部转账的概念,它只允许存款和取款。后来的版本,仍处于实验阶段,也允许内部转账和各种面额的币,包括对”分割”和”合并”操作的支持。我们将在后面的章节中讨论如何将基本的隐私保护币转账系统和隐私池扩展到任意面额的情境中。

4、隐私池中的 ZK-SNARKs

隐私池的核心思想是:用户不仅仅通过零知识证明来证明取款与之前的某个存款相关联,还证明其属于一个更严格的关联集合。关联集合可以是之前所做的全部存款的子集,也可以是只包含用户自己存款的集合,或者介于两者之间的任何集合。用户通过提供关联集合的 Merkle 根作为公共输入来指定该集合。

如下图所示,为了简单起见,我们不直接证明关联集合确实是之前所做的存款的子集;相反,我们只要求用户使用相同的币 ID 作为叶子节点,通过零知识证明两个 Merkle 分支:

● 进入总币 ID 集合的根 R 的 Merkle 分支

 进入提供的关联集合根 RA 的 Merkle 分支

Tornado Cash

这样做的意图是将完整的关联集合放置在某个地方(可以是链上)。核心概念是:不要求用户准确地指定他们的取款来自哪个存款,或者在另一极端,除了证明没有双重花费之外,不提供任何其他信息,我们允许用户提供一组可能是资金来源的选项,而这个集合可以根据他们的意愿来选择多宽或多窄。

我们鼓励形成一个生态系统,使用户更容易指定与其偏好相一致的关联集合。本文的其余部分将仅描述基于此简单核心机制的基础设施以及其带来的后果。

三、实际考虑与用例

从应用方面分析隐私增强协议如何在实践中使用。

1、 关联集合的用例 

为了在执法环境中说明该方案的价值,举个例子:

假设我们有五个用户:Alice、Bob、Carl、David、Eve。前四个用户是诚实守法但注重隐私的用户,而 Eve 是一个小偷。因为公众通过标记为“Eve”的地址的硬币是被盗的信息,知晓 Eve 是小偷。在实践中,这种情况经常发生:在公共区块链上,因为 DeFi 协议的漏洞被利用而产生的资金被追踪标记,从而识别流入 Tornado Cash 的非法资金。

当这五个用户每个人提款时,他们可以选择指定哪个关联集合。他们的关联集合必须包括他们自己的存款,但他们可以自由选择包括其他地址中的哪个。前四个用户的动机是一方面,他们想最大程度地保护他们的隐私。这促使他们倾向于使他们的关联集合更大。另一方面,他们希望减少他们的币被商家或交易所视为可疑的机会。有一个简单的方法来做到这一点:他们不包括 Eve 在他们的关联集合中。因此,对于他们四个人来说,选择是明确的:使他们的关联集合为{Alice、Bob、Carl、David}。 

当然,Eve 也想最大化她的关联集合。但她不能排除自己的存款,所以她被迫使她的关联集合等于所有五个存款的集合。参与者的关联集合选择如下图所示。 

Tornado Cash

尽管 Eve 本人没有提供任何信息,但通过简单的排除过程,我们可以得出明确的推论:第五步提款只能来自 Eve。 

2、关联集合的构建 

前一节说明了在类似于隐私池的协议中使用关联集合的一种可能方式,以及诚实参与者如何与不良参与者进行分离。请注意,系统不依赖于 Alice、Bob、Carl 和 David 的利他主义;他们有明确的激励证明他们的分离。 现在让我们更详细地看一下关联集合的构建。通常情况下,有两种主要策略来生成关联集合。它们如下所述,并在下图中进行了可视化。

● 包含(或成员资格):确定一组具体的存款,我们有确切证据认为它们是低风险的,并构建一个只包含这些存款的关联集合。

● 排除:确定一组具体的存款,我们有确切证据认为它们是高风险的,并构建一个包含除这些存款以外的所有存款的关联集合。

Tornado Cash

在实践中,用户不会手动选择要包括在其关联集合中的存款。相反,用户将订阅我们称为关联集合提供者(ASPs)的中间人,这些中间人生成具有特定属性的关联集合。在某些情况下,ASPs 可以完全在链上构建,不需要人工(或 AI)干预。在其他情况下,ASPs 将独立生成关联集合,并将关联集合在链上或其他位置发布。

我们强烈建议至少将关联集合的 Merkle 根发布在链上;这消除了恶意 ASP 对用户进行某些类型的攻击的能力(例如,给不同的用户提供不同的关联集合,试图对其进行去匿名化)。整个集合应该通过 API 或理想情况下通过低成本的分散存储系统(如  IPFS )进行提供。

下载整个关联集合的能力很重要,因为这使得用户可以在本地生成关于成员资格的证明,而不需要向 ASP 透露任何额外信息,甚至不需要透露与其提款相对应的存款。

以下是 ASPs 在实践中可能的构建方式:

● 延迟添加,排除不良参与者:任何存款在固定时间后(例如 7 天)会自动添加到关联集合中,但如果系统检测到某个存款与已知的不良行为(如大规模盗窃或政府公布的制裁名单上的地址)有关联,则永远不会添加该存款。在实践中,这可以通过社区策定的集合或已经执行识别和追踪与不良行为相关的存款工作的现有交易筛选服务提供商来实现。

● 单人每月收费:为了加入关联集合,存款的价值必须低于某个固定的最大值,并且存款人必须用零知识证明他们持有某些身份证明令牌(例如由政府支持的国家身份证系统或轻量级机制,如社交媒体账户验证)。使用一个附加参数混合在一起,表示当前月份的废弃符机制,以确保每个身份每个月仅能将存款提交到关联集合中一次。该设计试图实施许多常见的反洗钱规则的精神,即低于某个阈值的小额支付允许更高级别的隐私。请注意,这可以完全作为智能合约实现,不需要手动监督来维护持续的运行。

● 信任的社区成员每月收费:与单人每月收费类似,但限制更严格:用户必须证明自己是一个高度信任的社区的成员。高度信任的社区成员彼此同意互相提供隐私。

● 基于人工智能的实时评分:AI ASP 系统可以实时为每个存款提供风险评分,并且系统会输出一个包含风险评分低于某个阈值的存款的关联集合。潜在地,ASP 可以输出与多个风险评分阈值相对应的多个集合。

四、进一步的技术说明

在本节中,我们将分析该提案如何支持任意面额,并讨论重新证明、双边直接证明和顺序证明等特殊情况。

1、支持任意面额

上面简化的隐私保护币系统仅支持相同面额的币转账。Zcash 通过使用 UTXO 模型来支持任意面额。每个交易可以有多个输入(需要发布每个输入的零化器)和多个输出(需要发布每个输出的代币 ID)。创建的每个代币 ID 必须附带一个加密的面额值。除了证明零化器的有效性外,每个交易还必须附带额外的证明,证明被创建的币的面额之和不超过被花费的币的面额之和。下图说明了这个额外的证明。

Tornado Cash

这个设计可以通过将存款视为(未加密的)输入和取款视为(未加密的)输出来进行扩展以支持存款和取款。另外,为了简化分析,可以限制设计。例如,可以仅允许部分取款,使交易具有一个加密输入和两个输出:一个表示取款的未加密输出,以及表示剩余资金的加密的“找零”输出,可用于将来的取款。

一个自然的问题是如何扩展这个设计以支持隐私池。将其原封不动地插入隐私池并不理想,因为交易图与我们直观上期望的不一致:如果一个用户存入 10 个代币,然后在四次连续的取款中花费 1 + 2 + 3 + 4 个代币,我们希望将这四次取款都视为原始的 10 个代币存款的来源。但实际上得到的结果如下图所示:第一次取款的来源是 10 个代币的存款,然后第二次取款的来源是第一次取款创建的 9 个代币的找零输出,依此类推。这在实践中会导致问题,因为它要求 ASP 验证中间存款并将其添加到其关联集合中。

Tornado Cash

为了在这个示例中的所有四次取款中都能够将原始的 10 个币存款作为它们的来源,我们需要解决两个问题:

● 确保每次部分取款不会公开地与其他取款相关联

● 允许每次部分取款将存款作为其关联集合的成员

如果我们只支持部分取款,而不是更复杂的多输入多输出交易,并确保每次取款都具有单一定义的对应的”原始存款”,则有多种直接实现这一点的方法。一种自然且可扩展的方法是通过交易传播一些信息的承诺。例如,我们可以要求交易包含一个承诺 hash(coinID+hash®),其中加入一些随机值 r 以保证盲化,并要求 ZK-SNARK 证明交易中的承诺与其父交易相同。如果父交易本身是一次取款,则承诺与原始存款的币 ID 相同,如果父交易是一次存款,则承诺与初始存款的币 ID 相同。因此,链中的每个交易都必须包含对原始存款币 ID 的承诺,并需要证明该值在交易提供的关联集合中。

为了提高抵抗余额合计攻击的隐私性,我们还可以支持币合并。例如,如果我还剩下一些币,我可以在下一次存款时将它们与之合并。为了适应这种情况,我们可以要求交易对一组币 ID 进行承诺,并要求具有多个输入的交易对其父交易的并集进行承诺。一次取款将包含证明其所有承诺的币 ID 都在其关联集合中。

2、特殊情况

● 重新证明:用户需要秘密的存款信息来提取类似隐私池协议中的存款。同样的秘密信息也用于构建关联集合成员证明。保留秘密信息可以让用户生成新的证明,以适应不同集合或更新后的关联集合。这给予用户更大的灵活性,但也可能带来额外的风险。

● 双边直接证明:在某些情况下,用户可能需要向另一方披露取款的确切来源。用户可以创建一个只包含自己存款的关联集合,并生成针对该集合的证明。这些证明通常是例外情况,只在双方共享时对部分隐私起到贡献。然而,共享证明需要建立强烈的信任假设。

● 顺序证明:在一个使用类似隐私池系统的快速交易经济中,需要对协议进行修改以适应这种环境。除了存款和取款交易类型,协议还需要支持内部发送操作,以提高效率。此外,通过传递 Merkle 分支和密钥,用户可以传播与交易历史相关的信息,以便接收方验证资金的来源。这样可以确保每个用户获得所需的最少信息,以对所接收的资金具有信心。

在实践中,一枚代币可能有多个“来源”。例如,Bob 是一家咖啡摊主,他从 Alice 那里收到了 5 枚代币,从 Ashley 那里收到了 4 枚代币,从 Anne 那里收到了 7 枚代币,而在一天结束时他需要向 Carl 支付 15 枚代币来支付晚餐。相反,David 可能从 Carl 那里收到了 15 枚代币,又从 Chris 那里收到了 25 枚代币,并希望向 Emma(一家交易所)存入 30 枚代币。在这些更复杂的情况下,我们遵循同样的原则:足够早已被添加到关联集合中的历史可以被忽略,而较新的历史需要继续传递。

五、更多细节

类似隐私池的系统可以让用户在保持证明与已知非法活动的分离能力的同时,在其金融交易数据隐私方面获得更多保护。我们预计,诚实用户将通过两个因素的结合来激励参与这种方案:

● 对隐私的渴望

● 避免引起怀疑的愿望

1、社会共识和关联集合 

如果在判断资金好坏方面存在完全共识,该系统将产生一个简单的分离均衡。所有拥有“好”的资产的用户都有强烈的激励和能力证明他们属于一个“只有好的”关联集合。另一方面,不良参与者将无法提供这种证明。他们仍然可以将“坏”的资金存入池中,但这不会为他们带来任何好处。每个人都可以轻松地确定资金是从一个增强隐私的协议中提取的,并看到该提款引用了一个包含来自可疑来源的存款的关联集合。更重要的是,“坏”的资金不会玷污“好”的资金。当从合法存款中提取资金时,其所有者可以简单地在他们的关联集合中排除所有已知的“坏”存款。

在存在全局共识的情况下,并且关于资金被认为是“好的”还是“坏的”取决于社会观点或司法管辖权的结论,关联集合可能会有很大的差异。假设有两个具有不同规则集的司法管辖权。A 和 B 司法管辖权下的主体都可以使用相同的隐私增强协议,并选择发出满足各自司法管辖要求的证明。两者都可以轻松地在自己的关联集合中实现隐私,并排除不符合各自司法管辖要求的提款。如果需要,可以对两个关联集合的交集发出成员资格证明,从而可靠地证明与其提款对应的存款符合两个司法管辖权的要求。

因此,该提案非常灵活,并应被视为中立的基础设施。一方面,它对抗审查。它允许任何人加入他们选择的关联集合,并在自己的社区内保持隐私。另一方面,外部人可以要求针对符合其监管要求的特定关联集合的证明。因此,即使在隐私增强协议中存在一个不良参与者的社区,只要信息在关联集合的构建中准确反映,他们将无法掩盖存款的可疑来源。

2、关联集合的属性 

关联集合需要具备一定的属性才能发挥作用。集合需要准确无误,以便用户可以相信他们安全地使用提款后的资金。此外,每个集合的属性应该是稳定的,即随时间变化的可能性较小。这减少了对新集合进行重新验证提款的需求。最后,为了实现有意义的隐私保护,关联集合应足够大且包含各种类型的存款。然而,这些特性彼此之间存在冲突。一般来说,大而多样的集合可能具有更好的隐私属性,但可能不够准确和稳定,而较小的集合更容易维护,但提供的隐私较少。

3、实践考虑和竞争 

接受加密资产的受监管实体必须确保他们所受的法律和法规允许接受此类资金。如今,许多这些实体依赖所谓的交易筛选工具:一种软件或服务,分析区块链以识别潜在的可疑活动、与非法地址的联系或其他不符合要求的交易。筛选工具常通过风险评分来表达与每笔交易相关的风险。此评分基于传输资金的目的地和其交易历史。在这方面,隐私增强协议可能会带来挑战。它们消除了存款和提款之间的可见链接。因此,在隐私增强协议存在的情况下,风险评分需要考虑证明,并根据关联集合分配评分。

交易筛选的工具和服务主要由专业公司提供,这些公司具有区块链分析和相关法律领域的专业知识。理想情况下,这些公司(以及其他任何人)都可以访问所有成员资格证明及其相应的关联集合,以便为所有交易提供准确的风险评分。因此,我们建议所有证明都存储在区块链或其他公开可访问的证明存储库中。唯一的例外是与特定交易对方共享的大小为一的成员资格证明。出于明显的原因,这些证明不应公开提供。

将证明直接存储在链上会增加额外的交易成本,但减少了协调工作,使竞争更加公平,并减轻了筛选工具提供商由于掌握非公开证明的知识而可能形成的准垄断风险。

隐私池的一般设置非常灵活。通过创建特定的关联集合,该协议可以根据各种用例进行定制。以下是这些特殊关联集合的两个示例:

● 商业银行联盟可以创建一个仅包含其客户存款的关联集合。这可以确保任何提款创建的对该集合的证明已在其中一家参与的银行进行了了解您的客户(KYC)和反洗钱(AML)程序,但不会透露哪笔提款属于哪个客户。

● 在需要财务中介明确记录资金来源的情况下,他们可以要求用户提供针对仅包含用户存款的关联集合的证明。然后,这个证明将与中介进行双边交换,使他们能够跟踪资金,就好像用户从未使用隐私池一样。虽然这要求用户相信中介不会透露证明,但理想情况下,它使用户能够遵守法规,而无需将信息透露给公众。

4、设计选择和替代方案

基于关联集合、zk 证明和自愿披露的设置非常灵活。虽然这对于确保该提案可以适应不同的司法管辖权非常有用,但在特定设计选择方面应该非常谨慎。尤其是我们反对的两个潜在调整。我们认为它们在信任要求方面存在问题,并可能产生准垄断的市场结构。以下我们简要描述和讨论这些替代方法:

● 中心化访问:执法机构、加密风险评分提供商或类似的参与者可以获得查看用户交易之间链接的权限,同时对其他人保持隐私。

● 系统范围的白名单:隐私系统可以对可以向其池中存入硬币的用户类型进行限制,要求他们提供附加证明或要求存款在等待一段时间期间,在此期间,中心化的风险评分系统可以拒绝存款。

这两种方法相似,因为它们给予特定实体特权。这将引发复杂的治理问题:谁可以访问这些信息?谁有管理权限的权力?私营公司似乎不是一个好的选择,因为任何特权可能会产生寡头垄断的市场结构,少数公司可以访问能够提供这些服务的数据,而其他人则无法竞争。

同样,在授予公共机构权力时,将面临许多治理和政治问题,特别是在国际环境中。即使到目前为止,某个机构是 100% 值得信赖的,不会滥用权力以追求政治议程,并且没有依赖于可能迫使其滥用权力的其他实体,但这种情况是静止状态的表现。随着时间的推移,组织、成员、国家和组织内的政治结构都会发生变化。可能会有外部压力,这些特权的存在可能会产生额外的激励,以破坏并获得对组织治理系统的影响力。

此外,组织内部或外部的攻击,或中心化实体代表的错误可能会产生深远的后果。我们认为应该防止创建这种中心化的故障点。

话虽如此,我们承认不同的交易规模和情况可能需要不同的证明组合。例如,对于大额交易,许多用户可能最终会在链上提供基本的排除证明,并向其交易对手提供有关资金来源的更详细信息。

5、深入研究的方向

虽然本文研究提供了关于如何在受监管环境中使用基于 zkSNARK 的隐私增强协议的概述,但还有几个方面值得进一步研究。

首先,大家需要意识到通过这些协议获得的隐私取决于许多不同的因素。攻击者可能根据关联集合不够大、根选择不当和用户错误,从而能够将提款与特定存款关联起来。

此外,其他用户的选择可能会对您自己的隐私产生不利影响。在极端情况下,池中的其他所有人都会发布一个大小为一的成员资格证明,揭示他们的存款和提款之间的直接链接。显然,这将隐含地揭示剩下的唯一存款和提款交易之间的链接。在一个更微妙的例子中,来自各种成员资格证明的约束条件可以用来提取信息,并有可能以很高的概率将存款和提款关联起来。一旦这些证明的信息与交易元数据相结合,协议的隐私属性可能会受到损害。

最后,恶意 ASP 可以选择以一种方式编译所提议的关联集合,使他们能够最大限度地提取信息或通过添加已知相应提款的存款来增加感知的匿名性。所有这些问题需要进一步研究以评估所提供的隐私属性。在类似的思路中,进一步研究分离均衡的属性,建模在特定假设下好的和坏的参与者的行为方式以及前者的公开证明如何影响后者的隐私将是有趣的。

法学专家可以进一步研究具体的披露要求。本文提出的方案非常灵活,法律专家的见解可以帮助定制协议和围绕其建立的生态系统,以确保在各个法律管辖区的合规性。

六、结论

在许多情况下,隐私和合规性被认为是相互冲突的。本文提出,如果隐私增强协议使用户能够证明其资金来源的某些属性,那么情况不一定如此。例如,假设用户可以证明他们的资金与已知的非法来源存款没有关联,或者证明这些资金是特定存款集合的一部分,同时不透露任何进一步的信息。

这样的设置可以产生一个分离均衡,诚实用户被强烈激励证明他们属于某个合规的关联集合,并在该集合内保持隐私。相反,对于不诚实的用户来说,他们无法提供这样的证明。这使得诚实用户能够与他们不同意的第三方存款脱离关系,或者阻止他们在合规环境中使用资金。我们认为该提案非常灵活,并可以根据潜在的各种监管要求进行调整。

本文应被视为对未来潜在可能存在的金融隐私和监管共存的贡献。我们希望促进讨论,并将对话引向更积极、建设性的方向。实践者、各学科的学者、决策者和监管机构之间的合作将需要扩展和修改这个提案;其最终目标是创建能够在受监管环境中使用的隐私增强基础设施。