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

虚偽の主張を証明する方法:Fiat-Shamirに対する実践的攻撃

概要

  • ランダム性 は公平性やセキュリティの根幹であり、特に 暗号技術 で重要視される要素。
  • ハッシュ関数 をランダム性の代用とする手法(ランダムオラクルモデル)が長年信じられてきた。
  • 新たな研究により、この仮定の 安全性に重大な疑問 が投げかけられた。
  • Fiat-Shamir変換 を利用した証明システムが、実際には偽の証明を認証してしまう脆弱性の発見。
  • 今後の 暗号プロトコル設計 やブロックチェーンの安全性に大きな影響を与える可能性。

ランダム性とハッシュ関数の役割

  • ランダム性 は、公平な意思決定や予測不可能な選択を実現する基盤。
  • ハッシュ関数 は、計算機で真のランダム性を得るのが難しい場合の代用手段。
  • 暗号分野では、ハッシュ関数の出力が 真のランダム性と区別できない と仮定(ランダムオラクルモデル)。
  • 多くの 暗号プロトコルや証明システム でこの仮定が安全性の分析の前提。
  • しかし、実際のハッシュ関数は 理想的なランダム性 を持たない現実。

Fiat-Shamir変換とその普及

  • Fiat-Shamir変換 は、対話型証明を非対話型証明に変換する技術。
  • 例:宿題の正当性証明を多数の第三者に納得させる仕組み。
    • 各解答を ハッシュでロック し、コミットメントとして公開。
    • ランダムなチャレンジを ハッシュ関数で自動生成
    • 証明者と検証者のやり取りを不要にし、誰でも検証可能な証明を実現。
  • ブロックチェーン や暗号通貨、クラウド計算の正当性証明など幅広く利用。

新たな脆弱性の発見

  • 近年の研究で、 Fiat-Shamir変換を悪用し偽の証明を認証可能 な手法が実証。
  • 研究者:Dmitry Khovratovich(Ethereum Foundation)、Ron Rothblum(Succinct/Technion)、Lev Soukhanov([alloc] init)。
  • 対象:GKRプロトコル等、現実的な証明システム。
  • 任意のハッシュ関数を用いても、 悪意あるプログラム が証明システムを欺けることを証明。
  • ブロックチェーンなど 巨額の資産が依存 するシステムの根本的リスク。

ランダムオラクルモデル再考の必要性

  • 1996年、PointchevalとSternが ランダムオラクルモデル下での安全性 を証明。
  • しかし、実際のハッシュ関数は 理想的オラクルではなく、攻撃余地が存在。
  • 過去にも理論的な脆弱性は指摘されていたが、現実的プロトコルへの影響は軽視されてきた。
  • 今回の発見により、 多くの暗号技術の基盤となる仮定の見直し が迫られる状況。

今後への影響と対応

  • Ethereum Foundation など主要なブロックチェーン組織も危機感を持ち、対策を模索。
  • Fiat-Shamir変換 に依存する全ての証明システムで、設計や運用の再評価が必要。
  • 新たな安全性保証手法 や、より強力なランダム性生成技術の開発が急務。
  • 暗号分野全体での 理論と実装のギャップ に対する議論の活発化。
  • 今後も 安全性の検証と脆弱性の発見 が続く見込み。

参考論文: https://eprint.iacr.org/2025/118

Hackerたちの意見

それって、ビットコインや暗号通貨の取引を偽造できるってこと? これらの脆弱性によって何が影響を受けるのか、具体的に知りたいんだけど。もっと分かりやすく説明してる記事ってどこかにある?

理論的には極端だけど、この記事はかなりセンセーショナルだね。論文は半年前のもので、あまり注目されてないし、もしこれが重要なニュースならもっと報道があるはずだと思う。ここにもっとニュアンスのある見解を見つけたよ: https://blog.cryptographyengineering.com/2025/02/04/how-to-p... Quanta「マガジン」はあまり見たことないけど、こんな感じの内容ばっかりなのかな?

ざっと読んだ感じでは、ビットコインとは全く関係ないみたいだけど、もう少し複雑なイーサリアムのプロトコルには影響があるかもしれない。イーサリアム自体とは関係ないけど、ゼロ知識証明に関連しているみたい。編集: どうやら「GKRプロトコル」と呼ばれる、いくつかの暗号通貨が使っている(?)ものに関連しているみたいで、何かを証明するために使える(?)らしい。マイニングとか... ゼロ知識証明を使って... ここみたいに - https://www.polyhedra.network/expander (暗号通貨では、実際に何が行われているのか分かりにくいよね)私が素人として感じるのは、実験的なZK証明は確かに実験的だってこと。

たぶんそうだろうけど、結局は誰かが壊れてないプログラムで君の仕事を検証するから、捕まる可能性が高いよ。どれくらいその可能性があるかはよく分からないけど(暗号通貨に興味がないからアルゴリズムを掘り下げる気もないし、確かいくつかの異なる関係者が取引を本物と見なす前に合意する必要があるんだよね、そんな感じで混乱してると思ってくれればいいけど)、ビットコインの詐欺をたくさんやってたら誰かが気づくよ。詐欺を君に追跡できるかどうかは分からないけど。

数年前にセキュリティ研究者がブロックチェーンはハッキング可能だって見せてくれたんだ。証明は覚えてないけど、それ以来暗号通貨やブロックチェーンにはあまり興味がなくなった。お金を稼ぎたいけど、セキュリティが不安定なんだよね。

(これを鵜呑みにしないでね、先週このHNスレッドでFiat-Shamirヒューリスティックについて知ったばかりだから https://news.ycombinator.com/item?id=44458168、理論的な暗号学の基本的な経験しかない)ゼロ知識証明の概念があって、インタラクティブな文脈での動作の直感的な例はWikipediaページをチェックしてみて。基本的に、何かを証明したい人(証明者)にいくつかの質問(チャレンジ)をすることで、彼らが実際にそのことを知っているという確率的な信頼を得られるんだ: https://en.wikipedia.org/wiki/Zero-knowledge_proof#Abstract_... インタラクティブであることが重要なのは、証明者がその場で「ごまかす」のが難しくなるから。でも、オンラインでお互いに話す必要がない方が便利だよね。だから、同じことを非インタラクティブにやりたい。Fiat-Shamir変換(またはヒューリスティック)は、インタラクティブなプロトコルを「ランダム」なチャレンジに依存して非インタラクティブなものに変換できると言ってる。証明者がランダム性をコントロールできなければ、それはインタラクティブに挑戦するのと同じくらい良いことになる(例えば、補うためにもっと多くのチャレンジをさせることもできる)。ランダム性はどうやって得るの?コンピュータでは完全にランダムなものはないけど、暗号学的ハッシュ関数は出力を予測するのが非常に難しいと考えられている。だから、暗号学では「ランダムオラクルモデル」があって、「このプロトコルが実際のハッシュで安全かどうかは分からないけど、ハッシュ関数が本当にランダムオラクルだったら、安全だと証明できる」と言ってる。(Fiat-Shamir変換は、ランダムオラクルモデルを信じる場合にのみ証明可能に安全)。過去には、研究者たちがランダムオラクルモデルで安全な新しいプロトコルを構築してきたけど、実際のハッシュ関数を使うと、現実の実装の詳細のせいで破られることがある。この論文の要約にもあるように、「これまでのすべての例は、失敗するように特別に設計された作り話のプロトコルだった」。実際のハッシュ関数を選ぶとどうなるかのメカニズムについての議論は、https://crypto.stackexchange.com/q/879を見てみて。この新しい論文は、実際に使われている現実のプロトコルGKRをターゲットにした攻撃を示すことで、分野を進展させている。これを見ると(俺の解釈は鵜呑みにしないでね)、実際のハッシュ関数を選ぶと、攻撃者が望む出力を得るための入力(回路)を構築できることが分かる。--- 現実世界への影響は?実際に存在する非インタラクティブなゼロ知識証明システムがあって、主にブロックチェーンで使われてる。全ての情報を公開して(遅い)ブロックチェーン上で計算する代わりに、取引のプライバシーを守ったり、いくつかの更新を安価にまとめたり(ZKロールアップ)できる。理論的には、これらは論文で説明されている方法を使って攻撃される可能性がある。これらが影響を受けるかどうかは不明だけど(俺の予想では受けないと思う、もしそうなら言及されていたはずだから)。

いや、これはビットコインやイーサリアムのTXを偽造することはできないよ。この種の脆弱性は主に「ゼロ知識」証明手法に関するもので、ビットコインやイーサリアムの基盤層では発生しないんだ。でも、いくつかのチームはこれらのブロックチェーンの上にZK証明を構築しているから、そういうシステムは脆弱かもしれないけど、まだほとんど実験段階なんだよね。

ハッシュは決してランダム性の源にはならないよ。ランダム性は本来の用途を超えた仮定を生むからね。ハッシュは再現可能なラベルとしてだけ使うべきで、ハッシュが示す内容を生み出すためには使えない。用途通りに使えば、ハッシュは価値の衝突が発見されるまで、最も強力な整合性のポイントになるんだ。

初心者として、どうして人たちがこんな風にハッシュを使ってるのか理解するのがすごくイライラした。プロの人も「うん、でも衝突は本当に起こりにくいから」とか言って、ニュートリノの干渉と比べてたけど、それがどうして十分だと思えるの?

HyperLogLogアルゴリズムについて調べてみて。アルゴリズムが機能するためには、公平なハッシュの「ランダム性」が必要なんだ。ハッシュの擬似ランダム性が役立つケースもあるってことを言いたいんだよね。

でも、「ハッシュで説明された素材を生成するために使えない関数」を作ったら、すごく良い擬似ランダム化装置も作ったことになるよ。実際、暗号ハッシュ関数が明らかなランダム性を生み出す能力を信頼できないなら、その「意図された目的」に対しても信頼できないってことになる。どちらか一方か、両方とも得られるかだね。

今使われてる署名って、基本的にハッシュ関数をランダム性として使ってるって気づいた?

Hacker Newsで議論の続きを見る