仮想通貨の二重支払い問題とは ビットコインの弱点や二重使用の問題

仮想通貨の二重支払い問題とは サムネイル

こんにちは、仮想通貨の二重支払い問題についてより詳しく知るためにはビットコインの詳細について知らないと理解できないところがあります。

 

この記事では、少し聞きかじったくらいの人がもう少し詳細に二重支払いについて理解できるように噛み砕いて説明する記事にしました。

仮想通貨の代名詞であるビットコインを元に解説します。

 

二重支払い問題はどうやって起こるの?

この二重支払いの原因は主に2つのパターンがあります。

それは「トランザクションの一部(ScriptSig)の改ざん」と「51%攻撃」によって生じます。

それぞれを解説したいと思います。

 

そもそも二重支払いとは何ってあなたへ

二重支払いとはその名の通り、ある通貨の取引(トランザクション)が2回繰り返されることを言います。

 

ビットコインではUTXOモデルと呼ばれる残高を管理するモデルが取り入れられています。

詳細については省きますが、あなたの口座の中には日本円の100円玉や500円玉が1枚ずつ入っています。

それら全く同じ100円玉や500円玉を2回連続で使うことができるということです。(ただし、どちら一方は最終的に消え去ります)

 

「UTXOモデルとかいう専門用語だされて意味がわからない」という人は 【 仮想通貨のUTXOモデルとは 】 図解説でワカるUTXOの仕組みで図解説しています。

 

同じように「トランザクションの一部(ScriptSig)の改ざん」と「51%攻撃」のどちらも同様に2回支払いが繰り返されます。

ただし、2回支払いが繰り返されるといってもそれぞれで質が全く異なります。

 

スタウトとポーターの二人がいたとします。スタウトからポーターへ1BTC送金する状況を説明します。

 

51%攻撃のケース

51%攻撃(アタック)はマイナーたちの計算能力のうち、51%の計算能力を手にした人や組織が可能になる攻撃です。

 

スタウトはギターを購入するためにポーターに1BTCで販売しました。その後、スタウトのギターの取引(トランザクション)は承認されて支払いが完了しました。

ポーターはギターが購入できました。スタウトは1BTCをゲットしました。

 

ここでスタウトは1BTCをもらったはずなのですが、なぜか口座の残高をみると消えてしまっていました。

スタウトはポーターに「入金が消えたんだけど戻ってきたりしていない?」とメッセージを送ります。ですが当然、ポーターからは返事がなく行方をくらまして消え去っていました。

 

1BTCはどこへ消え去ったのでしょうか。なんとその1BTCの取引(トランザクション)はシュバルツというスタウトが全く知らない他者への送金に書き換えられていました。ポーターはシュバルツからまた別にドラムを購入していました。

 

これが「51%攻撃」の二重支払いのパターンです。

 

トランザクションの一部(ScriptSig)の改ざんケース

トランザクションの一部の改ざんは人を騙して二重支払いを得る方法です。

ScriptSigを改ざんすることで見かけ上は取引が失敗したかのように見せかけることができます。

 

ポーターは悪人です。ポーターはスタウトを騙そうとしています。

ポーターはビットコインメルカリンの出品者です。ポーターは1BTCでギターを販売しています。

ギターを購入したかったスタウトはポーターへ1BTCを送金します。

 

しかしポーターはスタウトへ言います。「1BTCが送金されていないよ。ほら、トランザクションにエラーが起こっていて支払いキャンセルになってる」

これを信じたスタウトはポーターへもう一度1BTCを送金します。

 

この後、スタウトは結果として2BTCを支払ったことになってしまいました。

実は見かけ上は失敗していたのにかかわらず送金は成功していたのです。

 

つまり、スタウトは二度ポーターへ送金してしまいました。

これが「トランザクションの一部(ScriptSig)の改ざん」のパターンの二重支払いですね。

 

次の項でどうして51%攻撃とトランクザクションの一部の改ざんを行うことができたのか説明したいと思います。

 

51%攻撃(アタック)を行う方法

51%攻撃を行う手順は以下の通りです。

 

51%攻撃の手順
❶. 仮想通貨のハッシュパワーの51%の力を手に入れる

❷. ある取引(トランザクション)をコピーして2箇所に送りつける

❸. 1箇所は自分自信が承認(ブロック生成)して、もう1箇所のアドレスはマイナーに承認(ブロック生成)してもらう

❹. 統合(リョージ)する

 

順番に説明したいと思います。

 

❶. 仮想通貨のハッシュパワーの51%の力を手に入れる

まずはハッシュパワー(計算能力)の51%を取得する必要があります。

ハッシュパワー(計算能力)とはなんでしょうか。

 

ビットコインの場合はみんなの取引をチェックする代表になるのを競います。競うのには誰よりも一番計算したことを示す必要があります。

具体的にはランダムな計算結果の中からある値以下の数字を引き当てる競争です。

 

ある値以下の数字を引き当てるまでには地球上に存在する砂粒の数よりも小さな確率でないと引き当てられません。

要するに膨大な計算能力が必要なんですね。

(ただし、これだけ大変なのはビットコインやメジャーなコインだけです。)

 

そのうちの51%の計算能力を手にいれた人が攻撃を行うことができます。

 

❷. ある取引(トランザクション)をコピーして2箇所に送りつける

51%攻撃の計算能力を手にしたあなたは、スタウトにまず一度、次に一度送ったことに使った通貨でポーターに送りつけ、合計で2箇所に通貨を送りつけました。

本来であれば、どちらかしか承認されないので、スタウトかポーターのどちらか一方にしか送金されません。

 

ですが、51%攻撃の場合は異なります。

10分後に誰かが皆んなの取引をチェックしてくれます。51%攻撃の力を持ったあなたは2分の1くらいの確率で皆んなの取引をチェックする権利を得ました。

この時にポーターの取引が本物だったとして取引を完了させます。

 

そうするとポーターにお金を送ったものとして取引が完了されてスタウトの取引はなかったことにされます。

「そうすると普通に取引が完了しただけじゃん」

 

となるのですがそうはなりません。

 

❸. 1箇所は自分自信が承認(ブロック生成)して、もう1箇所のアドレスはマイナーに承認(ブロック生成)してもらう

ここで、あなたはブロックを生成したことを黙ることにしました。

そう、ブロックを生成した後に、ブロックを生成したことを報告する必要があるのですがあなたはそれを無視しました。

あなたがポーターへ送りつけた取引はまだ世に知られていません。

 

そうするとどうなるのかと言うと、他の誰かが代わりに皆んなの取引をチェックします。そしてあなた以外の誰かが取引のチェックを行いました。

そしてブロックが生成されて世の中に発信(ブロードキャスト)されました。

その出来立てほかほかのブロックの中には「あなたがスタウトへ送金した」という取引履歴が刻まれています。

 

❹. 統合(リョージ)する

ブロックチェーンには大切なルールがあります。それはブロックチェーンが長い方が正しいとするルールです。

 

この性質を利用して、51%のハッシュパワー(計算能力)を持ったあなたはしばらくの間、ポーターの取引履歴入りのブロックを生成した後に発信(ブロードキャスト)せずに沈黙を続けました。

51%のハッシュパワー(計算能力)を持ったあなたはしばらくの間、ポーターの取引履歴入りのブロックを生成した後に発信(ブロードキャスト)せずに沈黙を続けましたの画像

 

すると、自然にきちんと発信(ブロードキャスト)されたブロックチェーンよりも長いチェーンが出来上がりました。

 

これは世界よりも長いブロックチェーンをあなたが保有していることになります。

このタイミングで、あなたは自分のブロックチェーンを世界に発信(ブロードキャスト)することにしました。

 

あなたは自分のブロックチェーンを世界に発信(ブロードキャスト)することにしました。の画像

これでポーターへ送金した取引履歴はホンモノのとしてブロックチェーンへ半永久的に刻まれることとなってしまいました。

一方でスタウトの取引はなかったこととして消え去ってしまいます。

(ただしスタウトが取引所の中で別の仮想通貨に換金していた場合はスタウトの仮想通貨を取得した取引所が損失を被ります。)

 

最近起こった、ハッシュパワーの小さな仮想通貨でのブロックチェーンのハッキングはこの手法を取引所で行いました。スタウトとポーターが取引所Aと取引所Bだったパターンですね。

 

実際に起こってしまったブロックチェーンのハッキングについては【初体験】 ブロックチェーンのハッキング 仮想通貨を抱いて眠れるのかで解説しています。

ブロックチェーンのハッキング サムネイル

【初体験】 ブロックチェーンのハッキング 仮想通貨を抱いて眠れるのか

2018年9月1日

 

トランザクションの一部の改ざんする方法

トランザクションの一部を改ざんできる方法には実は用語がついています。

それはトランザクション展性です。(トランザクション・マリアビリティとも呼びます。)

 

 

仮想通貨の二重支払い問題とは まとめ

仮想通貨の二重支払い問題とは まとめ

通貨の送り手側で仕掛けられる攻撃が「51%攻撃」でした。

通貨の受け手側で仕掛けられる攻撃が「トランザクションの一部(ScriptSig)の改ざん」でした。

 

実質的に現状で可能なのは「51%攻撃」だけです。(例えばビットメイン社のようなマイニングチップを開発している会社ならおそらく可能)

可能と言ってもビットコインに限ってはとても経済合理性がまったくありませんので誰もしないかと思います。

行うとしたら政治犯が誰かいる場合でしょうね。