匿名憑証:図解入門(第 2 部)

2026/04/21 2:58

匿名憑証:図解入門(第 2 部)

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Privacy Pass は、匿名資格証明の主導的な標準規格として、Apple、Google、Microsoft、Cloudflare、Brave といった主要技術企業に広く採用されています。盲目 RSA 署名を使用することでプライバシーを確保しつつ、オフライン利用や年齢認証などの高度な機能よりも速度と大規模性を優先しています。この設計は、常時接続中の発行者とのリアルタイム通信に依存しており、結果として発imator のダウンによりサービスが即座に停止します。資格証明書には、シリアル番号とメタデータを備えた一意な「リストバンド」(4 元組)が含まれており、このメタデータはトークンを特定のアプリケーションまたは期間にバインドしますが、これを発行者に開示しません。大規模取引のために最適化されていますが、計算コストと堅牢性に関する課題があり、特に他の文脈でより高速である可能性がある楕円曲線方式と比較しての盲目的 RSA 署名の本質的な限界に伴うものでした。さらに、リソースと発行者が共通インフラを共有する場合はタイミング相関攻撃のリスクがあります。IETF RFC 9576–9578 で標準化され、現時点ではリアルタイムフローに限定されていますが、これらの制約は、Privacy Pass で困難を抱える場所でも機能できるシステムへの進化を促進しています。Google の新しい提案は、これらのギャップに対処するためにゼロ知識資格証明を進化させ、より堅牢なシステムへと変化させることを目指しており、安全なデジタルアイデンティティ管理における顕著な潜在的変革を示しています。

本文

本稿は、匿名クレデンシャル(匿名資格証明書)に関する連載記事の第 2 弾です。その第 1 部はこちらからご覧いただけます。

前回の投稿で、「匿名クレデンシャル」という概念をご紹介しました。これは、ユーザーがウェブサイトへの認証を実行しつつも、プライバシーを損なうことなく行うことを可能にする技術です。

念のため、匿名クレデンシャルシステムにはいくつかの関連当事者が関与します。発行体(Issuer)は資格証明書を配布し、リソース(Resources)とは複数のウェブサイトやその他サービス指します(一部のケースでは、これらの主体が同一人物であることもあります)。そして、多数の利用者(Users)が存在します。利用者は発行体からクレデンシャルを取得し、その際に発行体は通常、匿名性を伴わない方法でユーザーの身元を確認します。クレデンシャルを保持したユーザーは、いつでもリソース(例えばウェブサイト)へのアクセスを行うためにこのクレデンシャルを「提示」することができます。ここで重要なのは「提示(show)」というプロセスです:適切に実装された場合、どの関係者も(リソース側也罢発行体側が各自単独でや共同してであっても)、その特定の「提示」行為とユーザーに交付された特定のクレデンシャルの間にリンクをたてることができず、これが匿名性の源泉となります。

また、匿名クレデンシャルシステムにおいて有用であるいくつかの特徴についてもお触りしました:

  • 最も重要な特徴の一つは、一つのクレデンシャルの有効性を制限する仕組みです。例えば、「提示できる回数を制限」することなどが挙げられます。これは、ハッカーや悪意のあるユーザーがクレデンシャルを盗み、多数のコピーを作成して「ボット」アカウントなどを運用するようなクレデンシャル複製攻撃を防ぐために必要です。匿名クレデンシャルシステムにおいて、クレデンシャルは元々特定のユーザーに追跡可能ではないため、単一の盗まれたクレデンシャルが無検知のまま無制限に複製されてしまう恐れがあり、極めて危険な脅威となります。前回の投稿では、この問題に対するいくつかの解決策を提示したばかりです。
  • 次に、クレデンシャルをより表現力豊かにするための方法についても言及しました。例えば、運転免許証(匿名性を持たないクレデンシャル)は、年齢や扱える車両の種類、居住する州など多様な主張を示すことを可能にします。同様に、表現力豊かな匿名クレデンシャルを用いることで、ユーザーはこのデータに対して多種多様な主張を立証できますが、主張することのできる事実を超えて有用な情報を漏洩させることはありません。

前回の投稿は大局的な概要として意図されており、議論は主に理論的なレベルに留めておきました。しかし、当ブログは暗号化エンジニアリングをテーマにしたものです。つまり、今日は理論から離れ、実際の運用についてお話しします。具体的には、現実の世界で実際に採用されている 2 つのクレデンシャルシステムを解説します。最初のシステムは「Privacy Pass」であり、Cloudflare や Apple その他多くの企業によって広く採用されています。次に検討するのは、Google が標準化を進めている新しい匿名年齢認証のための提案です。

Privacy Pass

Privacy Pass は、世界で最も広く展開されている匿名クレデンシャルの規格です。

名前の呼び方は様々あれど、インターネット全体にわたって Privacy Pass が利用されており、特に大規模なテクノロジー企業によって採用されています。その中で最も有名なのは Cloudflare で、同社の研究者は、CAPTCHA やその他の嫌がらせ的な反悪用対策を回避する方法としてこの規格の策定に関与しました。しかし、同等のプロトコルは Apple(「Private Access Tokens」と名付けました)、Google(「Private State Tokens」と名付けました)、Brave ブラウザ、そしていくつかの他のプロジェクトでも展開されています。Privacy Pass はそれほどまでに普及しており、Microsoft の Edge ブラウザですらこれを採用しています。なお、Microsoft はプライバシーを重視するとは言えません。

Privacy Pass はいくぶんも予想されるように、大規模なクレデンシャルの導入としては驚くほどシンプルです。思い描けるほど単純に設計されています。プロトコルは古典的な使い捨て型の「リストバンド式」クレデンシャルを提供しており、これはクレデンシャルが単一のビットの情報——すなわち「私は資格証明書を保有している」ということを表します——を運ぶものです。使用される技術は非常にシンプルであり、1980 年代に書かれた学術論文を読んでいくつかの創造的なパフォーマンス向上の工夫を取り入れるだけで、Privacy Pass の本質を理解できるほどです。真に革新的なのは、実際に人々がこれを採用・利用している点にあります。

Privacy Pass は IETF RFC 9576、9577、9578 で標準化されています。これらの規格には多数の実装オプションがありますが、コアのプロトコルは本質的に、前回の投稿で触れた Chaum の原始的な「盲番号」クレデンシャルの完璧な実現です。ここでこのクレデンシャルがどのように動作するかを簡潔に振り返りましょう:

  • 利用者が使い捨てのクレデンシャルを取得することを望む場合、まずトークンタイプ(tokentype)を選択し、またオプションとしてユーザーがトークンに含めることのできるメタデータ(MD)という文字列を選びます。
  • 次に、利用者は世界で一意である(と願うだけの)長いランダムなシリアル番号(SN)を生成します。
  • 最後に、利用者と発行体は blind signature プロトコルを実行し、(tokentype, SN, MD) を構成するメッセージに署名を取得します。この際、利用者は署名 sig を取得しますが、発行体はその署名や署名対象のメッセージについて何も知りません。

こうして得られる 4 要素組 (tokentype, MD, SN, sig) が結果としてのクレデンシャルです。これをリソースに「提示(show)」する手順は以下の通りです:

  • 利用者は (tokentype, MD, SN, sig) をリソースへ送信します。
  • リソースは tokentype が有効な Privacy Pass トークンの種類かを確認し、メタデータ MD が含まれるトークンを承諾するか否かを決定します(その詳細については直後に説明します)。
  • 次に、リソースは発行体の検証キーを使用して署名 sig を検証し(tokentype フィールドがどのように検証すべきかを示します)、データベースを検索して SN が以前に使用されていないことを確認します。これらすべてのチェックが成功した場合、SN はデータベースに登録されます。

これをピクトグラムとして視覚化したものが次のようになります:

[画像:基本的な Privacy Pass のフロー図]

ここで自然に思いつく疑問は、メタデータ MD とは何を指しているのか、というものです。

このメタデータ文字列は、特定のアプリケーション(例えばウェブサイト)に対してクレデンシャルを「紐付ける」ために使用できる追加のデータ塊です。例えば、私が 2026 年 3 月 31 日の火曜日にニューヨーク・タイムズにアクセスすることを計画している場合、MD = "nyt.com || 2026-03-31" というメタデータ文字列を含むクレデンシャルを要求できます。このクレデンシャルを提示すると、ウェブサイトはこの文字列を検証し、サービスを提供するかどうかを決められます。

重要なのは、発行体がこのメタデータ文字列を見ることができない点です。これはユーザーが自由に選択できるものですが、一度選択すれば変更することができません。このアプローチにより、ウェブサイトはトークンの有用性を制限することができます——例えば、特定のウェブサイトにのみ限定されたか、または特定の期間に限定されたようなものです。

Privacy Pass におけるメタデータの主な用途は、「セッション固有のクレデンシャル」を実現することです。これは、利用者がウェブサイトを訪問する前にではなく、アクセスを開始した後に発行体からクレデンシャル(例:Cloudflare で保護されているウェブサイトの場合)を取得するという異なる発行フローです。このフローは以下の通り動作します:

  • 利用者がリソースへのアクセスを開始すると、リソース側はセッション固有の「チャレンジ」(ランダムな文字列など)をその利用者に送信します。
  • 次に、利用者は発行体にクレデンシャルを要求し、メタデータ MD を「チャレンジャージ」に設定します(リアルタイムで行います)。
  • 利用者がリソースに対してクレデンシャルを提示すると、リソースはステップ (1) で選択したチャレンジと一致するかどうかを検証します。

これをピクトグラムとして視覚化したものが次のようになります:

[画像:セッション固有の Privacy Pass フロー図]

この複合プロトコルの利点は、各クレデンシャルが利用者が既に開始した特定のセッションにのみ使用でき、他の用途には使用できないという点です。例えば、ユーザーはクレデンシャルを保存しておいて来週の別の機会に使うことはできません。これは Cloudflare などのサイトの運営にとっては有益であり得る利点です:リアルタイムでアクセスするユーザー数を一定の限度内に制御したい場合に適しているためです。

しかし、このアプローチにもいくつかの欠点があります。

その一つは、リアルタイムでのクレデンシャル発行には発行体が常時稼働している必要がある点です。発行体がいなくなると、リソースへのアクセスが事実上不可能になり、利用者は新しいクレデンシャルを取得できないためです(対照的に、従来の発行フローでは、利用者は先にいくつかのクレデンシャルを入手しておき、後で使うこともできました)。もう一つの欠点は、リアルタイム発行プロトコルが原則としてタイミング相関攻撃を引き起こす可能性があります。つまり、リソースと発行体がそれぞれのメッセージを受信した時刻のタイムスタンプを比較した場合、ユーザーのセッションとクレデンシャル発行要求をリンクできてしまう可能性があります。

この最後の点については特に懸念されます:発行体とリソースの両方が同じ企業によって運用されている場合において深刻です。実際、Cloudflare の展開ではそのような状況にあります。幸運なことに、Cloudflare は秒間に実際に数億件もの取引を処理しており、その規模は巨大すぎてこのような相関攻撃を行うのは非常に困難でしょう( sanity check として、Claude Code を使って素早く簡易な分析を行いました。結果は両論あり:こちらを参照してください)。

署名スキームとは何か、「トークンタイプ」は何を指すのかか

基本的なプロトコルフローについて記述した以上、Privacy Pass の説明における残る主な疑問は比較的シンプルなものです:盲番号是如何実装すればよいか、という点です。

Privacy Pass は、わずかに異なる暗号技術を使用する 2 つの標準化された「発行プロトコル」を定義しています。最初のものは、公開検証可能なトークンのための Privacy Pass のバリアントを説明します。これらは本質的に前回の投稿で触れた Chaumian クレデンシャルと同じものです:ここでは発行体は盲番号 RSA 署名を使用し、その手法は Chaum の 1980 年代の原始プロトコルとほぼ同一です。これらのトークンの利点は、リソース側が発行体の公開鍵を使ってトークンを検証できる点にあり、つまり発行体とリソースの間で秘密鍵材料を共有する必要がないことです。

RSA 盲番号署名の主な問題は、それらがサイズが大きく構築コストもやや高いことです。これは RSA が大規模な公開鍵を必要とするためであり、通常は対称暗号との同等性を約 112 ビットレベルに達させるために少なくとも 2048 ビット以上の鍵が必要となります。これにより署名自体が比較的大きくなり、署名処理もやや高コストとなります。

明らかな代替案としては楕円曲線(EC)primitive を使用すること——例えば Schnorr 署名や ECDSA—even などです。(後でポストア量子の代替案についても触れます。)このアプローチのもつまらない問題は、EC ベースの盲番号署名のツールの選択肢が限られていることです。要約すると:

  • いくつかの古い「盲 Schnorr」プロトコルは、並行した発行を許可する場合(つまり攻撃者が多数の盲番号要求プロトコルを同時に実行できる場合)には著しく不安定であることが判明しました。これらの攻撃は悪質すぎて、合理的な計算機ハードウェア上で Schnorr 署名を偽造できてしまいます。
  • これらのプロトコルを安全に動作させるには、一度に一つの署名セッションしか行わないようにする必要があります——つまり並行(同時)発行は不可能です。
  • 最近のいくつかの論文はこの問題に対処しようとしましたが、結果としてのプロトコルは盲 RSA よりも遅くなります。

したがって、Privacy Pass は楕円曲線ベースの盲番号を一切サポートしていません。

代わりに、極めて高速な展開が必要な場合のために、Privacy Pass は二番目の発行プロトコル——つまり、私有検証可能なトークン用のものを定義しています。これらのトークンは、オブリビウス(不可知)擬似乱数関数を基にしたオブリビウスメッセージ認証コード(MAC)を使用します。私有検証可能トークンの利点は、EC ベースの primitive を使用しており、作成と検証が極めて高速である点にあります。デメリットは、検証者(この場合はリソース)が発行体の秘密鍵を所持しないとクレデンシャルを検証できない点です。

結論

Privacy Pass は、構築可能な匿名クレデンシャルプロトコルの中で最も驚くべきものが少ないものです。ユーザーにはシンプルで使い捨て型の「リストバンド式」クレデンシャルを提供し、極めて高速に動作するように最適化されています。プロトコルの背後にある基本的なアイデアはすべて 1980 年代に最終決定されましたが、現在は非常に迅速かつ実用的な何かに標準化されています。このプロトコルに関心を寄せる点はその技術そのものよりも、展開の規模にあります:Apple、Google、Cloudflare の間にいるユーザーたちは、毎日実際に数十億人が Privacy Pass を利用している——彼らがそれに気づいていなくても同様です。

同時に、Privacy Pass は非常に退屈な側面もあります。「トークンを取得して使用する」のみというリストバンド式クレデンシャルのモデルを提供しすぎず、年齢検証の問題に対する多くの有用な解決策を提供していない——私たちはウェブを毎回使うたびに発行体と継続的に通信しなければなりません。

次の投稿では、より強力な提案を議論します:Google の新しいゼロ知識クレデンシャルをサポートするための提案です。

同じ日のほかのニュース

一覧に戻る →

2026/04/23 5:27

Apple、警察による iPhone の消去されたチャットメッセージの抽出を可能にしていたバグの修正を提供。

## Japanese 翻訳: Apple は緊急に重要なソフトウェア更新をリリースし、iOS 18 およびそれ以前のバージョンを実行する iPhone と iPad(すべてを含む)で、Signal や WhatsApp のような暗号化アプリから削除されたメッセージを法執行機関のフォレンジックツールが抽出できるという深刻なセキュリティ欠陥を修正しました。この脆弱性は、ユーザーがメッセージを削除してもデバイス上で最大 1 ヶ月間キャッシュとして保持され、削除されない通知データが原因でした。これにより、「セットして忘れましょう」という設計思想を持つ危険人物向け自動削除タイマーにもかかわらず、法執行機関(FBI を含む)は押収されたデバイス上の私的チャットを再構築することができました。この問題は Signal 社長メレディス・ホイッターによって確認され、当初は404 Mediaによって開示されました。問題の核心は、削除対象としてマークされた通知が予期せずにデバイス上に保持されたことです。OS 全体のアップグレードを必要とせず、即時のリスクを軽減するために、Apple は該当デバイスに修正をバックポートし、不可欠なプライバシー保護を回復するとともに、将来的なフォレンジック攻撃を防ぐためにモバイルセキュリティプロトコルにおけるより厳格なデータキャッシュ管理の必要性を強調しました。

2026/04/23 2:35

私たちが発見したのは、あなたのすべてのプライベートな Tor アカウントを相互に結びつける安定した Firefox の識別子です。

## 日本語訳: 元のサマリーは優れている—it は簡潔で明瞭であり、主要ポイントリストからのすべての主要ポイントを余計な冗談抜きに捉えている。 ## サマリー: Firefox ベースのブラウザには、プライバシー上重大な欠陥があり、ウェブサイトがプライベートモードであってもユーザーを一意に追跡できるようになっています。この問題は、`IndexedDB`(ブラウザの保存システム)がデータをどのように順序付けるかという仕組みから生じており、これは永続的な「指紋」を作り出します。この順序付けはブラウザを完全に再起動するまで安定するため、異なるウェブサイトにおいて同様のパターンを観測し、従来のクッキーを使用せずにユーザーのウェブサイトの活動同士をつなげることを可能とします。この脆弱性は、セッションデータを閉じた後で消えるかリセットすると期待して匿名性を維持するためにユーザーが依存している Tor の「新しいアイデンティティ」機能のようなプライバシー保護措置を効果的に回避します。 この欠陥がすべての Firefox 派生版で共有される `Gecko` エンジンに存在することに気づいた Mozilla は、最近のバージョン向けの緊急修正をリリースしました。解決策はデータベースリストの表示方法を標準化し、追跡を可能とした内部の保存パターンを取り除きます。その結果、ユーザーはこれらの指紋を完全にクリアするためにブラウザを再起動する必要があります。それまでの間、プライベートブラウジングモードの信頼性が損なわれ、無関係なウェブサイトがユーザーの一貫したクロスサイト行動を識別できないという根本的な信頼が破られます。

2026/04/20 0:19

微小画面向けの 5 ピクセル×5 ピクセルのフォント。

## Japanese Translation: 最も重要な示唆は、AVR128DA28 などのリソース制約の厳しい 8 ビットマイクロコントローラ向けに最適化された、非常に効率的で手作業によるフォント設計にあります。lcamtuf の `5x6 font-inline.h` に基づき、ZX Spectrum のスタイルに触発されたこのアプローチは、ベクトルフォント(メガバイト規模のデータを必要とするため)が失敗したり、限られた RAM を備えたデバイス上で文字列長の計算時に整数溢れ問題を引き起こしたりする記憶制約を解決します。このフォントは合計 350 バイトで完結しており、標準的な 128x64 OLED などコンパクトなディスプレイに適合します。主要な設計判断はグリッド寸法に集中しており、5x5 グリッドが "E" や"M"や"W"のような個別の文字を損なうことなく完全な可読性を維持するための最小サイズであることが特定されました。一方、より小さなグリッドではフォント数の大幅な減少と可読性の低下を引き起こし(例:3x5 に落とすと特定の形状が失われ、3x3 未満では文字セットが単純なコードに縮小されます)。この定幅形式はプログラミングを簡素化し、画面内の文字列長が予測可能(文字数の 6 倍)になります。これにより、厳格にストレージ制限を受けたハードウェア上でもファームウェアは軽量かつ信頼性が保たれます。プロジェクトのソースには、2026 年 4 月に開発された `mcufont.h` および`test.c` と関連するピクセルアートフォントリポジトリが含まれています。

匿名憑証:図解入門(第 2 部) | そっか~ニュース