ライトニングは仕組み上、自分のノードが長期間オフラインになっているとチャネルを共有する相手の不正によって資金を喪失するリスクがあります。一番簡単な対策は定期的に(例えば週に1度は)オンラインになることですが、人間は忘れることもあるので実務上はほぼ常にオンラインであろうとするのが最善です。そこでUmbrelのような自宅サーバーやVoltage.cloudのようなホスティングサービスの出番なわけですね。

「オンライン要求」と呼ばれるこの特徴は残念ながらライトニングノードはホットウォレットとしてしか存在しえないという弱点に繋がっています。もちろん、十分にセキュリティを強化すればある程度は問題ありませんが、長期保管のゴールドスタンダードであるコールドウォレットと比べると攻撃方法が多数考えられるのは間違いありません。

個人ユーザーはまだしも、数百BTCをライトニングで運用している取引所やウォレットLSPなどはどのようにセキュリティ対策を行っているのでしょうか?

今日はルーティングノードのパブリックキャパシティで数百BTC、Phoenix Walletのプライベートチャネルでさらに数百BTCを運用しているACINQがどのようにライトニングノードを守っているか記事を出していたので紹介します。

・内部犯の対策も必要

・ライトニングノードに「誰もアクセスできない」仕組み

・社内用Ledger Nano S用アプリも開発

・ライトニングノードの「守り」は今後需要が大きくなる技術

内部犯の対策も必要

一般的にライトニングノードを守る方法といえば、外部からの不正アクセスやハードウェアの故障の対策になります。しかし、会社で運用している規模が数百BTCのノードであれば内部犯対策も必須です。

もしライトニングノードからの出金を伴うすべての動作にマルチシグ署名のような手続きを必要にできれば、内部単独犯の対策にはなります。例えばVLSというライトニングノードの署名部分を切り分けるプロジェクトを応用すれば実現できるかもしれません。

VLSはライトニングノードの安全性と拡張性を高める重要な部品となるか
ライトニングノードを維持するにあたって基本的な関心事は故障やバグの可能性と、盗難を防ぐセキュリティの2つです。最近はチャネル情報のクラウドへのバックアップ等で故障リスクに対処するアプローチがありますが、後者はまだ必要な知識を身に付けてノードを適切に守る以外の対策はありません。これはライトニングノードがホットウォレットであることに起因します。 一般的には仮想通貨の保管においてホットウォレットを避け、インターネットから隔離された場所に秘密鍵を保管するコールドウォレットの利用がベストプラクティスであることは皆様もご存知のとおりです。その際に秘密鍵だけでなく署名デバイスごとオフラインに置く一例がハードウェアウォレットです。 今日はライトニングノードの秘密鍵と署名ロジックをノード自体から隔離してライトニングノードの攻撃表面を小さくすることを目標に開発されているVLS (Validating Lightning Signer)について、概要と応用方法を解説します。 Validating Lightning Signerの存在意義 VLS (Validating Lightning Sig

しかし、ルーティングノードの場合はそうはいきません。送金の中継には「受取り」と「送金」の両方のステップがあり、数秒以内には完了させないといけないので手動による承認は非現実的なのです。ルーティングノードの内部犯対策はどうすべきなのでしょうか?

ライトニングノードに「誰もアクセスできない」仕組み

Phoenix Walletを運営し、巨大なルーティングノードを運用しているACINQ社は技術ブログにアップした"Securing a $100M Lightning node"という記事において、会社としてどういうアプローチでライトニングノードのセキュリティを守るに至ったかを解説してくれています。

当初はHSMという鍵管理用のハードウェア内にライトニングノードを実装し、すべての資金の出入りをHSM内の鍵で検証しながら署名するアプローチを考えていたそうです。発想としては「ルーティングの場合、すべての送金には対となる受取りがある」というところを出発点に、送金を中継するときは受取りのステップが完了していることを検証してから署名するようなプログラムを書いたそうです。

出典:www.sarion.co.jp/ref/ref_hsm_primer_sec1.html

しかし、HSMの限られた処理能力では一秒間に最大でも数十件の送金しか中継できず、ACINQの中継ノードの規模を扱いきれません。また、ベンダロックインや技術的複雑性からくる保守性の問題があったようで、HSMを使うアプローチはボツになりました。

その代わり発案されたのがAWS Nitro EnclaveというAWSの提供するクラウド上の秘匿計算領域を利用するアプローチです。HSMでは処理能力が不足していたのに対してAWS Nitro Enclaveはハイエンドサーバーのパフォーマンスが実現でき、開発も一元化できるうえ、AWSの内部者含めNitro Enclave上のデータを誰も自由に読み書き実行できないというセキュアな構造になっています。

出典:dev.classmethod.jp/articles/nitro-enclaves-getting-started/

ライトニングノードをクラウドで実行することに対する1つの批判はクラウドプロバイダーに悪意があれば資金を盗むことができるという点ですが、AWS Nitro EnclaveはACINQの内部犯のみならず、この対策にもなるわけです。

マニアックな話ですが、Nitro Enclaveを利用するためにACINQのチームはEclairにいくつかの改造を施しました。また、Nitro Enclaveにはデータ永続性はなく(再起動したら消える)、またNitro Enclaveの中身を定義するイメージファイルに秘密鍵などを書き込むのはセキュアではないため、Nitro EnclaveからエアギャップされたPCに保管している秘密情報を取得しにいく(Nitro Enclaveを立ち上げた後にエアギャップした秘密情報を注入する)仕組みを作ったそうです。

社内用Ledger Nano S用アプリも開発

Eclair自体はデータ永続性を必要とするので(ライトニングノードは秘密鍵だけでなく、様々なデータを必要としており、再起動で消えてはこまる)Nitro Enclaveで実行されるのは秘密情報の管理とEclairの起動をつかさどるランチャーだけです。

すると気にしないといけないのはNitro Enclaveの外で実行するEclair本体のすり替えなどですが、これに関してもLedger Nano S用に作った特製の署名アプリで特製のEclairパッケージに署名し、Nitro Enclaveで実行するランチャーから署名を検証してからEclairを起動することで回避しています。

最後に、ライトニングノードの管理もセキュリティのために必ずNitro Enclave内から行う必要がありますが、その指示(例えばEclairのアップデート、ノードの停止・起動、チャネルの設定変更や開閉など)の不正余地を排除するためにも社内のLedger Nano S用アプリを活用しているそうです。

ACINQの特性Ledger Nano S用アプリ

これで、Eclairのデプロイ・起動・管理すべてがAWS Nitro Enclaveを経由し、管理系の指示はすべてLedger Nano Sを使った署名が付加され、Nitro Enclave内の秘密鍵などはエアギャップしたPCから注入するという鉄壁の守りが生まれました。仮にEclairが実行されているサーバーに侵入されても攻撃者にできることはありません。

💡
内部犯対策で複数署名が必要なコマンドがあるかについて記事では詳細は触れられていませんでしたが、理論上は可能なので重要なコマンドはそういう仕組みになっているかもしれません。

ライトニングノードの「守り」は今後需要が大きくなる技術

ビットコインの保管について、価格が今の10倍になっても安全な保管方法を心掛けろというアドバイスがあるように、価格上昇とともにセキュリティの重要性は増してきます。ホットウォレットが前提となっているライトニングに関しても、これから対策を強化する必要が大きくなっていくでしょう。

その中で、内部犯対策もできてセキュリティ自体も強化できるACINQが構築したような仕組みは非常に価値のあるもので、取引所や法人のビットコイン運用につながっていきます。ただし、Eclairという独自ライトニング実装にさらに独自の改変を加えて実現しているという、非常に高度で先進的なことをして実現しているため、他のチームが再現するのはかなりハードルが高い離れ業といえます。

いずれにせよ、このようなソリューションが求められているのは間違いないので、LNDやCLNなどほかのライトニング実装も似たような改造を施しやすい形に再編されていくとライトニングの未来がより明るくなるかもしれません。

まとめ

・ルーティングノード大手のACINQは内部犯やAWSの内部犯からも超高額ライトニングノードを守るための技術を独自開発した

・AWS Nitro Enclaveという秘匿計算領域に秘密情報を隔離し、管理用のインターフェースもすべて経由させ、管理用の指示もLedger Nano Sで署名したものを検証させるという徹底っぷりによってノードの権限を強固に守る

・取引所や法人、ファンドによるライトニングノード運用の道が開ける技術だが、実装に非常に高度な知識を要するため普及は遠い