暗号資産初心者向けの記事です。本記事ではリプレイアタックについてわかりやすく解説していきます。
はじめに
みなさんこんにちは。早速ですがみなさんはリプレイアタックという言葉を耳にしたことはありますか?
近年、暗号資産がふたつのブロックチェーンに分裂したあと、片方のブロックチェーンで行われた取引情報を利用して、もう片方の資産を不正に送金する攻撃が問題となっています。
今回はこの問題に関係してくるリプレイアタックについて詳しく解説していきます。
リプレイアタックとは
リプレイアタックは簡単に言えば、通貨の分裂が起こった時に片方の通貨を送金しようとするともう片方の通貨も送金されてしまうという問題のことを言います。
例をあげるとすると、暗号資産Aがハードフォークして新たな暗号資産Bが誕生することを頭の中に思い浮かべてみてください。この時、暗号資産Aを送金し、リプレイアタックを受けると同量の暗号資産Bも勝手に送金されてしまいます。イメージとしては1BTCをお店に払おうと思ったら1BCHも勝手にお店に支払われてしまう様なイメージです。
このような人が持っている暗号資産を奪うリプレイアタックはお金を盗む行為と言えます。
リプレイアタックの危険性
上記で説明したように悪意あるユーザーからリプレイアタックの標的にされると、大切な暗号資産が勝手に流出してしまう危険性が高くなってしまいます。
自分は暗号資産Aだけを送金しているつもりであっても、リプレイアタックの標的になるだけで同時に同量の暗号資産Bも送金してしまうのです。Aが高額であればあるほどBの流出額も高くなるので、高額取引を行うときほどリプレイアタックの標的になってしまうと危険です。
リプレイアタックを防ぐ方法とは?
最後にこのリプレイアタックを防ぐ2つの対策についてご紹介していきます!
- 双方向リプレイプロテクション
- オプトインリプレイプロテクション
それではみていきましょう。
双方向リプレイプロテクション
1つ目は双方向リプレイプロテクションと呼ばれるリプレイプロテクションです。
これはビットコインゴールドやビットコインキャッシュで採用されているシステムです。この原理は意外と簡単で、SIGHASH_FORK_IDと呼ばれる目印のようなものをトランザクション署名の際にくっつけることによってそれぞれのブロックチェーンで認識区別する方法になります。
具体的にいうと、トランザクションにおけるSighash Typeと言われるパラメータにBTCでは何も目印を書かず、BCHには0を、BTGには79を目印として付けておきます。そしてそれぞれのブロックチェーンにおいて、対応していない目印が来たら誤ったトランザクションだと認識するため、リプレイアタックを防ぐことができるという仕組みです。
オプトインリプレイプロテクション
オプトインプロテクションはビットコインゴールドなどで採用されているリプレイプロテクションになります。これはビットコインを送金する際にブラックリストアドレスと言われるアドレスに、少額のビットコインを送金することで、ビットコインとビットコインゴールドの差別化を図る方法です。
ブラックリストに少額送金した情報法を含むビットコインのトランザクション情報をコピーしてビットコインゴールドのノードに送ったとします。するとビットコインゴールド側のノードはそのトランザクション情報を確認した際にブラックリストに少額送金をしている情報を見てビットコインゴールドのトランザクションではないと判断し承認しません。これがオプトインリプレイプロテクションの仕組みです。
しかしこのシステムにはまだまだ問題があります。今はハードフォーク数が少ないですが将来的に起こるであろう全てのハードフォークに対して、毎回ブラックリストアドレスを設定して少額送金させるのは果たして現実的なのかということです。これを解決できなければ、なかなかオプトインリプレイプロテクションは難しい技術だと言わざるをえません。
最後に
今回は暗号資産の攻撃問題に関係するリプレイアタックについて解説してきました。
せっかく大切に管理してきた暗号資産をリプレイアタックで失ってしまうのは非常に辛いことです。そんな悲惨な出来事を未然に防ぐためにも、しっかりこの問題について理解を深め、対策を行なっていきましょう!
次回の記事もお楽しみに。