リプレイアタックとは
今回はハードフォークの際に起きる可能性のある攻撃の一つである「リプレイアタック」について書いていきたいと思います。
ハードフォークとは、フォークの中でもブロックチェーンの仕様変更を目的として行われるものです。詳しくはこちらの記事を参照ください。
リプレイアタックとは
ハードフォークで分岐した新旧2つのチェーン間には互換性がないものの、秘密鍵は新旧どちらのチェーンでも同じものを使用します。
リプレイアタックでは、この秘密鍵が共通していることを利用して攻撃を行います。
ハードフォーク後に旧仕様のチェーンをA、新仕様のチェーンをBとします。攻撃者はAで記録されるトランザクションを、B上にコピーして記録します。秘密鍵が共通しているため、マイナーたちは攻撃が起きていることに気づきません。
A上で送金されたのと同量のコインが、B上でも送金されます。意図せずしてBコインが送金されてしまう、これがリプレイアタックです。
リプレイアタック対策
リプレイアタックの対策として、ハードフォーク後のチェーンはリプレイプロテクションという機能を実装することが多いです。これは利用者の資産を保護し、新旧2つのチェーンを区別する目的で実装されます。
例としては、BCHが実装しているSIGHASH_FORK_IDという機能で、BCHチェーン上のトランザクションには専用の電子署名を必要とするものです。
まとめ
2018年末に起きたBCHのハードフォークではリプレイプロテクションが実装されず、ネット上ではむやみに送金することを控えるような注意がよく見られました。
ハードフォークイベントがある際は、リプレイプロテクション機能の有無を見て送金するかどうかを判断することがマストです。