Ouroboros:実環境における自己修復
2025年 12月 3日 9 分で読めます
2025年11月21日、Cardanoは約14時間にわたりサービス低下を経験しました。このインシデントはすでに異なる視点から分析されています(例えば、ここやここを参照)が、このブログ記事の目的は、Ouroborosプロトコルが提供するセキュリティ保証の枠内で、これらのイベントを文脈化することです。これにより、Ouroborosが提供する理論的な保証を、実世界のストレスシナリオに対して評価し、将来の設計やデプロイを判断するための結論を導き出すことが可能になります。
何が起こったのか
このサービス低下は、ノードソフトウェアのバージョン10.3.1、10.4.1、10.5.1で発見されたシリアル化のバグによって引き起こされました。インシデント発生当時、システム内のステークの過半数が、このバグの影響を受けるノードバージョンを実行しているステークプールオペレーター(SPO)に委任されていました。一方、少数のSPOは影響を受けませんでした。この不一致と、このバグを悪用するために不正な形式のトランザクションが意図的に送信されたという事実により、メインチェーンは二つのフォークに分裂しました。影響を受けた過半数に支持された汚染されたチェーンと、影響を受けていない少数派によって構築された、仕様に従うチェーンの二つです。バグが発見された直後にリリースされたパッチには、シリアル化ロジックの修正が含まれており、SPOはアップグレードを強く推奨されました。時間が経つにつれて、パッチを適用したノードソフトウェアバージョンを適用したSPOが増えていきました。
理論家のレンズ:敵対的多数の急増
Ouroborosは、最長チェーンルール(またはナカモトスタイル)のプルーフオブステーク型(PoS)アルゴリズムであり、コアセキュリティは、他の設計と同様に、正直な多数派の仮定(HMA)に依存しています。これは基本的に、ブロックチェーンが安全に機能するためには、それを制御するリソースの多数派が「正直」でなければならない、すなわち設計通りにプロトコルのルールに従っていなければならない、ということを意味します。ビットコインのようなプルーフオブワーク型ブロックチェーンでは、鍵となるリソースは計算能力(マイニングハッシュレート)であり、この仮定は、正直な参加者がその半分以上を集合的に制御することを要求します。PoSシステムでは、鍵となるリソースはステーク(バリデーターが保有している、またはこれに委任されているADAの量)です。しかし、この仮定の精神は変わりません。委任された総ステークの過半数を制御するパーティが、プロトコルの仕様に従って行動しなければなりません。
今回のインシデントに話を戻すと、シリアル化バグの影響を受けたノードは、仕様に従うことに失敗したため、もはや「良い」チェーンをサポートできなくなりました。悪意のあるトランザクションがメインネットに送信された後の初期段階において、これらのノードが委任された総ステークの絶対多数を占めていたため、攻撃の後、一時的なHMA違反が数時間にわたって展開しました。
これはCardanoコンセンサスアルゴリズムにとっての厄日であったのか
Ouroborosは回復力を重視して設計されており、プロトコルの稼働時間を通して常にHMAが満たされることを求める必要はありません。実際、IOGの研究者とその協力者が2024年に発表し、IEEE Computer Security Foundations Symposiumで報告した論文は、ビットコインやOuroborosのような最長チェーンプロトコルが一時的なHMA違反から回復できることを証明しました。この点は、論文の公開以前には疑われていましたが、私たちの研究は、これらのアルゴリズムの自己修復特性について「明示的な保証」を与える最初のものでした。
- 一時的なHMA違反により、攻撃開始前の何ブロックが侵食される可能性があるか
- そのような違反の後、ブロックチェーンが正常な状態に戻るまでにどれだけの時間がかかるか
私たちの主な所見は以下の通りです。違反が、プロトコルのより高レベルな組織(Cardanoの場合エポック構造)に干渉するほど強力でなければ、プロトコルは自動的に安全な状態に戻ることができます。分析における重要な指標は、違反の「強度」です。大まかに言えば、これはHMAが成立している通常のケースと比較した、スロットリーダーの分布に対する違反の期間全体にわたる累積的な影響です。したがって、これは通常時と比較して予想される追加の敵対的なブロックの数と直接関連しています。この形式的根拠を踏まえ、私たちは次のことを発見しました。
- 攻撃前にチェーンの十分に深い場所に位置するブロックは、チェーン内に留まる。この「十分な深さ」は、攻撃強度に比例する
- HMAが回復した後、通常の動作状態に戻るのにかかる時間は、攻撃強度に比例する
この特性は、Cardanoに対する一時的なHMA違反の影響を制限するものです。特に最近のインシデントに照らして、Ouroborosの真に貴重なセキュリティ特性として考慮されるべきです。インシデント中、違反の強度は約8時間にわたって拡大し、数百ブロックの累積的な優位性をもたらしました。理論分析は、ほぼ同じオーダーでの正常化への復帰を断言しており、これは分岐から約14時間後に正しいチェーンが追いついた際に観測されたことと一致します。
迅速な回復
要約すると、私たちが観測した回復は、Ouroborosの設計によって保証された自己修復的な振る舞いに従ったものです。
SPOがパッチをインストールしていくにつれて、正しいチェーンを支持する実効的な正直なステークは着実に上昇し始めました。一方、無効なトランザクションを含む汚染されたチェーンは、急速にステークの支持を失っていきました。良いチェーンは最終的に汚染されたチェーンの長さを超えました。その時点で、残りのすべてのノードは、ネットワークの最長チェーンルールにより、たとえパッチを適用しないままであったとしても、チェーンスイッチによって正しいチェーンに自動的に切り替えられました。
決定的に重要な点として、この自己修復プロセスは、良いチェーンを「チェックポイント」したり、汚染されたチェーンを「ブラックリスト」に入れたりといった手動による介入を一切必要としませんでした。むしろ、それは大多数のノードが、競合するチェーンの中で仕様を正しく適用した解釈へと徐々に移行したことによる自律的な結果でした。これはまた、悪いチェーンを解析する際に仕様と互換性がないために問題が発生したツールや上位レベルのアプリケーションが、その結果として自動的に修復されたことを意味します。
他のブロックチェーン設計にとって自己修復は実現可能か
異なるコンセンサス設計を自己修復能力という観点から比較することには価値があります。顕著なコンセンサス設計アプローチの一つは、ビザンチン障害耐性(BFT)スタイルのアルゴリズムのイテレーションです。これらのプロトコルは、その基本形式においては、提案されたブロックごとにいくつかの投票ラウンドを実施することで、ブロックを一つずつ確定させます。ブロックが、必要なすべてのラウンドで圧倒的多数(例えば、3分の2以上)の投票による「クォーラム証明書」を受け取ると、それは確定済みと見なされ、不変になります。今回検討されたインシデントの過程では、バグの影響を受けたノードの十分な多数が、仕様に適合「しない」ブロックを確定させてしまうことになります。
これは非常に憂慮すべき事態です。なぜなら、バージョンアップ後であっても、正しいブランチをチェックポイントするか、悪いブランチをブラックリストに入れるかによってプロトコルロジック内で明示的に失格としない限り、悪いブロックを証明するクォーラム証明書がシステム内に残ってしまうからです。さらに、このロジックは、コアコンセンサス内(例えば、スラッシング条件のトリガーを避けるなど)で一貫して行われる必要があるだけでなく、これらのルールは、ブリッジやライトクライアントといった台帳と相互作用するすべての関連ツールおよび上位レベルのアプリケーションにも伝播されなければなりません。実際には、これらはしばしばサードパーティ製品であるため、パッチ適用にはコミュニティ全体で十分に調整した取り組みが必要となります。
教訓
研究の役割の一つに、将来を見据え、調査時点ではもっともらしいが、これまで一度も起こったことがないシナリオを予測することがあります。今回のバグは、ネットワークを数時間にわたって分岐させました。これは、Cardanoエコシステムでは前例のない規模のインシデントでした。しかし、Ouroborosの慎重で、将来を見据えた、堅牢なコンセンサス設計は、これらの不利な条件に対処する準備ができていました。また、自己修復が、そのような悪いイベントの影響をシームレスに軽減できるブロックチェーンプロトコルの貴重な特性であることを再確認させました。
執筆協力:Peter Gazi、Christian Badertscher、Matthias Fitzi、Sandro Coretti-Drayton
最新の記事
Ouroboros:実環境における自己修復 筆者: Prof Aggelos Kiayias
3 December 2025
3 December 2025
Leios 24/7開発トラッカー公開 筆者: Olga Hryniuk
26 November 2025