暗号におけるリプレイ攻撃とは何ですか? その仕組みと回避方法 (2026)
— By Tony Rabbit in Tutorials

リプレイ攻撃は、有効な取引や署名されたメッセージが、あなたの意図なしに別のコンテキストで再利用されるときに発生します。このガイドでは、暗号におけるリプレイ攻撃がどこで発生するか、なぜそれが重要なのか、そしてユーザーや開発者がどのようにそれに対抗できるかを説明します。
リプレイ攻撃は、有効な暗号トランザクションまたは署名されたメッセージが、あなたが承認するつもりのなかった別の文脈で再利用されるときに発生します。危険な部分は、元の署名が依然として正当なものであるように見えることです。問題は、署名が偽造されていたわけではありません。問題は、それが再利用可能なままであったことです。
リプレイリスクは、ブラインド署名の誤り、署名フィッシング、および安全でない承認フローと同じファミリーに属しますが、同じものではありません。リプレイ攻撃は、特に有効な承認がもはや有効であるべきでない場所で繰り返されることに関するものです。
コアの問題
有効なアクションが繰り返される
通常関連するもの
コンテキストガードの欠如
最良のマインドセット
盲目的に署名しない
リプレイ攻撃の仕組み
基本的なパターンはシンプルです:
- ユーザーが正常に見えるトランザクションまたはメッセージに署名します。
- その署名されたペイロードが別の環境、チェーン、コントラクトパス、または繰り返しの送信フローで有効なままです。
- 攻撃者または欠陥のあるシステムがそれを再利用します。
- ユーザーは、自分が意図していなかった二回目のアクションを経験します。
トランザクションリプレイ
あるネットワークまたはコンテキストで有効な放送が、同じ署名が通過する場所で再提出されます。
メッセージリプレイ
十分なドメイン分離がない署名されたメッセージが、異なるリクエストパスで再利用されます。
クロス環境リスク
アプリ、サイドチェーン、フォーク、およびカスタム統合は、悪いコンテキストの衛生状態が高くつく場所です。
リプレイ攻撃が通常発生する場所
リプレイ攻撃と近隣のウォレット脅威の違い
ユーザーがリプレイリスクを減らす方法
- 信頼できるウォレットとアプリを使用する。成熟したツールは通常、チェーンID、ノンス、およびドメイン分離をより適切に処理します。
- すべての署名リクエストを読む。プロンプトが曖昧であったり、読みにくかったり、行っていることと切り離されている場合は、停止してください。
- 可能な限り盲目的な署名を避ける。見えるコンテキストが少ないほど、リプレイスタイルの驚きがフローの中に隠れる可能性が高くなります。
- 新しいチェーン、フォーク、および非公式なブリッジの周りでは特に慎重になる。これらの環境では、コンテキストの混乱が最も重要です。
- 専用のウォレットでリスクを分割する。クリーンなウォレット構造は、何かがうまくいかない場合の影響範囲を制限します。
ビルダーが正しく理解する必要があること
リプレイ耐性は、単なるユーザー教育の問題ではありません。それはプロトコル設計の問題です。
- 署名を特定のチェーンまたはドメインにバインドする
- 古い署名が永遠に再利用されないようにノンスを使用する
- 時間に敏感なアクションに有効期限ウィンドウを追加する
- ウォレットプロンプトに明確な人間が読みやすい署名コンテキストを表示する
- ハッピーパスだけでなく、環境全体で奇妙なエッジケースをテストする
一般的な誤解
- 署名が本物であれば、安全であるはずだ。誤り。本物の署名でも悪用される可能性があります。
- リプレイ攻撃は、大規模なチェーン分割の際だけ重要だ。誤り。メッセージ設計やマルチネットワークUXも重要です。
- ユーザーだけがこれを解決できる。誤り。強力なリプレイ保護には、上流でのより良いエンジニアリングが必要です。
最終的な考え
リプレイ攻撃は、なぜ署名コンテキストが暗号において重要であるかを示す最も明確な例の一つです。有効な承認が、どこで、いつ、どのように使用されることを意図していたかに厳密に結びついていない場合、それはユーザーが予想した以上に遠くに移動する可能性があります。
ユーザーにとって、ルールはシンプルです:すべての署名を実際の許可イベントとして扱い、無害なポップアップとして扱わないこと。ビルダーにとって、ルールはさらにシンプルです:有効な署名が絶対に必要でない場所で有効なままでないようにすることです。