Vega:AI 時代のデジタルアイデンティティのためのゼロ知識証明
Microsoft Research が発表した「Vega」は、AI エージェント時代におけるデジタルアイデンティティの課題を解決するため、政府発行の証明書をデバイス内で処理し、ゼロ知識証明(ZKP)を用いて個人情報を開示せずに検証可能にする技術を実用化しました。
キーポイント
プライバシー保護型認証の実現
ユーザーは政府発行の証明書(運転免許証や EU デジタル ID ワレットなど)を第三者に提出することなく、年齢や人権などの特定の事実のみを証明できる。
AI エージェント時代への対応
人間の代わりに行動する AI エージェントが、ユーザーの身元を確認するために機密情報を取得する必要がなく、安全に認証プロセスを実行できるようになる。
高性能なゼロ知識証明技術
信頼されたセットアップ(trusted setup)を不要とし、一般的な端末で 100 ミリ秒以内に証明を生成可能にする「Fold-and-reuse」技術を導入している。
規制対応とオープンソース化
EU の EUDI や UK のオンライン安全法など、政府 ID を必須とする規制への対応を想定し、Rust で実装された後、すぐにオープンソースとして公開される予定。
信頼されたセットアップ不要かつ高性能な証明システム
Vega は Spartan、Nova、NeutronNova の技術を組み合わせ、信頼されたセットアップを必要とせず、モバイルデバイスでも高速に実行できるゼロ知識証明を実現しています。
シンプルで監査可能な設計と拡張性
複雑な多フィールド構成や特異な手法を使わず標準コンポーネントのみで構築されているため、監査が容易で、新しい資格情報のフォーマットへの拡張も可能です。
証明の再利用と最小限のオーバーヘッド
同じ資格情報に対する複数の証明間で計算を再利用可能にし、「NovaBlindFold」技術を用いてゼロ知識性を高い効率で達成する機能を追加しています。
重要な引用
Vega lets users prove facts from government-issued credentials — age, personhood, professional status — without revealing the credential itself.
Zero-knowledge proofs are generated in under 100 ms on a commodity client device with no trusted setup, making private identity verification practical at scale.
Fold-and-reuse proving means repeated presentations — to different services or through AI agents — skip most of the expensive work after the first proof.
Vega puts these building blocks together into a single proof system. A key design goal is simplicity.
The result is a system that is easy to audit, extend to new credential formats, and deploy.
The service learns only the requested fact; the credential never leaves the phone.
影響分析・編集コメントを表示
影響分析
この発表は、AI エージェントが普及する未来において、ユーザーの機密情報を保護しつつ信頼性を確保するための決定的な技術的解決策となる可能性が高いです。従来の「提出して検証」モデルから「証明のみで検証」モデルへの転換を促し、デジタルアイデンティティ市場におけるプライバシーと利便性の両立を実現する新たな基準を設けるでしょう。
編集コメント
AI エージェントが人間の代わりに行動する時代において、プライバシー保護と身元確認の両立は最大の課題の一つでしたが、Vega はそれを技術的に解決する画期的なアプローチです。特に「信頼されたセットアップ不要」かつ「高速処理」を実現した点は、実社会での大規模展開を現実的なものにする重要な要素と言えます。

一言で言うと、Vega を使えば、政府発行の資格証明(年齢、人間性の証明、職業ステータスなど)から事実を証明できますが、証明書類そのものを開示する必要はありません。証明書は端末から一度も離れることがありません。
ゼロ知識証明(Zero-knowledge proofs)は、信頼されたセットアップを必要とせず、一般的なクライアントデバイス上で 100 ミリ秒未満で生成されるため、大規模なプライベートな本人確認が現実的なものになります。
「折り返し再利用」方式の証明により、最初の証明以降、異なるサービスや AI エージェントへの繰り返し提示において、高コストな処理のほとんどをスキップできます。
Vega は、モバイル運転免許証や EU デジタル ID ウォレットといった実世界のフォーマットを対象としており、Rust で構築され、まもなくオープンソース化されます。
AI は、AI 搭載のアシスタントからユーザーに代わって行動する自律型エージェントまで、人々がデジタルと対話する方法を変革しています。これらの能力が成長するにつれ、強力なデジタルアイデンティティの価値も高まります。ユーザーは、自分が人間であることを証明する場合や、AI を介したサービスと資格証明を共有する場合など、信頼関係を確立するための信頼できる手段を必要としています。政府発行の資格証明は依然として信頼の最も強固な基盤ですが、現在の検証方法では、人々がそれらを手渡すことを要求されることが多いです。AI エージェントが人間の代わりに行動し、分散型システムと対話し始めるにつれ、資格証明を迅速かつプライバシーを保護する形で証明する方法への需要はさらに高まっていくでしょう。
これらのニーズはすでに政策において具体化されつつあります。政府は急速にデジタルアイデンティティを制度化しようとしています。EU のデジタルアイデンティティ(EUDI)枠組みは、すべての EU 市民がデジタルウォレットを利用できるようにすることを目的としており、EU の年齢確認ブループリントや英国のオンライン安全性法のような取り組みでは、年齢確認のために政府発行の ID に基づく方法の使用が義務付けられています。アプリケーション提供者は二重のジレンマに直面しています:AI を用いた精度の低い推定手法を使用するか、あるいは ID のアップロードを要求してユーザーのプライバシーを犠牲にするかの二者択一です。
資格証明はアップロードされ、処理され、場合によっては保存された後、最終的には( hopefully )削除されます。しかし、高プロファイルなデータ漏洩が繰り返され、通常の確認のためにユーザーが共有した政府発行の ID が露見しています。これらは例外ケースではありません。単一の情報のみを証明するために、ユーザーに最も機微な文書の提供を要求するシステムの予測可能な帰結です。
これが私たちが Vega を通じて答えようとしている問いです:資格証明そのものを一切開示することなく、資格証明に関する何らかの事実を実証することを現実的なものにすることは可能でしょうか?
Vega への道:アイデアから実践へ
ゼロ知識証明(ZKP)は、これを可能にする暗号技術です。その考え方はシンプルです:ユーザーが「21 歳以上である」といった主張を証明する際に、それ以外の情報を一切開示することなく証明できるのです。実際には、ユーザーは運転免許証から年齢を証明できますが、検証者はウェブサイト、アプリ、あるいは AI エージェントを介したサービスに対して、一度も免許証そのものを見ることなく証明を受け取ることができます。この証明は発行された資格情報そのものに対して直接機能するため、発行者側は何も変更する必要はありません。
これは新しいアイデアではありません。課題はずっと「実用性」にありました。既存のシステムでは、ロジックが変更されるたびに繰り返さなければならない信頼されたセットアップが必要とされるか、あるいは信頼されたセットアップを回避するためにパフォーマンスを犠牲にし、その結果として証明サイズが大きくなってしまうという問題がありました。現実世界での利用においては、証明は生成が高速であり、転送のために小さく、モバイルデバイス上で実行するのに十分な効率を持つ必要があります。
私たちは実用的な解決策に向けて数年間取り組んできました。プライバシーを保護するアイデンティティは、その間も主要な動機となる応用分野(新しいタブで開く)であり続けました。Vega の証明システムは、この一連の研究からいくつかの構成要素を採用しています。
Spartan(新しいタブで開く)は、汎用的な証明システムの文脈で主張を表現する標準的な方法である R1CS を、信頼されたセットアップなしに、簡潔な証明を用いて効率的に証明する方法を示しました。
Nova は折りたたみスキームを導入し、証明者が計算の多数のインスタンスを 1 つに圧縮できるようにしました。
HyperNova は、Nova の折りたたみがゼロ知識のための重要な構成要素も提供することを示しました。具体的には、実際のインスタンスとランダムなインスタンスを折りたたむことで、背後にある秘密データを隠すことができ、この手法は「NovaBlindFold」と名付けられました。
NeutronNova は、一度にバッチ処理された複数のインスタンスを扱うための最も効率的な折りたたみスキームを提供しました。
Vega はこれらの構成要素を単一の証明システムに統合します。重要な設計目標の 1 つは簡潔性です。Spartan、Nova、NeutronNova は直接的な方法で組み合わされ、回路は少数の標準コンポーネントから構築されており、特殊なマルチフィールド構造や信頼されたセットアップは不要です。このシンプルな基盤の上に、Vega は同一の資格証明に対する複数の証明間で作業を再利用する機能と、最小限のオーバーヘッドでゼロ知識を実現するための新しい方式を追加します。その結果、監査が容易で、新たな資格証明フォーマットへの拡張が可能であり、デプロイも簡単なシステムが実現されます。
パフォーマンス
Vega は、一般的なモバイル運転免許証から約 2 キロバイト (KB) の年齢に関するゼロ知識証明を、汎用クライアントデバイス上で 92 ミリ秒 (ms) で生成します。生成された証明は 108 KB であり、検証には 23 ms かかります。信頼できるセットアップは不要です。証明者キーは 464 KB で、どの携帯電話にも十分に収まります。より小さな資格情報の場合、証明時間は 62 ms に短縮され、証明サイズは 83 KB、検証時間は 17 ms となります。実際には、ユーザーがボタンをタップして資格情報を提示すると、92 ms 後に証明が完了します。サービスが取得できるのは要求された事実のみであり、資格情報は携帯電話から決して離れません。
Spotlight: Microsoft research newsletter

Microsoft Research Newsletter
Microsoft の研究コミュニティに接続を維持しましょう。
今すぐ購読する
新しいタブで開く
Under the hood: Fold, reuse, and lookup
Vega の高速性は、2 つのアイデアに基づいています。1 つ目は「fold-and-reuse proving(折りたたみ再利用証明)」、2 つ目は「lookup-centric circuit design(参照中心回路設計)」です。以下の図は、証明パイプラインをエンドツーエンドで示しています。
image Vega の証明パイプライン。作業は 2 つのフェーズに分割されます。「1 クレデンシャルあたり」フェーズでは、クレデンシャルをステップ回路とコア回路に分割し、再利用可能なデータへのコミットを行います。「1 プレゼンテーションあたり」フェーズでは、キャッシュされたコミットメントをランダム化してリンク不可能性を確保し、NeutronNova を用いてすべての SHA-256 ステップインスタンスを 1 つに折りたたみます。その後、Spartan で折りたたまれたステップ回路とコア回路の証明を行い、NovaBlindFold を用いてゼロ知識(Zero-Knowledge)を実現します。最終的な出力は、92 ミリ秒で生成され、サイズが 108 キロバイトの証明であり、検証には 23 ミリ秒を要します。
ハッシュ化の問題と、折りたたみによる解決策
クレデンシャルの証明では、2 つの高コストな処理が必要です。すなわち、SHA-256 を用いてクレデンシャルバイト列をハッシュ化することと、発行者のデジタル署名を検証することです。通常、署名検証がボトルネックとなりますが、Vega は署名演算がネイティブで行えるフィールド上で動作することでこのコストを回避します。その結果、ハッシュ化が主要なコスト要因となります。SHA-256 は、1 回に 1 つの 64 バイトブロックに対して同じ圧縮関数を適用する仕組みです。単純な回路ではこれらの反復処理をすべて展開(unroll)するため、回路サイズはクレデンシャルの長さに比例して増大します。典型的なモバイル運転免許証の場合、30 ブロック分の圧縮処理が単一の回路に収められます。
私たちは異なるアプローチを採用します。ハッシュ全体を展開するのではなく、単一の SHA-256 圧縮ステップ(SHA-256 compression step)を検証する小さな「ステップ」回路を定義し、これをブロックごとに 1 回ずつインスタンス化します。これらのステップインスタンスは構造的に同一であるため、NeutronNova の折りたたみスキーム(folding scheme)を用いて単一のインスタンスに圧縮できます。証明者は 30 のステップインスタンスを 1 つに折りたたむための計算を行いますが、この折りたたみコストは modest(控えめ)です。その後、Spartan は、署名検証や年齢述語など残りのチェックを担当する別の「コア」回路とともに、単一のステップサイズの回路のみを検証すればよくなります。つまり、30 の展開されたブロックを持つ巨大な回路全体ではなく、より小さな単位で証明を行うのです。証明キーは 1 つのステップと 1 つのコアを記述すれば十分であるため、資格情報の長さに関わらずサイズが小さく保たれます。
ここには微妙なプライバシーの問題があります。資格情報の長さは様々ですが、もし回路のサイズが資格情報に応じて変動すると、情報が漏洩する恐れがあります。これを防ぐため、すべてのステップ回路は中間ダイジェスト(intermediate digests)のコミット済みテーブルを共有しています。コア回路はプライベートなインデックスを用いて適切なダイジェストを選択します。証明者が誤ったエントリを選択した場合、発行者による署名検証が失敗します。
ゼロ知識性を安価に実現する
証明システムはゼロ知識(zero-knowledge)である必要があります。つまり、検証者は証明される主張以外を一切知り得てはいけません。これを達成するための既存のアプローチは、実装が複雑になりがちで、証明者に大きなオーバーヘッドを追加してしまうことがあります。私たちはよりシンプルな方法を見つけました。
標準的な最初のステップは、証明者が送信するすべてのメッセージに対して隠蔽暗号化コミットメントを使用することです。これにより、検証者は値ではなくコミットメントを確認します。より難しい問題は、これらの隠された値が検証者のチェックに合格することを証明することです。これらのチェックは小さな制約システムとして表現されます。これは数百の制約からなるものであり、検証者が対数回の操作しか行わないためです。その後、Nova の折りたたみスキームを用いて、この制約システムをランダムなインスタンスと折りたたみます。このステップにより基礎となるデータが隠蔽されるため、ゼロ知識オーバーヘッドは小さな制約システムにスケールし、完全な秘密データにはスケールしません。
一度証明し、何度も提示する
あるユーザーが資格証書を一つのウェブサイトに提示した場合、そのユーザーはそれを別のサイトやさらに別のサイトで再度提示する可能性が高いです。AI エージェントがユーザーの代わりにこれらのやり取りを多く処理する世界では、同じ資格証書が1日に数十回も提示される必要があるかもしれません。資格証書自体はこれらの提示の間で変化しません。変化するものはセッション非ces(検証者からの新しいランダム値)であり、日付や述語閾値である可能性があります。
Vega はこの構造を活用し、証明者の秘密データを3つの部分に分割します。共有データ(SHA-256 テーブル)と事前コミット済み部分(発行者署名やフィールド位置など)は、資格情報が最初に読み込まれた際に一度計算されコミットされます。一方、オンライン部分(デバイス署名や今日の日期など)は、毎回新たにコミットされます。各証明の前には、事前計算されたコミットメントに新しい乱数を加えて更新しますが、これは再計算するよりもコストが安く、同じ資格情報に関する2つの証明をリンクできないように保証します。
パーサーの回避
Vega の効率性のもう一つの重要な要素は、資格情報のフォーマットをどのように扱うかという点にあります。モバイル運転免許証は Concise Binary Object Representation (CBOR) でエンコードされており、これを回路として完全な CBOR パーサーを構築するのは複雑かつ高コストになります。しかし、私たちは実際にはパーサーが必要ないことに気づきました。資格情報バイト列は信頼できる発行者によって署名されているため、その形式が正しいことは保証されています。私たちが行うのは、必要な特定のフィールドにアクセスして取得することだけです。
資格証明をバイトアドレス指定可能なルックアップテーブルとして扱います。証明者は「デバイス公開鍵はバイト 847 から始まる」と述べ、該当するバイト列を提供します。回路では以下の 3 つを確認します:提供されたバイトが認証済みの資格証明と実際に一致していること、フィールドの先頭に正しい CBOR プレフィックスが存在し、証明者が誤ったフィールドを主張できないこと、そしてアドレスが連続しており、証明者が無関係な場所からバイト列をつなぎ合わせられないことです。これにより、従来のパーサー全体を数回のルックアップ操作に置き換えることができます。
上記で説明した通り、同じルックアップの考え方が長さ隠しハッシュにも応用されています:回路はすべての中間 SHA-256 ダイジェストのテーブルを構築し、実際のメッセージが終了するポイントで正しいものを選択します。
デバイスバインディング
ゼロ知識資格証明プロofs が有用であるためには、その資格証明を保持している人物と紐付ける必要があります。デバイスバインディングが存在しない場合、漏洩した資格証明を取得した誰かが、あらゆるセッションに対して有効なプロofs を生成できてしまいます。これは AI エージェントが台頭する世界において特に重要です:エージェントがユーザーに代わってプロofs を提示できる場合、そのプロofs が攻撃者や不正なエージェントではなく、ユーザーのデバイスから発信されたものであることを暗号学的に保証する必要があります。
Device binding
A zero-knowledge credential proof is only useful if it is tied to the person holding the credential. Without device binding, someone who obtains a leaked credential could generate valid proofs for any session. This matters even more in a world of AI agents: if an agent can present a proof on behalf of a user, we need cryptographic assurance that the proof originated from the user's device, not from an attacker or an unauthorized agent.
Vega は、保持者のデバイスが電話のセキュアエレメントに紐付けられたデバイス秘密鍵を用いて新しいセッション非同期値(nonce)に署名することを要求することでこれに対処します。回路は、資格情報からルックアップしてデバイスの公開鍵を抽出し、セッション非同期値ハッシュに対するデバイス署名を検証します。デバイス秘密鍵がハードウェアから決して外部に出ないため、署名された資格情報を単に所持しているだけでは有効な証明を生成することはできません。
ここに至る道筋
Vega は Rust で実装されており、まもなくオープンソース化されます。Vega を支える証明システムはすでに GitHub 上のオープンソースプロジェクト spartan2(新しいタブで開く)として利用可能です。論文は Darya Kaviani との共同研究であり、サンフランシスコで開催される IEEE セキュリティ&プライバシーシンポジウムで発表されます。
私たちは、EU デジタルアイデンティティ財布のような新興フレームワークを踏まえて、モバイル運転免許証という具体的かつタイムリーな応用例に焦点を当てましたが、証明システムと回路の技術は一般化されたものです。これらは、安定したバイトエンコーディングとデジタル署名を持つあらゆる資格書フォーマットに適用可能です。
私たちは、同じプリミティブがますます重要になるいくつかの方向性を見ています。
人間に代わってアイデンティティを担うエージェント。自律型 AI エージェントが旅行の予約、サービスとの対話、契約の締結などにおいて人間の代わりに行動し始めるにつれ、それらのエージェントは自身が代表する人間に関する事実を証明する必要が生じます。例えば、「私の委任者は 18 歳以上である」や「私の委任者は免許を持つ医師である」といった事実です。エージェントは、根本的な資格情報を保持することなく、これらの証明を担うべきです。人間のデバイスで生成されたゼロ知識証明(zero-knowledge proof)が、デバイスバインディングを通じてエージェントのセッションに紐付けられることで、エージェントは秘密を保持することなくアイデンティティ信号を提示できるようになります。
オフチェーンのアイデンティティとオンチェーンシステムの橋渡し。分散型システムでは、KYC 規制への準拠、認定投資家ステータス、管轄区域の確認など、現実世界のアイデンティティ信号がますます必要となっています。現在、これは文書を中央集権的な仲介者にアップロードし、その仲介者がオンチェーンでの証明(attestation)を発行することで処理されています。ユーザーはプライバシーを二重に失います。一度目は仲介者に対して、二度目はオンチェーン上においてです。ここでは証明が複数のやり取り間でリンク可能になる可能性があります。オフチェーンの資格情報に対するゼロ知識証明(ZKP)を用いれば、これを直接的に橋渡すことができます。ユーザーは政府発行の資格情報からある事実を証明し、オンチェーンの検証者はその証明のみを受け取ります。仲介者は資格情報を一切見ることがなく、再ランダム化(rerandomization)によって繰り返される証明がリンク不可能になることが保証されます。
デジタルIDの義務化が拡大し、AI が人間とエージェントによる信頼構築の方法を再定義する中、プライバシーを保護する資格証明検証の必要性はさらに高まっていくでしょう。私たちはVegaを、より広範な転換の一歩として捉えています。それは、「自分に関する事実を証明するために自分の身元を明け渡さなければならない世界」から、「暗号技術によって身元を守りながら証明できる世界」へと移行する過程です。
新しいタブで開きますこの投稿「Vega: Zero-knowledge proofs for digital identity in the age of AI」は、Microsoft Research で最初に発表されました。
原文を表示

At a glance
Vega lets users prove facts from government-issued credentials — age, personhood, professional status — without revealing the credential itself. The credential never leaves the device.
Zero-knowledge proofs are generated in under 100 ms on a commodity client device with no trusted setup, making private identity verification practical at scale.
Fold-and-reuse proving means repeated presentations — to different services or through AI agents — skip most of the expensive work after the first proof.
Vega targets real-world formats like mobile driver’s licenses and the EU Digital Identity Wallet, is built in Rust, and will be open sourced soon.
AI is transforming how people interact with digital, from AI-powered assistants to autonomous agents that act on a user’s behalf. As these capabilities grow, so does the value of strong digital identity: users need reliable ways to establish trust, whether proving they are human or sharing a credential with an AI-mediated service. Government-issued credentials are still the strongest foundation for trust, but today’s verification methods often require people to hand them over. As AI agents begin acting on behalf of humans and interacting with decentralized systems, the need for fast, privacy-preserving ways to prove credentials will only grow.
These needs are already materializing in policy. Governments are moving quickly to formalize digital identity. The EU Digital Identity (EUDI) framework aims to make digital wallets available to all EU citizens, and efforts like the EU’s age-verification blueprint and the UK’s Online Safety Act mandate government ID-based methods for age checks. Application providers face a double bind: they must either use less accurate approaches like AI-based age estimation, or compromise user privacy by requiring ID uploads.
The credential gets uploaded, processed, sometimes stored, and eventually (hopefully) deleted. But high-profile breaches have repeatedly exposed government IDs that users shared for routine verification. These are not edge cases. They are the predictable consequence of a system that asks users to share their most sensitive documents to prove a single bit of information.
This is the question we set out to answer with Vega: Can we make it practical to prove something about a credential without ever revealing the credential itself?
The path to Vega: From idea to practice
Zero-knowledge proofs (ZKPs) are the cryptographic tool that makes this possible. The idea is simple: they allow a user to prove a claim, such as “I am over 21”, without revealing anything else.. In practice, this means a user could prove their age from their driver’s license without the verifier ever seeing the license, whether to a website, an app, or a service mediated by an AI agent. The proof works directly on the credential as issued, so the issuer does not need to change anything.
so the issuer does not need to change anything.
This is not a new idea. The challenge has always been practicality. Prior systems either require a trusted setup that had to be repeated whenever the logic changed, or they sacrificed performance to avoid the trusted setup, often producing large proofs in the process. For real-world use, the proof needs to be fast to generate, small enough to transmit quickly, and efficient enough to run on a mobile device.
We have spent several years working toward a practical solution. Privacy-preserving identity has been a motivating application (opens in new tab) throughout, and Vega’s proof system draws on several building blocks from that line of work:
Spartan (opens in new tab) showed how to efficiently prove R1CS, a standard way to express statements for a general-purpose proof system, with succinct proofs and without a trusted setup.
Nova (opens in new tab) introduced folding schemes, which let a prover compress many instances of a computation into one.
HyperNova (opens in new tab) showed that Nova’s folding also provides a key building block for zero-knowledge: folding a real instance with a random instance hides the underlying secret data, a technique dubbed “NovaBlindFold.”
NeutronNova (opens in new tab) provided the most efficient folding scheme for handling a batch of instances at once.
Vega puts these building blocks together into a single proof system. A key design goal is simplicity. Spartan, Nova, and NeutronNova are composed in a direct way, and the circuit is built from a small number of standard components, with no exotic multi-field constructions and no trusted setup. On top of this simple foundation, Vega adds the ability to reuse work across multiple proofs of the same credential and a new way to achieve zero-knowledge with minimal overhead. The result is a system that is easy to audit, extend to new credential formats, and deploy.
Performance
Vega generates a zero-knowledge proof of age from a typical mobile driver’s license, about 2 kilobytes (KB), in 92 miliseconds (ms) on a commodity client device. The resulting proof is 108 KB and can be verified in 23 ms. No trusted setup is required. The prover key is 464 KB; it fits comfortably on any phone. For smaller credentials, proving drops to 62 ms, with 83 KB proofs, and 17 ms verification. In practice, a user taps a button to present a credential, and 92 ms later the proof is done. The service learns only the requested fact; the credential never leaves the phone.
Spotlight: Microsoft research newsletter
image
Microsoft Research Newsletter
Stay connected to the research community at Microsoft.
Subscribe today
Opens in a new tab
Under the hood: Fold, reuse, and lookup
Vega’s speed comes from two ideas: fold-and-reuse proving and lookup-centric circuit design. The figure below shows the proving pipeline end to end.
imageVega’s proving pipeline. Work is split into two phases. The once-per-credential phase splits the credential into step and core circuits and commits reusable data. The once-per-presentation phase re-randomizes cached commitments for unlinkability, folds all SHA-256 step instances into one via NeutronNova, proves the folded step and core circuits with Spartan, and applies zero-knowledge via NovaBlindFold. The final output is a 108 kB proof generated in 92 ms and can be verified in 23 ms.
The hashing problem, and how folding solves it
A credential proof must do two expensive things: hash the credential bytes with SHA-256 and verify the issuer’s digital signature. Signature verification would normally be the bottleneck, but Vega avoids that cost by working in a field where the signature arithmetic is native. As a result, hashing becomes the dominant cost. SHA-256 works by applying the same compression function to one 64-byte block at a time. A straightforward circuit simply unrolls all of these iterations,so its size grows with the length of the credential. For a typical mobile driver’s license, that is 30 blocks of compression, all captured in a single circuit.
We take a different approach. Instead of unrolling the entire hash, we define one small “step” circuit that proves a single SHA-256 compression step, and we instantiate it once per block. Because these step instances are structurally identical, we can use NeutronNova’s folding scheme to collapse them into a single instance. The prover does work to fold the 30 step instances into one, but this folding cost is modest. Spartan then only needs to prove a single step-sized circuit alongside a separate “core” circuit that handles the rest of the checks, including signature verification and age predicates, rather than a monolithic circuit with 30 unrolled blocks. The proving key only needs to describe one step and one core, so it stays small regardless of credential length.
There is a subtle privacy issue here to arddress. Credentials vary in length, and if the circuit size varied with the credential, that would leak information. To prevent this, all step circuits share a committed table of intermediate digests. The core circuit picks the selects the appropriate digest using a private index. If the prover selects the wrong entry, the issuer’s signature check fails.
Making it zero-knowledge, cheaply
A proof system needs to be zero-knowledge: the verifier should learn nothing beyond the claim being proved. Existing approaches to achieve this are often complex to engineer and can add significant overhead to the prover. We found a simpler way.
A standard first step is to commit to every message the prover sends using hiding cryptographic commitments, so the verifier sees commitments rather than values. The harder question is to prove that those hidden values would have passed the verifier’s checks. We express those checks as a small constraint system, just a few hundred constraints, since the verifier only performs a logarithmic number of operations. We then fold this constraint system iwith a random instance via Nova’s folding scheme. This step hides the underlying data, so the zero-knowledge overhead scales with this small constraint system, not the full secret data.
Proving once, presenting many times
A user who presents their credential to one website will likely present it again to another, and another. In a world where AI agents handle many of these interactions on a user’s behalf, the same credential may need to be presented dozens of times a day. The credential itself does not change between these presentations. What changes is the session nonce, a fresh random value from the verifier, and possibly the date or the predicate threshold.
Vega takes advantage of this structure by by splitting the prover’s secret data into three parts. The shared data (SHA-256 tables) and the precommitted part, such as the issuer signature and field locationsm are computed and committed once when the credential is first loaded. The online part, such as the device signature and today’s date, is committed fresh each time. Before each proof, the precomputed commitments are refreshed with new randomness, which is cheaper than recomputing them and ensures that two proofs about the same credential cannot be linked.
Avoiding the parser
Another important part of Vega’s efficiency comes from how it handles the credential format. A mobile driver’s license is encoded in Concise Binary Object Representation (CBOR), and building a full CBOR parser as a circuit would be both complex and expensive. But we realized we do not actually need a parser. The credential bytes are signed by a trusted issuer, so we know they are well-formed. We only need to reach in and grab specific fields.
We treat the credential as a byte-addressable lookup table. The prover says, “the device public key starts at byte 847” and supplies the bytes. The circuit checks three things: that the bytes actually match the authenticated credential, that the right CBOR prefix appears at the start of the field so the prover cannot claim the wrong field, and that the addresses are contiguous so the prover cannot splice bytes from unrelated locations. This replaces an entire parser with a handful of lookups.
The same lookup idea powers length-hiding hashing, as described above: the circuit builds a table of all intermediate SHA-256 digests and picks the correct one at the point where the real message ends.
Device binding
A zero-knowledge credential proof is only useful if it is tied to the person holding the credential. Without device binding, someone who obtains a leaked credential could generate valid proofs for any session. This matters even more in a world of AI agents: if an agent can present a proof on behalf of a user, we need cryptographic assurance that the proof originated from the user’s device, not from an attacker or an unauthorized agent.
Vega addresses this by requiring the holder’s device to sign a fresh session nonce with the device private key, which is bound to the phone’s secure element. The circuit extracts the device public key from the credential via lookup and verifies the device signature over the session nonce hash. Because the device private key never leaves the secure hardware, possession of the signed credential alone is not sufficient to produce a valid proof.
Where this leads
Vega is implemented in Rust and will be open sourced soon. The proof system powering Vega is already available as the open-source spartan2 (opens in new tab) project on GitHub. The paper, joint work with Darya Kaviani, will be presented at the upcoming IEEE Symposium on Security and Privacy in San Francisco.
While we focused on mobile driver’s licenses as a concrete and timely application, especially given emerging frameworks like the EU Digital Identity wallet, the proof system and circuit techniques are general. They apply to any credential format with a stable byte encoding and a digital signature.
We see several directions where the same primitive becomes increasingly important.
Agents carrying identity on behalf of humans. As autonomous AI agents begin acting on behalf of people, whether booking travel, interacting with services, or entering agreements, those agents will need to prove facts about the human they represent. For example, “my principal is over 18” or “my principal is a licensed physician.” The agent should be able to carry these proofs without ever holding the underlying credential. A zero-knowledge proof generated on the human’s device, bound to the agent’s session via device binding, lets the agent present identity signals without holding secrets.
Bridging off-chain identity to on-chain systems. Decentralized systems increasingly need real-world identity signals, such as KYC compliance, accredited investor status, and jurisdiction checks. Today, this is handled by uploading documents to a centralized intermediary, who then issues an on-chain attestation. The user loses privacy twice: once to the intermediary, and again on chain, where the attestation may be linkable across interactions. A ZKP over an off-chain credential could bridge this directly: the user proves a fact from their government-issued credential, and the on-chain verifier receives only the proof. No intermediary sees the credential, and rerandomization ensures repeated proofs are unlinkable.
As digital identity mandates expand and AI reshapes how humans and agents establish trust, the need for privacy-preserving credential verification will only grow. We see Vega as one step in a broader shift: from a world where proving a fact about yourself requires giving up your identity, to one where cryptography lets you keep it.
Opens in a new tabThe post Vega: Zero-knowledge proofs for digital identity in the age of AI appeared first on Microsoft Research.
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み