ライトニングネットワークルーティングのセキュリティ -後編-

2019年6月8日から9日にかけて、アムステルダムで Breaking Bitcoin というカンファレンスが行われました。
本コラムは、公開された動画や書きおこしをもとに、その発表内容を追いかけ、Bitcoin のセキュリティに関する取り組みの最先端を知ろうという試みです。
発表内容を日本語で、かつ実際の事例などを交えて解説することで、少しでも皆様が Bitcoin の仕組みや最新の研究について詳しくなるための一助になれることを願います。
最終回、Joost Jager氏の発表について後編です。

評価システムとペナルティ

前編ではユースケースに始まり、評価システム、ノードの手数料、そしてエラーについて触れました。
続いて、評価システムのペナルティについてお話しましょう。

まず、ノードの評価、ルートのペナルティについて考えるとき、理想的なルートを見つけるには限界があることに留意します。現実的な限界を見極める必要があるのです。言い換えると、いくつかのルートがあり、そのうち理想的なものがあるかもしれませんが、ここでは現実的な解を求めるものとします。
ペナルティを課すにあたり、マスターマインドゲーム(注: 4色を推測するゲーム)のように、いわゆる「三角推量」を行い、悪いノードを見つけます。あるいは、ここでは触れませんが、アルゴリズムを改良して追加の情報を加えることで、より精度を高めることも容易でしょう。

現在のところ、ライトニングネットワークはユーザーフレンドリーで、妨害を企むノードは多くはありません。しかし、将来的にネットワークがどのような発展を遂げるかはわかりません。ネットワーク上に、より多くの敵対的なノードが増えるなど、起こりうる状況に備えるために仕組みが必要です。

拡張障害メッセージ

現在、データは難読化されており、ホップは支払い経路上における位置を学習しないなど、いくつかの機能があります。旧いノードとの互換性を確保するのが理想です。
将来的には、エラーの原因に関する情報について、ノードとのペアとし、特定しやすいようにしたいと考えています。遅延の原因になっているノードの組み合わせを特定するためです。
また、エラーメッセージにタイムスタンプを追加し、暗号化を行ってからオニオンのように多層構造とします。この時の問題は、ノードがサイズを計算することルート内での位置を推測できることです。

加えて、障害が発生した場合は、そのノードだけでなく先行ノードにもペナルティを与えます。
ホップごとにタイムスタンプを追加したり、その時間差を用いてノードにペナルティを課す、支払いの遅延、部分的な失敗、支払い自体の失敗など、エラーの原因情報もペナルティの程度に影響します。
上記以外にもエラーの種別やデータ構造上の考慮事項はたくさんありますが、いずれも性能などとのトレードオフとなります。しかし、今のところはうまくいっていると言えます。

評判モデル

ノードの評判モデルを構築し、どのノードを使うべきかを判断する、というのがライトニングネットワークにおける試みでした。これをルート制御に持ち込むと、果たしてどうなるでしょうか。
例えば、すべてのノードが 100点で始まり、問題が生じたときには減点するとします。このスコアの厳密な意味は定義されていないこと、より多くのデータが必要なことから、人間が推測を行うのは困難です。したがって、機械学習モデルを採用します。

モデルにより、特定のルートを選択したときに、次回の支払いが成功する確率が算出できるようになります。 これは価格やコストの面だけでなく、成功率、コストパフォーマンス、遅延という意味でも最適なルートになっているはずです。また、成功率はルート全体におけるものです。
こういったパスファインディングモデル、確率的な評判モデルによって、仮想的に試行を行うこともできますし、ネットワーク全体を見ても少しずつ改善に向かうことが期待できます。

現在の実装ではペナルティはそれほど厳しいものではないため、時間とともにルーティングが大きく変化することもありえます。
不安定なルートを回避したり、特定のノードがオフラインになったことを検知することができます。 こういった変更、問題発生によって、ルーティングノードは自動的に変更を行い、最終的に成功率が高いパスを使うようになります。
つまり、多数のノードに無差別に接続し、より多くのルートを確保するというインセンティブにはつながらないため、グラフは実際には縮小する傾向となります。

おわりに

評判の管理は、信頼できるライトニングネットワーク上での支払いのために必要不可欠です。現在のプロトコルは、不良ノードの検出に関して、理想的な実装とはかけ離れていると言ってもいいでしょう。ある程度の、という注意書きが必要になりますが、修正が必要だと考えられます。
ノードの評判を管理する戦略は、ネットワーク上において、長期的な視点でよりよいグラフを形成できます。さらにノード間で評判データを共有することで、新しく起動したノードがゼロから情報を集める必要がなくなるため、そういった仕組みも必要になるでしょう。 ライトニングネットワークはまだまだ成長段階にあると言えます。こういった問題点をひとつずつ特定し、改善していくことで、より安定した、かつ安心して利用できるネットワークにつながることでしょう。

以上、17回にわたって Breaking Bitcoin カンファレンスの発表をまとめてきましたが、本稿をもってコラムは終了となります。
なるべく技術的な要素にフォーカスし、直訳にならないよう補足情報、実ユースケースなどを交えて説明してきましたが、少しでも暗号資産の理解を深める一助となれたことを祈りつつ、本コラムを閉じたいと思います。

お約束となりますが、技術的なご指摘、質問、議論などは大歓迎です。まだまだ日本語の技術情報が少ない中、暗号資産の総価値にも陰りが見える2019年末ですが、引き続き日本語コミュニティの発展を願っております。

【寄稿者情報】

坪 和樹

クラウド業界で働くエンジニア、アイルランド在住。 MtGox や The DAO では被害を受けたが、ブロックチェーンのセキュリティに興味を持ち続けている。セキュリティカンファレンスでの講演、OWASP Japan の運営協力や Mini Hardening といったイベント立ち上げなど、コミュニティ活動も実績あり。