概覽Vega 讓使用者能夠證明來自政府核發憑證的事實——例如年齡、個人身分、專業資格——而無需揭露憑證本身。憑證從未離開裝置。零知識證明可在不到 100 毫秒內於一般客戶端裝置上生成,且無需信任設定,使得大規模的隱私身分驗證成為可能。「摺疊再利用證明」意味著重複呈現憑證——無論是向不同的服務或透過 AI 代理人——在首次證明後,可省去大部分昂貴的運算。

Vega 針對行動駕照和歐盟數位身分錢包等現實世界格式,以 Rust 語言建構,並即將開源。AI 正在改變人們與數位服務互動的方式,從 AI 驅動的助理到代表使用者行動的自主代理人。隨著這些能力的增長,強大的數位身分價值也隨之提升:使用者需要可靠的方式來建立信任,無論是證明自己是人類,還是與經由 AI 媒介的服務共享憑證。

政府核發的憑證仍然是信任最堅實的基礎,但現今的驗證方法通常要求人們交出憑證。隨著 AI 代理人開始代表人類行動並與去中心化系統互動,對快速、保護隱私的憑證證明方式的需求只會不斷增長。這些需求已體現在政策中。各國政府正迅速推動數位身分法制化。

歐盟數位身分 (EUDI) 框架旨在讓所有歐盟公民都能使用數位錢包,而歐盟的年齡驗證藍圖和英國的線上安全法案等措施,則強制要求基於政府身分證件的年齡檢查方法。應用程式供應商面臨兩難:他們要麼使用較不準確的方法,例如基於 AI 的年齡估計,要麼透過要求上傳身分證件來損害使用者隱私。

憑證被上傳、處理、有時儲存,最終(希望)刪除。但重大資料外洩事件一再洩露使用者為例行驗證而共享的政府身分證件。這些並非特例。它們是要求使用者共享最敏感文件以證明單一資訊的系統所導致的可預見後果。這正是我們透過 Vega 試圖回答的問題:我們能否在不揭露憑證本身的情況下,實用化地證明憑證的某些資訊?

Vega 之路:從概念到實踐零知識證明 (ZKP) 是實現此目標的密碼學工具。其概念很簡單:它們允許使用者證明一項主張,例如「我已滿 21 歲」,而無需揭露任何其他資訊。實際上,這意味著使用者可以從其駕照證明年齡,而驗證者從未看到駕照,無論是向網站、應用程式,還是由 AI 代理人媒介的服務。

該證明直接作用於已核發的憑證,因此核發者無需做任何改變。這並非新概念。挑戰始終在於實用性。先前的系統要麼需要信任設定,且每當邏輯改變時都必須重複,要麼為了避免信任設定而犧牲效能,通常在此過程中產生大型證明。對於現實世界的使用,證明需要產生速度快、足以快速傳輸且體積小、效率高到可在行動裝置上運行。

我們已投入數年時間致力於實用的解決方案。保護隱私的身分驗證一直是貫穿始終的驅動應用,而 Vega 的證明系統借鑒了該系列工作的幾個建構區塊:Spartan 展示了如何高效證明 R1CS,這是一種表達通用證明系統聲明的標準方式,具有簡潔證明且無需信任設定。

Nova 引入了摺疊方案,讓證明者能將多個計算實例壓縮成一個。HyperNova 展示了 Nova 的摺疊也為零知識提供了一個關鍵建構區塊:將真實實例與隨機實例摺疊可隱藏底層機密資料,這種技術被稱為「NovaBlindFold」。NeutronNova 提供了最有效率的摺疊方案,可一次處理批次實例。

Vega 將這些建構區塊整合到單一證明系統中。一個關鍵的設計目標是簡潔性。Spartan、Nova 和 NeutronNova 以直接方式組合,電路由少量標準元件建構,沒有奇特的多元欄位建構,也沒有信任設定。在這個簡單的基礎上,Vega 增加了跨多個相同憑證證明重複利用工作的能力,以及一種以最小開銷實現零知識的新方法。

其結果是一個易於審計、擴展到新的憑證格式並部署的系統。效能Vega 在一般客戶端裝置上,可在 92 毫秒內從典型的行動駕照(約 2 KB)產生年齡的零知識證明。產生的證明為 108 KB,可在 23 毫秒內驗證。無需信任設定。證明者金鑰為 464 KB;它可輕鬆儲存於任何手機。

對於較小的憑證,證明時間降至 62 毫秒,證明大小為 83 KB,驗證時間為 17 毫秒。實際上,使用者點擊按鈕呈現憑證,92 毫秒後證明完成。服務只會得知所請求的事實;憑證從未離開手機。Azure AI Foundry Labs一窺 AI 未來的潛在方向,這些是來自 Microsoft Research 的實驗性技術。

幕後揭密:摺疊、再利用與查詢Vega 的速度來自兩個概念:「摺疊再利用證明」和「以查詢為中心的電路設計」。下圖顯示了端到端證明流程。Vega 的證明流程。工作分為兩個階段。每憑證一次階段將憑證拆分為步驟電路和核心電路,並提交可重複利用的資料。

每呈現一次階段重新隨機化快取承諾以實現不可連結性,透過 NeutronNova 將所有 SHA-256 步驟實例摺疊成一個,使用 Spartan 證明摺疊後的步驟電路和核心電路,並透過 NovaBlindFold 應用零知識。最終輸出是一個 108 KB 的證明,在 92 毫秒內生成,並可在 23 毫秒內驗證。

雜湊問題,以及摺疊如何解決憑證證明必須執行兩項昂貴的操作:使用 SHA-256 雜湊憑證位元組,並驗證核發者的數位簽章。簽章驗證通常會是瓶頸,但 Vega 透過在簽章算術為原生的欄位中工作來避免此成本。因此,雜湊成為主要成本。SHA-256 透過一次對一個 64 位元組區塊應用相同的壓縮函數來工作。

直接的電路只是展開所有這些迭代,因此其大小隨憑證長度而增長。對於典型的行動駕照,這意味著 30 個壓縮區塊,全部捕獲在單一電路中。我們採取不同方法。我們不展開整個雜湊,而是定義一個小的「步驟」電路,證明單一 SHA-256 壓縮步驟,並為每個區塊實例化一次。

由於這些步驟實例在結構上相同,我們可以使用 NeutronNova 的摺疊方案將它們摺疊成單一實例。證明者執行工作將 30 個步驟實例摺疊成一個,但此摺疊成本適中。Spartan 隨後只需證明一個步驟大小的電路以及一個單獨的「核心」電路,該電路處理其餘檢查,包括簽章驗證和年齡判斷,而不是一個包含 30 個展開區塊的單一電路。

證明金鑰只需描述一個步驟和一個核心,因此無論憑證長度如何都保持小巧。這裡有一個微妙的隱私問題需要解決。憑證長度不同,如果電路大小隨憑證而變化,將會洩露資訊。為防止這種情況,所有步驟電路共享一個已承諾的中間摘要表。核心電路使用私有索引選擇適當的摘要。

如果證明者選擇錯誤的條目,核發者的簽章檢查將失敗。以低成本實現零知識證明系統需要是零知識的:驗證者除了被證明的聲明之外不應得知任何資訊。現有實現方法通常工程複雜,並可能增加證明者的顯著開銷。我們找到更簡單的方法。標準的第一步是使用隱藏式密碼承諾提交證明者發送的每條訊息,因此驗證者看到的是承諾而非數值。

更難的問題是證明那些隱藏值會通過驗證者的檢查。我們將這些檢查表示為一個小的約束系統,僅數百個約束,因為驗證者只執行對數數量的操作。我們隨後透過 Nova 的摺疊方案將此約束系統與隨機實例摺疊。此步驟隱藏底層資料,因此零知識開銷與這個小的約束系統成比例,而非完整的機密資料。

證明一次,呈現多次向一個網站呈現憑證的使用者很可能會再次向另一個網站呈現。在 AI 代理人處理許多此類互動的世界中,同一個憑證可能每天需要呈現數十次。憑證本身在這些呈現之間不變。改變的是會話亂數(來自驗證者的新鮮隨機值),以及可能的日期或判斷閾值。

Vega 利用這種結構,將證明者的機密資料分為三個部分。共享資料(SHA-256 表)和預先承諾部分(例如核發者簽章和欄位位置)在憑證首次載入時計算並承諾一次。線上部分(例如裝置簽章和今日日期)每次都重新承諾。在每次證明之前,預先計算的承諾會用新的隨機性重新整理,這比重新計算它們更便宜,並確保關於同一憑證的兩個證明無法連結。

避免解析器Vega 效率的另一個重要部分來自其處理憑證格式的方式。行動駕照以簡明二進位物件表示法 (CBOR) 編碼,將完整的 CBOR 解析器建構成電路既複雜又昂貴。但我們意識到實際上不需要解析器。憑證位元組由受信任的核發者簽署,因此我們知道它們是格式良好的。

我們只需求深入並抓取特定欄位。我們將憑證視為位元組可定址查詢表。證明者說:「裝置公開金鑰從位元組 847 開始」,並提供位元組。電路檢查三件事:位元組確實與已驗證的憑證匹配;正確的 CBOR 前綴出現在欄位開頭,這樣證明者就不能聲稱錯誤的欄位;位址是連續的,這樣證明者就不能從不相關的位置拼接位元組。

這用少數查詢取代了整個解析器。相同的查詢概念驅動長度隱藏雜湊,如上所述:電路建立所有中間 SHA-256 摘要的表格,並在實際訊息結束時選擇正確的摘要。裝置綁定零知識憑證證明只有在與持有憑證的人綁定時才有用。如果沒有裝置綁定,獲得洩露憑證的人可以為任何會話生成有效證明。

這在 AI 代理人世界中更為重要:如果代理人可以代表使用者呈現證明,我們需要密碼學保證證明源自使用者的裝置,而非來自攻擊者或未經授權的代理人。Vega 透過要求持有者的裝置使用綁定到手機安全元件的裝置私鑰簽署一個新的會話亂數來解決此問題。