Title Text:There are lots of very smart people doing fascinating work on cryptographic voting protocols. We should be funding and encouraging them, and doing all our elections with paper ballots until everyone currently working in that field has retired.<
Origin:https://xkcd.com/2030/
https://www.explainxkcd.com/wiki/index.php/2030:_Voting_Software
投票軟體
本漫画的前两个小组涉及一名记者与某一领域的专业人士讨论他们的每个领域有助于生产或至少部分参与所述生产的产品/解决方案的安全性(来自飞机设计师的飞机)第1小组,第2小组建筑工程师的电梯。虽然与人类存在的时间相比,所选择的两个发明相对较新,但提到的两个领域已存在多代人类,有足够的时间来发现其产品/解决方案中的缺陷并解决所述缺陷,以至于它们可以是被认为是安全的,供公众使用。
第3小组以后的漫画与Megan和Cueball的对比表明,他们同意他们的特定领域(计算机科学/软件开发/软件工程)没有其他领域具有的整体一致能力,或者至少看起来具有这种能力。这是事实(至少是有趣的),因为对于开发人员可以/不能做什么的道德和安全限制很少,以及当糟糕的决策导致灾难时相对较小的后果。
漫画的主要笑话是,当其他工程师说某些东西是安全的时候,人们不相信它们:人们害怕飞行和电梯,即使它们在统计上是非常安全的。然而,软件工程师却恰恰相反:当软件工程师说某些事情很危险时,人们就不相信它们了。
主要在数字领域运行的计算机系统与在模拟(或连续)领域中运行的大多数传统工程领域不同。模拟部件中的小误差通常会产生接近所需属性的结果(它几乎适合,大部分时间都可以工作)。相比之下,数字系统中的一个小错误(只需改变一位)就可以轻松地使系统以完全不同的方式运行。因此,软件工程不仅比其他工程领域更年轻,而且领域也不那么宽容。即使很小的错误/变化也可能产生截然不同的行为。
标题文本通过隐含地说任何生产的数字投票系统在任何情况下都不会被使用来证实漫画的立场。它还可能突出显示,在该领域工作的任何人都容易受到腐败的影响,或者至少该领域远未成熟。
这是计算机安全与其他类型安全措施之间根本区别的结果 – 在密码学中,总有人试图撤消你所构建的内容。不仅如此,密码学的新进展往往会指出以前版本的漏洞,使它们不仅过时,而且非常危险。出于这些原因,确保向您销售安全方法的人既有能力又无恶意,这一点尤为重要,但由于加密软件技术性很强且通常是机密/专有的,如果你这样做,就很难对此进行验证。不是该领域的专家(如果您购买它,您将不会成为该领域的专家)。
这些问题与投票机特别相关,投票机存储了极其敏感的信息,但由于缺乏资金,往往是灾难性的过时。电子投票一般也存在重大问题;例如,来自Computerphile的这段视频引发了恶意软件感染问题,将选票转移到选举当局而没有被拦截,并且需要信任机器的软件和中央计数系统以提供准确的投票账户。此外,购买他们的人,政治家,通常不了解他们的技术理解 – 或者他们的公正性。
区块链是一种相对较新的技术,旨在解决一些计算机安全问题,因为难以对旧数据进行处理。但是,在解决旧计算机安全问题的过程中,它引入了尚未解决的新计算机安全问题。它也不解决输入欺诈问题,只解决数据篡改欺诈问题,因此如果一个程序导致投票机每当投票给候选人A时就会记录对候选人B的投票(这样的程序可以上传到投票机通过USB,或通过投票机必须连接到互联网进行区块链的互联网,区块链不会阻止它。区块链还有大量备受瞩目的诈骗,盗窃和具有关键安全漏洞的实施。因此,由于这段历史,Megan和Cueball可能不相信这种区块链解决方案。
大多数计算机安全专家更担心随机故意错误记录投票的程序,而不是人们在记录之后更改投票,因此区块链可以解决大多数计算机安全专家不太担心的问题,同时引发新问题(他们之间的永久互联网连接)。此外,Blockchain解决的安全问题也可以通过一次性写入来解决,这对于医生来说会更安全且更难。
投票机的主题已在463:投票机中进行了讨论,其中讨论了在机器上使用反病毒软件的情况。
有趣的是,这部漫画是在DEF CON 2018之前一天发布的,并且在那里显示,在美国用于11月中期投票的投票系统在很多情况下极不安全。
Blockchain工作的方式是几台计算机输入数据。每次勾选时,它们都会彼此共享当前状态,并对其进行加密和散列。那个状态然后成为链中的“块”。然后他们共享状态,包括作为状态的一部分的那个块,然后散列并加密它,然后它成为链中的“块”。每个“块”都包含在所有后续块的加密哈希中,因此如果对任何给定块进行更改,则必须更改该块之后的所有块。
由于分布式特性,如果对任何链进行了更改,则可以将其与其他链进行比较,只要大多数人认为没有发生更改,就会将其还原并删除。
这对于防止事后数据更改非常有用。使用区块链,您可以在某种程度上保证在选举后没有人进来并更改机器上的投票。 (除非他们以愚蠢的方式处理区块链,例如没有分发)你不能做的是阻止某人在机器上安装一个程序,让它认为在它闲置的时候有一个选民,并让它开始注册在空闲时表示投票的正确行动顺序。