リプレイアタック(リプレイ攻撃)とは

カテゴリ glossary

リプレイアタック(リプレイ攻撃)とは、ブロックチェーン上のトランザクション(取引)情報を混乱させるために仕掛けられた攻撃をさします。

分岐する前と後の異なる2つ以上のブロックチェーンにおいて、何者かがそれぞれに同じ内容の仮想通貨のトランザクションを実行することで、ブロックチェーンを混乱させ、資金の流出を図るという悪質な行為です。

 

たとえば、送金者がブロックチェーンAを使って受取者に仮想通貨を送金するとします。

送金されるとブロックチェーンAに取引情報が記載され、ノード(通信ポイント)からノードに受け渡されていき、受取者のもとで決済されるという動きなので何ら問題はありません。

 

しかし何者かが、リプレイアタックとしてブロックチェーンAが分岐したブロックチェーンBをつくりだしていた場合が問題となります。

ブロックチェーンAとブロックチェーンBは分岐しただけなので同じ仕様です。

そのため、どちらも同じトランザクションが行われます。

送金自体はブロックチェーンAのみで行われるものであったとしても、そのコピーがブロックチェーンB上に乗ってしまうことで、ブロックチェーンAと同様の送金がブロックチェーンB上でも行われることになります。

 

ブロックチェーンA上でトランザクションが行われるのと同時に、リプレイアタックが行われたとします。

攻撃した者がブロックチェーンAのトランザクションをコピーして、ブロックチェーンB上でも同じ内容のトランザクションを行うようリプレイアタックを仕掛けていることで、ブロックチェーンB上でも同じく送金が完了します。

つまり、送金者は2倍の金額の仮想通貨を送金したことになってしまうわけです。

 

リプレイアタックが成功すると、本来のトランザクションの2倍のトランザクションを行ったことになってしまいます。

しかし、受取者はあくまでもブロックチェーンAでのトランザクションで送られた分の仮想通貨しか受け取りませんから、ブロックチェーンBで行われたトランザクションの分は資金が流出してしまいます。

 

こうしたリプレイアタックを防ぐためには、分岐したブロックチェーンにリプレイアタック保護の実装をしておく必要があります。

 

リプレイアタック保護の方法としては、ブロックチェーンAのコピーが攻撃者の故意的行為によってブロックチェーンBに乗ってしまったとしても、ブロックチェーンB特有の署名をしなければ送金ができないという形が一般的な方法となっています。

投稿者

Liquid編集部(基礎)