RSKのセキュリティ フィー・スナイピング攻撃への対策

はじめに

ビットコインの安全性は、マイナーが「最も重いチェーン」、つまり累積難易度が最も高い(通常は最も長い)チェーンを延長するという経済的インセンティブに依存しています。現在、このインセンティブは、ブロック補助金と取引手数料からなるブロック報酬によって提供されています。しかし、補助金(現在は6.25BTC)は、1ブロックあたりの平均取引手数料(現在は0.25BTC)よりも大幅に高くなっています。ビットコイン補助金は4年ごとに半減しますが、反比例してBTC価格が上昇しなければ、マイニングの主なインセンティブはブロック補助金からブロック取引手数料へと移行します。現在のセキュリティ予算を維持するためには、取引コストを25倍にする必要があります。これがビットコインの問題になるかどうかを判断するのは時期尚早です。ビットコインが低補助金の新時代に適応するために、ソフトフォークまたはハードフォークが必要になる可能性があります。2014年、私は(主に理論的な)FRONT攻撃を提示した際に、ビットコインが不安定になる可能性を示しました。Carlstenらは2016年にこの問題を深く分析しましたが、満足のいく解決策を見つけることはできませんでした。これはビットコインだけの問題ではなく、お金の発行量が時間とともに減っていくすべての暗号通貨が直面しなければならない問題です。

しかし、今のところビットコインについては心配する必要はありません。ビットコインのコミュニティがこの問題を解決しなければならないのは、10年後、20年後かもしれませんし、もしかしたら一生ないかもしれません。時々、この問題が再検討され、問題を強調する分析と最小化する分析が行われます。しかし、RSKのようなビットコインのサイドチェーンを分析すると、この問題はかなり現実的です。

2019年、Blockstream社のCEOであるAdam Back氏は、ビットコインの長期的なセキュリティ予算について議論する際に、スムージングについて言及しました。「その他の長期的な低補助金時代のアイデアには、ブロック間隔の手数料平均化で手数料収入を平滑化することがあります。」とツイッターで述べています。
https://twitter.com/adam3us/status/1097031151921713152

RSKでは、まさにそのアイデアである手数料収入の平準化を2016年から実施しています。しかし、RSKが手数料の高い取引をどのように処理しているかを説明する前に、取引手数料をきっかけとした3大ブロックリバーサル攻撃である「Fee Sniping」「ホエールトランザクション」「マイニングアトマイゼーション」について詳しく紹介します。

Fee Sniping

ブロック補助金が低く、最後にマイニングされたブロックの取引手数料が、メインプール内の取引から徴収できる手数料よりもはるかに高い場合、短期的に合理的なマイナーは、最後にマイニングされたブロックから取引を奪い、ブロックを延長するのではなく、競合するブロックをマイニングするというインセンティブが働きます。これはNakamoto Consensusからの逸脱であり、Fee snipingと呼ばれています。定義上、このような逸脱行為はプロトコルに対する攻撃であり、マイナーは悪意のある当事者とみなされます。悪意のあるマイナーは、つかみ取った取引手数料を現金化するために、確認ブロックを誠実なチェーンよりもさらに1つ早くマイニングし、残りのマイナーが自分のチェーンに乗り換えるようにする必要もあります。悪意のあるマイナーは、自分の利己的なフォークが公正なチェーンを上回らない場合、自分のハッシュレートを無駄にするリスクがあるため、Fee Snipingは常に利益を生むとは限らないのです。

Whale Transactions

マイナーノードが自動的にfee snipingを行うと、攻撃者はこの状況を利用してダブルスぺンド攻撃を行うことができます。悪意のあるマイナーは、誠実なチェーンでコインを使い、その代わりに別の外部資産を受け取り、その後、最初のブロックの前のブロックで誠実なチェーンをフォークすることがあります。悪意のあるフォークでは、攻撃者はコインを二重に消費するだけでなく、誠実なフォークには存在しないはずの特徴的な機能(ユニークなUTXOなど)を導入します。その直後、攻撃者はこの特徴を利用した(すなわち、このUTXOを消費した)whale transactionをブロードキャストし、手数料スナイピング・コードを実行しているマイナーに対して、異常に高い取引手数料を餌(または賄賂)として提供します。whale transactionという言葉は、高額な価値を送金する取引として理解されるかもしれませんが、ここでは、送金された価値の大きさに関わらず、高額な手数料を支払う取引として、参照論文の定義を使用します。ビットコインでは、非ベストフォークはピア・ツー・ピアネットワークのフルノードによって転送されないため、whale transactionと悪意のあるフォークブロックは、マイナーのノードに直接送信される必要があります。しかし、多くのスマートコントラクト・プラットフォームでは、非最善のフォークをブロードキャストしているため、攻撃ははるかに容易です。また、スマートコントラクト・プラットフォームでは、whale transactionの作成はより簡単です。攻撃者は、すでにフォワード・チェーンで使用されているnonceを再利用することができるため、whale transactionがフォワード・チェーンに含まれるのを防ぐことができます。あるいは、whale transactionは、前のブロックハッシュが利己的なフォークにのみ存在するブロックハッシュと一致するかどうかをチェックするコントラクトを実行し(すなわち、BLOCKHASH opcodeを使用)、利己的なフォークでのみ賄賂を支払うことができます。

マイナーがwhale transactionを検出すると、たとえ遅れていても、賄賂が十分に高ければ、より長い誠実なチェーンを凌ぐことに賭けて、悪意のあるフォークを延長することを考えるかもしれません。スマートコントラクトがない場合、最良の攻撃戦略は、一連のwhale transactionを同時にブロードキャストし、後続のマイナーに賄賂を渡して、悪意のあるフォークを延長し続けさせることです。ビットコインでは、CHECKLOCKVERIFYCHECKSEQUENCEVERIFYでトランザクションを連鎖させることができます。スマートコントラクトプラットフォームでは、非エースを再利用するか、コントラクトコールによって行うことができます。自動化されていなくても、攻撃者は悪意のあるフォークでwhale transactionを生成し続け、それが誠実なチェーンを追い越すまで続けることができます。

Miner Atomization Attacks

Whale Transaction攻撃では、マイナーがフォークの勝利確率に基づいて賄賂を受け取る複雑なマイニング戦略に動的に切り替える必要があると考えました。しかし、より現実的に考えれば、マイナーは将来の賄賂を考慮せず、利己的なfee snipingのみを行う、よりシンプルな戦略を実行していると考えることができます。これが大多数のマイナーが採用している戦略であれば、新しい攻撃が可能になります。Miner Atomization攻撃は、ネットワーク全体を対象としたサービス拒否攻撃で、すべてのマイナーに利己的なフォークで同時に作業するように仕向け、その結果、公正なチェーンのレートと収束性を低下させようとするものです。この攻撃は、fee snipping attackやwhale transaction attackに似た、非常に高い手数料の取引をブロードキャストすることから始まります。この取引は二重支出を助けるためのものではなく、マイニングネットワークを霧状にすることを目的としたエサです。この攻撃を例を挙げて示します。高さNのブロック内の取引Tが100コインの手数料を支払ったが、平均ブロック報酬はわずか10コインだったとする。すべてのマイナーのノードは、この合理的な戦略に従うようにプログラムされていると仮定します。

  • もしTが正なチェーンの最後のKブロックのどれかに含まれていたら、そのトランザクションTを取得し、高さNの競合ブロックをマイニングしようとする。そして、この利己的フォークの子ブロックを、正なチェーンを上回るまでマイニングし続ける。
  • もし、正直なチェーンが利己的なフォークをKブロック以上上回っていたら、諦める。

高額な手数料の悪意のある取引は、大規模なマイニングプールの利益のためにマイニングを細分化します。大規模なマイニングプールは、取引Tに加えて、残りのマイナーが諦めるほどの利己的な確認ブロックを追加でマイニングする可能性が最も高くなります。不思議なことに、マイニングネットワークが分散化されていればいるほど、取引Tによる混乱は悪化します。例えば、平均ブロック間隔が10分のブロックチェーンにおいて、100人のマイナーがそれぞれ総ハッシュレートの1%を持っていたとすると、ネットワークは最終的に収束するまで数ブロックの間、100倍の減速に苦しむことになります。この場合、ネットワークは2日間使用できなくなります。

RSKのFee Snipingへの対策

RSKは純粋なビットコインのサイドチェーンであるため、設立以来、取引手数料のみで構成されるセキュリティ予算でブロックチェーンを確保するという課題に直面しなければなりませんでした。そのため、RSKは手数料が異常に高くなったり低くなったりすることを覚悟しなければなりませんでした。RSKは最初に生産可能となったサイドチェーンで、コンセンサスにはマージ・マイニングを使用しています。現在、ビットコインマイナーの40%以上がRSKをマージマイニングしています。

RSKマイナーは、RSKフルノードを稼働させるための経済的な補償を期待しています。ほとんどのブロックチェーンでは、この補償のために新しいコインを発行しています。リップルのような他の分散型台帳の中には、ブロック生産者に支払うためのコインを発行しないものもありますが、ブロック生産者には外部から補助金を出すことができます。XRPを事前にマイニングしているRipple Labsは、その数が多いので、第三者がブロックプロデューサーになるための補償をXRPで行うことができます。一方、RSKは、(ビットコインのような)コインの発行がなく、(XRPのような)コインのプレマインもないという厳しい条件に直面しています。RSKは、ビットコインのサイドチェーンの成功例であり、デフレ型ブロックチェーンにおけるコンセンサスの未来を垣間見せ、補助金のないブロックチェーンがいかに持続可能であるかを示しています。しかし、補助金がないということは、今回紹介した攻撃に対してサイドチェーンを慎重に設計する必要があります。RSKは、高額な手数料の取引に基づくブロックチェーンの再編成に対してより安全であるために、いくつかのユニークな機能を実装しています。

  • ブロック・リワード・スムージング(フィー・スムージングともいう)。
  • ブロック報酬の共有
  • フォークを考慮したマージマイニング

以下のセクションでは、それぞれの技術を簡単に紹介します。

Fee Smoothing

フィー・スムージングは、より平等な方法でマイナー間の取引手数料を分配するコンセンサス・ルールです。このルールでは、各マイナーに過去のブロック報酬の関数を支払います。この関数は線形または非線形で、少数の過去のブロック報酬に基づくものと、過去のすべてのブロックに依存する状態に基づくものとがある。最も単純な設計は、蓄積された報酬に何らかのローパスフィルターを使用することです。RSKでは、α=0.1のIIRという非常にシンプルな平滑化関数を使用しています。RSKのマイナーが高さNのブロックを解いた場合、マイナーにはブロックNの取引手数料の10%と、それまでに蓄積された未払いのマイナーの手数料の10%が補償される。つまり、「共有された」マイナーの口座が存在し、各ブロックで勝利したマイナーが取引料を投入し、自分のために10%を取り出します。

ブロックの平均報酬が10コインで、ブロックの平均手数料も10コイン、共有アカウントの平均残高が100コインだとします。高さNのブロックに200コインの賄賂を入れます。共有アカウントは、高さNで料金が入金された後、300コインを保持し、プロトコルは、そのブロックのブロックのマイナーに10% (30コイン) を報酬します。その後の共有アカウントの残高は270コインになり、ブロックN+1が10コインの手数料を共有アカウントに入金した後、ブロックN+1マイナーは28コインを報酬として受け取ります。次の図は、賄賂 (whale transaction) の前後の誠実なチェーン報酬を示しています。

報酬を狙い撃ちすることに成功するために、攻撃者は、高さNのブロックとそれに続くブロックを掘り返さなければなりません。攻撃者は、1ブロックの不足を超えて、2つの追加コイン (28の代わりに30) または6%の増加を受け取る必要があります。直感的に、これは非常に不利に見えます。次の図は、攻撃者が誠実なチェーンから賄賂を盗もうとする1つの方法を示しています。

これを証明するために、RSKで6種類の報酬狙撃攻撃をシミュレートしました。私たちのシミュレーションは、攻撃者の予算とハッシュレートの合理的な仮定に対して、報酬の狙撃は有益ではないことを示しています。uncleブロックと報酬を共有するRSKメカニズムを考慮すると、ハッシュレートの45%未満では、攻撃は有益ではありません。また、攻撃者のハッシュレートが50%で、賄賂が平均ブロック報酬の100倍であっても、攻撃者の利益の増加はわずか0.68%です。

ここでは、他の補完的な保護手段を紹介します。

ブロックリワードのシェア

RSKはDECORと呼ばれる報酬共有型のコンセンサスプロトコルを実装しています。DECORは、ブロックのヘッダが誠実なチェーンによって参照されている限り、ブロックの報酬を兄弟ブロック間で均等に分配します。DECORは、高額報酬の取引の勝者が、sibling blockを生成した他の10人ものマイナーと報酬を共有しなければならないため、アトミックアタックのインセンティブを減少させます。これは、1つのブロックチェーンブロックが最大10個のsibling referencesを持つことができ、DECORプロトコルはそれらすべてのブロック間でブロック報酬を共有するためです。共有を避けるためには、マイナーはさらに10個の利己的なブロックをマイニングし、外部の参照を防ぐ必要があり、成功の可能性はかなり低くなります。報酬の共有と手数料の平準化を考慮すると、RSKネットワークを破壊しようとする試みが成功するためには、賄賂が平均ブロック報酬の少なくとも110倍でなければなりません。

フォークを考慮したマージマイニング

フォークを考慮したマージマイニング(Fork-aware merged mining)とは、メインチェーンネットワーク(ビットコインなど)を監視し、サイドチェーンネットワーク(RSKなど)の悪意あるフォークを監視することができるマージマイニングの亜種である。whale transaction攻撃で利益を得るためには、攻撃者は二重にお金を使う被害者を見つけなければなりません。その被害者とは、おそらくオンラインの暗号通貨取引所でしょう。暗号通貨取引所は、入金を受け入れる前に数百回のブロック確認を待ちますが、これはRSK Armadilloシステムが悪意のあるフォークを事前に検出して取引所に警告するのに十分な時間です。fee snipingやminer atomization攻撃の場合、悪意のあるフォークは短時間であるため、Armadilloは状況を診断し、誠実なプロトコルから逸脱しているプールを特定するためのツールとしてのみ使用できますが、攻撃を防ぐことはできません。

その他の対策

RSKが現在実施していないもう一つの補完的な保護措置は、取引ガス価格を最低ガス価格の倍数に制限することです(つまり、10倍のスプレッド)。私は2013年にビットコインにも同様の対策を提案しました。RSKは各ブロックで受け入れられる取引ガス価格の最小値を広告するので、これを簡単に実装することができます。RSKIP252はそんなRSKの提案です。しかし、ガス価格の上限を設定しても、ネットワークがブロックで利用可能なガスの上限をすべて消費しない状態であれば、問題は完全には解決しません。Tの取引手数料が高いのは、ガス価格が高いのではなく、消費されたガスの量が多いことが原因である可能性があります(支払い済みの手数料は、この2つの量の積です)。

マイナーへの賄賂は、サイドチャネルを介して

攻撃者はスマートコントラクトのプラットフォームを利用して、マイナーを買収してあらゆることをさせることができるからです。私は2014年に理論的な「Eternal Choice for the Dark Side Attack」(またはECDSA  )を発表しましたが、これはマイナーが賄賂をもらって正しい行動から逸脱してしまうことを示す方法でした。2018年にMcCorry は、理論的な賄賂攻撃の幅広い範囲を提示しており、しかし、スマートコントラクトベースの賄賂を受け取るために必要な理解と準備のレベルは相当なものです。これにより、スマートコントラクトベースの賄賂攻撃は、実行することがより困難になります。マイナーは賄賂を受け取る契約を認識し、その契約とどのようにやり取りするかを理解していなければなりません。しかし、この種の攻撃は避けられません。プラットフォームが現在のブロックのマイナーへの支払いを実行できるのであれば、同じマイナーへの支払いを行うスマートコントラクトを実行することもできます。これは、プロトコルのコンセンサスを記述するプログラミング言語と、スマートコントラクトが使用するプログラミング言語が、ともに「チューリング完全」であるためです。これは理論的にも興味深い問題です。

賄賂の支払いをより困難にするために、マイナーのアドレスを特別なものにして(つまり一回限りの使用に限定して)、賄賂を受け取った契約がマイナーに支払いを行えないようにするなど、巧妙なトリックを考えることができます。しかし、チューリング完全なスマートコントラクトプラットフォームでは、支払う意思のある当事者から、支払われる意思のある別の当事者への支払いを防ぐことはできません。我々は常に防御を回避する成功した賄賂スマートコントラクトを構築します。例えば、悪意のあるマイナーは、秘密鍵を明らかにすることなく、特定のマイナーアドレスの制御を証明するゼロ知識証明を契約書に作成することができます。マイナーはこの証明を、賄賂を受け取るための代替の受信アドレスとともに、賄賂を贈るコントラクトに送信します。

他のチューリング完全なスマートコントラクト・プラットフォームを使用してマイナーに賄賂を支払うことができるので、賄賂を受け取るブロックチェーンのスマートコントラクト言語の能力を制限するだけでは不十分です。プラットフォームが必要とするのは、ブロックヘッダーリレー(=btcrelay)を実行することだけです。例えば、RSKやEthereumは、ビットコインのマイナーに賄賂を支払うために使用することができます。しかし、ブリッジされたブロックチェーンへの攻撃を調整することは困難です。

賄賂攻撃に対する潜在的な防御策としては、PoSコンセンサスプロトコルの変形版を使用することで、大多数のブロック製作者がブロックに署名することを要求し、さらに数ヶ月間コインのセキュリティデポジット(ステーク)を持つことを要求します。Equivocate(2つの矛盾したブロックや矛盾したフォークの延長線上にあるブロックを生成)したマイナーのステークは、コミュニティが立ち上げたハードフォークによって没収されます。この保護によって脆弱性がなくなるわけではありませんが、失ったステークよりも高い額の賄賂が必要となるため、攻撃コストを高めることができます。現在、ビットコインではマイナーステイクを有効にすることはできません。RSKはPoSコンセンサスを採用する可能性がありますが、RSKではPoSに切り替える提案も、PoWとPoSを混在させる提案もありません。

まとめ

私たちは、異常に高い手数料を支払う悪質な取引に基づく、ナカモト・コンセンサスに対するいくつかの既知の攻撃を紹介しました。いくつかの攻撃は二重支出を可能にし、他の攻撃はネットワークを不安定にします。これらの攻撃は特にRSKを含むすべてのビットコインのサイドチェーンに関連しています。RSKは抑止力として、ブロック報酬スムージング、ブロック報酬シェアリング、フォークアウェア・マージドマイニングを実装しています。報酬平滑化は明示的な報酬に対しては有効ですが、スマートコントラクトを使って支払われる賄賂の一般的なケースは避けることができません。これらの攻撃から身を守るには、ネットワークを積極的に監視する必要があります。最後に、これらの攻撃に対する潜在的な解決策について、さらなる研究が必要です。


原文:https://medium.com/iovlabs-innovation-stories/rsk-security-against-fee-sniping-attacks-98e997dc1246 By Sergio Demian Lerner(Cryptocurrency Security Consultant. Head of Innovation at IOV Labs)