注:原文作者是以太坊联合创始人VitalikButerin。
特别感谢KarlFloersch,AlbertNi,Silly先生以及其他人的反馈意见和讨论。
投票对于进程完整性而言是一项非常重要的程序,投票的结果必须是正确的,而且必须通过透明的过程来保证,以便每个人都可确信结果是正确的。不应该存在能成功干扰任何人去尝试投票,或阻止他们的投票被计算在内的可能。
区块链是一项旨在为流程完整性提供保证的技术,如果某个流程在区块链上运行,则可以确保该流程根据预先约定的代码运行,并提供正确的输出。没有人可以阻止执行,也没有人可以篡改执行,也没有人可以审查和阻止任何用户的输入被处理。
因此乍看起来,区块链似乎恰好提供了投票所需的组件。而且我不是唯一一个想过这个点子的人。很多主要的潜在用户都对此感兴趣,但事实证明,有些人有着非常不同的意见……
尽管投票的需求和区块链提供的技术益处似乎完美匹配,但我们经常会看到一些文章会反对两者的结合。这不仅仅是一篇文章,这是一篇来自《科学美国人》杂志的反对区块链投票的文章,这是CNet的另一篇?,还有来自ArsTechnica的另一篇?。而且,不仅仅是科技记者在反对,例如BruceSchneier就反对区块链投票,麻省理工学院的研究人员也撰写了一整片论文?来阐述区块链投票是一个坏主意,那么到底是怎么回事?
概述
区块链投票协议的批评者通常会提出两个关键的批评点:
区块链是运行选举的错误软件工具,它们提供的信任属性与投票所需的属性不太匹配,其他具有不同信息流和信任属性的软件工具会更好地工作。
不管是什么样的软件,一般来说都不能信任软件来运行选举。无论平台如何组织,无法检测到的软件和硬件漏洞风险都太高了。
本文将依次讨论这两种说法。首先,我将讨论使用区块链投票的现有尝试的安全问题,以及正确的解决方案不是该放弃区块链,而是该将它们与其他加密技术结合起来。第二,我将回答软件是否可信的问题。答案是:计算机安全实际上正在变得更好一些,我们可以继续沿着这一方向努力。
从长远来看,长期坚持纸上谈兵对我们改善投票的能力而言是一个巨大的障碍。每N年一票是一种有250年历史的民主投票形式,如果投票变得更方便、更简单,我们可以拥有更好的民主,这样我们就可以更频繁地进行投票。
不用说,这篇文章的前提是基于良好的区块链扩容技术基础。如果区块链无法扩容,那么这一切都不可能发生。但到目前为止,这项技术的发展进展很快,因此没有理由相信它不会发生。
坏的区块链投票协议
区块链投票协议一直受到黑客攻击。两年前,一家名为Voatz的区块链投票技术公司风靡一时,很多人对此非常兴奋,但在去年,一些麻省理工学院的研究人员在他们的平台上发现了一系列严重的安全漏洞。与此同时,在莫斯科,一个用于即将举行的选举的区块链投票系统遭到了黑客攻击,幸运的是,这次攻击是在选举前一个月发生的。
黑客攻击是非常严重的,下表是研究人员分析Voatz时能够实现的攻击种类:
这本身并不是反对使用区块链投票的理由。但有一种观点认为,区块链投票软件的设计应该更加谨慎,并随着时间的推移缓慢、渐进地扩大规模。
隐私和胁迫抵抗
但即使是技术上没有被攻破的区块链投票协议也常常很糟糕。为了理解原因,我们需要深入研究区块链提供了哪些特定的安全属性,以及投票需要哪些特定的安全属性——当我们这样做时,我们会发现存在不匹配。
区块链提供了两个关键属性:正确执行以及抵抗审查。正确的执行仅仅意味着区块链接受用户的输入,根据一些预定义的规则正确地处理它们,并返回正确的输出。对审查的抵抗也很容易理解:任何想要发送一笔交易的用户,只要愿意支付足够高的费用,就可以发送这笔交易,并期望看到这笔交易很快被纳入区块链。
这两个属性对投票而言都非常重要:你希望投票的输出,实际上是计算每个候选人的票数并选择得票最多的候选人的结果,而且你肯定希望任何有资格投票的人都能够投票,即使有一些强大的存在试图阻止他们。但投票也需要一些区块链无法提供的关键属性:
隐私:你不应该知道某个特定的候选人投了什么票,或者他们是否投了票。
胁迫抵抗:你不应该向别人证明你是如何投票的,即使你希望这样做。
第一个要求的必要性是显而易见的:你希望人们根据个人感受投票,而不是因为周围的人、雇主、警察或街头的暴徒对他们的选择的感受。第二个要求是防止选票出售:如果你能证明你是如何投票的,出售你的选票就变得非常容易。选票的可证明性也将使胁迫形式成为可能,胁迫者要求看到某种形式的投票证明,以支持他们喜欢的候选人。大多数人,即使是那些意识到第一个要求的人,也不会考虑第二个要求。但是第二个要求也是必要的,并且在技术上提供它是非常重要的。很显然,我们在市场上所看到一般的“区块链投票系统”甚至都没有尝试提供第二个属性,而且通常无法提供第一个属性。
无需区块链的安全电子投票
加密安全执行社会机制的概念并不是由区块链极客发明的,实际上,它们早在区块链之前就已经存在了。在区块链领域之外,密码学家从事安全电子投票问题已有20年的时间,好消息是已经有了解决方案。过去20年的许多文献引用的一篇重要论文是是Juels、Catalano和Jakobson在2002年撰写的论文《抗胁迫电子选举?》:
从那时起,在这个概念上已经有过多次迭代,其中Civitas?是一个突出的例子。这些协议都使用一组类似的核心技术,有一套商定的计票员,并有一个信任假设,即大多数计票员是诚实的。计票员各自拥有私钥的一部分,并发布相应的公钥。投票者发布投票加密到计票员的公钥,而计票员使用安全多方计算协议来解密和验证选票并计算计票结果。计票计算是在“MPC内部”进行:计票员不需要知道他们的私钥,他们计算最终结果时,除了从最终结果本身可了解的之外,对任何个人的投票都没有任何的了解。
加密投票提供了隐私,一些额外的基础设施,如混合网的添加,使得隐私变得更为强大。为了提供胁迫抵抗,就用到了两种技术。一种选择是,在注册阶段,投票者生成或接收一个密钥。相应的公钥在计票员之间是秘密共享的,计票员的MPC只有在用密钥签名的情况下才计算投票数。投票人没有办法向第三方证明他们的密钥是什么,所以如果他们受到贿赂或胁迫,他们只需出示并投下用错误密钥签名的选票。或者,投票者可以发送消息来更改他们的密钥。选民无法向第三方证明他们没有发出这样的信息,从而导致同样的结果。
第二种选择可以让选民进行多次投票,而第二次投票可以推翻第一次投票。如果选民受到贿赂或胁迫,他们可以为贿赂者/胁迫者的首选候选人投一票,但随后再投另一票以否决第一个候选人。
现在,我们来看看所有这些协议中一个关键的细微差别。它们都依赖一个外部原语来完成安全保证:公告栏,公告栏是任何投票人都可以发送信息的地方,并保证任何人都可以阅读公告栏,以及任何人都可以向公告栏发送被接受的信息。你能找到的大多数有关抵制胁迫的投票题材论文都会提及公告栏的存在,但是很少有论文会谈论这个公告栏是如何实现的。在这里,我会告诉大家:实现公告栏最安全的方法就是使用现有的区块链!
使用区块链的安全电子投票
当然,在区块链之前,有很多人尝试制作一个公告栏。这篇2008年的论文?就是这样的一种尝试,它的信任模型是“n个服务器中的k个必须是诚实”的标准要求。这篇2021年的文献?涵盖了在公告栏上进行的一些区块链之前的尝试,以及探索区块链在这项工作中的使用。论文所提到的方案同样依赖于k-of-n信任模型。
区块链也是k-of-n信任模型,它要求至少一半的矿工或权益证明验证者遵守协议,如果这一假设失败,通常会导致“51%攻击”。那么,为什么区块链比专用的公告板更好呢?答案是:建立一个真正可信的k-of-n系统是很困难的,区块链是唯一已大规模解决这一问题的系统。假设某政府宣布正在制定投票制度,并提供了15个地方组织和大学的名单,这些组织和大学将运行一个特殊用途的公告栏。作为一个外部观察者,你怎么知道它的真实性?
另一方面,公共区块链具有任何人都可以参与的无许可的经济共识机制,并且它们具有区块链浏览器、交易所和其他观察节点的现有多样化且高度激励的基础架构,以不断实时验证确保没有发生任何不良的情况。
这些更复杂的投票系统不仅使用了区块链,它们还依赖于密码学来保证正确性,并依赖多方计算来保证胁迫抵抗,因此,它们避免了常见系统的弱点。然而,区块链公告栏仍然是整个设计安全模型的关键部分:如果委员会被打破,而区块链没有,则胁迫抗性就丧失了,但围绕投票过程的所有其他保障仍然存在。
MACI:以太坊上的抗胁迫区块链投票系统
以太坊生态系统目前正在试验一个名为MACI?的系统,该系统将区块链、ZK-SNARKs以及一个单一的中央参与者结合在一起,以保证抗胁迫。MACI在技术上并不难,用户通过使用其私钥对消息签名,将签名的消息加密为中央服务器发布的公共密钥,以及将加密的签名的消息发布到区块链来参与。服务器从区块链下载消息,对其进行解密、处理,并将结果与ZK-SNARK一起输出,以确保它们正确地进行了计算。
用户无法证明自己的参与方式,因为他们能够发送一个“密钥更改”消息来试图审核他们的任何人:他们可以先发送一条密钥更改消息,将密钥从A更改为B,然后发送一条用A签名的“假消息”。服务器将拒绝该消息,但其他人将无法知道密钥更改消息是否已发送。服务器上有信任要求,尽管仅出于隐私和抗胁迫要求。服务器无法通过错误地计算或审查消息来发布错误的结果。从长远来看,可以使用多方计算来对服务器进行一定程度的去中心化,从而加强隐私和抗胁迫的保障。
在clr.fund?上有一个用于二次方融资的工作演示。以太坊区块链的使用可确保投票的抗审查性,这比依靠一个委员会来进行投票的抗审查性要高得多。
重述要点
投票过程具有四个重要的安全要求,那么投票才能确保安全,它们分别是:正确性,抗审查,隐私和抗胁迫。
区块链擅长前两个要求,但它在后两个要求方面表现得很差。
加密区块链上的投票可以增加隐私,零知识证明可以带回正确性,尽管观察者无法直接相加投票,因为他们是加密的。
与用户可与系统多次交互的机制相结合,多方计算解密和检查投票可以提供抗胁迫性。第一次交互使第二次交互无效,反之亦然。
使用区块链可确保你具有非常高的安全审查抵抗力,即使委员会串通并打破了抗胁迫属性,你也可以保持这种抗审查属性。引入区块链可以显着提高系统的安全级别。
但是,技术可以被信任吗?
现在,我们回到第二个对任何类型的电子投票的批评:就是说不管是否是区块链,这项技术本身不太安全,因此不值得信任。
麻省理工学院最近发表的批评区块链投票的论文?中,就包含了这张有用的表格,其描绘出任何形式的无纸化投票从根本上来说都很难是安全的:
作者关注的关键属性是软件独立性,他们将其定义为“系统软件中未检测到的更改或错误,不会导致选举结果发生不可检测到的更改的属性”。基本上,代码中的错误不应使偶然的PrezzyMcPresidentface成为该国的新总统。
但是还有其他方法可以解决漏洞。例如,任何使用可公开验证的零知识证明的基于区块链的投票系统都可以独立验证。有人可以编写自己的证明验证器实现,并自己验证Zk-SNARK。他们甚至可以编写自己的软件进行投票。当然,实际执行此操作的技术复杂性超过了99.99%现实投票者基础,但如果成千上万的独立专家有能力执行此操作并验证其有效,那么在实践中就已经足够了。
然而,对于麻省理工学院的作者来说,这还不够:
“因此,任何仅仅是电子的系统,即使是端到端可核查的,在可预见的未来似乎都不适合选举。美国投票基金会已经注意到E2E-V方法在提高在线投票安全性方面的前景,但已发布了一份详细的报告,建议避免使用E2E-V方法进行在线投票,除非该技术变得更加成熟,并在投票站投票中得到充分测试。
其他人则提出了这些想法的扩展。例如,Juels等人的提案强调使用密码学来提供多种形式的“胁迫抵抗”。Clarkson等人的Civitas提案实现了额外的胁迫抵抗机制,Iovino等人进一步将这些机制纳入并阐述到他们的Selene系统中。从我们的角度来看,这些提议是创新的,但并不现实:它们相当复杂,而且最严重的是,它们的安全性取决于选民的设备是否完好无损且按预期运行,这是不现实的假设。
”
作者重点研究的问题不是投票系统硬件的安全性问题,这方面的风险实际上可以通过零知识证明来缓解,相反,作者关注的是另一个不同的安全性问题:即用户的设备在原则上能安全吗?
鉴于消费类设备的各种攻击和黑客事件由来已久,人们有理由认为答案是“不”。引用我自己在2013年撰写的关于比特币钱包安全的文章:
“昨晚太平洋时间晚上9点左右,我点击了一个链接进入CoinChatfreetzicom,然后我被提示运行java。我做了,然后什么也没发生。我关了窗口,什么也没想。大约14分钟后,我打开了我的bitcoin-qt钱包,看到了一笔我没有批准的交易,而钱包里的资金都被转到了1Es3QVvKN1qA2p6me7jLCVMZpQXVXWPNTC……”
以及:
“2011年6月,Bitcointalk会员“allinvain”丢失了25000BTC,因为一个未知的入侵者不知何故直接入侵了他的电脑。攻击者能够访问allinvain的wallet.dat文件,并快速清空了钱包-要么是从allinvain的计算机发送的交易,要么只需上传wallet.dat文件并在自己的机器上清空即可。”
但这些灾难掩盖了一个更大的事实:在过去的二十年里,计算机安全实际上一直在缓慢而稳步地改善。攻击很难被发现,通常需要攻击者在多个子系统中查找漏洞,而不是在大型复杂代码段中发现一个漏洞。引人注目的事件比以往任何时候都要多,但这并不是任何事情变得不那么安全的迹象;相反,这只是表明我们越来越依赖互联网。
可信硬件是最近非常重要的改进来源。一些新的“区块链电话”在这项技术上走得很远,并在可信硬件芯片上放置了一个以安全性为重点的简约操作系统,以允许安全性要求很高的应用程序与其他应用保持分离。三星已经开始使用类似的技术制造手机。甚至从未被宣传为“区块链设备”的设备也经常拥有某种可信的硬件。加密货币硬件钱包实际上只是可信硬件模块物理上位于计算机外部,而不是计算机内部的钱包。可信硬件在安全圈,尤其是区块链社区,经常会受到不好的评价,因为它一次又一次地被攻破了。实际上,你肯定不想用它来取代你的安全保护。但作为一个补充,这是一种巨大的进步。
最后,单一应用程序,例如加密货币钱包和投票系统,要比整个消费者操作系统简单得多,出错的空间也更小——即使你必须支持二次方投票、排序,二次方排序和下一代的GlenWeyl在2040年发明的任何可怕的东西。
像可信硬件这类工具的好处是,它们能够将简单的事物与复杂的,可能是损坏的事物隔离开来,并且这些工具取得了一定的成功。
因此,风险可能会随着时间的推移而降低。但好处是什么呢?
安全技术的这些改进,预示着未来消费者硬件可能比现在更受信任。过去几年在这一领域的投资,在未来十年内可能会继续得到回报,我们可以期待进一步的重大改善。但是,使投票电子化有什么好处,以证明探索整个空间是合理的?
我的回答很简单:投票将变得更有效率,使我们可以更频繁地进行投票。目前,对组织的正式民主投入往往限于每1-6年一次的单一投票。这实际上意味着每个选民每年只需要在系统中投入很少的投入。或许很大程度上正是由于这一点,我们社会中去中心化的决策被严重地分为两个极端:纯民主和纯市场。民主要么效率很低,要么很不安全。市场的技术效率远高于社交媒体,安全性也远高于社交媒体,但其基本的经济逻辑使其不适合处理多种决策问题,尤其是与公共产品有关的决策问题。
是的,我知道这是另一个三角,很抱歉不得不再次使用它。但是,请只忍受一次...
如果我们能够建立更多介于民主和市场之间的系统,受益于前者的平等主义、后者的技术效率以及介于两个极端之间的经济特性,我们就可以做很多事情。二次方融资就是一个很好的例子,流动民主是另一个很好的例子。即使我们不引入新颖的委托机制或二次数学,我们也可以做很多事情。但所有这些想法的挑战在于,要想拥有一个能够持久维持任何民主水平的计划,就需要某种形式的女巫攻击抵抗性以及贿选缓解措施:这正是这些迷人的ZK-SNARK+MPC+区块链投票方案正在努力解决的。
Crypto行业能够帮上忙
Crypto行业被低估的益处之一是,它是一个极好的“虚拟特别经济区”,可用于在高度对抗的环境中测试经济和密码学思想。无论你构建和发布什么,一旦它控制的经济力量超过一定规模,那么各种各样的,有时是无私的,有时是出于利益动机的,有时是恶意的行为者就会出现在系统中,并尝试将这种经济力量转向自己的各种目标。
攻击者的动机很高:如果攻击者从你的加密经济小工具中窃取了100美元,他们通常可以获得全部100美元的奖励,并且他们往往可以逃脱。但是,捍卫者的动机也很高:如果你开发一种可以帮助用户避免损失资金的工具,则可以将其转变为一种赚取数百万美元的工具。Crypto是终极的训练场所:如果你能建造出某种能在这种环境中大规模生存的东西,那么它也可能在更大的世界中生存。
这适用于二次方融资,适用于多重签名,以及社交恢复钱包,也适用于投票系统。区块链行业已经帮助推动了很多重要安全技术的兴起:
硬件钱包;
有效的通用零知识证明;
形式化验证工具;
具有可信硬件芯片的“区块链手机”;
抗女巫攻击方案,例如人性证明;
在所有这些案例中,在区块链出现之前,就已经存在了某些版本的技术。但很难否认的是,区块链在推动这些努力方面产生了重大影响,而该领域固有的巨大激励作用,使技术发展的真正实现方面发挥了关键作用。
结论
从短期来看,任何形式的区块链投票都应局限于小型实验,无论是针对更主流应用的小型试验,还是针对区块链行业本身。目前的安全性还不足以让一切都依赖计算机。但是它正在改善,如果我错了,并且安全性没有改善,那么不仅是区块链投票,而且整个加密货币都将很难获得成功。因此,这项技术有很大的动力继续改进。
我们都应该继续关注世界各地为加强安全所提出的技术与努力,技术已经是我们金融市场的关键,对经济的很大一部分进行crypto化,将把经济的更大一部分交给我们的加密算法和运行它们的硬件。我们应该仔细观察和支持这一进程,并随着时间的推移利用其优势将我们的治理技术带入21世纪。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。