即将面向 DAO 推出:通过同态加密实现的永久屏蔽投票

  • shutter
  • 发布于 2025-07-23 16:16
  • 阅读 25

Shutter 正在开发一种新的永久隐私投票方案,该方案基于同态加密技术,允许在加密状态下进行投票计数,从而保护投票的隐私性。该方案通过扩展 Shutter 的阈值加密投票,并结合基于 ElGamal 的同态统计来实现,确保选票在投票前后都保持私密,同时允许任何人链上验证结果。

DAO 投票者长期以来一直要求永久的私密投票。现在这已经在 Shutter 的路线图上。这篇文章分享了该架构和一个可行的 POC,展示了我们如何使用基于 ElGamal 的同态计票来扩展阈值加密投票——因此投票以加密状态进行计数并保持私密性。

即将进入 DAO:通过同态加密实现永久屏蔽投票

永久私密投票是 DAO 治理中最受欢迎的功能之一。Vitalik Buterin 呼吁保护隐私。Decent 等治理平台对此表示支持。行业(例如,ShutterCicada)和学术界(例如,123)都在为此做出重大努力。在各个 DAO 社区中,每天都有投票者提出同样的担忧:当每一次投票都是公开的时,治理就会崩溃。

公开投票的代价是真实存在的 —— 报复、压力、收买选票以及对诚实信念的战略性信号。这会阻碍参与并扭曲结果。在现代选举中,选票是秘密的,这是有原因的。DAO 需要同样的保护。

屏蔽投票机制 —— 比如 Shutter 在 Snapshot 上的屏蔽投票 —— 提供了一个强大的基础。通过在投票期间保持投票的机密性,Shutter 的屏蔽投票已经为超过 600 个 DAO 带来了隐私。然而,一旦投票结束,个人的投票就会被揭示。

这就是为什么我们宣布 Shutter 屏蔽投票的下一个重大发展:永久屏蔽投票现在已在我们的开发路线图上

我们正在构建什么:无限期地永久保护隐私

作为该路线图的一部分,我们正在构建一个选项,供 DAO 治理平台提供永久的投票隐私 —— 在投票之前、期间和之后 —— 同时仍然允许任何人在链上验证结果。

在这篇文章中,我们将解释它是如何工作的。我们将介绍技术架构并分享我们正在进行的概念验证。我们讨论了如何扩展当前的 Shutter 屏蔽投票方案,以允许对加密投票进行计票。具体来说,我们描述了如何将 Shutter 扩展到一种阈值 ElGamal 加密的形式,当伴随零知识证明时,它允许我们对加密投票进行计票,同时保持结果的公开可验证性。

概念验证 - 永久屏蔽投票

我们按照下面解释的方式实现了 POC,以证明其可行性。

0:00

/1:34

1×

来自线性同态阈值加密的链上屏蔽投票

构建保护选民隐私(即使在投票期结束后)的投票机制的一种流行方法是使用线性同态阈值加密(例如,45),例如指数中的 ElGamal 或 Paillier。这些密码学方案允许直接在加密数据上计算选举结果:单个选票保持加密状态,但由于其加性同态性质,可以计算加密的计票结果。为了获得选举结果,仅对最终计票结果进行解密,而从不透露单个选票。解密以阈值方式执行,即解密密钥分布在一组参与者(Keypers)中,只有当预定义的 Keypers 阈值协同工作时,才能执行最终解密。

图 1. 线性同态运算的说明。E(x) 表示值 x 的加密,⊕ 和 ⊗ 分别表示用于密文加法和与常数相乘的高效可计算运算。

证明使用线性同态阈值加密进行屏蔽投票的可行性的一个例子是 DAVINCI 协议,该协议使用指数中的阈值 ElGamal。与支持任意计算但仍然昂贵的通用 FHE 不同,ElGamal 提供了一种实用的、高效的替代方案,该方案可扩展且在当今可用于实际应用。在这篇文章中,我们采用了类似的方法,并描述了 Shutter 已经拥有所有必要的组件,只需要进行少量修改即可实现指数中的阈值 ElGamal。

使 Shutter 线性同态

Shutter 已经提供了一种具有阈值解密的加密方案,但它不是线性同态的,即它缺乏计算加密值之和的能力。但这里有个好消息:很容易将该属性添加到 Shutter!

在不涉及太多技术细节的情况下,以下是 Shutter 可以轻松实现指数中的 ElGamal(一种流行的线性同态加密方案)的主要原因:

  • Shutter 在适用于指数中的 ElGamal 的密码学组上运行
  • Shutter 的分布式密钥生成协议已经生成了与指数中的 ElGamal 兼容的密钥
  • Shutter 已经运营了一组 Keypers

换句话说,线性同态阈值加密所需的所有基础组件已经是 Shutter 架构的一部分。只需要对加密和解密过程进行最小的修改,即可使 Shutter 成为线性同态阈值加密方案。

那我们完成了吗?

使 Shutter 线性同态是否足以构建一个具有长期选民隐私的屏蔽投票机制?不完全是,但这是朝着正确方向迈出的关键一步!

线性同态阈值加密支持加密的投票聚合和最终计票的阈值解密,但它本身无法提供安全的投票系统。它必须辅以零知识证明,以证明系统参与者的正确行为:一方面,选民必须证明,当他们提交加密投票时,该投票确实有效;另一方面,Keypers 必须证明计票已正确解密。

我们在下面的图 2 中说明了投票初始化和实际投票过程。

旁注: 任何投票系统的另一个关键要求是对选民进行身份验证,以确保只有经过授权的参与者才能投票。这种身份验证机制的一种直接方法是维护一个选民公钥的链上注册表,并要求每个加密投票都由相应的私钥签名。但是,在这篇文章中,我们抽象出选民身份验证的具体细节,因为它与如何在投票期结束后保持投票隐私的问题是分开的。

图 2. 使用线性同态阈值加密说明投票初始化和投票过程。

一个简单的例子

考虑一个具有三个选项的基本投票:是、否和弃权,我们分别将其表示为 1、-1 和 0。每个选民使用 Shutter 提供的公钥加密他们选择的选项,并生成一个零知识证明,表明他们的加密投票是有效的,即它编码了允许的值之一(-1、0 或 1)。然后,加密的投票和随附的证明在链上提交。

投票期结束后,计票机构(可以是智能合约、Shutter Keypers 或任何其他指定的参与方)验证所有提交的零知识证明。然后,它以同态方式聚合所有有效的加密投票,以计算加密的计票。Keypers 协同使用阈值解密来解密此计票,确保单个投票保持私密性,并生成一个零知识证明,证明已正确执行解密。

为了实现此投票机制,我们需要三个密码学构建块:

  1. 线性同态阈值加密方案 – 如上所述,我们可以调整 Shutter 以实现指数中的 ElGamal,以支持线性同态运算。
  2. 用于投票有效性的零知识证明系统 – 这确保每个加密投票都对应于一个有效的选择(-1、0 或 1)。这可以使用类似于 a16z 的 Cicada 投票系统 中使用的技术来实现,该技术依赖于 离散对数相等证明 的 OR 组合。
  3. 用于正确解密的零知识证明系统 – 这允许 Keypers 证明计票的解密已正确完成。该证明可以再次通过两个离散对数的相等证明来实现。

与其他方法的局限性和比较

虽然使用线性同态加密进行私密投票提供了强大的隐私和可验证性保证,但它也存在重要的局限性。首先是阈值信任假设:系统依赖于一组指定的 Keypers,假设其中的某个阈值会诚实地行事。如果此假设失败,则会出现两个关键风险:(1) 一部分 Keypers 可能会拒绝合作解密计票,从而阻止结果的发布,从而使系统停顿;或 (2) Keypers 可能会串通解密个人投票,甚至可能在投票期结束之前解密,从而破坏隐私和公平性。

其次,在指数中的 ElGamal 的情况下,在解密期间恢复明文需要计算离散对数 - 一项计算量大的任务. 虽然这对于较小的消息空间(例如,最大为 2³² 的投票计票,或大约 43 亿)来说是可行的,但随着范围的增长,它的成本会越来越高。

在考虑链上屏蔽投票时,应考虑其他方法。

秘密共享: 一个有趣的替代方案是使用基于秘密共享的方法,选民通过公开可验证的秘密共享方案将其投票共享给一个委员会。与此同时,选民证明他们共享的秘密是有效的投票。然后,委员会成员发布所有有效份额的总和,这些总和可用于重建计票结果。不幸的是,这种方法存在与阈值信任假设相同的问题,因为它需要一定阈值的委员会成员诚实地行事。它还给选民带来了很大的复杂性,因为他们需要执行一个公开可验证的秘密共享协议。这不仅增加了计算开销,而且还需要与委员会直接互动,而不是简单地在链上提交加密投票,从而使投票过程更加繁琐。

Mixnet: 另一个方向是使用 mixnet 构建屏蔽投票(例如,6),选民加密他们的投票并将它们发送到 mixnet,该 mixnet 可以验证地对加密投票进行混洗,从而打破选民身份和投票之间的联系。但是,为了计算计票,mixnet 方案通常会在投票期结束后显示所有个人投票。一种很有前途的方法是将 mixnet 与线性同态阈值加密相结合,以获得两种方法的优点:投票/选民不可链接性以及单个投票的保护时间长于投票期。 基于时间锁的方法: Cicada 使用的另一种方法是利用同态时间锁谜题来隐藏投票一段固定的时间(例如,直到投票期结束)。虽然这确保了短期隐私,但它无法实现我们无限期地保护个人投票的目标。为了克服这个问题,Cicada 建议匿名化选民的身份。然而,正如 Haines et al. 指出的那样,匿名化选民的身份依赖于匿名通信渠道的使用,这是一个强有力的且通常不切实际的假设。此外,即使所有选民都使用此类渠道,也不能保证匿名性:有关选民身份的信息仍然可以通过间接方式泄露,例如,当选民人数较少时。基于时间锁的方法的其他缺点是 (1) 它需要一个最初需要计算的设置,(2) 确定投票隐藏时间的定时参数与设置相关联,因此投票期的持续时间是固定的,(3) 解决时间锁难题需要大量资源,以及 (4) 投票期结束后需要时间来重建最终结果。与使用秘密共享或线性同态阈值加密相比,Cicada 的优点是它不依赖于阈值信任假设(尽管它确实依赖于硬件假设)。

结论和未来工作

使用线性同态阈值加密是实现链上屏蔽投票的一种非常有效的方法,因为它允许个人投票即使在投票期结束后仍保持私密。此方法支持将加密投票聚合为加密计票,然后可以以阈值方式解密 - 确保没有任何一方有权损害选民的隐私。

该模型中的主要信任假设是,在解密期间,一定阈值的 Keypers 诚实地行事。虽然此阈值信任模型是一个限制,但学术界和工业界正在积极探索减少或消除它的方法(请参阅,例如,ShutterTEE带有告密的秘密共享关于阈值加密内存池的反共谋机制的建议)。

展望未来,有很大的潜力在此基础上构建,并在屏蔽投票系统中实现其他理想的属性。这些包括:

  • 收据免费性和抗胁迫性,这确保了选民无法证明他们是如何投票的,因此无法被胁迫或贿赂。
  • 投票委托,允许用户在保留投票隐私的同时委托他们的投票权。最近的 论文 已经证明了如何使用线性同态阈值加密来实现这一点,这为采用这种密码学方法提供了另一个有力的论据。
  • 问责制,确保可以检测到投票聚合或解密期间的任何不当行为,并将其归咎于责任方。
  • 选民匿名性,确保不仅每个投票的内容保持隐藏,而且投出该投票的选民的身份也保持隐藏。因此,系统仅显示有效投票的总数,而不公开提交投票的人。

通过使用永久私密投票扩展 Shutter 的屏蔽投票,我们使 DAO 可以无限期地保护个人投票 - 而不影响公开可验证性。

概念验证已经完成,下一个开发阶段正在进行中。

如果你是一个有兴趣集成这种新的永久屏蔽投票的治理平台,或者是一个想要合作的开发者,请与我们联系。我们很乐意与你合作。

  • 原文链接: blog.shutter.network/com...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
shutter
shutter
江湖只有他的大名,没有他的介绍。