暗号資産初心者向けの記事です。本記事ではリプレイアタックについてわかりやすく解説していきます。
はじめに
みなさん、暗号資産などを扱う際に他者からの悪意のある攻撃によって暗号資産を全て失ったというケースを見たことがある方は多いのではないでしょうか?暗号資産だけでなく特にビットコインと合わせて広く知られているのが、リプレイアタックというワードです。
「聞いたことはあるけど、意味まではよくわかっていない。」という方も、実は多いのではないでしょうか?
今回は、そんな方のために暗号資産におけるリプレイアタックの意味を、わかりやすく解説しました。ぜひ参考にしてみて下さい!
リプレイアタックとは
リプレイアタックとはハードフォークが起きた際に一方のブロックチェーンに向けて書かれたトランザクション情報を丸ごとコピーして、もう一方のブロックチェーン上にそれを書き込み送金者が意図してなかった送金を行う暗号資産への攻撃のことです。
基本的にはハードフォークが発生するとかなり似たような性質を持つブロックチェーンが生成されてしまうため、公開鍵を使って正しいトランザクションかを確認する必要があります。しかしこの工程を踏んだとしてもどちらのノードにも正しいと認識されてしまい、このようなことが起きるんですね。
ちなみにノードとは、トランザクション情報を正しいか誤っているかを見極め、正しい場合ブロックチェーン上に書き込む役割を担っている人のことを指します。
リプレイアタックで実際に起きた事件
上記での説明したようにリプレイアタックで攻撃されたことにより巨額の被害が発生するという事件も実際に発生しています。
- DAOの事例
それでは詳しく解説していきます!
DAOの事例
2016年6月にはDAOというトークンが標的となり、当時の価格で43億円相当がハッカーによる不正送金における盗難事件が発生しました。
DAOはイーサリアムのブロックチェーン上に成り立っているトークンであり、ドイツのベンチャー企業Slock.itが運営するThe Daoというプロジェクトで使用されていました。そしてここで運営されていた自律分散型の投資ファンドを構築するというプロジェクトにはDAOの購入で誰でも参加が可能とされていたのです。
この購入によって手に入れたDAOはThe DAO本体でプールされていき、DAOの保有者たちは投票で投資先を決定した上で資金プールのDAO運用を行います。その成果が配当としてDAOの保有者に還元されていくという仕組みになっていました。
ここでハッカーが目をつけたのはDAOに採用されていたSplit機能と、その開発コード上に存在していた欠陥です。Split機能とは、DAOの運営に賛同できなくなると自分が貯めてきた報酬をDAO本体から切り離したうえで、自分でアドレスを作成した新しいDAOへの移動が可能になるというものです。さらにそのDAOをイーサリアムに変換することも可能になっていました。そこでハッカーは「Split機能で移動先のアドレスを作成→報酬を送金する指示を出す→コード上のバグによって何度も送金指示が繰り返される」というパターンで360ETHを強奪したわけです。
リプレイアタックへの対策
それでは最後にリプレイアタックへの対策であるリプレイプロテクションについて紹介していきたいと思います。
リプレイプロテクション
リプレイプロテクションとは、文字通りリプレイアタックによる不正出金を防止する対応策です。
これを搭載しておけば、ハードフォークが実施されてブロックチェーンが分岐しても、それぞれが完全に独立した存在となるので、リプレイアタックを仕掛けるのは不可能だとされています。
その原理はいたって簡単です。「SIGHASH FORKID」と呼ばれる目印のようなものをトランザクション署名の際にくっつけることによってそれぞれのブロックチェーンで認識区別するのです。すでにビットコインにはこの「SIGHASH FORKID」というリプレイプロテクションが搭載されていることも併せて覚えておくといいでしょう。
最後に
本記事ではリプレイアタックの概要から対策までを解説してきました。
冒頭でも述べたようにリプレイアタックとはハードフォークを実施してブロックチェーンが枝分かれした際に、悪意のある第3者によって仕掛けられる攻撃です。
ビットコインにはリプレイプロテクションと呼ばれる防衛機能が搭載されているものの、もしハードフォークが実行されたら、その直後は取引を控えるのが最善の防衛策と言えるでしょう。いつ取引を行なっていけばいいのかなども勉強して、知識を深めていきましょう!