世界を動かす技術を、日本語で。

「ゼロ知識証明」技術の解放

概要

  • Google Wallet がZero-Knowledge Proof(ZKP)ライブラリを オープンソース化
  • Sparkasse とのパートナーシップに基づくEUの 年齢認証 対応
  • ZKPは プライバシー保護型アプリケーションデジタルID 開発を促進
  • 開発者・研究者・企業 が自由に活用可能
  • EUDI Wallet 対応やEU規制への貢献

Google、Zero-Knowledge Proof(ZKP)ライブラリをオープンソース公開

  • Google Wallet がZKPライブラリを 一般公開
  • Sparkasse との協力により、EU向け 年齢認証 対応を実現
  • ZKP は個人情報を明かさずに「特定の条件を満たす」ことだけを証明
    • 例:18歳以上であることを証明し、他の情報は一切共有しない仕組み
  • オープンソース化により 民間・公共セクター の開発者が容易に活用可能
  • プライバシー強化型アプリケーション・デジタルIDソリューション 構築を加速
  • Webやアプリのユーザー は、安全かつプライベートなデジタル体験を享受
  • 企業・組織 は、オープンソースのZKPを利用して プライバシー要件 に容易に対応
  • 開発者 はZKPコードベースを自由に利用し、 プライバシー重視アプリ 開発が可能
  • 研究者 は高効率・高性能なZKP実装を活用し、 新たな応用技術 の創出が可能

EU規制とEUDI Walletへの対応

  • EUのeIDAS規則 (2026年施行予定)は、ZKPのような プライバシー強化技術 の導入を推奨
  • 各加盟国 は、今後の European Digital Identity Wallet(EUDI Wallet) にZKPを統合可能
  • Google のZKPツール公開により、 EUDI Wallet の開発と導入を加速

コードベースの入手方法

今後への期待

  • Zero-Knowledge Proof 技術のさらなる普及とイノベーション促進
  • オープンソースコミュニティ暗号技術分野 全体への貢献
  • プライバシー保護型デジタル社会 の実現に向けた新たな一歩

Hackerたちの意見

年齢確認が、政府が発行する(企業の代理を通じて)インターネット利用許可の入り口になるんだね。

確かにそうだけど、10歳の子供がウェブブラウザを開いてから40秒でハードコアBDSMや近親相姦のフェチポルノに直面するのが健康的だとは思えないよ。これが嫌だって気持ちはあるけど、ポルノ業界の自己規制以外に解決策が見つからないのが辛いね。

それに、ユニーク性の保証も必要かも。そうすれば、やっと「インターネットは死んだ」って議論が終わるかもしれないね。

必要ないよ。ウガンダでは、2018年からソーシャルメディア税をエンドユーザーに課していて、ソーシャルメディアサイトにアクセスすると自動的に携帯電話の請求書に追加されるんだ。使用量は1日あたり約2.7セント。[1] ほとんどの人が、ユーザーが住んでいる国で規制されているISPからインターネットを取得しているよ。アメリカで許可制度を導入するのに技術的な障壁はないし、使用に基づく税金があると実際の人とつながることが自己強制的になるんだ。[1] https://www.africanews.com/2018/04/13/uganda-s-social-media-...

うん。これは完全にカキストクラシー・テクノ封建主義の複合体を助長してるね。

非対話型ゼロ知識証明の直感について、誰か良い説明を持ってる?例えば、Diffie-Hellman鍵交換の「ペイントミキシング」アナロジー(https://en.wikipedia.org/wiki/Diffie–Hellman_key_exchange#Ge...)は、数学を「混ぜるのは簡単、元に戻すのは難しい」と理解するのにすごく役立ったんだ。このブログ記事(https://blog.cryptographyengineering.com/2014/11/27/zero-kno...)は対話型ZK証明の良い入門だったけど、非対話型のものについてはまだ見つけられてないんだ。このZK-STARKsと消去符号を比較したブログ投稿はいい感じだけど、頭に残らなかったな:https://vitalik.eth.limo/general/2017/11/09/starks_part_1.ht...

ウィキペディアの記事の「アリババの洞窟」の例が、私にとってはピンときたんだ:https://en.wikipedia.org/wiki/Zero-knowledge_proof。

うん、ここでの詳細にも興味があるけど、リンクされたライブラリのリポジトリは今の私の理解にはちょっと低レベルすぎるかな。例えば、ウェブサイトに年齢証明を提供する場合、誰が検証データを提供するの?(政府?)それはどんな形式になるの?(標準フォーマットのファイル?)誰がその検証データを持ってるの?(ユーザー?)誰が検証ソフトウェアを実行するの?(エンドユーザーのウェブブラウザ?)ユーザーはどんな実装でも証明を提供できるの、それともGoogle Walletみたいな「認可された」実装じゃなきゃダメなの?

同僚のアミットが、Wiredでzkpについての簡単な動画解説を作ったよ。https://youtu.be/fOGdb1CTu5c?si=EyBQS92WyeduIpH- この動画はこの仕組みがどう機能するかを説明してるわけじゃないけど、いいスタートだね。

ペンキ缶レベルのものを探してるなら、マシュー・グリーンの「クレヨンと帽子」を見た方がいいよ。https://blog.cryptographyengineering.com/2014/11/27/zero-kno...

今は見つからないけど、すごく助けになった「ウォーリーを探せ」の説明があったんだ。

直感的な説明としては、ウォーリーを写真の中で見つけられることを証明するけど、彼の正確な場所は明かさないって感じかな。デジタルウォレットは、ユーザーをそのアイデンティティに直接リンクさせる公開鍵の代わりに、第三者が発行したコミットメントCで動作するファンシーな署名スキームとして解釈できるよ。シンプルな署名スキームは、知識の証明PoK{x : pk = g^x}に基づいていて、Fiat-Shamir変換を通じて非対話型のバリアントに変換されるんだ。メッセージがハッシュに追加される感じ。レンジ証明も似たような仕組みで、最もシンプルな形は1ビットのためのものだよ:PoK{(b,r) : C = g^b * h^r & b(b−1)=0}。これでコミットメントCが{0,1}のビットbを含んでいることが証明できるけど、どの値かは明かさないんだ。任意の範囲は、コミットメントのホモモルフィック特性を使って構築できるよ。nビットの範囲の場合、n個の個別のビット証明が必要になる。バレットプルーフはこれをO(log n)の証明サイズに最適化して、実用的なアプリケーションを可能にするんだ。コミットメントCは信頼できる第三者によって発行されて署名され、その後ユーザーは年齢範囲や位置ゾーン(緯度と経度の範囲から構築されたもの)など、サービスプロバイダーに特定の特性を証明できるよ。大きな課題は、同じコミットメントCを再利用するとトラッキング識別子が作成されて、ユーザーのプライバシーが危うくなることだね。

一人の人が教えてくれた説明は、基本的にチャレンジを生成するのにRNGを使うってことだった。これが「正しい」かどうかはわからないけど、システムを操作できない限りは納得できる。便利なシーケンスを選ばれないように、RNGを遅くするのもアリかもね。

いいね。ZKPは分散型アイデンティティ証明を扱うのに良い方法だと思う。デジタルアイデンティティウォレットを使ったZKPの他の利用法も想像できるし、個人情報を提供せずに独立したe民主主義サービスに参加するための州の政党所属を証明することもできる。これを進めている委員会は素晴らしいね。ISDN以降、プロトコルの分野で彼らからあまり見かけてないけど。

これを基に世界が作れるよ。個人情報を過剰に共有しなきゃいけないから、プライバシー的に壊れてることがたくさんある。例えば、社会保障番号とかね。

これはとても興味深い解決策で、既存のECDSAハードウェアキーを使ってマルチショーの非連結性をハードウェアバインディングに結びつけることができるんだ。年齢確認だけに限らず、任意の属性に適用できるよ。しかも、これは理解できる人が世界に数人しかいないほど、計り知れないほど複雑な解決策なんだ。[1] 既存のハードウェアにハードウェアバインディングがないIdemixやBBS+よりもずっと複雑だよ。プライバシーを守りながらの年齢確認は今すごくホットな話題だけど、いつでもバイパスできる可能性があるし、一般的な匿名のブーリアンも同様に簡単に回避できるんだ。例えば、オープンプロキシを設定して本物の属性を開示することができる。プライバシーを守るための対策もあって、例えば、一定の期間内にk回以上開示するとリンク可能になる暗号技術とか、対面での開示シナリオで光速より遅い開示を検出することができる。でも、これらの対策は完全に安全にはならないんだ。もし事前にそれが認められていれば、期待が正しく設定されるから問題にはならないかもね。これはナイーブな人を守るためのバリアであって、侵入不可能な要塞ではないから。ただ、期待が「バイパスできない年齢確認だけが『適切』」だとされているなら、最初のインシデントが実際のアプリで起こるのを待つだけだよ。その後、オープンソースやプライバシーの話はセキュリティの名のもとに放棄されるだろうね。[1] https://eprint.iacr.org/2024/2010.pdf と https://eprint.iacr.org/2022/1608.pdf

逆に、誰でも私たちの解決策を理解できるよ。対照的に、BBSの双線形ペアリングを説明できる人は知らないな。

ZKを基にしたクールな技術がzkTLSで、インターネット上のデータにアクセスできることを証明できるんだ。例えば、ユーザー名を明かさずにあるサービスにアカウントがあることを証明する感じかな。もっとプライベートなOAuthってことかな?

でも、サーバー側がそれをサポートしてなくても使えるんだよね。

これがメインストリームになるのが楽しみだな。OAuthは確実に良い方向への一歩だけど、スコープが必要以上に広すぎて、悪用されることも多い。私の知る限り、zkTLSは派生値を提供できる。つまり、「あなたは18歳以上ですか?」(はい/いいえ?)と「あなたの誕生日は?」の違いね。

これは敵対的な環境でのプライベートユーザーデータに対して機能する。例えば、ロケットリーグの試合の結果が20ドルの賭けを決定することができるんだ。Showdown.win

AIエージェントの時代にはこれがもっと重要かもしれないけど、これらの fancy ZKP 構造をメインストリームで扱う前に、業界として(今まで一貫して失敗してるけど)ザンジバルとか、ReBACを実装しないといけないんだ。もしかしたら、ZKPのものが「ゼロ知識の令状」とかの形で「忍び込む」かもしれない。残念ながら、消費的には機能しても、提供者側では根本的に矛盾してるんだ。提供者たちはOLAPを真珠のように大事に抱えてるよ(笑)。

zkTLSの仕組みについての素晴らしい紹介: https://blog.zksecurity.xyz/posts/zktls/

zkTLSがMPCアーキテクチャでどう機能するかの技術的な深堀り: https://paragraph.com/@vinny/opacity-network-deepdive

これ、めっちゃいいね。デイビッド・チャウムがZKPのクールな使い方を特許で封じ込めたときは、本当にムカついたよ。DigiCashの連中は、典型的なドットコムの欲深いタイプで、「取引ごとに大金を取るから、世界のGDPの1%の価値があるはず!」ってビジネスモデルだったんだよね。そしたら、世界は「いや、無理でしょ」って反応した。アンディ・ビレルの「マイクロセント」が好きで、MD5ハッシュを簡単には逆転できないって事実を利用して、高信頼で低価値の取引を安くスピーディにできるってアイデアがあったんだ。残念ながら、これもどこにも行かなかったけど。90年代のZKP IDカードやZKP通貨は、実際に見てみたい面白いものだよね。電話から電話へ、ネットワークなしで二重支払いできない通貨で支払えるなんて想像してみてよ。それがデジキャッシュの約束だったんだ。政府はそれを嫌ってたけどね(笑)。現金通貨と同じように、シリアルナンバーでどの銀行から出て、どの銀行に戻ったかは追跡できるけど、その間にどこに行ったかは追跡できないんだ。楽しい時代だったな。今、いくつかのZKPアイデアがこの技術の上に構築できるか見てみるつもりだよ。

これが今取り組んでるやつだよ:https://paygo.wtf/ https://x.com/0x_Osprey/status/1925299005191577921

「MDOCを使うには、電話のハードウェアセキュリティキーからの署名が必要です」 https://news.ycombinator.com/item?id=44458417

ゼロ知識証明に興味がある人は、https://news.zksecurity.xyz/をチェックしてみて。これはZKのためのハッカーニュースみたいなもんだよ!

HNのホームページと比べると、そのデザインが目に痛いのが面白い。ぱっと見では理由がわからないけど、なんか読みづらい感じがする。

フランスで主要なポルノサイトがアクセスをブロックした(今は戻ったけど)ことや、ユーザー体験やプライバシーを損なうことなく実施するのが難しい年齢確認規制に対する反応として、アメリカのいくつかの州でも同じことがあったのが非常に興味深いね。

誰かから認可されたプライベートキーを持つノートパソコンやスマホを買ったり借りたりした場合、どうやって防ぐの? - 認可されたプライベートキーのファイルを怪しいフォーラムからダウンロードする(無理やりハッキングされたターゲットからか、自由な言論を支持する人が自発的に共有したかもしれない) - 年齢確認が法的に義務付けられていない国のウェブサイトにアクセスするためにVPNを使う(経済的またはイデオロギー的な理由で非遵守が暗黙的または明示的に奨励される)

認証情報(「運転免許証」)には、秘密鍵がハードウェアセキュアエレメントに安全に保存されている公開鍵が含まれている。標準的な仮定は、SEが電話の中にあることだけど、yubikeyや似たようなデバイスでもいい。認証情報を使うにはSEが必要だから、誰かから電話を買っても、別の誰かから認証情報をダウンロードすることはできない。ただし、誰かから電話と認証情報を一緒に買うことはできる。対策として、SEは指紋や類似の生体認証入力でロック解除されたときだけ署名を生成する。これには、認証情報が発行されたときに提供されたものと一致する必要がある。このシナリオで攻撃が成功するかどうかは詳細次第。例えば、地元の役所で認証情報を直接取得して、その時に指紋を提供した場合、その後電話と認証情報を売るのは簡単じゃない。