VLSはライトニングノードの安全性と拡張性を高める重要な部品となるか
ライトニングノードを維持するにあたって基本的な関心事は故障やバグの可能性と、盗難を防ぐセキュリティの2つです。最近はチャネル情報のクラウドへのバックアップ等で故障リスクに対処するアプローチがありますが、後者はまだ必要な知識を身に付けてノードを適切に守る以外の対策はありません。これはライトニングノードがホットウォレットであることに起因します。
一般的には仮想通貨の保管においてホットウォレットを避け、インターネットから隔離された場所に秘密鍵を保管するコールドウォレットの利用がベストプラクティスであることは皆様もご存知のとおりです。その際に秘密鍵だけでなく署名デバイスごとオフラインに置く一例がハードウェアウォレットです。
今日はライトニングノードの秘密鍵と署名ロジックをノード自体から隔離してライトニングノードの攻撃表面を小さくすることを目標に開発されているVLS (Validating Lightning Signer)について、概要と応用方法を解説します。
Validating Lightning Signerの存在意義
VLS (Validating Lightning Signer)はライトニングノードの署名機能をまるごとライトニングノードとは別のところに移動することでセキュリティ対策をしやすくすることが目的のソフトウェアプロジェクトで、Spiral (旧Block Crypto)から資金提供を受けています。
ライトニングノード間でメッセージをやりとりできるSNS、Sphinx.chatの開発者たちが中心となって開発しています。最近Sphinx.chatの話はあまり聞かなくなってしまいました。(2020年が利用のピークだった印象があります)
ライトニングノードのアーキテクチャで、署名鍵を扱う部分(Signer)がノード全体の中で密結合になっている実装をモノリス型と表現できます。モノリス型のライトニングノードは中身が複雑なため脆弱性が潜む可能性が高く、盗難を狙う悪者にとって絶好の攻撃対象です。これを攻撃表面が大きいと表現します。
では、Signerをノードから分離できたら攻撃表面はどうなるのでしょうか?
署名するデータについて検証を行わず、単純に署名するソフトウェアをBlind Signerといいます。Blind Signerの実装は簡単ですが、ノードからBlind Signerが分離したアーキテクチャにおいてはノードとBlind Signerの両方が攻撃対象となり、むしろ攻撃表面が大きくなってしまします。なぜならノードから不正なデータをBlind Signerに送ることでも、Blind Signerを乗っ取ることでも不正なデータに署名させられるためです。したがって、これではむしろセキュリティが劣化しているといえます。
そこでValidating Signerという、署名するデータの内容について様々な検証を行って安全性を確認してから署名するソフトウェアを用意してノードから分離させるアーキテクチャを考えます。この場合、ノードが乗っ取っられてもValidating Signerは不正なデータに署名しないため、盗難目的の攻撃表面はValidating Signerのみに限定されます。したがってライトニングノード全体と比べるとシンプルで脆弱性が含まれにくいValidating Signerだけを守れば盗難が防げます。攻撃表面が小さくなりました。
つまり、Validating Lightning Signerとはライトニングノードの「守るべき部分」をノード自体とは別の場所で運用することで攻撃表面を小さくし、複雑で脆弱性が存在する可能性が高いライトニングノードへのセキュリティ面での依存をなくすためのアーキテクチャの変更(におけるSigner部分の名称)なのです。
様々な応用方法が考えられる
上で見たように、VLSはライトニングノードのセキュリティを改善しますが、それだけではありません。ノードとSignerのセキュアな分離が実現するいろいろな応用方法が考えられます。
例えばライトニングノードのインフラはLSP (Lightning Service Provider)が運用し、ユーザーは自身のVLSのみを手元に置くようなノンカストディアルウォレットを考えます。Blockstream Greenlightなどがすでに似たようなサービスを提供しています。ライトニングノードの各種の鍵は手元にあるので、サービス提供者による資金の盗難を心配する必要がなく、ノードを管理する自信のないユーザーに対しても簡単なオンボーディングが可能になります。(但し、故障リスク等の問題はバックアップなど別途対策が必要です)
他にも、ライトニングノードをマルチシグを使って複数の主体が共同で管理する場合に署名機能を切り分けることで鍵の管理と運用が比較的シンプルに行えるようになります。ライトニングノードの共同運営は最近ではFedimintなどにおいても話題になっています。

ところでVLSは署名部分をノードと切り分けるだけの話なのでソフトウェアのみならずハードウェアとして利用することもできます。例として、下のツイートのようにマイコンを利用した「ライトニングノードのハードウェアウォレット」とも言えるデバイスが開発されています。
17,000 lightning nodes, but this one is a bit different. @Core_LN running in the cloud, private keys secured with @VLSProject from home. Dedicated hardware to keep it simple. One step closer to multi-sig lightning for everyone. pic.twitter.com/tVBU6WbSGW
— Sphinx.chat (@sphinx_chat) September 19, 2022
VLSはまずはプラグイン機能の開発が容易なCLNへの統合を目指して開発されているようです。ベータ版がリリースされた暁にはぜひとも試してみたいですね。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。

ディスカッション