本文へ移動

ステーク・グラインディング攻撃:PoS のランダム性を偏らせる手法

ステーク・グラインディング攻撃は、許可された鍵、ブロック、乱数への寄与から将来の選出に有利な結果を探します。攻撃経路、探索上の優位性、プロトコル固有の防御を解説します。

更新日

プロトコルセキュリティの教育的分析です。ランダム性、リーダー選出、罰則、攻撃コストはプロトコルとバージョンごとに異なります。安全性やステーキングについて判断する前に、現行仕様と実装を確認してください。

端的な回答

ステーク・グラインディング攻撃は、PoS のランダム性が確定する前に参加者が持つ選択肢を悪用します。複数の有効な鍵、候補ブロック、乱数への寄与を評価し、将来の提案者、委員会、フォークに有利な案だけを保持または公開します。一度の抽選が複数の候補抽選になり、名目上のステーク比率を超える影響力を得る可能性があります。

これは攻撃群の総称です。ブロック/シード・グラインディングでは、結果ハッシュが将来の乱数になる場合に許容された内容や祖先を変更します。鍵グラインディングでは登録前に多数の鍵を作り、有利な適格性を持つ ID だけを残します。選択的公開では各選択がシードに与える効果を知った後、commitment、reveal、署名、ブロックを保留または公開します。

ハッシュ、検証可能ランダム関数(VRF)、commit-reveal だけでは全体の無偏性は保証されません。誰が入力を選ぶか、適格性がいつ判明するか、代替案の数、中止が別の選択になるか、シードと選出対象の時間的隔離が重要です。名称ではなく正確なプロトコル版を検証します。

攻撃と分析の手順

  1. 選出規則を固定する。 ネットワーク、版、epoch/ラウンド、ステークのスナップショット、シード導出、適格性検査、fork choice、報酬と罰則を記録します。
  2. 攻撃者の選択を列挙する。 登録前の鍵、有効な取引順序、任意フィールド、親候補、公開、reveal、中止を含めます。受理される状態やシードを変えるものだけが対象です。
  3. 探索予算を測る。 期限内の候補数、独立性、計算、逸失報酬、預託、遅延、slash 対象行為の費用を推定します。
  4. シードを将来の権力へ結ぶ。 選出の先読み期間、commit 前に結果が見えるか、有利な選出が次の grinding を生むかを確認します。
  5. 受理と累積を評価する。 候補は状態遷移、時刻、署名、fork choice を満たす必要があります。各ラウンドを独立とせず、状態を持つ過程として扱います。
  6. 防御を選択肢ごとに試す。 遅延シード、VRF、鍵登録、罰則、しきい値ビーコン、検証可能遅延関数は異なる能力と前提を扱います。

候補ブロックや commitment、正確なハッシュとドメイン、時刻、スナップショット、実装された計算、反実仮想の結果を保存します。正直な抽選にも連続当選はあるため、連続提案だけでは証拠になりません。

計算例

単純なプロトコルで、攻撃者が次の提案者になる確率を 10% とします。固定シード一つなら 0.10 です。不具合により、独立で有効な 20 個のシードをほぼ無料で評価し、一つを公開できるとします。

少なくとも一つで選ばれる確率は 1 - (1 - 0.10)^20、約 87.8% です。攻撃者のステークが 87.8% なのではなく、プロトコルが誤って 20 回の抽選と結果確認後の選択を与えています。

これは説明用であり予測ではありません。相関、期限、費用、逸失報酬、保留への罰、提案者権限の限界で効果は下がります。経済・コンセンサス影響の前に測定が必要です。

防御とレビュー項目

ランダム性の構成

  • 参加者が割当を知る、または制御する前に確定した入力から乱数を導出します。
  • 寄与、commit、reveal、使用を十分離し、現リーダーが直後の後継者用シードを安価に探索できないようにします。
  • 最終公開者を考慮します。reveal の保留で結果を選べる commit-reveal は偏らせられます。
  • しきい値/分散ビーコンは、誠実参加、liveness、復旧、構成変更の前提を明示して使います。

適格性と ID

  • シード判明前の登録スナップショットに VRF 鍵とステークを固定し、オフライン鍵生成による grinding を防ぎます。
  • chain、版、ラウンド、役割、目的ごとにドメイン分離し、証明の別文脈での再利用を防ぎます。
  • 私的適格性は事前標的化を減らしますが、偏ったシード生成は直せないと理解します。
  • 安価な ID 交代を制限し、委任ステーク、pool、変動する validator set の抽選参加を定義します。

経済性と運用

  • 逸失ブロック・報酬、拘束資本、検出可能な equivocation、相関罰を評価し、合法な選択を一律に slashable としません。
  • 十分な期間で寄与、reveal 失敗、異常候補、提案頻度、ソフトウェア多様性を監視します。
  • 無害性が証明されない限り、重要な乱数を任意の builder、relay、取引順序インターフェースから隔離します。
  • fallback を試験します。全員の応答時だけ無偏な仕組みは liveness を犠牲にし得ます。

よくある誤解

  • ハッシュはランダムなので grinding は不可能。 固定入力では予測不能でも、多数の入力から選べれば出力を偏らせられます。
  • VRF は全ての grinding を除去する。 出力を証明するだけで、鍵、シード、登録時期、選択的公開は別問題です。
  • Commit-reveal は自動的に無偏。 最後の参加者が reveal と中止を選べるなら偏りが残ります。
  • 過半数のステークが必要。 少数でも安い試行で確率を増やせますが、安全性障害には追加条件が要ります。
  • 連続提案は操作の証拠。 乱数は連勝を生むため、統計モデルと技術的証拠が必要です。
  • Grinding と nothing at stake は同じ。 前者は乱数・適格性、後者は競合履歴を支える誘因の問題です。

関連トピック

出典

ナビゲーション

Wiki を検索...