V神:区块链上投票流程的实现


投票是对过程完整性非常重要的流程。投票的结果必须是正确的,而且必须通过透明的流程来保证,以便每个人都可以确信结果是正确的。应该不可能成功地干扰任何人的投票企图或阻止他们的投票被计算在内。
区块链是一项旨在为流程完整性提供保证的技术。如果某个流程在区块链上运行,则可以确保该流程根据预先约定的代码运行,并提供正确的输出。没有人可以阻止执行,没有人可以篡改执行,也没有人可以审查和阻止任何用户的输入被处理。
因此乍看起来,区块链似乎恰好提供了投票所需的内容。而且我不是唯一一个想到过这个人的人。许多主要的潜在用户感兴趣。但事实证明,有些人有非常不同的意见。
尽管投票的需求和区块链提供的技术利益之间看似完美匹配,但我们经常看到令人恐惧的文章反对两者的结合。这不仅是一篇文章:这是《科学美国人》的反区块链投票文章,这是CNet的另一篇文章,也是ArsTechnica的另一篇文章。不仅仅是随机的技术记者:布鲁斯·施耐尔(Bruce Schneier)反对区块链投票,麻省理工学院的研究人员撰写了整篇论文,认为这是一个坏主意。发生什么了?
 
批评思路总结
批评的两个关键观点:

  • 区块链是进行选举的错误软件工具。他们提供的信任属性与投票所需的属性不是很好的匹配,并且具有不同信息流和信任属性的其他类型的软件工具会更好地工作。
  • 通常,无论软件是什么,都无法信任其运行选举。无论平台如何组织,无法检测到的软件和硬件错误的风险都很高。

本文将依次讨论这两种说法,先,我将讨论使用区块链进行投票的现有尝试的安全性问题,以及正确的解决方案如何不放弃区块链,而是将其与其他加密技术结合起来的问题。第二,我将解决有关软件(和硬件)是否可以信任的问题。答案是:计算机安全性实际上正在提高很多,我们可以继续努力以保持这种趋势。
整个帖子的前提是可以使用良好的区块链扩展技术(例如sharding)。当然,如果区块链无法扩展,这一切都不会发生。但是到目前为止,这项技术的发展正在迅速进行,没有理由相信它不会发生。
 
不良的区块链投票协议
区块链投票协议一直遭到黑客攻击。两年前,一家名为Voatz的区块链投票技术公司风靡一时,许多人对此感到非常兴奋。但是去年,一些麻省理工学院的研究人员在他们的平台中发现了一系列关键的安全漏洞。同时,幸运的是,在莫斯科举行选举的一个月前,黑客入侵了即将用于即将举行的选举的区块链投票系统。
 
隐私和强制性
但是,即使是技术上没有被破坏的区块链投票协议也常常很烂。为了理解原因,我们需要更深入地研究区块链提供的特定安全属性以及投票所需的特定安全属性-当我们这样做时,我们会发现存在不匹配之处。
区块链提供两个关键属性:正确执行和审查抵抗。正确执行只是意味着区块链接受用户的输入(“交易”),根据一些预定义的规则正确处理它们,并返回正确的输出(或以正确的方式调整区块链的“状态”)。审查审查的阻力也很容易理解:任何想要发送交易并愿意支付足够高费用的用户都可以发送交易,并期望很快将其包含在链上。
这两个属性对于投票非常重要:您希望投票的输出实际上是对每个候选人的票数进行计数并选择投票数最多的候选人的结果,并且您肯定希望有资格参加投票的人即使有实力的演员试图阻止他们,也可以投票。但是投票还需要区块链无法提供的一些关键属性:
  • 隐私权:您不应该知道某些候选人为哪位候选人投票。
  • 强制反抗:即使您愿意,也不能向他人证明您的投票方式

第一个需求的需求显而易见:您希望人们根据自己的感受进行投票,而不是周围的人,他们的雇主,警察或大街上的随机暴徒会如何选择。防止售票需要第二个要求:如果您能证明自己的投票方式,出售转让票就变得非常容易。
投票可证明性也将使胁迫形式成为可能,其中胁迫者要求看到其首选候选人的某种投票证明。大多数人,即使是那些意识到第一个要求的人,也不会考虑第二个要求。但是第二个需求也是必要的,并且提供它在技术上是不平凡的。
不用说,您在平常看到的平均“区块链投票系统”甚至都没有尝试提供第二个属性,并且通常无法提供第一个属性。
 
在没有区块链的情况下进行安全的电子投票
现在传统投票都依靠外部原语来完成其安全性保证:布告栏。公告板是任何选民都可以发送消息的地方,并保证(i)任何人都可以阅读公告板,并且(ii)任何人都可以将消息发送到被接受的公告板。
您可以找到的大多数抗胁迫投票文件都会偶然提及公告板的存在,但是论文数量却很少:讨论如何实际实施此公告板。在这里,您可以希望看到我要去哪里:实施公告板的最安全方法是仅使用现有的区块链!
 
使用区块链进行安全的电子投票
当然,已经有很多尝试在区块链前制作公告栏的尝试。2008年的这篇论文就是这样的尝试。它的信任模型是一个标准的要求,即“k的n服务器必须诚实”(k = n/2很常见)。这份2021年的文献回顾涵盖了公告板上的一些区块链前尝试,并探索了将区块链用于这项工作。审查的区块链前解决方案类似地依赖于k-of-n信任模型。
区块链也是k-of-n信任模型。它要求至少一半的矿工或股权验证者的证据遵循该协议,并且如果该假设失败,通常会导致“ 51%的攻击”。
那么,为什么区块链要比专用公告栏更好?
答案是:建立一个真正受信任的k-of-n系统是困难的,而区块链是唯一已大规模解决该问题的系统。
假设某个政府宣布正在建立投票系统,并提供了将运行特殊用途公告板的15个本地组织和大学的列表。作为外部观察员,您怎么会知道,政府不只是根据他们秘密与情报机构串通的意愿,从1000个组织中选择了这15个组织?
另一方面,公共区块链具有任何人都可以参与的未经许可的经济共识机制(工作证明或权益证明),并且它们具有区块链浏览器,交易所和其他监视节点的现有多样化且高度激励的基础架构,以不断进行验证实时没有发生任何不良情况。
这些更复杂的投票系统不仅使用区块链,还使用诸如零知识证明之类的密码学来确保正确性,并依靠多方计算来保证抗胁迫性。因此,他们避免了更简单的系统的弱点,这些系统仅“直接在区块链上投了票”而忽略了由此产生的隐私和强制性抵制问题。但是,区块链公告板仍然是整个设计安全模型的关键部分:如果委员会被打破,但区块链没有破坏,则强制抗性将丧失,但围绕投票过程的所有其他保证仍然存在。
 
MACI:以太坊中抗压区块链投票
以太坊生态系统目前正在试验一个名为MACI系统,该系统将区块链,ZK-SNARK和一个单一的中央参与者结合在一起,以保证抗压性(但除了抗压性外,无权损害其他任何性能)。MACI在技术上不是很困难。用户通过使用其私钥对消息签名,将签名的消息加密为由中央服务器发布的公共密钥,以及将加密的签名的消息发布到区块链来参与。服务器从区块链下载消息,对其进行解密,对其进行处理,然后将结果与ZK-SNARK一起输出,以确保它们正确地进行了计算。


用户无法证明他们是如何参与的,因为他们有能力发送“密钥更改”消息来欺骗任何试图对其进行审核的人:他们可以先发送密钥更改消息将其密钥从A更改为B,然后再发送“用A签名的“伪造消息”。服务器将拒绝该消息,但没有其他人知道密钥更改消息已经发送过。尽管仅出于私密性和强制性要求,但对服务器有一个信任要求;服务器无法通过错误地计算或检查消息来发布错误的结果。从长远来看,可以使用多方计算对服务器进行一定程度的分散,从而增强了隐私和抗强制性保证。
clr.fund上有此计划的工作演示,用于二次融资。以太坊区块链的使用可以确保投票的抗拒性,这比依靠一个委员会来进行投票的抗拒性要高得多。
 
回顾

  • 投票流程具有四个重要的安全要求,投票才能确保安全:正确性,审查制度,隐私和强制性。
  • 区块链擅长前两个。他们在最后两个赛季表现不佳。
  • 加密区块链上的投票可以增加隐私。零知识证明可以使正确性恢复原状,尽管观察者由于加密而无法直接加总票数。
  • 多方计算解密和检查投票可以提供抗压性,如果与使用户可以与系统多次交互的机制结合使用的话;第一次互动会使第二次互动无效,反之亦然
  • 使用区块链可确保您具有极高的安全检查抵抗力,即使委员会串通并破坏了强制抵抗力,您也可以保持这种检查抵抗力。引入区块链可以显着提高系统的安全级别。

短期内,任何形式的区块链投票当然都应限于小型试验,无论是针对更主流应用程序的小型试验还是针对区块链空间本身的小型试验。目前,安全性绝对不足以依靠计算机来完成所有工作。但是它正在改善,如果我错了并且安全性没有改善,那么不仅区块链投票,而且整个加密货币都将很难获得成功。因此,该技术有很大的动力继续改进。

原文点击标题