Binance Research

Binance Research | 零幣協議中的缺陷

Binance Research | 零幣協議中的缺陷


作者 | Binance Research


Binance Research | 零幣協議中的缺陷

  • 零幣協議(Zerocoin protocol)是為BTC提供強匿名性的第一個嘗試。儘管未在BTC協議中實現,但在2015年被實現為獨立的數字貨幣:ZCoin。
  • 為了解決交易可追溯性等現有問題,零幣協議變得非常流行,並在多個隱私幣中實現,如PIVX、SmartCash、Zoin、Veil等。
  • 然而,協議中的一些缺陷導致了運用零幣協議的各種數字貨幣蒙受了巨大損失和事故。
  • 從那以後,遭受損失的大部分數字貨幣都脫離了零幣協議,轉而採用替代的加密協議和其他隱私解決方案。其中,最常用的替代方案是RingCT、隱地址的使用、Super Sonic和Sigma。這些協議補充了現有的隱私協議,如zk- SNARKS和MimbleWimble。
  • 無論如何,零幣協議對整個加密行業起到了突破性的貢獻。它是為基於UTXO的區塊鏈提供匿名功能的首批解決方案之一,併為區塊鏈解決方案中所有隱私功能的發展鋪平了道路。


在成立的7年中,零幣呈現了一段伴隨著安全缺陷和曲折的動盪歷史。

這份報告涵蓋了一些最重要的事件,並從不同項目的角度關注2019年的事件及其後續。


Binance Research | 零幣協議中的缺陷


Binance Research | 零幣協議中的缺陷

零幣的概述

1.1零幣協議說明

零幣協議允許匿名交易,而不需要經過任何受信任的第三方(如BTC混合器)。相反,混合過程發生在協議層面。

2013年,密碼學家Matthew D. Green和他在約翰·霍普金斯大學信息安全研究所的學生開發了這項技術。這項技術的核心,即零幣的工作方式與混合池類似,但也存在一個顯著的區別,即用戶不必信任任何第三方;tumbler可以直接在協議層面實現。

該系統依賴於兩個代幣:basecoin(如BTC)和零幣。通過銷燬用過的幣來鑄造新幣,並且贖回沒有交易歷史的新幣。由於這種贖回/鑄造過程,basecoins的歷史無法追溯到其原始用戶。

例如,Alice想向Bob發送 1個BTC。她可以通過零幣協議來鑄造一個零幣,並將零幣發送給Bob。同時,將1個BTC轉移到一個無法支出的代幣中儲備起來。無論何時Bob想要花費其1個BTC中的一部分,他都可以使用自己的零幣作為一個零知識證明。

圖1 從交易角度看零幣機制

Binance Research | 零幣協議中的缺陷


零幣協議依賴於初始的信任設置;比如需要信任某人來生成初始參數,然後銷燬這些參數。例如,ZCoin依賴於RSA累加器,這需要生成兩個較大的素數。具體來說,它依賴於從RSA因數分解質詢生成的RSA-2048參數。

零幣協議被認為是對BTC協議的一種延伸,但由於幾個原因沒有得到BTC開發商的批准,即計算時間過長,對最終結果的有效性存在一些爭議,以及提議的修改是否與最初的BTC白皮書偏離太大。

相反,ZCoin創建於2015年底(以“Moneta”的名義),是第一個實現零幣協議的獨立數字貨幣(見下一小節)。

Zerocoin和Zerocash之間的區別

2013年底,零幣協議的範圍在一次名為Zerocash的升級中得到了延伸。為了提供完全的隱私,Zerocash引入了效率改進(即證明容量更小和驗證更快)和增強隱私功能(對金額和發收件方地址進行加密)。Zerocash最廣為人知的實現是ZCash。

儘管有一些關鍵的優勢,但有幾個原因可以解釋為什麼Zerocash沒有取代Zerocoin。其中最突出的有:

  • Zerocash總供給缺乏可審核性:Zerocash協議隱藏了餘額。另一方面,零幣協議並不隱藏它們。然而,正如下一節所討論的,一些攻擊者設法從RSA累加器中創建不被檢測到的錯誤證明,即花別人的代幣。
  • 對其底層密碼學(zksnark的主要實現是ZCash),以及對協議底層的加密一般複雜性測試較少,使得審計系統變得複雜。
  • 由於Zerocash計算量大,因此在本地生成私人交易的時間很長。


結果,零幣協議仍然獨立於Zerocash。因此,本文的其餘部分只關注於在library libzerocoin中定義的零幣算法及其核心實現。

1.2零幣協議不同實現的概述

表1 基於Zerocoin的主要獨立實現的比較

Binance Research | 零幣協議中的缺陷


儘管所有這些實現都依賴於零幣協議,但這些數字貨幣有許多不同之處,並且它們的一些底層設計將在本文中進行討論。

1.3 ZCoin、PIVX和Veil的概述

1.3.1 ZCoin(截至2019年初的Sigma之前)

ZCoin是一種數字貨幣,於2016年9月推出,是Zerocoin協議的第一個獨立實現(如上一節所述)。

Binance Research | 零幣協議中的缺陷


ZCoin核心特徵包括:

  • 基於BTC的源代碼。
  • 工作量證明:它依賴於MTP挖掘算法,該算法是一種對CPU友好的抗ASIC挖礦算法。
  • 哈希函數:自2018年以來,默克爾樹函數(MTP)已經取代了Lyra2z。
  • 鎖倉時間:從10分鐘減少到5分鐘。
  • 最大區塊:2MB。
  • 總供應量:2100萬(在利用了幾個缺陷後增加到2140萬)。挖礦獎勵每四年減半一次(目前為25 ZCoin/塊)。


零幣協議:ZCoin是第一個本地實現該協議的數字貨幣。然而,自2019年7月以來,ZCoin的零幣協議已被停用,取而代之的是Sigma,同時也不再需要一個可信任的設置。

圖2 ZCoin在2019年的價格(單位:美元)

Binance Research | 零幣協議中的缺陷


1.3.2 PIVX

PIVX是一種數字貨幣,旨在於2016年開始實現“可替換性、交易隱私、社區治理、網絡可拓展性和實際利用率”。

Binance Research | 零幣協議中的缺陷

在零幣鑄造被禁用之前,即2019年年初時,PIVX依靠的是:

  • PIVX最初是Dash的一個代碼分支(它本身來自Litecoin的代碼)。
  • 它始於2016年1月,當時名為DNET,並於2017年1月更名為PIVX。
  • 零幣協議:PIVX在基於libzerocoin的基礎上開發了一個零幣協議的自定義實現,該協議於2017年底引入主網。
  • 股權證明(PoS):在最初的PoW階段(2016年1月至8月間使用Quark算法)之後,PIVX轉換為股權證明。在PIVX網絡上,PIV和zPIV都可以連接。通過這個獨特的權益獎勵計劃,提供了私人權益與“常規權益”。用戶也有使用zPoS的動機,因為這將增加50%的預期權益獎勵。它的目的是提供額外的隱私,防止來自其他參與者的惡意行為,因為匿名設置行為仍然是一個需要考慮的關鍵因素。從2020年1月5日開始,包含Cold Staking的PoS Time Protocol v2已經得到使用。
  • 最大區塊:2MB。
  • 鎖倉時間:60秒(每個區塊都會重新定位)。
  • 代幣發行率:PIVX的上限為每個區塊6個 PIV。所有的交易費用和zPIV的鑄幣費用將從貨幣供應中扣除,而不是分配給額外的主節點/權益獎勵。
  • 總供應量: 供應沒有上限。到2060年6月,預計最大總供應量為189,001,497個 PIV。然而,隨著時間的推移,根據交易的數量,PIVX甚至可以減少代幣供應量。


圖3 2019年PIVX的價格(單位:美元)

Binance Research | 零幣協議中的缺陷


1.3.3 Veil

Veil是一種數字貨幣,由James Burden於2018年初創建。James Burden是數字貨幣隱私專家,也是PIVX的負責人(請參閱第1.2小節)。

Veil旨在提供“不影響匿名性的全面隱私”。

Binance Research | 零幣協議中的缺陷

Veil的核心:

  • BTC協議軟件:使用0.1.7版本的BTC軟件。
  • 零幣協議:使用上一小節所描述的libzerocoin。
  • RingCT基於Particl的實現。
  • 隱身地址:每次交易都使用一次性地址。


其他特徵包括:

  • 區塊時間:60秒(每個區塊都會重新定位)
  • 總供應鏈:3億
  • 區塊大小:2MB
  • 混合工作量證明和權益證明共識系統:
  1. 它的工作證明(PoW)共識依賴於抗集成電路的X16RT哈希算法。目的是公平分配新幣。
  2. 它的股權證明(PoS)系統依賴於直接以零幣面額進行的質押和獎勵。目的是獎勵Veil持有人。
  3. 在這種雙重混合機制中,PoS參與者必須找到一個區塊(六個區塊中的一個)的目標。
  • 自動鑄幣:Veil依賴於自動鑄幣機制:除非明確制定,否則“basecoin veils”將自動轉換成“zerocoin veils”。


圖4 2019年Veil價格(單位:美元)

Binance Research | 零幣協議中的缺陷


Binance Research | 零幣協議中的缺陷

基於零幣的數字貨幣的歷史漏洞和事件

2.1 歷史漏洞和媒介攻擊的描述

2.1.1 2017年的Zcoin事件

2017年,在ZCoin披露其源代碼後的幾個月,有人利用源代碼中有一個錯字鑄造了37萬枚額外的ZCoins。

在2017年的事件之後,ZCoin團隊宣佈,通過這一漏洞產生了18,171枚硬幣。具體來說,有人能夠產生虛假支出,從而誇大了ZCoin的供應。

該團隊立即更新系統來修復這一漏洞,以防止額外的零幣支出。最終,導致ZCoin硬分叉的libzerocoin v2發佈了,並重新引入了零幣的支出。

相反,如SmartCash等其他項目則停止使用零幣,隨後決定不再重新使用,並於2018年初正式放棄零幣。

2.1.2 潛在的拒絕支出攻擊(2017)

2017年,德國Friedrich-Alexander-University的研究人員公開披露了另一個可能被利用的漏洞。人們通常將它的攻擊稱為拒絕支出攻擊,它可能允許惡意用戶破壞誠實用戶的資金。攻擊的工作原理如下:

  • 一個誠實的用戶想要花費他的零幣,並將消費交易(包括序列號)發送到網絡。
  • 與此同時,攻擊者需要控制目標受害者的網絡,可以攔截開銷信息來確保它永遠不會到達網絡節點。然後,攻擊者製造一個新的帶有相同序列號的惡意零幣。如此一來,攻擊者就可以通過顯示正確的序列號來花掉這個零幣。
  • 在惡意用戶花費零幣之後,如果誠實的用戶試圖花費他的零幣,那麼網絡會拒絕該筆交易,並視為雙花。


結果,惡意用戶會在誠實的用戶花費之前銷燬零幣,從而篡改誠實用戶的新“的無歷史記錄”零幣。

圖5 拒絕支出攻擊的說明

Binance Research | 零幣協議中的缺陷


然而,這種攻擊的回報並不侷限於鏈上效應。從這種攻擊中獲得的更大的潛在收益將會造成短暫的恐慌,用戶在聽到協議受到攻擊時便會賣出,而攻擊者將持有資產本身的空頭頭寸(例如Zcoin)。但在2017年,在ZCoin中建立空頭頭寸相對困難,使得此類攻擊難以進行。

此外,正如ZCoin團隊自己所提到的那樣,攻擊失敗的風險仍然很高,惡意個人也可能成為其自身攻擊的受害者。

2.1.3.libzercoin中的實施問題會影響PIVX(2019)

2019年3月6日,PIVX團隊披露了在PIVX網絡零幣協議(即zPIV)上檢測到的攻擊。

這個協議的漏洞在於允許惡意個人偽造序列號,並花費最初並不是鑄造出來的零幣。與第1.4節中描述的攻擊不同,它不會導致用戶資金被盜或丟失。但是,這將對通貨膨脹產生影響,因為循環供應可以獨立於PIVX指定的通貨膨脹時間表而增加。

在發現無效區塊之後,PIVX團隊發現有惡意個人正利用漏洞,而零幣協議也被謹慎地停用了(基於sporks)。PIVX團隊認為,有兩個主要因素導致了這個漏洞被利用:

1. 在整個對象中,序列號存儲為數字類型,允許存儲大於256位的數據。

2. 知識驗證的簽名是在代幣花費簽名驗證之後進行的。它無法驗證序列號的大小是否嚴格小於256位。

這個漏洞沒有影響到ZCoin,但影響了各種PIVX分叉幣,它們大多是低市值的數字貨幣。

2.2.4 最新加密漏洞的描述(2019)

2019年4月,ZCoin遭受了一次基於零幣核心協議設計的加密漏洞攻擊。

ZCoin於2019年4月30日在一篇博客中披露了攻擊的全部細節。根據ZCoin提供的信息,攻擊者只要擁有一枚合法鑄造的代幣,就可以用任何一種零面值的數字貨幣隨心所欲地製造出任何數量的支出。這些虛假的消費與真實的消費並沒有區別。

圖6 攻擊說明(正常零幣鑄造/支出過程相比)

Binance Research | 零幣協議中的缺陷


從密碼學角度來看,一個零幣的鑄造可能產生一個錯誤的證明。下一節將討論這次攻擊對ZCoin、PIVX和Veil的影響。

2.2 2019年近期攻擊的影響

2.2.1 ZCoin

作為一個緊急解決方案,該團隊決定禁止零幣鑄幣,並阻止任何零幣消費行為的發生。因此,直到發佈Sigma前他們有效地凍結了累加器中的資金。

在1月20日轉換零幣的窗口結束後,評估了此次攻擊造成的總傷害:通過該漏洞共偽造了66,996個XZC。

由於攻擊的特定簽名,該團隊還能夠將一些鑄幣廠列入黑名單,從而防止攻擊者將一些零幣轉換入Sigma鑄幣廠。因此,根據ZCoin更新顯示,總損失估計為54,321個 XZC。

在2019年7月,該團隊正式刪除了零幣協議並由Sigma代替它,也繞過了任何信任設置的需求。事實上,自2018年初以來,ZCoin就開始致力於廢除零幣協議。

在遷移到Sigma之後,ZCoin引入了“重鑄”零幣的功能,即將零幣轉移到Sigma鑄造廠。

2.2.2 PIVX

作為對2.1.3小節中描述的事件的響應,PIVX團隊通過spork停用了零幣的隱私功能。從那時起,零幣就用於公共模式中,和正常的UTXO交易處理方式類似。

具體來說,零幣鑄造已被禁用,而零幣支出仍保持啟用(與原始basecoin完整鏈接)。此外,該團隊依賴於Schnorr簽名來確保零幣可以回到basecoin上,而不暴露於事先存在的漏洞。

在2020年1月5日,PoS Time Protocol v2隨4.0版本一起推出。繼這一硬分叉之後,PIVX有望很快宣佈其下一個隱私協議。

2.2.3 Veil

在ZCoin於2019年4月17日發現漏洞後,Veil團隊決定停用零幣協議中的匿名功能。它最初阻止了攻擊在Veik鏈上進行。

對於Veil,只能用零幣進行質押獎勵(而不能用basecoin支付)。因此,最初的解決方案並不依靠通過直接的硬分叉停止對零幣協議的依賴。

這個最初的解決方案包括一個附加補丁,要求所有零幣花費都必須帶有簽名,以便將消費與鑄幣廠聯繫起來。換句話說,防止重複花費所需的零知識證明被一個簽名所取代,進而導致匿名功能的喪失,但仍然解決了漏洞。

不幸的是,攻擊不斷“進化”,最初的解決方案並不能阻止攻擊者從累加器中竊取資金。作為一個緊急的解決方案,Veil的團隊決定:

  • 與交易所合作:暫停存取款,以防止網絡上發生任何交易,這可能導致大量資金損失。
  • 通過將餘額加到零幣池中,並禁止還沒用RingCT改組的其餘零幣,回到一個“真正”的狀態。


此外,該團隊還禁用了零知識證明,使零幣與其他(正常的)UTXO交易類似。然而,與PIVX不同的是,鑄造和發行零幣並沒有被禁用(因為只有在零幣中才可以質押),但是從那時起就沒有隱私功能了。在中長期規劃中,團隊決定採用以下幾種解決方案:

  • 調整發行時間表:這次攻擊有效增加了124,41,690個供應量。作為回應,創始人的報酬已經減少約1000萬個Veil,以抵消大部分供應的增加並將銷燬它們,另外還有210萬(超出了用於項目開發的一般預算支出)。
  • 加速Veil從零幣協議中退出:以ZCoin為例,該團隊已經確認其希望脫離零幣協議。


到目前為止,最值得考慮的解決方案是用RingCT staking來再次進行匿名質押。此外,該團隊還在研究一種使用Supersonic證明的新協議。


Binance Research | 零幣協議中的缺陷

總結和思考


與之前的事件不同,最新的零幣漏洞對現有的隱私幣領域產生了廣泛的影響。

ZCoin是其第一個實施的數字貨幣(也是市值最大的),但自2019年8月起已經脫離了該協議,併成功激活了Sigma。由於該團隊從2018年初開始研究零幣協議的替代方案,所以它的過渡可能在很短的時間內完成。

PIVX取消了零幣協議中的隱私保護功能,但除了披露其完全取代Zerocoin的使用意願外,它還沒有透露計劃的全部範圍。自2019年事件以來,零幣一直用於公共模式中,即和正常的UTXO交易處理方式類似。

Veil遭受了巨大的通貨膨脹衝擊,但它的團隊通過與交易所的合作,放棄了創始人分配的很大一部分資金來挽救這個項目。因此,它的團隊決定應該完全取代零幣協議,並從那時起就一直在研究替代方案(例如,RingCT staking)。

最近的事件可能標誌著最具象徵意義的區塊鏈隱私解決方案之一的結束,因此,加速了隱私幣格局的轉變。然而,作為一種協議,零幣很可能會繼續改進各種設計方案(例如來自Equihash的共同創始人Dmitry Khovratovich的提議),這可能會解決它最近發現的加密缺陷。


Binance Research | 零幣協議中的缺陷

Binance Research 作者

Zoe Zhou 翻譯


內容僅供參考 不作為投資建議 風險自擔


分享到:


相關文章: