リプレイアタック(Replay Attack)とは

リプレイアタック(Replay Attack)とは、仮想通貨に限らずコンピュータネットクワークにおいて、データ転送を不正に繰り返される(リプレイさせる)攻撃のことを意味します。

リプレイアタックは繰り返すだけでなく、故意に遅延させたりすることもリプレイアタックの意味する範囲に入ります。

リプレイアタックは反射攻撃もしくはリプレイ攻撃と訳されることもありますが、基本的にはリプレイアタックと呼ぶのが一般的です。


仮想通貨によるリプレイアタックの危険性

仮想通貨ではハードフォークによって異なる2つの独立した台帳(ブロックチェーン)にわかれることがあります。

過去にハードフォークによって2つ以上に独立した仮想通貨は「ビットコインとビットコインキャッシュ」「イーサリアムとイーサリアムクラシック」のように、いくつも存在します。

仮想通貨界隈ではハードフォークによって複数の独立した通貨を作る際にリプレイアタックが起きやすいと言われています。

懸念されているリプレイアタックの内容は以下の通りです。

代表的なリプレイアタックの手順
    手順1:ハードフォークによって、通貨Zから通貨Yが生まれる(分岐する)
    手順2:ハードフォークは、通貨Zを保有しているアカウントに同数の通貨Yを付与する
    手順3:通貨Zを保有しているAさんがBさんへ通貨Zを送金する(この時Aさんは通貨Yを動かす意図は全くない)
    手順4:AさんがBさんへ通貨Zの送金を悪意のあるハッカーが傍受する
    手順5:ハッカーが通貨YをAさんからBさんへ移動させる ➡︎ これがリプレイアタック!

上記の方法以外でも、手順5で通貨Yの移動先を任意の移動先に変更される場合もあります。


なぜリプレイアタックが起きるのか

「ビットコインとビットコインキャッシュ」「イーサリアムとイーサリアムクラシック」のように過去の例を見ても明らかですが、仮想通貨がハードフォークして複数の種類に分かれた場合同じような仮想通貨が出来上がります。

通貨の名前が酷似していますが、これは通貨名に限ったことではなく「秘密鍵」「取引に使われる関数」なども酷似している可能性があるため、ハードフォークされた通貨はリプレイアタックの対象になりやすいと言われています。

悪意のあるハッカーは何かしらの方法を使って不正に暗号化された「秘密鍵」「取引に使われる関数」を盗み出し、リプレイアタックをしかけてきます。


リプレイアタックの対策(リプレイプロテクション)

リプレイアタックの対策の基本は、プロダクト(通貨を作る人)側が真似されないようなプログラムを書き上げることです。

通貨を利用する側ができる対策は現状では多くありません。できることといえば、ハードフォーク直前直後で「取引処理を実行しない」ことくらいです。しばらく経って周りの反応を見ながら安全だと分かった時点で取引を実行するのが安全です。