二重支払い攻撃、51%攻撃、ゴールドフィンガーアタック。カリフォルニア大学バークレー校 ビットコインと仮想通貨の無料講義超訳|Week5-2

前回までの記事はこちら

ーーーーーーーーーー

こんにちは!クレメア(@cremea_tw)です。

前回に引き続き、カリフォルニア大学バークレー校の無料講義、
「ビットコインと仮想通貨のオンライン講座」で学んだ内容をシェアしていきます。

講義そのものにおいて、

読者対象:ビットコインや仮想通貨について詳しく知りたい全ての人
前提知識:不要

という感じなので、
講義内容を読むだけでもかなり理解が深まるのではないかと思います。

 

文章のスタイルとしては、
翻訳ではなく、個人的解釈バリバリの超訳をしていきます。

荒削りですがスピード重視で、
クレメア的な解釈も交えてお伝えするので、
間違いや意見などあればコメントいただければと思います。

 

また、太字や文字色などの文章の装飾は極力していません。

学びの本質はそこではない、時間がもったいない、あとでできる、
ということで、今回は泣く泣くカットしました。

見辛いかもしれませんが、予めご了承ください。

 

ということで、
講義の内容に沿って進めます。

今回の記事は、
二重支払い攻撃、51%攻撃、ゴールドフィンガーアタックについてお伝えします。

それでは、本題に入っていきましょう。

イントロ:二重支払い

プールゲームの理論について議論したところで、
古典的な攻撃、すなわち二重支払い攻撃を再現しましょう。

これまでは、二重支払い攻撃を防ぐために、
計算資源を使用していることを述べ、
最初の講義ではこれを高いレベルで議論しました。

しかし、これはブロックチェーン内で、
実際にはどのように見えるのでしょうか?

それに加えて、二重支払いの方法はまだあるのでしょうか?

議決権の過半数を超えて、
支出を倍増させることはできるのでしょうか?

今後のこのモジュールでは、
これらすべての質問にお答えします。

 

二重支払い

古典的な攻撃

二重支払い攻撃の定義を見直しましょう。

二重支払い攻撃では、
同じ値を複数回使用することができます。

 

このシナリオを想像してみましょう。

2099年、私は老婦人です。

私はブラックマーケットでラスティから、
新しいiPhone92XCSを購入したいと思います。

私は100ビットコインを提供していますが、
私は実際に私のお金をあきらめたくありません。

では、どうやってラスティに、
二重に支払うことができるでしょうか?

それはどれくらいの早い時期に、
ラスティが私にiPhoneを与えてくれるかにかかっています。

詳しく説明していきましょう。

 

レースアタック

ラスティがとても素朴で信用しているとします。

彼は私からの有効な取引を見た瞬間、
私にiPhoneを送ります。

これは、取引がブロックに入る前でもあります。

取引がネットワークの周りを流れると、
最終的にブロックに入り、支払いを受けるという前提があります。

私はそれを利用することができます。

私は彼に有効なトランザクションを送り、
残りのネットワークに競合するトランザクションを送ることによって、
彼を騙すことができます。

ラスティは自分のアドレスにUTXOを送信しているという印象を持っていますが、
残りのネットワークに同じUTXOを別のアドレスに送信することを伝えます。

私はマイナーに、
第2の取引を選択するようにインセンティブを与えることができます。

ラスティが私にiPhoneを送ることは可能ですが、
私はお金を預けることができます。

私はこのようにしてラスティにレースアタックで、
二重支払いの成功を収めたのです。

トランザクションのタイミングが結果に影響するため、
レースアタックと呼ばれています。

ラスティへのトランザクションは、
同じUTXOからの2回目のトランザクションが勝つことになるため、完了しません。

2番目のトランザクションがブロックチェーンに入ると、
可哀想なラスティはビットコインを得ることができなくなります。

 

Quick Check 1

真または偽:トランザクションは、より大きなトランザクション料金で再送信することができます。

  • True
  • False

 

防衛:確認

ラスティはどのようにして自分を守ればいいのでしょうか?

さて、ラスティは、
彼との取引が最長のチェーンに入るならば、
彼のビットコインを守ることができます。

そして、われわれが知っているように、
最長のチェーンは早い段階でフォークすることができます。

取引の不変性にある程度の信頼を置くために、
彼は確認と呼ぶものを探すことができます。

ラスティは、トランザクションを、
ネットワーク上に浮かべるときに、有効と見なすのではなく、
最初にブロックに入るときに、
トランザクションが特定の数の確認を取得するのを待ちます。

確認は、特定のブロックから構築されたブロックの数として定義されます。

この図には、私のトランザクションをラスティに保持するブロックがあり、
その上に2つのブロックが構築されています。

これは、このブロックに2つの確認があることを意味します。

トランザクションが確認されればするほど、
自分自身のような悪意あるマイナーが、
そのトランザクションを含むブロックの前からチェーンをフォークし、
正直なチェーンを超えるほど速く掘り下げなければならないので、
二重支払いをすることは難しくなります。

これは合理的に単純な概念ですが、
確認が必要な興味深いことがあります。

その興味深いこととは、
トランザクションの最終性について自信を持って確認する前に、
ラスティが何回確認する必要がありますか?という質問です。

 

k回の確認

さて、私とラスティの例に戻ってみましょう。

ラスティは私が彼に二重支払いをした最後の時間から賢明になったので、
今すぐiPhoneを送る前にいくつかの確認を待つつもりです。

彼が “k回”の確認を待つとしましょう。

これは、トランザクションが完了したとみなす前に、
トランザクションの最上部にkブロックが構築されるのを待つことを意味します。

私の見解から、今私はラスティのトランザクションが、
k回の確認を得るための方法を見つける必要がありますが、
まったく同じUXTOから自分自身に戻って、
トランザクションの支出を含むより、
長いチェーンを作り出す方法を見つける必要があります。

この長いチェーンはラスティの取引を無効にします。

 

私がこれを行う方法は、
私自身の悪意のある取引を含む私設チェーンを開始し、
k回ブロックをマイニングし、
その後ラスティがiPhoneを私に送った後に、
チェーンをブロードキャストすることです。

そうすることで、私は商品を受け取り、
自分のビットコインを保つことになります。

このデモンストレーションでは、
私自身のトランザクションが入っているブロックの上に、
k + 1個のブロックを埋め込みます。

私がちょうどkブロックをマイニングしたら、
ネットワークの残りの部分に追いついたでしょう。

しかし、私がラスティへの取引で、
正直なチェーンを無効にしたいのであれば、
私のチェーンは長くなっていなければなりません。

したがって、プラス1。

デモを見に行きましょう。

 

デモ:確認

この場合のkが2の確認と等しいとします。

言い換えれば、
ラスティは2回の確認の後に取引が確定したと見なします。

私はトランザクションをラスティに公開し、
それはブロック内に含まれています。

1つの確認…。

2つの確認。

ラスティは2つの確認に気付き、
トランザクションの最終性について自信を持っています。

彼は今、iPhoneを私に送ります。
それはまさに私が期待していたものでした。

この間、私はネットワークの残りの部分には明らかにされてない、
プライベートチェーンを掘り起こしていました。

このチェーンには、
同じUTXOからのトランザクションも、
私が制御する別のアドレスに格納されています。

私から自分自身へのこの取引は、
私からラスティへの取引が永久に無効であり、
決して再発行することができないようにするものです。

これはなぜかというと、
ネットワークが私から自分自身へのトランザクションを受け入れると、
対応するUTXOが使い尽くされているからです。

そして、このトランザクションと、
私のラスティへのトランザクションが同じUTXOからのものであるため、
ラスティへのトランザクションは無効になります。 

私がチェーンをブロードキャストするとき、
ネットワークの残りの部分は長いため、
前のチェーンよりも自分のチェーンを受け入れます。

このため、私からラスティまでのトランザクションを含む、
ブロックのチェーン全体が無効になります。

ネットワークの残りの部分は、
私のチェーンでマイニングを続けます。

つまり、自分のお金を残しながら、
ラスティのiPhoneを受け取ることになります。

しかし、ラスティの私の二重支出は、
正直なネットワークよりも長いチェーンを生産する、
私の能力に依存していたことに注意してください。

私がネットワークの残りの部分より、
長いチェーンを作り出す確率はどれくらいですか?

さて、どのようにそれが可能かすぐにわかります。

 

Quick Check 1

ビットコインのコンテキストでの確認の定義は何ですか?

  • The emails you get when you book a flight using Bitcoin
  • The number of nodes that have accepted a block containing some particular transaction
  • The number of blocks mined on top of a block containing some particular transaction
  • The number of transactions in succeeding blocks

 

可能性の分析

これらのグラフは、
フォークが成功する確率を示しています。

1つ目のグラフは、
攻撃者が所有するマイニングパワーの量と、
正直なチェーンが進んでいるブロックの量の、
2つのパラメータを指定して、
攻撃者がチェーンに追いつく可能性が示されています。

2つ目のグラフは、k個の確認後に、
トランザクションが安全である可能性を示すため、
ミラーリングされたイメージです。

最初に上のグラフを見てみましょう。
青い線は、ネットワークハッシュレートの10%を持つ攻撃者が、
正直なネットワークと同じ長さのチェーンを正常に生成する確率を表します。

ただ1つのブロックに追いつくだけでも、
20%のチャンスであり、急速にゼロに向かって先細りになります。

曲線は一般に逆指数曲線のように見えますが、
確率が高くなると急速にゼロに向かって低下します。

 

例外は主に50%モデルです。

ご覧のとおり、
50%モデルは何があっても1の確率を持ちます。

言い換えれば、
ネットワークハッシュレートの50%を持つ攻撃者は、
正直なチェーンに等しい長さのチェーンを作成する可能性が100%です。

これらの正確な値に達するための、
ファンキーな統計情報がたくさんありますが、
それを保存するための情報があります。

2番目のグラフにすばやくコメントするには、
上のグラフのバージョンを反転していることがわかります。

これは、取引で検​​討している可能性が2つあります。

つまり、チェーンが最長チェーンであるか、
チェーンが長いチェーンによって無効にされている可能性があるからです。

これにより、次の結論が導き出されます。

攻撃者がネットワークハッシュレートの50%を持つ場合、
トランザクションが安全である確率は0%です。

 

51%攻撃

いつでも、50%の攻撃者は、
正直なネットワークの残りの部分に追いつくことができるチェーンを作り出すことができます。

50%以上、例えば51%の場合、
私はいつも二重支払いを実現することができます。

私はいつも取引履歴の中に、
どのブロックが含まれているかを完全にコントロールすることができます。

 

ゴールドフィンガーアタック

しかし、ここで尋ねるべき質問があります。

私が二重支払いできるということは、
私が二重支払いすべきであるということではありません。

私たちが理論と数学を議論するときに考慮していない、
二重支払いの現実世界の多くの結果がそこにはあります。

ビットコインで二重支払い攻撃が行われたことが、
世界中の人々によって認識された場合、
取引の最終性やネ​​ットワークの安全性については、
もはや信じられていないため、
価値は瞬時に低下するでしょう

私自身のビットコインも価値が下がり、
それは私がたくさんのお金を失うことを意味します。

ハードウェアはビットコインだけを掘り起こすことができるので、
私が所有する専用のハードウェアもすべて役に立たなくなります。

ビットコインが役に立たない場合、
ハードウェアも同様です。

 

それでは、他の選択肢はあるでしょうか?

私はマイナーに賄賂を渡すことができます。

私がハードウェアを所有していない場合や、
ハードウェアに多額の資金を費やしたくない場合は、
成功した攻撃で役に立たなくなる可能性があるので、
他のマイナーに賄賂を掛けて、
自分の保有するチェーンに賄う可能性があります。

 

しかし、もし私が敵対的な政府、
敵対的なアルトコイン、大規模な機関、
または大量の資本を持つネットワークへの他の敵であればどうでしょうか?

さて、そのハードウェアをすべて購入した後でも、
私のお金を補う方法があります。

私ができることは、
ジェームスボンド映画にちなんで命名された、
「ゴールドフィンガー」攻撃と呼ばれています。

この攻撃のポイントは、
一部の資産の破壊から利益を得ることです。

ジェームズ・ボンドの映画では、
悪役はFtの金の破壊により利益を得ようとしました。

ビットコインでは、
通貨をショートすることができます。

つまり、売りに賭けることです。

私はまず、
ビットコインの価格がダウンする方へ賭けをすることができます。

私の予測が通り抜けるために、
二重支払い攻撃を開始することができます。

この時点で、誰かへの二重支払いは、
興味深いことに、終わりの手段を意味します。

 

あとがき

ということで、
いかがでしたでしょうか?

 

ビットコインが崩壊するシナリオは、
結構意外と存在するようですね。

あとは実行時の費用に見合う効用が得られる主体が現れれば、
ビットコインが崩壊することもなきにしもあらず!という感じでしょうか。

 

いずれにせよ、
こういった背景知識を知っておくことは、
今後の自分の資産を守ることにつながるので良いですね。

 

ってことで、
今回はこの辺で失礼します。

このブログを書く僕の目的は、
「ファンを作ること・仲間を増やすこと」です。

趣味が合う、気が合う、考え方が合う。
なんかええなーと思ったら、気軽にメッセージください。喜びます。

終わり。

 

次の記事
検閲攻撃、懲罰的フォーク、フェザーフォーク。カリフォルニア大学バークレー校 ビットコインと仮想通貨の無料講義超訳|Week5-3

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

ABOUTこの記事をかいた人

物語の引き金を引く男 / 「てめえの人生に火をつける」 / プロ火付け役 / 腐れニートからの再始動 / 見知らぬ人にMacBook Proを買った人 / 32日で100記事達成 / ただの足跡を伝説に変えていく男 / Youtubeで #クレメアラジオ 不定期配信 / サロン「裏世界」オーナー 参加希望者はDMまで