零知識證明:身份隱私中的ZK


在區塊鏈世界中,身份可以以多種方式表現出來。真實世界的實體(如人或組織)可以在一個或多個區塊鏈上採用不同的形式,區塊鏈上的一個身份可以代表幾個真實世界的實體。這樣的身份可以通過擁有私鑰、擁有特殊類型的NFT、參與某種類型的DeFi 等進行建立。

圖1:數字身份演示

這種通用且靈活的身份概念可以實現前所未有的用例和體驗——但我們也同時需要注意隱私。一個人的身份可能是以一種特定的方式相互關聯的多種事物,但只有其中的某一部分可能在一個環境中才是最重要的。例如,一場只允許BAYC NFT持有者參加的音樂會的組織者並不真正關心你擁有哪一個NFT,只要你至少擁有其中一個就可以。參加DeFi會議可能要求去年你在某個DeFi交易所借出了5萬個代幣,但不確切說明借出了多少、參與了多長時間等。

第一個例子

零知識(ZK)證明可以真正實現這樣的用例,同時為相關實體提供數學上可證明的隱私。為了進一步闡述這一點,讓我們回到前一段的兩個例子。對於第一個例子,ZK證明將表明一個想要參加音樂會的人P知道一個地址A的密鑰,該地址屬於BAYC NFT持有者的10,000個地址集。進一步分解:

公共輸入是在鏈中某一特定NFT的所有地址的集合S;;

私人輸入P為密鑰sk¹;

我們想在ZK中證明的是,從sk派生的地址在集合S中。

在零知識學術文獻中,這種證明通常被稱為成員證明。有幾種方法可以生成這樣的證明。如果集合不是太大,可以使用RSA累加器。

使用RSA累加器,集合S可以用一個短值表示——成員證明也很短。在S中添加或刪除地址的代價也很低,與累計值的數量無關。然而,在最壞的情況下,上漲集合S和產生證明所花費的時間可能與S的大小成線性關係(實際的時間範圍取決於設置的具體情況,甚至可能是恆定時間)。這裡還有另一個問題:我們不僅想證明某個地址A在集合中,而且還想證明A是從sk派生出來的。我們可以為前者設計自定義ZK 協議(例如,離散對數知識) ,但通用的ZK系統通常最適合後者。另一個問題是以一種有效的方式將三個組件粘合在一起(成員關係、離散日誌和哈希的原像)。

第二個例子

上面提到的第二個用例比第一個要復雜一些。有興趣參加DeFI會議的人需要表明他們向區塊鏈發送了交易tx(如以太坊),該區塊鏈在DeFI合約中調用了借貸功能,比如DF。他們還需要表明,tx轉了至少5萬個代幣,並且它被添加到對應於2021 年開始和結束的兩個區塊之間的區塊鏈中。現在,根據區塊鏈,一年內可能會生成數十萬區塊。每個區塊包含的所有交易的哈希(通常稱為交易哈希)。 ZKP 可以用來表明tx 被“包含”在某個區塊B 的交易哈希中——而不顯示tx 本身——但這會揭示比預期的還要多的信息。在極端情況下,如果B 只包含合約DF 的一筆交易,那麼ZKP 是沒有意義的。理想情況下,我們希望證明tx 包含在2021 年的其中一個區塊的交易哈希中。

生成一個包含2021年以來所有區塊(或至少有一些DF交易的區塊)的Merkle樹,並證明包含tx的區塊只是Merkle樹的葉子之一,這將是一個更具可擴展性的方法。對於這個問題:

公共輸入是2021 年以來所有區塊集合的Merkle 根(或至少是它們的正確子集),和合約DF的代碼(通過鏈上的合約地址引用);

私人輸入是用於簽署tx的密鑰sk,tx本身,包含tx的區塊B,以及B在Merkle樹中的路徑;

我們想要證明的是:sk 用於簽署tx,tx 包含在B 中,B 是Merkle 樹的一部分,tx 調用DF 中的適當函數,並且tx 轉了至少5萬個代幣(其他tx 的參數應保持隱藏狀態)。

我們只是觸及了可以在不同用例中進行的大量身份驗證的皮毛,ZK語句已經開始顯示出一些複雜性。事實上,一旦我們開始更具體地思考,它們會變得更加複雜(誠然,上面關於DeFi會議參與問題的語句相當簡單)。其中的複雜性包括:

DF不是直接調用的,而是通過另一個合約或一系列合約進行調用的;

tx包含在區塊鏈中,但對DF的狀態沒有預期的效果;

會議關心的是以今天的利率借出的實際美元數量,而不是代幣。

跳出固有思維模式

不過我們不必太擔心。 ZKP的美妙之處在於,幾乎任何你能想到的語句都可以在零知識中被證明(確切地說,任何可以在多項式時間內被驗證的關係也可以在零知識中被證明)。雖然ZKP 的非交互式版本最適合解決L1 上的機密性、隱私、狀態增長、完整性等問題,但交互式證明對於需要基於區塊鏈的身份斷言的許多應用程序可能很有意義。

零知識證明:身份隱私中的ZK

圖2:ZKP 交互式版本示例

上述音樂會入場的例子可以用來說明這一點。對於NFT所有權的ZK成員證明,只需要一個確定的驗證者,而不是典型的L1 設置中的數百或數千個身份不明的驗證者。證明者可以主動與驗證者接觸,並在會話過程中交易所多條消息,從而擺脫了非交互式ZK證明固有的複雜性。事實上,證明不必很短,驗證者的複雜度也不必很低,因此可以充分探索ZK-SNARK(最流行的非交互式證明系統,也有簡潔的證明)之外的ZK 證明範圍。我們將能夠使用具有更好的證明復雜性、底層安全假設等的證明系統。

請參閱下表,了解不同證明系統的高級比較。當我們沿著表格往下看時,證明復雜度和安全性假設變得越來越好,而證明大小變得越來越差。雖然基於mpc的ZK證明系統提供了最好的證明復雜性,並且具備無需信任的設置,但證明是交互式的並且僅適用於特定的驗證者(證明者與之交互的那個),所以當身份斷言必須對鏈下的特定一方做出判斷時,這可能就不是問題。 (ZK證明系統的其他一些特徵,如後量子安全性,在表中沒有體現。)

零知識證明:身份隱私中的ZK

表1:不同證明系統的高級比較

總之,世界上的身份不一定是基於區塊鏈的,也不一定是基於非區塊鏈的。展望未來,它們當然可以是兩者的結合——這將使保護隱私的身份斷言變得更加有趣!

來源:https://medium.com/delendum/zk-in-identity-980493401d80

Total
0
Shares
Related Posts