第1弾、第2弾をご覧になってない方はぜひそちらからご覧ください!
RSKマージ・マイニング・セキュリティ

プルーフ・オブ・ワークを用いたナカモトコンセンサスの理論は、熱力学およびゲーム理論のセキュリティに立脚しており、暗号学セキュリティに基づくものではありません。たとえ攻撃者が30秒未満で280ハッシュ・オペレーションを算定可能であっても、RSKマージマイニングは安全に保たれます。そのため、攻撃は非合理的です。攻撃を続けるよりもむしろ、269オペレーション程度(現時点の難度)しか必要でないRSKブロックを素直にマージマイニングする方が賢い選択だといえるでしょう。RSKブロックのマージマイニングはビットコインによって完全に資金助成がされますが、攻撃の場合、その電力消費は資金助成されません。そのため、非常にガードが堅いにも関わらず280ハッシュ・オペレーションを実行しようと画策する非合理的な攻撃者は、合理的なマイナーの2,000倍のハードウェアを投資する必要があります。そうした投資は、Bitcoin ASICsのような最先端のハードウェアを使用することと仮定すると、約5兆ドルに相当するでしょう(5e12)。さらに攻撃者を不利な状況に追い込むのは、プルーフ・オブ・ワークを共有する1つ、あるいは複数のブロックを生成する際に同じRSKブロック高のブロックに限定されることです。後ほど詳述しますが、このことにより、攻撃者は実際に金銭的な利益を得ることができないのです*1。これでは、5兆ドル相当の投資が水の泡となってしまいます。
*1…ほかの攻撃方法として、タグ衝突を使って並行していくつかの競合チェーン用にブロックを生成し(全てが同一の累積型難度)、異なる「最良のチェーン」を備えたその他のマイナー1人1人に供給して同じ最良のチェーンに従事させないようにするものもあります。これには他のマイナーとのピアツーピアの繋がりが必要となります。「残りのマイナーの個別のハッシュパワー<攻撃者のハッシュパワー<残りのマイナーたちを結集させたハッシュパワー」の場合、攻撃成功のおそれがあります。それでも、こうした攻撃は、51%攻撃で他のマイナーのブロックを無視するよりも多くの代償を伴います。
このことを踏まえると、80ビットのセキュリティは全てのコンポーネントにわたって良いバランスが取られています。ある1つのコンポーネントのセキュリティが脆弱で攻撃のターゲットとなることもありません。このことを立証すべく、考えられる攻撃のターゲットを手短に検証しましょう。
まず、RSKは非標準型の暗号学的トリックでジェネレーショントランザクションを圧縮します。完全なジェネレーショントランザクションを提供する代わりに、末尾のみを送信するのです。末尾のみからこのメッセージの正しい暗号学的ハッシュを生成するために、初期状態ではなく、Merkle–Damgård構造のミッドステートからハッシュを開始します。この64バイトのミッドステートは末尾に沿って送信されます。このトリックを安全に使用するにはSHA256の「Freestart衝突耐性」と呼ばれるより強力なプロパティが必要です。これは少なくとも強引な80ビット水準の安全であることが不可欠で、80ビットは当社のターゲットのセキュリティしきい値となっています。SHA-1(すでに脆弱性が判明しているハッシュ関数)には、約80ビットの強引な水準を要求する有名なFreestart衝突が伴いますが、SHA256からは一切のFreestart衝突が検出されず、最も出来が良かった検証の結果ではSHA256の縮小バージョン(38/64回目、265オペレーション)でようやく準freestart衝突の発見ということから、RSKマージ・マイニングは安全だと結論付けることができます。
仮に、SHA256が突如攻撃され280オペレーションが必要な場合、SHA256は安全な標準ハッシュ関数の役割を果たすことができず、壊滅的な状況に陥り、ビットコインでも問題が発生します。しかし、そのような攻撃が発見されれば、RSKプラットフォームは、ネットワーク・アップグレードによってブロック・サイズをわずかに増やし、SPV圧縮のためにこの暗号トリックが使用されないよう容易に保護することができます。 ただし、先述しましたが、攻撃がビットセキュリティという観点においてマージ・マイニングより低コストで行うことができるとしても、コストパフォーマンスがいいとは言えないのです。
次に、今後の1.0.0 リリースにおけるハッシュ・ダイジェストの切り詰めに関して、新たなスキームはタグ衝突対象に80ビットのセキュリティ相当を提供します。しかしながら、攻撃は理論的、経済的、そして演算的に不合理です。演算上の複雑性という観点から、80ビットの攻撃は非現実的な容量のメモリ*2を必要とします。同時に、衝突攻撃のCPUコストはRSK PoWパズル解決にあたってのコストの2000倍です(69 対 80ビット)。
*2…シンプルな衝突攻撃によって要求されるRAM メモリは280 ハッシュ・ダイジェスト(3,200万エクサバイト)です。Oorschot/Wiener アルゴリズムの使用と単一のプロセッサを想定すると、30秒未満で240 連続ハッシュ・オペレーションを実施することが可能で、RAM メモリ要件は32テラバイトにまで縮減される可能性があります。
理論的観点、ならびにRSKにて用いられるDECOR+コンセンサスから考えてみましょう。衝突はRSKと同じブロック高でのみ生じ得ることから、衝突を起こすブロックはブロック報酬を共有することとなります。そのため、それまでのブロック報酬が新規ブロックの報酬とほぼ同一である場合、それまでのブロックの新しい仲間のブロックを見つける利点は存在しません。攻撃者は自分自身と競争することになってしまうのです。同じ理由から、平均30秒程度必要な新規ブロックの衝突の捜索よりも、5分間かけてアンクルブロックを照合する方がはるかに有益です。
次に、経済的観点から考えてみましょう。誠実なマージ・マイナーはビットコインのトランザクション手数料によって稼ぐので、マージ・マイニングはビットコインによる資金助成を受けることになりますが、一方で攻撃者は衝突攻撃の全ての費用を負担する羽目になります。よって、PoWリンケージへのあらゆる攻撃は費用効率が良くないということになります。このことは、RSKブロック・ハッシュでのハッシュ・ダイジェスト衝突およびコインベーストランザクション・ハッシュのFreestart衝突の双方にいえることです。
これらの点からみて、演算効率性の問題を打破したとしても、タグは今後20年間は安全だと考えられます。演算のトレンドが急激に変化すれば、将来のネットワークのアップグレードでハッシュのサイズをフル32バイトへと再拡張する可能性もあります。
RSKマージマイニング・プラグイン開発
以下の図は、RSKマージマイニング・プラグインを含む標準のプールサーバー構造を示しています:
プールサーバーおよび様々なネットワークと接続されたRSK マージ・マイニング・プラグイン
プールサーバーRSKプラグインはmnr_getworkとmnr_submitBitcoinBlockこの2種類のJSON-RPC*3を用いてrskj daemonと通信します。その他の送信方法はrskj node への情報送信を縮小することで帯域幅の使用量を削減することができます。rskj daemonのJSON-RPC接続ポートは構成の設定が可能で、既定値は4242です。手法およびデータ交換フォーマットに関する説明はこちらで確認できます。それらの手法は、rskjノードに接続する標準インターフェースであり、Web3インターフェースに属するその他の多数の手法とともに実施されています。
*3…エンコードにJSON(JavaScript Object Notation)を採用したシンプルで軽量なRPCプロトコルの一種(参照:Wikipedia、JSON-RPC)
RSKチームはCoiniumServ、Ckpool、Btcpool、Eloipool等のいくつかのプールを実装するにあたって完全に機能するプラグインを開発してきました。そのほかのプールはそれぞれで開発したプラグインを実装しています。当社はマイニング・ソフトウェアの中でもCkpoolを推奨しています。最適化されていて、マージ・マイニングがビットコインマイニングのマイニング・パフォーマンスに影響を及ぼさないことも実証済みであるからです。
まもなく、マージ・マイニング・プラグイン開発用ガイドが発表されます。そこには、それぞれのプールごとに効率的で信頼の置けるマージ・マイニング・モジュールを構築するためのヒントも追加されています。
重要点として、RSK はDECOR+プロトコルを使用していることがあげられます。そのため、RSKペアレント・ブロックが変化したとしても、プールサーバーソフトウェアは、プール・クライアントによって発見される一切のRSK PoW解決法を処理し続けることが可能です。そして全ての競合ブロック(アンクルブロック)に対して報酬が与えられます。
まとめ
現在、Bitcoin マイナーのうち40~51%がRSKをマージ・マイニングしています。結果として、RSKは地球上、そして「熱力学」セキュリティ*4において最も安心できるスマート・コントラクトといえるでしょう。RSKのマージ・マイニングは簡単ですが、RSKネットワークへの直接攻撃などの過酷な状況下でもプールサーバーソフトウェアの通常機能に変化が起きないよう、細心の注意を払う必要があります。RSK Labsは、マイニング機能の継続性を検証するために、数々の不良や問題状況を想定した試験を乗り越えたプラグインをいくつか開発しました。また、マイニング・ソフトウェアの効率性に変化がないことを確認するための、マイニング・プール・ソフトウェアにて効率性測定も実施されました。当社はプールおよびソロのマイナーに対し、RSKをマージ・マイニングし、Bitcoinスマート・コントラクト革命の一員となるよう奨めています。マージ・マイニングの機能設定にあたって助けが必要の場合、RSK gitterコミュニティ・フォーラムで当社をお探しください。
*4…ブロックにおいてトランザクションが確定となると、誰かがチェーン書換に必要な最低限のエネルギーを消費しない限り、無効にすることはできません。このエネルギーはPoW ベースのブロックチェーンの「熱力学」セキュリティとして知られています。