為什麼隱私是公鏈大規模採用的最後障礙之一?

三種不同的隱私處理方法是什麼?

這篇文章闡述了公有鏈(又稱去中心化賬本、加密貨幣和Web3)背景下的隱私狀況。第一部分的內容涉及到了為什麼隱私是區塊鏈廣泛採用的關鍵障礙,以及隱私的不同方面是什麼。第二部分內容調查了三種不同的隱私處理方法:通過零知識證明,僅以匿名為目標,以及通過一種稱為MOCCA的新的抽象概念。

第一部分:為什麼,以及什麼是公有鏈的隱私屬性?

隱私——區塊鏈大規模採用的最後障礙

由於現代金融系統運行良好,我們不必擔心日常交易的安全或隱私問題。當你在超市購物,通過支票支付房租,或者在銀行辦理短期貸款時,你不必擔心你的交易被非相關方進行公開審查。在現代銀行和信用卡網絡中,交易細節(大部分情況下)停留在相關的金融中介機構和當局內。 (理想情況下)用戶不必擔心他們的敏感信息會被洩露給公眾,而當局可以(大部分情況下)追踪非法活動。

不幸的是,今天在流行的區塊鏈上進行的交易就不是這樣的。儘管區塊鏈技術有望實現當前金融生態系統的去中心化和民主化,但大多數係統甚至未能滿足我們所期望的最基本的隱私水平。你購買披薩的交易記錄可能會被永久記錄下來,你的所有交易都可以在Etherscan上被輕易的公開訪問。雖然現在有一些以隱私為重點的項目,但由於在功能和易用性方面的不對等,使它們目前還沒有得到充分利用。這標誌著隱私是大規模採用區塊鏈技術的關鍵障礙之一。

公有鏈環境中的隱私屬性不是一個全有或全無的功能。相反,它是一個複雜和多維的問題,在瀏覽時需要謹慎。讓我們首先需要深入了解哪些類型的隱私屬性與區塊鏈應用有關。

隱私的特徵軸

軸A:匿名性和保密性。廣義上講,金融交易的隱私有兩種類型:匿名性和保密性。當一個非營利組織收到匿名捐款時,他們沒有獲得任何關於捐贈者的信息(匿名性),但他們知道收到的捐款金額。當你在藥店結賬時,你的購買記錄是保密的——你身後的人不知道你可能開的是什麼藥,以及這些藥的價格,但他們知道你在買藥。

匿名性:人們能知道我是交易的發起人麼?保密性:人們能知道我交易的內容麼?

軸B:鏈上應用與中介應用。區塊鍊和加密貨幣的基礎理論之一是能夠在沒有可信的中介機構的情況下進行金融交易。跟隨比特幣的腳步,幾乎所有的加密貨幣都允許沒有中介的直接支付。以太坊等智能合約平台更進一步,它們使支付以外的金融交易可以在沒有中介的情況下進行,如交易和借貸。在這篇文章中,我們用鏈上一詞來描述功能和應用,如支付、交易、借貸,用戶可以直接作為一個共識節點的運行者來使用。 (提醒一下:用戶通常不運行自己的共識節點。例如,Web3錢包的第三方RPC端點提供者在實踐中應被視為中介機構)。鏈上應用的一些例子包括比特幣和Zcash的支付,Uniswap的交易,以及Compound的借貸。

不幸的是,中介機構在生態系統中仍然是無處不在的。像Coinbase這樣的交易所是他們所提供服務的中介——用戶需要將資產存入這些交易所進行交易。甚至一些“去中心化”的協議也依賴於中心化運營的中介機構。例如,dYdX和DiversiFi都有中心化交易所運營商。這與Uniswap等鏈上對應協議不同,它們不需要與共識網絡之外的服務器互動。與Coinbase相比,dYdX和DiversiFi的特點是消除了資金安全所需的信任。相反,用戶需要信任密碼學和代碼,特別是STARKs,以保證其資金的安全。支付通道網絡(如閃電網絡)和roll-ups(如Arbitrum、Optimism、Aztec和Scroll)是另外兩類中介應用。雖然目前大多數中介都是中心化的,但它們可以被設計成去中心化的,這對roll-ups應用來說是特別理想的,因為它們直接與側鏈競爭。例如,Zk-roll-ups可以有一個具有某種形式的共識機制的roll-up sequencers網絡,有效地使roll-up成為一條鏈。

上述兩種區塊鏈應用的分類為我們提供了一個額外的軸來考慮隱私問題:鏈上隱私與來自中介機構的隱私。

鏈上隱私:我的信息是否被永久地記錄在鏈上?

來自中介的隱私:我的信息是否被披露給我委託代表我行事的實體(想想你的銀行、Coinbase和1inch這樣的交易聚合商)?

把這些軸放在一起。通過結合兩個隱私特徵軸,我們得到了區塊鏈應用的四個隱私概念:匿名性和保密性之間,以及鏈上與中介之間。下面是一個表格,列出了每個類別的一個隱私問題。

表中展示了每個隱私類別的問題表中展示了每個隱私類別的問題表中展示了每個隱私類別的問題

鏈上:

  • 匿名性:我在Uniswap上的交易是否可以與我在鏈上進行的其他活動聯繫起來,例如NFT交易?
  • 保密性:我在鏈上的交易總額是公開信息嗎?

來自中介機構:

  • 匿名性:交易所運營商(Coinbase、dYdX等)能否根據誰在交易而阻止交易?
  • 保密性:交易所運營商(Coinbase、dYdX等)可以看到並記錄交易細節嗎?

當然,對於上述任何一個問題,答案是你的信息被永久地記錄在鏈上並傳輸給中介機構。有了這樣的認識,我們現在就可以深入了解鏈上和中介區塊鏈應用的隱私是什麼。

免責聲明1:雖然大多數應用程序聲稱是去中心化的,但鏈上智能合約的開發和訪問往往是非常中心化的。例如,一個編碼錯誤往往可以導致數百萬美元的漏洞,而去中心化交易所(DEX)交易往往要經過數量不斷減少的礦池,這些礦池利用用戶的交易為自己牟利(這被稱為MEV,即礦工可提取價值)。我們在此不進一步闡述這些問題,因為我們的重點是隱私問題。

免責聲明2:我們不會深入觸及隱私的一個重要維度是隱私、監管和合規之間的相互作用。金融中介機構在許多情況下都有法律義務,不僅要了解他們的客戶(KYC),還要記錄和報告某些金融交易。反洗錢(AML)是其中的主要目標之一。例如,加密貨幣的透明度最近幫助司法部追回了2016年Bitfinex黑客事件中被盜的價值36億美元的資金。我們不會觸及監管和合規問題,而是在本文中只從技術和理論層面關注隱私問題。

第二部分:如何構建保護隱私的區塊鏈應用

讓我們先來看看支付,因為它們大多是解決了隱私問題,而且不需要中介機構。 Zcash和Monero是兩個同時提供匿名性和保密性的大市值加密貨幣。它們分別依靠零知識證明和環形簽名來提供不同程度的匿名性和保密性。我們還有其他建立隱私支付的方法,這些方法更有效,但需要互動,如Mimblewimble,或不需要不斷擴大的UTXO集,如Quisquis和Anonymous Zether。

然而,在支付之外,情況就不那麼清楚了。例如,支付之外最成功的應用之一是在去中心化金融(DeFi)領域。但目前我們仍然不知道或沒有廣泛建立DeFi應用的隱私技術。

為了全面的對這個問題進行推理,我們首先需要有一個良好的理論模型來談論鏈上應用。一般的鏈上應用可以被建模為迭代計算,由一個過渡函數f指定,它為每個起始狀態st和輸入計算(st′,輸出)←f(st,輸入)。

用戶可以在將交易提交給共識節點進行處理之前,將其構建為輸入。為了在這個過程中保護用戶的隱私,我們需要在不透露用戶身份和輸入的情況下進行計算。有三種方法:(1)將計算推到鏈下,(2)保持計算透明但隱藏發起人的身份,以及(3)對加密的輸入進行同態計算,輸出透明。

通過ZKP實現鏈外計算的隱私性

零知識證明(ZKP)是20世紀80年代末理論計算機科學和密碼學領域的一個重要發展(本講義第1章給出了一個很好的調查)。區塊鏈環境中使用的特殊形式的零知識證明(ZKP)在學術上通常被稱為NIZK,即非交互式零知識。當證明是簡潔的,它們通常被稱為SNARG(或SNARK),或簡潔的非交互式論證(知識)。其他感興趣的特徵是透明性(STARKs)和普遍性,這使得證明系統可以用於沒有可信設置的多個通路,或者使用一個普遍的可信設置。

ZKP在公共區塊鏈上的核心應用是執行可驗證的、鏈下計算的能力。通常情況下,驗證者是終端用戶(在ZK應用平台的情況下)或中介(ZK roll-up),而驗證者是區塊鏈,即驗證者集。使用ZKP進行一般計算的一個直接方法是直接證明狀態轉換的正確性。詳細說來,用戶在鏈下證明,對於一個特定的鏈上狀態st,用戶有一個輸入,當應用於檢查狀態st時,會產生一個具有某種輸出的新狀態st′,然後共識節點在覆蓋舊狀態之前驗證提議的狀態轉換的有效性。這是Mina Snapps和Aleo等ZK應用平台採取的方法,這兩個平台的靈感來自Zexe的學術工作。

透明鏈上應用與上述架構的關鍵區別在於,前者天真地認為,一個更新(st′,輸出,π)只對用戶用於生成更新的應用狀態st有效。如果多個用戶在沒有協調的情況下與同一個應用程序互動,這將導致“競賽條件(race condition)”。為了詳細說明這個概念,假設有兩個有效的事務針對同一個鏈上狀態st0進行構建,分別將其更新為st1和st2。當第一個交易被記錄在鏈上時,鏈上狀態被更新為st1。因此,第二筆交易是使用新的狀態st1,而不是st0來驗證的,這很可能導致其無效。

值得注意的是,人們可以通過將應用狀態分割成獨立的部分或完全消除共享鏈上狀態來繞過這個競賽條件。這使得這些ZK-應用平台非常適合不需要用戶之間共享狀態的特定應用(例如ZKPass),但對於大多數需要這些共享狀態的鏈上應用,特別是像恆定功能做市商(CFMMs)這樣的鏈上DeFi協議,就不是那麼合適了。對於這些應用來說,由於競賽條件的問題,在整個應用狀態轉換中使用ZKPs有點像“狗熊掰棒子”的解決方案。然而,有一個解決方法,那就是增加一個中介或交易運營商,使應用狀態對運營商來說是私有的,而不是在所有用戶之間共享。不幸的是,如果不採用本文後面討論的其他解決方案,就沒有已知的辦法從這些中介那裡隱藏交易信息。總而言之,ZK應用平台上的交易所,如Aleo和Mina,實現了以下隱私特性。

表中詳細列出了可在Mina和Aleo等ZK應用平台上建立的交易所的隱私特性表中詳細列出了可在Mina和Aleo等ZK應用平台上建立的交易所的隱私特性表中詳細列出了可在Mina和Aleo等ZK應用平台上建立的交易所的隱私特性

鏈上:

  • 匿名性:是
  • 保密性:是

來自中介機構:

  • 匿名性:是
  • 保密性:否

透明鏈上計算的匿名性

為鏈上應用添加保密性是很難的。如果我們不試圖提供保密性,而只想提供匿名性呢?使用現有的工具已經可以做到這一點:使用CoinJoin和Tornado Cash等tumbler和混合器(mixer),人們可以資助新的偽匿名地址以獲得匿名性。不幸的是,這些工具的選擇性質意味著它們更多地被惡意用戶而不是合法用戶所利用。例如,CoinJoin被Colonial Pipeline勒索軟件使用,而Tornado Cash經常被用來資助匿名地址,以幫助DeFi黑客。

有兩個項目試圖在透明的智能合約平台上建立默認的匿名性。第一個是Aztec Connect,這是一個新興的以太坊的“zkzk-rollup”,它在與支持的第一層應用程序進行交易時,提供交易匿名性。 roll-up合約代表第二層用戶(其身份在鏈上和roll-up供應商處都是隱藏的)與第一層DeFi協議互動,為這些第二層用戶提供匿名性。

第二個是FLAX的學術工作。它提出重新設計一個類似以太坊的智能合約平台,以支持終端用戶的內置匿名性。在核心方面,FLAX提出了一個匿名版本的ERC20代幣標準,允許匿名和原子化的代幣使用授權。有趣的是,實現這些“匿名ERC20”不需要新的加密技術。人們可以在代幣合約內使用之前提到的任何隱私支付計劃中的相同技術,如Zcash、Monero或Zether。

下面是一個表格,概述了上面討論的解決方案的隱私特徵。我們在這裡省略了中介一欄,因為沒有涉及到中介,除了Aztec Connect,它有可能提供來自中介(roll-up供應商)的匿名性,這取決於去中心化的程度和這些供應商的確切行為。

表中詳細列出了tubler、混合器、Aztec Connect和FLAX的隱私特徵表中詳細列出了tubler、混合器、Aztec Connect和FLAX的隱私特徵表中詳細列出了tubler、混合器、Aztec Connect和FLAX的隱私特徵

鏈上:

  • 匿名性:是(在tumblers和mixers的情況下是可選,在Aztec Connect和FLAX的情況下默認)。
  • 保密性:否

通過MOCCA進行鏈上計算的隱私性

如果我們可以加密鏈上的應用程序狀態和用戶輸入,但仍然能夠對其進行計算,甚至得出公共的未加密的輸出信息,那樣會發生什麼?讓我們把這樣一種理想的功能稱為神奇的鏈上保密計算設備(MOCCA)。

直觀地說,MOCCA為狀態轉換函數f提供了可能的最佳隱私。它們可以在鏈上計算,給定必要的加密輸入,並且計算應該產生一個加密的和更新的狀態,以及一些透明的輸出值。具體來說,程序的狀態和輸入被加密到鏈上,這樣一來,唯一可以進行的共識操作就是計算狀態的轉換,這意味著只有應用意圖的信息被解密並變得透明。暫時假設我們有這樣一個魔盒,那麼就很容易複製鏈上應用程序的功能,同時提供隱私屬性。因為應用設計者可以設計他們的應用,只發布相關的信息作為透明的輸出,如現貨價格或儲備金額。

有兩種方法來構建MOCCA,通過可信的硬件和通過密碼學。在任何一種情況下,我們都可以希望實現沒有中介的保護隱私的去中心化應用,並具有以下特性。

表中詳細列出了來自MOCCA的應用的隱私特性表中詳細列出了來自MOCCA的應用的隱私特性表中詳細列出了來自MOCCA的應用的隱私特性

鏈上:

  • 匿名性:是
  • 保密性:是(確切的隱私取決於應用的設計)

來自可信硬件的MOCCA。第一個解決方案是利用可信的執行環境,特別是Intel SGX。這是在Ekiden的學術工作中首次描述,也是Oasis和Secret Network採取的方法。已經有一些應用程序在這些平台上運行,如Secret Swap。然而,眾所周知,Intel SGX是有缺陷的。

來自密碼學的MOCCA。我們可以只用密碼學來構建圖靈完備的MOCCA麼?事實證明,答案是肯定的,而且密碼學家已經發現了這個難題的所有個別部分。

拼圖的第一塊是閾值密鑰(threshold key)的生成和重新共享。我們知道如何在節點加入和離開時在動態共識集中生成和管理Shamir秘密共享(secret share),即使是大型共識集。這些允許“n”個共識節點中的任何數量的“t”採取行動,就像他們一起是公鑰加密方案或簽名方案的密鑰持有人一樣。這些進展被提出來,分別是為了防止前面的運行(例如Ferveo)和構建簡潔的輕客戶端(例如鍊-密鑰密碼學)。

加法(Additive)MOCCA和交易所。拼圖的第二塊是閾值同態加密。著名的和已部署的公鑰加密方案,如ElGamal和Paillier都是加法同態的,並支持Shamir秘密共享作為密鑰。利用它們,我們可以建立支持加法的MOCCA。

事實證明,我們已經可以使用只支持加法的MOCCA建立鏈上交易所(特別是恆定函數做市商,或CFMMs)。這是Penumbra的天才觀察,它利用ElGamal加密的加法同態性來匯總交易,並通過閾值解密來揭示一批交易的淨額。這以差異隱私的形式提供了交易的保密性。

來自閾值FHE的圖靈完備的MOCCA。為了實現更普遍的計算的MOCCA,我們當然需要完全同態加密(FHE)。自2009年Genry首次構建FHE以來,FHE方案的效率在過去十年中在理論上和實踐上都有了穩步的提高,並有可能繼續提高(例如,通過挖礦硬件加速)。然而,FHE本身並不是全部的解決方案,因為持有解密密鑰仍然使任何一方能夠獲得在相應的加密密鑰下曾經發佈到鏈上的所有信息。這就是以前在區塊鏈環境中部署FHE的努力,如NuCypher和smartFHE在提供保護隱私的鏈上應用方面的不足之處。

幸運的是,我們知道如何構建具有閾值解密的FHE方案,其中解密密鑰是Shamir秘密共享的。具體來說,每個共識節點可以獨立地對加密的程序狀態和輸入進行計算,得出加密的新程序狀態和加密的輸出。最重要的是,為了釋放透明的輸出,共識節點可以通過一輪通信對加密的輸出進行閾值解密。這裡的閾值屬性保證,只要在閾值以下的驗證者是惡意的(在任何時代),那麼只有預期的信息(即透明輸出)被釋放,而輸入和程序狀態永遠不會被解密。

結合上述內容,我們可以為一般的圖靈完備的狀態轉換函數建立一個純粹依靠密碼學的MOCCA,當然這其中還需要修改許多技術細節。 (據我所知,區塊鏈環境中閾值FHE的這種確切用法還沒有在其他地方說明。如果能指出我所遺漏的先前的工作,我將不勝感激)

總結

隱私是公有鏈大規模採用的最後障礙之一。隱私可以分為兩個特徵軸:匿名性與保密性,鏈上隱私與來自中介的隱私。有三類方法來實現隱私。

首先,使用零知識(ZK)證明(特別是STARKs或通用SNARKs),我們可以通過將計算轉移到鏈下的中介機構來實現鏈上匿名和鏈上保密,從而犧牲來自中介機構的隱私(例如Mina Snapps和Aleo)。

其次,在不依賴中介的情況下,我們可以將匿名性(不含保密性)添加到現有的鏈上應用生態系統中,而無需對應用設計進行重大改變(例如CoinJoin、Tornado Cash、Aztec Connect和FLAX)。

最後,本文提出了一個被稱為MOCCA的抽象概念,即神奇的鏈上保密計算設備,它可以對加密數據進行計算並發布透明的輸出。 MOCCA可以用來構建通用的鏈上匿名和保密應用,而不需要中介。 MOCCA可以從可信的執行環境(Oasis和Secret Network)或依靠“區塊鏈的閾值密碼學”來構建。具體來說,閾值加法同態加密(ElGamal)可用於構建加法MOCCA,以實現具有匿名和保密性(不同的隱私屬性)的鏈上交易所(Penumbra);閾值完全同態加密(FHE)可用於構建通用的MOCCA,以實現任何保護隱私的鏈上應用(在這篇文章中提出)。

ZK方法目前在業界受到的關注最多。然而,我認為,更多的注意力應該放在第二和第三種方法上。將易於使用的匿名性添加到當前的智能合約架構中,是隱私和功能之間的一個很好的中間點(應該有人建立FLAX!)。此外,我們應該促進對閾值FHE的長期研究和開發工作,以支持一般的隱私保護應用。這些方法也不是排他性的,我們可以有支持所有三種計算類型的應用平台:透明的鏈上、隱私的鏈下(ZKPs)和“不透明的”鏈上(MOCCAs)。如果你對上述任何一項感興趣,請與我聯繫。

致謝

非常感謝Alex Evans和Guillermo Angeris提出的有益的編輯意見。感謝Adrian Brink創造了“不透明(opaque)”一詞來描述加密數據的鏈上計算。

原文鏈接:https://wdai.us/posts/navigating-privacy/

展開全文打開碳鏈價值APP 查看更多精彩資訊

Total
0
Shares
Related Posts