Vitalik: 要正確評價區塊鏈投票,你要了解這些

買賣虛擬貨幣

來源 |vitalik.ca

作者 | Vitalik Buterin

特別鳴謝 Karl Floersch、Albert Ni、Mr Silly 以及其他人的反饋與討論

投票作為一個程式對過程正義有非常高的需求。投票的結果必須是正確的,且這必須由一個透明的過程來保證,這樣每個人才信服這個結果是正確的。干擾任何人投票或阻止別人的投票被計為有效票這樣的行為都不應該發生。

區塊鏈作為一種技術本身就是旨在給程式正義提供保障的。如果一個過程在區塊鏈上執行,區塊鏈可以確保該過程會根據預先商定的程式碼執行,並提供正確的輸出。沒有人可以阻止其執行,沒有人可以篡改其執行,沒有人可以審查或阻止任何使用者的輸入被處理。

因此,乍一看,區塊鏈提供的正是投票需要的。曾經持有這一想法的遠不止我一個;很多主要潛在使用者都表現出相同的看法。但其實,有些人持有截然相反的觀點......

儘管看上去投票的需求與區塊鏈提供的技術優勢可以完美匹配,但我們經常看到一些嚇人的文章是反對兩者結合的。這樣的文章不是個例,《科學美國人》有一篇反對區塊鏈投票的文章,CNet 和 ArsTechnica 各有一篇反對文章。還有一些不是普通技術記者的反對文章:Bruce Schneier 反對區塊鏈投票,MIT 的研究院寫了一整篇論文論證這是一個壞主意。所以,到底是怎麼回事?

概要

對以太坊投票協議的最常見的兩點批評:

區塊鏈不是適合選舉的軟體工具。它們提供的信任屬性不符合投票所需的特性,其他提供不同資訊流和信任屬性的軟體更好。

總的來說,無法信任任何軟體來進行選舉,不管是什麼軟體。無法檢測的軟體、硬體漏洞帶來的風險都太高,無論平臺是如何組織的。

本文將依次討論這些觀點 (說是"反駁”的話,語氣就太重了,但我對這兩種觀點的反對意見絕對多於贊同)。首先,我將討論現在嘗試使用區塊鏈進行投票的安全問題,以及為什麼正確的解決方案不是棄用區塊鏈,而是結合其他加密技術。第二,我將回答關於軟體(和硬體)能否被信任的憂慮。我的回答是:電腦保安實際上取得不錯的進展,我們可以繼續在這個趨勢上努力。

從長遠來看,永久地堅持紙質投票將是我們使投票變得更好的巨大障礙。N 年一次投票是 250 年前就發明的民主形式了,如果投票可以變得方便和簡單地多的話,我們可以更經常地進行投票,這樣我們可以擁有更好的民主。

毋庸諱言,這整篇文章的前提是擁有好的區塊鏈擴容技術(例如,分片)。當然,如果區塊鏈無法擴容,這些都不可能發生。但目前,這項技術的開發進展地很快,沒有理由相信它不會發生。

不好的區塊鏈投票協議

區塊鏈投票協議經常受攻擊。兩年前,一家名為 Voatz 區塊鏈投票技術公司風行一時,很多人都對它很感興趣。但是去年,一些 MIT 研究員發現了他們平臺一串嚴重安全漏洞。同時,在莫斯科,一個準備用於即將到來的選舉的區塊鏈投票系統被攻擊了,幸運的是,攻擊發生在選舉的一個月前。

這些攻擊都非常嚴重。以下是分析 Voatz 的研究人員揭露的攻擊能力表:

這本身並不是反對使用區塊鏈投票的論據,而是說明區塊鏈投票軟體應該被更審慎地設計,且應該慢慢擴充套件,且隨著時間擴大規模。

隱私與抗脅迫

但是即使是技術上不是經常出問題的區塊鏈投票協議仍然是糟糕的。要理解為什麼,我們需要深入探究區塊鏈提供了具體哪些安全屬性,以及投票需要哪些特定的安全特性—— 當我們瞭解了,我們就會看到其中不匹配的地方。

區塊鏈提供了兩個關鍵屬性:正確的執行和抗審查。 正確的執行只意味著區塊連結受來自使用者的輸入(“事務”),按照一些預先訂立的規則正確地處理它們,然後返回正確的輸出 (或以正確的方式調整區塊鏈的“狀態”)。抗審查也很容易理解:任何使用者想要傳送一個事務,且願意支付足夠高的交易費的話,就可以傳送該事務並期望看到它快速被打包上鍊。

這兩個屬性對投票來說都非常重要:你想投票的輸出實際上是計算每個候選人的票數並選擇得票最多的候選人的結果,而且你肯定希望任何有資格投票的人都能投票,即使是一些強大的行為者試圖阻止他們。但是,投票還需要一些至關重要的屬性,這些是區塊鏈不提供的:

隱私:你不應該知道某些人投給了哪個候選人,甚至不知道他們是否投了票。

抗脅迫:你不應該向其他人證明你是如何投票的,儘管你想這樣做

第一個要求的必要性是顯而易見的:你希望人們根據他們的個人感受來投票,而不是身邊的人、他們的僱傭者、警察或街上隨機的暴徒對他們選擇的感受。第二個要求是需要防止賣票:如果你可以證明你是如何投票的,賣票就會變得非常容易。投票的可證明性也會促成各種形式的脅迫,即脅迫者要求看到某種投票給他們偏向的候選人的證明。大多數人,甚至是那些意識到第一個要求的人,都不會想到第二個要求。但是第二個要求也是必須的,但達到這個要求在技術上也不容易。更不用說,人們看到的一般的“區塊鏈投票系統”根本沒有嘗試提供第二個屬性,並且經常在提供第一種屬性上就是失敗的。

非區塊鏈的、安全的電子投票

社會機制的加密安全執行概念不是有區塊鏈極客發明的,且在我們之前已經存在了。在區塊鏈空間以外,密碼學家研究安全電子投票問題已經有 20 年的傳統了,好訊息是他們已經有解決方案了。在過去 20 年,有一篇被多次引用的重要論文——“《抗脅迫的電子選舉》 (Coercion-Resistant Electronic Elections)",由 Juel、Catalano 和 Jakobsson 於 2002 釋出的:

從那時起,這個概念有很多迭代;Civitas 是一個突出的例子,儘管還有很多其他例子。這些協議全都使用一套相似的核心技術。有一個商定的”統計員“集,且有一個信任假定大多數統計員都是誠實的。每個統計員都有內部秘密共享的金鑰的部分,而對應的公鑰是公佈出來的。投票者把加密了的投票公佈給統計員的公鑰,統計員使用一個安全的多方計算 (multi-party computation, MPC) 協議解密並驗證投票,並把結果計算出來。記錄結果的計算是”在 MPC 裡“進行的:統計員永遠不會知道他們的私鑰,他們只能透過檢視最終結果瞭解情況,他們在計算時是無法知道每個人的具體投票的。

加密投票提供了隱私,並在上面新增了一些額外的基礎設施,比如加入混合網 (mix-nets) 使得隱私更強大。為了提供抗脅迫性,使用了兩種技術中的一種。一個選項是在註冊階段 (統計員收集每個註冊投票者的階段),投票者生成或收到一個秘密金鑰。對應的公鑰在統計員間是秘密共享的,統計員的 MPC 只計算用秘密簽名的投票。投票者沒有辦法向第三方證明他們的金鑰是什麼,因此如果他們受賄或被脅迫,他們只需要展示和投用錯誤金鑰簽名的票。或者,選民可以有能力傳送一條資訊修改它們的金鑰。選民沒有辦法向第三方證明他們沒有傳送這樣的資訊,從而導致相同的結果。

第二選項是一種技術,即投票者可以進行多次投票,第二次投票覆蓋第一次投票。如果投票者被賄賂或脅迫,他們可以給賄賂者/脅迫者偏向的參選者投票,但在第二次的投票可以覆蓋第一次投票。

賦予投票者在下一次投票推翻之前投票的能力,是2015年這個協議裡關鍵的抗脅迫機制。

現在,我們開始討論所有協議間的重要區別。它們都依賴於一個外在的元件來完成它們的安全性保障 —— bulletin board (公告欄,也就是上圖資料裡的"BB")。公告欄是任何投票者傳送一條資訊過去都保證:(1) 任何人都可以讀到公告欄的資訊,(ii) 任何人傳送到公告欄的資訊都會被接受。大多數大家可以找到的抗脅迫投票論文都是對公告欄的存在一筆帶過 (例如,”正如常見的電子投票方案,我們假設有一個可公共訪問的、僅能新增的公告欄“),但很少論文談到公告欄實際上是如何被實現的。在這裡,讀者大概可以看出我想表達的是什麼:實現公告欄最安全的方法就是使用現有的區塊鏈!

用區塊鏈提供電子投票的安全性

當然,在區塊鏈之前已經有大量製作公告欄的嘗試。2008年這篇論文就是這樣的嘗試;它的信任模型是一個符合標準要求的”k /n 個伺服器必須是誠實的“((k = n/2 是常見的)。2021 年這篇文獻綜述涵蓋了區塊鏈以前製作公告欄的嘗試,以及對由區塊鏈來實現進行了探索;所回顧的區塊鏈前的解決方案都與依賴 k/n 信任模型相似。

區塊鏈也是一個 k/n 的信任模型;它要求至少一半的礦工或者權益證明的驗證者遵循協議,如果該假設失敗,往往會導致”51%攻擊“。所以為什麼區塊鏈要優於一個特別設計的公告欄?答案是:設定一個真正可信的 k/n 系統是很難的,區塊鏈是解決了這個問題的唯一系統,而且是大規模地。假設一些政府宣佈它們要造一個投票系統,並提供一份 15 個當地組織和大學的清單,它們將執行一個有特殊用途的公告欄。作為一名旁觀者,你怎麼知道政府不是按照他們的意願從 1000 個名單裡選出 15 個機構,以秘密與情報機構串通?

另一方面,公共區塊鏈具有每個人都可以參與的、無須許可的經濟學共識機制(工作量證明或權益證明),它們有一個現有的、多元的、高激勵的基礎設施,例如區塊瀏覽器、交易所、和其他觀測節點,以不斷地實時驗證沒有壞情況發生。

這些更復雜的投票系統不只是使用區塊鏈;他們依賴像零知識證明這樣的加密技術以確保正確性,依賴 MPC 保證抗脅迫。因此,它們避免了那些簡單系統的弱點,即僅僅”把票直接投在區塊鏈上“,而忽略了帶來的隱私和抗脅迫問題。但是,區塊鏈公告欄仍然是整個設計安全模型的關鍵部分:如果委員會被破壞了,但區塊鏈沒有,抗脅迫性就會丟失,但所有其他圍繞投票過程的保障還在。

在以太坊上的抗脅迫區塊鏈投票

以太坊生態現在正在實驗一個名為 MACI (Minimal Anti-Collusion Infrastructure,最小反合謀基礎設施)的系統,它結合了區塊鏈、ZK-SNARKs 和一個確保抗脅迫的單一中央角色 (但沒有權力損害抗脅迫性以外的任何屬性)。MACI 在技術上並不十分困難。使用者透過用他們的私鑰簽名資訊來參與,把簽署的資訊加密到一箇中央伺服器釋出的公鑰,然後把加密了的簽名資訊釋出到區塊鏈。伺服器從區塊鏈下載資訊,解密,處理,用一個 ZK-SNARK 把結果輸出,以確保它們的計算是正確的。

使用者不能證明他們是如何參與的,因為他們有能力傳送一個“改金鑰”資訊去騙任何想要稽覈他們的人:他們可以首先傳送一條改金鑰資訊把他們的金鑰從 A 改為 B,然後傳送一條用 A 簽名的“假資訊”。伺服器會拒絕這條資訊,但沒有其他人可以透過任何途徑知道修改金鑰的資訊有沒有被髮送過。這裡需要對伺服器有信任要求,雖然只是為了保護隱私和抗脅迫;伺服器不能釋出錯誤的結果,無論是因為錯誤計算還是資訊審查。從長遠來看,多方計算可以在一定程度上對伺服器進行去中心化,加強隱私和抗脅迫的保證。

clr.fund 上有一個這個方案的工作演示,被用於四維資金。使用以太坊區塊鏈來確保投票的抗審查性,保證了比依靠委員會更強的抗審查性。

上文回顧

投票過程有四個重要的安全要求,只有當這些要求都得到滿足才能保證投票的安全:正確性、抗審查、隱私和抗脅迫。

區塊鏈擅長前兩項,不擅長後兩項。

在區塊鏈上對投票加密可以新增隱私性。零知識證明可以提供正確性,儘管觀察者無法直接合計投票,因為它們都加密了。

多方如果與使用者可以與系統多次互動的機制相結合,計算解密和檢查投票可以提供抗審查性;要麼第一次互動使第二次無效,要麼反之。

使用區塊鏈可以確保你有非常高安全係數的抗審查能力,而且即使委員會串通打破抗脅迫性,你仍然可以保持抗審查。引入區塊鏈可以大大增強系統的安全性。

但技術是可以信任的嗎?

但現在我們回到對任何型別的電子投票的第二點、更深層次的批評:技術本身太不安全、不值得信任。

最近 MIT 這篇批評區塊鏈投票的論文提供了這個非常有用的表格,它認為任何非紙質形式的投票從根本上來說都太難確保可信任:

作者關注的關鍵屬性是“軟體獨立性”,他們將其定義為“系統軟體中未被發現的變化或錯誤不能導致選舉結果中出現不可察覺的變化”。基本上,程式碼中的一個錯誤不應該能夠意外地使 Prezzy McPresidentface 成為國家的新總統 (或者,更現實的是,一個故意嵌入的漏洞不應該能夠把某候選人的份額從 42% 增加到 52%)。

但還有其他方法可以用來處理漏洞。例如,任何基於區塊鏈的投票系統,如果使用可公開驗證的零知識證明,都可以獨立被驗證。有人可以編寫自己的證明驗證器,並自己驗證Zk-SNARK。他們甚至可以寫自己的軟體來投票。當然,真正做到這一點的技術複雜性超出了現實 99% 的選民基礎的能力範圍,但如果成千上萬的獨立專家都有能力做到這點並驗證它是否可行,在實踐上能做到這點是已經非常不錯了。

但是,對 MIT 的作者來說,這還不夠:

因此,在可預見的未來,任何只有電子的系統,即使是端對端可驗證的,似乎耶不適合用於政治選舉。美國投票基金會注意到了 E2E-V 方法在提高線上投票安全性方面的前景,但釋出了一篇詳細的報告,建議避免將器用於線上投票,除非該技術發展地更加成熟,並在投票站投票中得到充分測試 [38]。

其他人提議對這些想法進行延伸。例如,Juels 和其他人的提案[55]強調使用加密技術來提供多種形式的“抗脅迫”。Clarkson 等人的 Civitas 提案實現額外的抗脅迫機制,lovino 等人進一步在他們的 Selene 系統裡整合和闡述了這些機制。在我們看來,這些提案都非常創新,但不現實:它們相當複雜,且最重要的是,它們的安全性依賴於選民的裝置沒有受損且如預期版運作,這是一個不現實的預設。

作者關注的問題不是投票系統的硬體是否安全;該方面的風險實際上可以用零知識證明來化解。相反,作者關注的是另一個安全問題:大體上,使用者的裝置能達到安全水平嗎?

鑑於消費者裝置多年以來遭遇到的各種漏洞和攻擊,人們又理由給出否定的答案。引用我自己 2013 關於比特幣錢包安全的文章:

昨晚太平洋夏令時晚上大概 9 點,我點選了一個連結前往 CoinChat[.]freetzi[.]com,並提示我執行java。我照做 (覺得這是一個合法的聊天室),然後什麼都沒有發生。我關掉視窗,什麼也沒想。14 分鐘後,我開啟我的 bitcoin-qt 錢包,看到一筆我沒有同意的交易傳送到錢包 1Es3QVvKN1qA2p6me7jLCVMZpQXVXWPNTC,幾乎把我整個錢包的餘額轉走......

以及:

在 2011 年六月,Bitcointalk 成員“allinvain" 在一個未知的入侵者以某種方式直接訪問了 ta 的電腦後,丟失了 25,000 個 BTC (當時價值500,000 美元)。攻擊者能夠訪問 allinvain 的 wallet.dat 文件,並快速把錢包裡的錢都轉走——不是從 allinvain 的電腦傳送交易,就只是上傳 wallet.dat 文件然後在 ta 自己的電腦裡把錢轉走。

但這些災難掩蓋了一個更大的事實:在過去 20 年裡,電腦保安實際上一直在緩慢而穩定地改進。攻擊現在更難發生了,經常需要攻擊者在多個子系統裡找到漏洞,而不是在一大段複雜的程式碼中找到一個漏洞。備受矚目的事件比以往任何時候都大型,但這並不表明所有事情都變得沒那麼安全了;相反,這只是我們越來越依賴網際網路的一個跡象。

可信的硬體是近來取得非常重要的進步領域。一些新的”區塊鏈手機“(例如 HTC 的這款)在這項技術上走得很遠,並在可信硬體晶片上放置了一個專注安全性的極簡作業系統,允許對安全要求高的應用程式 (例如,加密貨幣錢包)與其他應用分開。三星已經開始製作使用相似技術的手機。即使從未宣傳作為”區塊鏈裝置“的產品 (例如,蘋果手機)也頻繁推出某些可信硬體。加密貨幣硬體錢包實際上是同樣的東西,除了可信硬體元件物理上是在計算機以外,而不是在裡面。可信硬體在安全性領域,特別是區塊鏈社羣是當之無愧的壞口碑之王,因為它一次次地出問題。而且事實上,你肯定不會想用它來替代你的安全保護裝置。但就事論事來說,它的確是一個巨大的進步。

最後,像加密貨幣錢包和投票系統這樣的單一應用程式,其實比整個消費者作業系統要簡單得多,且有更少空間出錯——即使你必須納入對二次方投票、排序、二次方排序等 Glen Weyl 在2040 年發明的下一代其他什麼可怕東西的支援。像可信硬體這樣的工具的好處是它們能夠將簡單的東西從複雜的、可能會出錯的東西隔離開來,而這些工具正取得一些成功。

因此風險會隨時間減少,但有什麼裨益呢?

安全技術上的這些進步指明,未來消費者硬體可能比現在更值得信賴。過去幾年在這個領域做的投資很可能在接下來的十年不斷得到回報,且我們可以預期會有進一步的重要提升。但投票電子化有哪些好處使得探索這整個領域是合理的呢?

我的答案很簡單:投票會變得高效得多,使得投票可以更經常地進行。目前,對組織 (政府或企業)的正式民主輸入傾向於限制在每 1-6 年進行一次的投票。這實際上意味著,每個選民每年只向系統提供不到一點點的投入。也許在很大程度上是由於這個原因,我們社會的去中心化決策被嚴重地走向兩個極端:純民主和純市場。民主要麼是非常低效的 (企業和政府投票),要麼是非常不安全的 (社交媒體上的點贊或轉發)。市場在技術上則高效得多,且比社交媒體安全得多,但它們的基本經濟邏輯使其不適合許多種類的決策問題,特別是與公共物品有關的問題。

是的,我知道這又是一個三角形,我真的非常抱歉不得不使用它。但是,請容忍我這一次...... (好吧,我確信我將來會做出更多的三角形;忍忍吧)

如果我們能夠建立更多介於民主與市場之間的制度,從前者的平等主義、後者的技術效率、以及光譜兩級間的經濟特性間獲益。二次方募資是一個極佳的例子。流動式民主是又一佳例。即使我們不再引入複雜的新委託機制或二次方計算方法,我們也可以透過在更小範圍內更頻繁地進行投票,以適應每個選民可接收到的資訊。但所有這些想法的挑戰在於,為了一個可持久的、支援任何水平的民主的方案,你需要一些抵抗女巫攻擊和化解買票問題的形式:這正是這些複雜的 ZK-SNARK+MPC+區塊鏈投票方案試圖解決的問題。

加密世界對解決問題有幫助

加密世界的有一個被低估的好處,就是它是一個極好的”虛擬特別經濟區“,可以在一個對抗性很強的環境裡測試一些經濟和加密理念。無論你構建和釋出什麼,一旦它所控制的經濟力量達到一定規模,一大批不同的、有時是利他的、有時是利益驅動的人、有時是惡意的行動者(大多數是完全匿名的)會進入這個系統,並嘗試把該經濟力量扭轉為服務他們自己的各種目的。

攻擊者的激勵很高:如果攻擊者從你的加密經濟工具裡投了 100 美元,他們往往可以得到完整的 100 美元的獎勵,而且可以逃脫。但是防禦者的獎勵也非常高:如果你開發一個工具可以幫助使用者不會丟失他們的資金,你可以(至少有時)把它轉化為一個工具,賺取數百萬美元。加密世界是一個終極訓練場:如果你構造的東西可以在這個環境裡生存下來,且發展成規模,它很可能也能在更大的世界裡生存。

這適用於二次方募資、多籤和社交恢復式錢包,且它也使用與投票系統。區塊鏈空間已經幫助推動了以下重要安全技術的崛起:

硬體錢包

高效多功能零知識證明

形式驗證工具

有可信硬體晶片的”區塊鏈手機“

抗女巫攻擊機制,比如人性證明 ( Proof of Humanity)

在所有這些案例裡,該技術的某些版本在區塊鏈出現之前就已經存在。但難以否認的是,區塊鏈在推動這些成果方面已經有非常重要的影響,而這個領域固有的激勵在為技術的開發到落地提供充足資金方面扮演一個非常重要的角色。

結論

在短期內,任何形式的區塊鏈投票肯定只能繼續限制在小規模實驗裡,如論是用於主流應用的小測試還是用於區塊鏈本身。當然,目前還是計算機的安全性還沒有好所有事務在依賴於其上的水平。但它在不斷完善,如果我的判斷錯的了,安全性無法提升,那麼不只是區塊鏈投票,連整個加密貨幣世界都將難以成功。因此,有非常巨大的動力持續完善這項技術。

我們都應該繼續關注提高安全性的技術和不同地方正在進行的努力,並慢慢地在非常重要的社會程序中更自如地使用技術。技術已經是我們金融市場的關鍵,而大部分經濟的加密化 (或甚至只是取代黃金) 將把更大一部分的經濟放到我們的加密演算法和執行它們的硬體手裡。我們應該認真關注並支援這個程序,並漸漸利用其優勢,把我們的治理技術帶進 21 世紀。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;