Develop with pleasure!

福岡でCloudとかBlockchainとか。

Lightning network

Eclair 0.11.0以下に存在したプリイメージ抽出時の脆弱性

先日開示された0.11.0以下のバージョン*1のEclairに存在したプリイメージ抽出時の脆弱性↓ morehouse.github.io 脆弱性の内容 今回開示された脆弱性は、チャネルを強制クローズした際にオンチェーンでプリイメージを監視する際の処理に問題があった。 相手が…

サブマリンスワップの改良提案Papa Swap

サブマリンスワップは、オフチェーンのコインとオンチェーンのコインを交換するためのプロトコル。LN上のコインとオンチェーンのコインを交換したい場合、LNの支払いを入手するために必要なプリイメージと、オンチェーンの資金を受け取るために必要なプリイ…

LND 0.17.5以下に影響する不要なフェイルバックの脆弱性

先日、Matt MorehouseによってLND 0.17.5以下に影響する脆弱性の内容が開示された↓ morehouse.github.io ※ なお、この脆弱性を悪用する場合、別途ターゲットとなるノードを適切なタイミングで再起動させる必要がある。そのようなことが可能な別の攻撃ベクト…

LNピアのデータを保管するピアストレージ

先月ピアストレージの仕様がBOLTにマージされた↓ https://github.com/lightning/bolts/blob/master/01-messaging.md#peer-storage ピアストレージ ピアストレージというのは、LNでピアから受け取った任意の暗号化データを受け入れるオプションサービス。 チ…

LDK v0.1以下に存在した2つの脆弱性

LDK(Lightning Development Kit )はLN対応アプリケーションを構築するためのライブラリ。 このLDKについて、先月末に2つの嫌がらせ攻撃を可能にする脆弱性が開示された。 流動性をロックする嫌がらせ LDK 0.0.125以下に存在した脆弱性は、アンカーチャネル…

オフチェーンベースの流動性提供スキームSuperScalar

LNのインバウンド流動性問題 LNでチャネルを新規に開設する場合、開設時は通常チャネル残高=自分の残高となる。これはチャネルを介して自分が支払うアウトバウンド流動性は保持しているけど、チャネルを介して支払いを受け取るインバウンド流動性はまったく…

CLN v23.02〜v23.05.2に影響したDoS脆弱性

Core Lightnig v23.02〜v23.05.2に影響した脆弱性について、最近内容が開示された↓ DoS disclosure: Channel open race in CLN - Implementation - Delving Bitcoin ので、内容を確認してみる。詳細は報告者のブログ記事で説明されている↓ morehouse.github.…

LND v0.14.0とv0.15.0で修正された2つの脆弱性

最近、過去(2021年)のLND実装のサービス拒否の脆弱性が公開されてたので見てみる↓ Denial-of-service bugs in LND's channel update gossip handling - Implementation - Delving Bitcoin (最近は、Delving Bitcoinフォーラムでの議論も増えてるっぽい。…

コンテンツを復号可能な鍵をアトミックに交換できるBitStream

BitVMやZeroSyncの開発者であるRobin Linusが先日公開したBitStreamのペーパー↓ https://robinlinus.com/bitstream.pdf 分散型のコンテンツホスティングネットワークに対して(最近ユーザーが増えてるNostrとか)、持続可能なインセンティブを持たせるため、…

Simple Taproot Channel(Part 3)

Simple Taproot Channelの提案について、これまで チャネルの開設フロー↓ techmedia-think.hatenablog.com 支払いの転送フロー↓ techmedia-think.hatenablog.com とみてきたので、最後はチャネルの閉鎖フローの変更点について↓ https://github.com/lightning…

Simple Taproot Channel(Part 2)

前回の記事では、Simple Taproot Channelの開設ステップを見てきたので↓ techmedia-think.hatenablog.com 今回は、支払い(HTLC)の転送の変更点についてみていく。 https://github.com/lightning/bolts/blob/e25132d8de0164224578964fcd3f7328ddfc3281/bolt…

Simple Taproot Channel(Part 1)

lnd v0.17.0のリリースで、実験的にTaproot Channelのサポートが追加される↓ https://github.com/lightningnetwork/lnd/blob/master/docs/release-notes/release-notes-0.17.0.md#protocol-features 従来のLNでは、チャネルを開く際、チャネル参加者の両名が…

lnd v0.15.3-betaで発生した2度目の障害の内容

少し間が空いたけど、 techmedia-think.hatenablog.com の障害からそんなに間を開けずに、再度LNDでチェーン同期ができなくなる障害が発生したので、その内容をまとめておく。 障害の原因 障害のトリガーとなったは、500,142 byte(125,109 vbyte)のこのト…

Taroのオンチェーンアドレス仕様

techmedia-think.hatenablog.com ↑のアセットの新規発行に続いて、アセットを送付しようと思ったけど、その前にアセットを受け取る際に必要になるTaroのオンチェーンアドレス仕様について見ておく。 Taroアドレス Taroのアセットを受け取る際のアドレスは既…

Taroのアセット発行の仕組み

前回の記事でTaroのアセットツリーの構造を確認したので↓ techmedia-think.hatenablog.com 今回は、Taroでのアセット発行の仕組みをRubyで実装しながらみていく。 tarocliを使ったアセットの発行 tarocliのassets mintコマンドを利用するとアセットを新規発…

lnd v0.15.1-beta以下で発生したチェーン同期の障害

lnd v0.15.1-beta以下で発生したlndでチェーンの同期ができなくなる不具合↓についてまとめておく。 github.com 正確には、btcdの不具合↓ github.com 障害の内容 今回発生した障害は、lndでブロックチェーンの同期ができなくなるというもの。そのため、その間…

Taroのアセットツリーの構造

Lightning Labsが発表したBitcoin上の新しいアセットプロトコルTaroについて、今回はTaroのアセットツリー周りのデータ構造/表現についてみていく。 Taroのアセットツリー Taroは、Taprootを利用したアセットのオーバーレイプロトコルになる(Taprootベース…

testnetで発見されたNeutrinoのTaproot関連の問題と軽量クライアントの課題

少し前に報告されたtestnetで発生したNeutrinoのフィルタ処理の問題について↓ https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-November/019589.html Neutrinoの位置付け LNノード実装の1つであるLNDのブロックチェーンのバックエンドの連携…

c-lightningをRaspberry PiにセットアップしてUmbrelのBitcoin Coreと連携してみる

Diamond Handsに参加するのにUmbrel on Raspberry Pi 4を使ってフルノードのBitcoin CoreとLightningノードのLNDを家庭内LAN環境で稼働し始めたんだけど、1台Raspberry Pi 3が余っていたので、それを使って追加でc-lightningのノードを立ててみた。 Umbrelの…

Dust limitを悪用したLightningプロトコルの脆弱性の開示

LNの実装に影響を与える仕様レベルの脆弱性が公開されていたので内容を見てみよう↓ [Lightning-dev] Full Disclosure: CVE-2021-41591/ CVE-2021-41592 / CVE-2021-41593 "Dust HTLC Exposure Considered Harmful" 前提 まず、脆弱性の内容を理解するために…

LNDで実装されている経路探索アルゴリズム

LNを利用したオフチェーン支払いをする際、基本的に送信者が受信者までの支払いの経路を決めるようになっている。つまり、送信者はこの経路を探索する必要がある。LNのゴシップネットワークで、LNノードやそのチャネルの情報が(更新を含めて)配信されるの…

LN Offer

LN Offerは、ノードがLNを介してインボイスを要求、受信できるようにするプロトコルの拡張機能の1つで、BOLTにもBOLT 12として提案されている↓ https://github.com/rustyrussell/lightning-rfc/blob/guilt/offers/12-offer-encoding.md http://bolt12.org/ …

LNのゴシッププロトコルを使った流動性の提供

最近、C-Lightningで実験的にLNのチャネルの流動性(インバウンドキャパシティの提供)をLNのゴシッププロトコルを使って配信する機能がマージされた↓ https://github.com/ElementsProject/lightning/pull/4639 LNの支払いを受ける場合、チャネルにインバウ…

秘密鍵をオフラインにしたままLN支払いを受け入れ可能にするFast Forwardプロトコル

Lightning Networkでオフチェーン支払いをする場合、(オンチェーンの支払いと違って)チャネル参加者は常にオンラインである必要がある。その際、支払いによる状態の更新で新しいコミットメントトランザクションに署名するため、秘密鍵も同様にオンラインで…

lndが公開した2つの脆弱性CVE-2020-26895とCVE-2020-26896

先日lndに脆弱性が含まれているということで修正版のアナウンスがされていたけど、その内容が公開された↓ CVE-2020-26895: LND Low-S Tx-Relay Standardness https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-October/002858.html CVE-2020-…

Lightning Networkの新しいチャネルコントラクトの提案「Generalized Channels」

少し前に発表されたLightning Networkの改善提案のペーパー「Generalized Bitcoin-Compatible Channels」↓ https://eprint.iacr.org/2020/476.pdf 簡単に言うと↓の特性を持つ、現在のLightning NetworkのPoon-DryjaスタイルのPayment Channelの改良 共通のコ…

LNの新しいチャネルタイプAnchor Output

LNでは送金の度に残高を更新したコミットメントトランザクションを新しく作り署名する。チャネルを閉じる際には、 両者が協力してClosingトランザクションを作成し閉じるパターン (相手と通信できないなどで)片方の参加者が最新のコミットメントトランザク…

LNの中継者の資金を奪う攻撃手法

Bitcoin Optech Newsletterで取り上げられていた、LNのマルチホップ決済で中間者の資金を奪う攻撃方法について↓ bitcoinops.org もともとはLigning-DevやBitcoin-Dev MLでMatto Coralloによって議論されていた内容。 HTLCの構成 LNにおいてアリス→ボブ→マロ…

LNの経路情報を秘匿するRoute Blinding

送信者が受信者の完全な経路を知らなくても支払いやメッセージのルーティングを可能にするRoute Blindingの仕様のドラフトが提案されてるので見てみる↓ https://github.com/lightningnetwork/lightning-rfc/blob/route-blinding/proposals/route-blinding.md…

2P-ECDSAを必要とせずHTLCを代替する半Scriptlessプロトコル

LNのマルチホップ決済で使われるHTLCの仕組みを代替する仕組みとしてPoint Time Locked Contracts (PTLCs)が提案されている。 既存のHTLCを使ったマルチホップ決済は、支払い経路で同じハッシュのプリイメージが使われるため、プライバシーの懸念や中間者の…