zCloak Network 是基於零知識證明技術的多鏈隱私計算平臺,其願景是成爲 Web3.0 時代的數據隱私門戶。

撰文:Vivian,Bixin Ventures 投資經理

零知識證明是區塊鏈的一個技術高地,越來越多的團隊投入大量資源專攻零知識證明。它究竟有哪些優勢,能夠解決什麼問題?未來又有哪些使用場景?都說零知識證明技術貴、開發難,它又貴在什麼地方,難在哪裏?帶着這些問題,我們和 zCloak Network 創始人張曉博士聊了聊。

以下爲訪問全文:

Vivian:可以先談談你本人接觸區塊鏈的契機嗎?

張曉:2017 年知道了以太坊,2018 年和以太坊基金會、以太坊社區基金會一起做了些區塊鏈教育方面的事情。同期 Gavin Wood 經常來中國,我會去聽他們的 workshop。因爲覺得 Substrate 是個很不錯的區塊鏈開發框架,就逐漸開始在波卡生態做項目了。從事區塊鏈行業主要原因是個人的興趣愛好,我原來在荷蘭上學,那邊接受了研究生教育和博士教育。當時我所在的荷蘭那邊整個計算機學院的思維和風格都是極客、黑客、密碼朋克的那種感覺。自然而然的就會對類似區塊鏈這樣的一種思維感到特別的親切。之後開始自己獨立做項目,也就有了 zCloak Network。

Vivian:zCloak 這個名字很有趣。我猜它跟零知識證明有很大的關聯?你會如何向一個非技術人士普及零知識證明 ZKP (Zero Knowledge Proof)和去中心化身份 DID (Decentralized Identity) 這兩個概念?

張曉:是的,Clock 本身是斗篷和披風的意思,Cloaking 可以指代隱身技術,z 就代表了 ZKP 零知識證明。所以合起來,zCloak 是指我們我們用零知識證明去實現數據隱私保護,就好像讓數據隱形了一樣。

零知識證明是一種方法,他可以實現證明者在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。舉個例子:A 想要向 B 證明:A 可以解開某道數獨題。但是 A 不想 B 知道答案,不可以告訴 B 解題結果。怎麼實現呢?A 可以拿出 81 張卡片,擺成 9_9 的格子,填寫出答案,將所有卡片背過去。讓 B 選擇任意行或列或九宮格,A 將選定區域的九張卡片放在一個布袋裏,B 來驗證布袋中包含數字 1-9。重複多次後,B 就可以相信:有極大概率 A 可以解開這道數獨。這就是零知識證明的一種解釋方法。

在數學計算中,我們可以使用零知識證明技術,在不透露輸入數據的情況下,去證明某個計算的過程是正確的。在現實環境下,我們可以實現的一個用例是,在不透露用戶隱私數據的情況下,證明他手中的數據符合某種特定的規則。例如通過對他的年齡、國籍的計算,去證明他是一個是合規的用戶。

去中心化身份 DID 解決了一個問題:一個鏈上的地址,如何跟實體機構建立一個法律上的綁定關係。二者綁定的結果在公開可信的網站上可以查詢,這就是 DID。跟 DID 密切相關的一個技術叫可驗證數字憑證。

我們密切合作的一個夥伴是 KILT Protocol。他們做的事情是:用戶從銀行,市政廳等具有公證能力的第三方機構獲取自己身份的 KYC 信息,KILT 將信息和用戶地址綁定,爲用戶頒發數字憑證,並在區塊鏈上存儲有公信力機構對這個數字憑證的簽名,也即可驗證數字憑證。之後用戶可以將憑證數據存儲在自己的手機裏,並在不同的場合重複使用,且不再需要公證機構的再次介入。這就實現了憑證驗證與憑證使用這兩件事的解耦。用戶獲取數字憑證後,如果想要使用憑證去證明自己的身份,但又不想透露個人信息時,就可以由 zCloak Network 提供的零知識證明的方法去進行。

Bixin Ventures 注:DID 和 SSI (Self Sovereign Identity)基本是一個東西,去中心化身份和自主權身份,不一樣的叫法,但本質是一個事。SSI 更偏向於一種精神的標誌或者是圖騰,更偏文化和意識形態一些,帶有一種 Web3.0 的革命氣質。DID 更多的是一種實用的工具。

Vivian每個人每天都會產生大量數據,比如身份信息,金融消費行爲醫療健康等,但目前這些數據並不掌握在用戶個人手中。未來,哪類數據會是比較好的突破口,可以率先實現自主權?

張曉:身份 KYC 肯定是一個非常迫切的風口,如果看到了歐美監管機構最近的種種動作,就會知道這是很確定的事情。下一步就是各種資產數據,鏈下和鏈上的資產數據,如何能在 DeFi 的場景裏使用起來。還有生物信息數據,生物特徵數據,比如說基因、人臉、指紋、血液、DNA、虹膜,這些能夠唯一的標識是你的信息,如何能在不透露這些生物特徵數據的情況下還把它們利用起來,去支撐安防、保險之類的應用,我們的研究生就在做這一塊課題。然後醫療的話我覺得可能會稍微遠一點,沒有那麼簡單就能做起來,因爲它的計算分析都相對複雜。

Vivian:採集信息和生成憑證的部分誰來做?如果由第三方做,第三方會存有大量的個人信息嗎?

張曉:需要一個有公信力的,一般情況下不會泄露你的信息的機構,例如公安局、銀行、公證處等等。其實這個數據不存也是可以的,只是在給你製備憑證時,臨時採集你的數據,這個東西只存在你自己的手裏,其他地方是不需要留存的。這就是我們真正的 Web 3.0 的理念,無論是政府部門還是第三方的商業公司,它們都沒有你的數據,你的數據都是在自己的手裏,然後基於你自己的手裏的數據,用保護隱私的方法把它使用起來,去撬動其他的應用與服務。

Vivian:那麼保護隱私數據的核心是什麼?

張曉:保護數據隱私,有兩件事要做好。首先是數據的接觸範圍,也就是能夠觸及數據的人。核心數據如果有可能把它放在公司的局域網裏,我就一定不會放到公有云上。如果有可能只鎖在一臺離線不上網的個人電腦裏,我就不會把它放到局域網裏。數據被接觸的範圍越小,安全性越高。舉個例子,很多保密機構內的所有計算機都是離線不上網的,也叫物理隔離。這是信息要保密的第一個重點,接觸的人越少越好。

第二點就是信息的加密方式,你的信息是以明文的還是加密的方式存儲的。加密算法是 AES256 還是 AES512 等等。最近很多人在聊 IPFS,IPFS 的問題在於把所有的文件直接變成全世界所有人都能看,都能下載。相當於把這個東西的接收範圍,從你個人的計算機或者從你公司內網變成了全世界的廣域網,這對隱私數據存儲來說是一個很大的問題。

有的說法是:我把信息加密後放到 IPFS 上就可以。但是不要忘了一件事兒,所有密碼學的算法都是有生命週期的,今天解不開的密碼學算法不等於 30 年之後也解不開。所有的密碼學算法,都會隨着時間的流逝被逐漸攻破。

隱私信息的話,像 KILT 的和我們選擇的是最安全的路線:用戶的數據只存在用戶自己的手機裏,或者本地的安全存儲裏。當他使用時,如果是不關鍵的信息,他可以明文的形式傳給別人,這部分是 KILT 現在在做的。如果是比較敏感的隱私數據,那就用我們的方法,證明用戶這些數據具有某些屬性,是否可以滿足對方的要求。但是對方那兒能得到的東西只是一個零知識證明,本質上就是一大串哈希,不會透露任何用戶數據。

Vivian:需要用戶的手機有特別的支持嗎,比如硬件或者軟件方面?

張曉:不需要硬件,需要軟件,在你的手機裏跑一個東西叫零知識證明虛擬機。這個虛擬機不會佔用大家的很多內存。像 zCloak 之前發佈的瀏覽器中的 零知識證明插件。零知識證明虛擬機可以運行在瀏覽器的插件裏,也可以運行在你的手機裏。

簡單解釋一下 zCloak 插件的工作原理。我們通常說計算一般有兩個要素,一個是算法,一個是數據。你的算法確定了,算法的輸入數據也確定了,那你的計算結果也就唯一確定了。用 zCloak 的方法,針對用戶數據的計算是在用戶本地進行的,你看不到用戶的數據,也看不到他的計算過程,那怎麼確定他的計算結果是正確的呢?我們用零知識證明來驗證他計算過程的正確性,用 KILT 的可驗證數字憑證,來保證輸入數據的可信性。這兩件事都做到了,我就可以說他的計算結果是正確的了。

服務提供商想讓你對你的數據進行的計算,他們的要求可以轉化成數學的形式來表達。我們舉個簡單的例子,假設 Uniswap 因爲美國監管部門的壓力,從今天開始要求 ABC 三國公民不準使用 Uniswap 的服務。這個要求可以轉化成數學的形式:即要證明你的國籍不在一個黑名單裏,這個黑名單可以是 ABC 這三個國家的地區代碼(每個國家都有一個數字形式的地區代碼)。現在證明你手裏的數字憑證上國籍對應的區號不是某幾個數字就可以。以前,第三方公司要給你提供服務的時候,常規的方式,是把你的數據發送給公司的服務器,這個服務器裏有它的算法。但是現在我們跟他做的方法是相反的,Uniswap 的算法可以傳輸給你。數據在你自己手裏,這個算法也發送給你了,你就可以在自己本地進行計算。

Vivian:區塊鏈技術在其中扮演了什麼樣的角色呢?

張曉:區塊鏈特性我們應用最多的是三點,第一最簡單的是計算服務的手續費結算,這是區塊鏈最擅長做的,否則我們就需要一箇中心化機構去做支付,成本高,效率低。第二是以不可逆的方式去存儲計算的結果,直接把結果存儲在鏈上的智能合約裏,不被篡改。第三是零知識證明的驗證網絡。

初始階段,驗證這個角色會由 zCloak 來充當,但這裏存在作惡的可能性,zCloak 作爲一個主體,是有可能作惡的。最理想的情況是:給別人提供零知識證明驗證服務的不是某一家或者某兩家組織,而是一個去中心化網絡,一幫礦工去運行服務器,幫別人做零知識證明驗證。誰都不知道自己驗證的證明屬於哪個用戶,這樣它的可信度纔是最高的。這就需要引入挖礦的概念,即零知識證驗證即挖礦。

Vivian:傳統企業想在不接觸區塊鏈的前提下使用這套服務,可以實現嗎?

張曉:可以,傳統機構你可以把它想象成就是 Uniswap,不管中間如何操作,他其實只需要最後的結果,這個結果就是到一個智能合約裏,通過預言機的形式去讀取數據就可以,相當於是用互聯網熟悉的方式去讀上數據。數據讀取很簡單,一個網絡請求就可以了。這和讀一個遠端的數據庫是完全一樣的,不需要任何區塊鏈相關技術,只要能聯網就行。

Vivian:上傳到鏈上的結果是不可逆的吧?

張曉:不可逆,從零知識證明完全不可能推出原始的輸入數據,在密碼學上是做不到。這就類似於我告訴你一個哈希讓你去找哈希的原文一樣,理論上能找到,但是需要的時間是無窮大的。

VivianzCloak核心技術是零知識證明虛擬機,它是如何工作的?目前在這個領域我們有哪些競爭對手嗎?

張曉:據我瞭解,全世界真正在做零知識證明虛擬機的目前只有爲數不多的幾家公司。我們是一家,另外還有 StarkWare、Matter Labs 等少數幾家公司。其他兩家應用於擴容領域,我們是在數據隱私領域發展。

我們都知道近幾年零知識證明的項目有很多,拋開擴容不說,僅僅是零知識證明保護隱私這件事,就可以被分爲兩大類:交易隱私和數據隱私。目前大部分團隊在做的是交易隱私,比如混幣、隱私轉賬、隱私 DEX。我們在做的是數據隱私。

最大的區別是:交易隱私涉及的算法是固定的。比如隱私轉賬背後的算法,是輸入的和等於輸出的和,我轉出的金額小於我的賬戶餘額,零知識證明只需要證明這個算法是正確的就可以了。但是數據隱私就完全不一樣了,算法是由第三方提出來的,它是複雜且變化的,比如你的國籍在什麼範圍,你的年齡符不符合要求,你的資產狀況如何,在不在黑名單裏面,每一種用例都會有自己定製化的算法。

零知識證明有個特點是:每當算法發生變化的時候,就需要重新生成一個叫做證明電路的東西。對交易隱私類項目,只需要一開始設計的時候生成一次,然後一直使用就可以。但數據隱私領域,每次算法變化,都要重新生成證明電路,是非常花時間花精力且成本高的一件事情。

你可以把零知識證明虛擬機想象成一個軟件實現的 CPU。我們把原來用固定的電路解決的問題,變成了在 CPU 上用軟件解決的問題。使用我們的工具,可以把第三方的算法自動編譯成可以在虛擬機上進行證明生成和驗證的電路。從算法到電路的這一部分是自動生成的,不需要人工干預。

Vivian:這套技術容易被抄襲嗎?

張曉:我們認爲不太容易被抄襲。保護數據隱私這件事,零知識證明只是所用到的技術之一,另外還有跟可驗證數字憑證的巧妙結合,這裏面有很多非常細節的工程化問題和安全攻擊問題需要解決。

此外,零知識證明虛擬機技術的難度也不小,哪怕代碼完全開源,別人要看懂,要掌握,再改進,也不是容易的事情。而且我們目前有一個比較好的習慣,在任何技術工程化之前,我們都先申請專利,然後再做,這也是我們進行自我保護的一種方式。我們的技術是開源的,這一點沒錯。但是開源不代表免費,free software 是 free speech 不是 free beer。

我們現在已經擁有 6 個國家發明專利授權,2 個 PCT 專利,另外還有一些在公開審查的過程中,都是與零知識證明、隱私憑證相關,有系統及存儲介質相關的、視頻數據相關的、醫療相關的等,我們在每一個細分的垂直應用場景裏都在逐步開展研究。

Vivian據說零知識證明項目成本非常高,zCloak 成本主要集中在哪方面?

張曉:我們只講工程上的成本。零知識證明這個事包含兩部分,一部分是 proof generation 證明生成,一個是 proof verification 證明驗證。很多零知識證明項目成本高的原因是proof generation證明生成的場所很多都是在項目方的服務器,用戶需要把交易數據發到項目方服務器上去計算,這就造成了負載高,所有的數據計算都匯聚在它單點上。但是 zCloak 的零知識證明虛擬機是在用戶個人的手機或電腦中的,相當於全球分佈式的,每個人的手機就是一個零知識證明計算設備,所以說我們沒有計算壓力。另外一個原因是大部分項目用的算法是 ZK-Snark,我們是 ZK-Stark,從計算效率的角度來講,ZK-Stark 的效率比 ZK-Snark 的效率要高不少。

我們的成本主要是跑 proof verifier 驗證人這樣的節點,幫別人驗證已經生成的零知識證明。

Vivian:驗證的過程是如何實現的?驗證人需要有什麼樣的能力?

張曉:零知識證明虛擬機有兩個功能,一個是證明生成,一個是證明驗證。當驗證人拿到零知識證明之後,把它輸送到虛擬機裏,虛擬機可以自動跑一個邏輯去驗證這個零知識證明是正確的還是錯誤的。如果證明生成後,你擅自改了其中的任何地方,或者你自己編造一個證明,那驗證就不通過。零知識證明的驗證人只需要運行一臺普通的服務器節點,用我們的軟件客戶端到 zCloak 網絡上抓取未驗證的零知識證明,然後進行計算並公佈結果就可以了。

Vivian:除了零知識證明,現在被應用較多的隱私計算技術是 TEE ,你怎麼看待 TEE?

張曉:零知識證明和 TEE 最大的區別是:一個是軟件的密碼學的方式,一個是硬件的方式。硬件方式下你首先必須要相信這個硬件,比如說用 intel 處理器,就必須要相信 intel 這家公司。TEE 需要把用戶的數據加密上傳到一箇中心化的服務器裏,再進行解密和計算。它是可以解決一些場景的問題,但是中間涉及很多步驟,任何一個步驟出問題你的數據就有可能被泄露。相對來講比較適合計算量較大的場景。

Vivian:目前 zCloak 有在設計具體的產品嗎?

張曉:我們目前準備做一個旗艦產品,名字暫定爲:zCloak KYC Gateway。核心目的就是爲了讓零知識證明能夠應用在轉賬和 Defi 兩個場景。

目前我的觀察是接觸 Defi 的用戶其實是少數的人羣,大部分人還是停留在加密貨幣,他們可能並不瞭解 Uniswap、Maker Dao、Aave 這些 Defi,但是幾乎每個人都會做的一件事就是轉賬。現在用戶在鏈上轉賬,只要知道對方地址即可操作,不需要任何許可。但現在歐盟和美國都在立法, KYC 監管的趨勢也越來越明顯,歐洲在議的一條法規就是:超過 1 萬歐元時,無論法幣還是加密貨幣,轉賬雙方都需要驗證 KYC 身份。如果是銀行用戶,那銀行直接就可以幫雙方做 KYC,但是鏈上沒有銀行這個角色。

我們經常說加密貨幣領域和監管不是矛盾的,是可以共存的,只是目前沒有一個很好的解決方案。zCloak KYC Gateway 解決方案可以實現的是:在 A 和 B 轉賬之前,雙方可以通過一種保護對方隱私的方法去驗證,既不知道對方的真實身份,又確定對方是一個經過了 KYC 的合規的用戶,在保證最小化信息的原則下滿足監管要求。

這個是人和人之間打交道的轉賬場景,再來講講人和鏈交互的場景,或者說人和智能合約打交道的 DeFi 下的場景。大多數的 DeFi 項目會有團隊,有創始人,有資方,少數匿名團隊的項目咱們先不討論。SEC 前兩天開始調查 Uniswap,也要開始查 Coinbase,這個對項目方是很大的衝擊,不是開玩笑,沒有哪個程序員,做一個自己興趣愛好的事,最後的目的是爲了進監獄。

zCloak KYC Gateway 就是想給項目方提供一層保護,保證使用項目的用戶都是合規的用戶,都是經過了 KYC 的用戶,沒有洗錢,恐怖分子、毒販這些人在用項目的產品去做一些不合法的事,在初始階段就把這些人過濾掉。從這個項目方的角度來講的話,這對他們來說應該是一個很強的需求。這樣項目方也能和監管進行解釋了,在合規方面,我們和中心化的銀行是類似的,我的用戶都是做過 KYC 的人。

Vivian:這樣一來,zCloak KYC Gateway很大一部分推動力是來自監管方面麼?

張曉:KYC gateway 跟監管的關係是很密切的,我們也會即時關注各地的監管、法規進展,這個領域我們肉眼可預見的是歐盟和美國是 100% 要出政策,而且美國的政策大家都很清楚是什麼了,基礎設施法案,已經不能改了。原文我們都看過了,其實說是爲了監管,是爲了合規,但是他最主要的目的還是爲了收稅,這就和我們計劃的下一個系列的產品相關性極高,我們想做一個一鍵式的,用戶鏈上行爲計算和報稅的工具。

如果是中心化的交易所比如幣安,他有用戶所有的數據,做起來就很容易。但是 DeFi 世界裏,如果想知道用戶今年換了多少 Token,掙了多少錢,要交多少稅,可能就要用戶把地址交出來,然後拿一個算法去分析就可以。但是這樣一來,就建立了一個用戶個人和用戶地址之間的聯繫,很多人是很介意這點的。zCloak 可以通過零知識證明實現:不告訴監管機構用戶 A 的地址是什麼,但是證明這是用戶 A 的地址、地址上的行爲、以及這些行爲導致應該交多少稅,最後上傳一個零知識證明去證明用戶 A 今年要交的稅的金額。

Vivian:想要實現這一系例目的,需要有一套通用的或者公認的身份和憑證的標準作爲前提麼?

張曉:從國際標準的角度來講,跟數字身份和可驗證數字憑證相關的標準,現在有好幾個。我們參與了兩個核心的:W3C 和 DIF。W3C 是萬維網聯盟,他們制定了一系列網絡標準。DIF, Decentralized Identity Found,是由商業組織:微軟、IBM、埃森哲這些機構共同研發的標準。目前我們的計劃是從歐盟和新加坡入手,和投資方、朋友等一起與政府溝通、進言,希望設立更加完善的標準,這樣等產品推出後,如果符合標準,就可以直接採用了。

Vivian:在去中心化的應用中,用戶是來自全球各地的,如果有多套標準,會不會導致驗證較爲複雜和混亂?
張曉:這就體現了我們產品的一個優勢。我們這套技術可以允許要求 KYC 的第三方自主選擇認可的憑證,比如說德國的監管機構,如果只認德意志銀行頒發的 KYC 證明,那用戶就從德意志銀行獲取憑證就好。爲用戶做 KFC 的機構和憑證未來的應用場景是解耦的。

Vivian聽起來不錯。目前zCloak項目進展如何?

張曉:zCloak 現在是一個基礎設施層,一個協議層,在它之上會有一個個垂直的應用,每個應用都瞄準一個具體的業務領域,像我剛剛說的 KYC 就是一個領域,報稅是另一個領域。現在的進度是這樣的,KILT 已經拿到平行鏈卡槽了,他們大概需要兩個月左右的時間,把準備工作完成,包括收集人、速度模板移除、國庫、治理模塊、數字憑證等業務。然後我們就可以開始結合他們的東西開始推業務了。

我們現在已經開始做的事情是:KILT 有自己的一套錢包,這個錢包是個數字憑證的錢包,它有最基本的轉賬功能,也有用戶的數據憑證,就是 KYC 信息、社保、醫療、駕駛證這些信息,都做成一個個數字憑證,放在這個錢包裏頭,每一個數字憑證都是經過一個權威機構簽名的。簽名是放在 KILT 的鏈上,允許大家用一種非許可的方式自主去查詢,看你這個憑證是不是一個真實有效的憑證。現在憑證是隻能明文使用。我們在他們的基礎上,用零知識證明讓用戶以對方看不見的方式去使用這些信息。

此外,我們也在和 Moonbeam、Acala 等討論 KYC 和身份憑證合作。團隊目前工作的重心也是去了解這些項目是在做什麼,是否有 KYC 或者其他的需求。我們也在關注以太坊、Polygon、Solana 的生態項目是不是有這樣的需求。

Vivian:還有個有趣的問題,我們之前看過元宇宙裏面開的 party,一羣人中每個人頭頂一串地址,這對於社交和遊戲來說很不友好,zCloak或者KILT 可以解決這種身份問題嗎

張曉:元宇宙這裏有幾件事兒,首先身份,在任何社會環境下,都需要身份這個東西的,鏈下有鏈下的方式,鏈上也有它原生的方式。至於說是否應該爲用戶設置一個單一的身份應用於不同的元宇宙中,我覺得是個人愛好的一件事情,比如玩家在 A 遊戲中是鑽石級別,在 B 遊戲中很弱,那他可能就不想讓別人知道自己在 B 遊戲中被吊打。

另一個切入點是如果涉及用戶在多條鏈上或者多個元宇宙空間裏,有自己的資產、裝備和身份, KILT 可以做的事情就是去幫用戶證明他在某每一個元宇宙裏都擁有哪些資產,從而實現跨平臺應用,而我們可以提供隱私保護的服務,即證明用戶具有某些屬性某些資質,但是不需要知道用戶是誰。目前項目方之間合作都是通過地址直接調用的,但很可能用戶在一些空間裏的信息,是不想讓別人知道。

此外,元宇宙也不能與現實世界完全割裂,遊戲世界裏更需要區分玩家是成年人還是未成年人,因爲相關的服務和數據保護標準都不一樣,所以會很需要 zCloak 的服務。