Blockstream Researchは、大きなメンテナンス上の節目を迎えました。libsecp256k1-zkpを、アップストリーム(本家)であるlibsecp256k1の過去2年半にわたる改善内容と完全に同期させました。このライブラリは、Liquid Network、そのファンクショナリー・インフラストラクチャ、およびElementsの暗号技術的な基盤を支えています。
Bitcoinの暗号技術の中核を維持
libsecp256k1は、Bitcoinの暗号技術の基盤です。これまでに行われたすべてのBitcoinトランザクションは、署名検証のためにこのライブラリに依存しています。
2016年にBitcoin Coreが(OpenSSLに代わって)libsecp256k1を統合した際、署名検証のパフォーマンスは2.5倍から5.5倍向上し、Bitcoinノードによるブロックチェーンの検証速度とセキュリティが強化されました。
Blockstream Researchのメンバーは、libsecp256k1の共同メンテナーを務めています。ジョナス・ニック(リサーチ・ディレクター)とティム・ラフィング(暗号技術エンジニア)は、Bitcoinメインネットを保護するこのライブラリのメンテナーです。すべてのBitcoin Coreノードは、ECDSA署名や、Taprootアップグレード以降のSchnorr署名を検証するために、彼らがメンテナンスしているコードを実行しています。これは、Bitcoin自体にとって極めて重要なインフラストラクチャの仕事です。
しかし、Bitcoinメインネットはその設計上、保守的です。コンフィデンシャル・トランザクション(秘匿取引)、アダプタ署名をサポートするマルチシグ・スキーム、ゼロ知識証明といった高度な暗号機能は、Bitcoinのコンセンサスルールには存在しません。そこで、libsecp256k1-zkpの出番となります。
libsecp256k1-zkpとは何か?
libsecp256k1-zkpは、Blockstreamによるlibsecp256k1のフォークであり、ベースとなるライブラリに高度な暗号プリミティブを拡張したものです。「zkp」という接尾辞は、ゼロ知識証明(Zero-Knowledge Proofs)および関連技術を指します。これは、データ自体を明かすことなく、そのデータに関する記述が正しいことを証明できる暗号手法です。
このように考えてみてください。
Bitcoin Coreは、Bitcoinネットワークで必要とされる暗号操作のためにlibsecp256k1を使用します。一方、Liquidはそれらと同じ操作に加え、Bitcoinメインネットがサポートする範囲を超えたプライバシーと効率性を実現する高度な機能のためにlibsecp256k1-zkpを使用します。
このライブラリには以下の機能が含まれます:
- コンフィデンシャル・トランザクションとゼロ知識証明
- Pedersenコミットメント: 検証を可能にしつつトランザクション金額を隠す。
- レンジ証明(Range proofs): 値を明かすことなく、その値が正(プラス)であることを証明する。
- サジェクション証明(Surjection proofs): 資産タイプの関係性をプライベートに証明する。
- アドレスのホワイトリスティング
- 高度な署名スキーム
- ECDSAアダプタ署名: ペイメントチャネルやアトミックスワップに使用。
- Schnorr署名のハーフ・アグリゲーション(半集約)
これらがLiquidのコンフィデンシャル・トランザクションを支え、フェデレーテッド・ペグ・メカニズムを可能にし、Blockstreamのエンタープライズ製品に暗号プリミティブを提供しています。
どこで使用されているか
libsecp256k1-zkpは、Blockstreamのスタックおよび広範なLiquidエコシステム全体に配備されています:
- Elements Core: Liquid Networkの基盤。
- ファンクショナリー・インフラストラクチャ: Liquidのフェデレーテッド・ペグを保護(ホストおよびHSMコンポーネント)。
- Wally / libwally: Core Lightning、Jadeハードウェアウォレット、AMP、Blockstream Appで使用。
- LWK (Liquid Wallet Kit): Blockstream App、Blockstream Enterprise、AMP2、およびLiquidエコシステムアプリケーションを支える。
- Blockstream Explorer API: Liquidのブロック探索およびトランザクションのアンブラインディング(目隠し解除)を支える。
- Simplicity: Liquid上のスマートコントラクト言語。暗号操作にlibsecp256k1-zkpを使用。
Liquid上で構築されているすべてのウォレット、取引所、アプリケーションは、高度な暗号機能のためにこのライブラリに依存しています。
変更点:2.5年分の改善
Blockstream Researchは、libsecp256k1のアップストリームから2.5年分の改善をマージしました。
- セキュリティの強化: API関数は、リターンする前にスタックから機密情報を消去するための大幅に堅牢なメソッドを使用するようになり、潜在的なメモリアタックに対する保護が向上しました。
- パフォーマンスの向上:
- SDMC (Signed-Digit Multi-Comb) アルゴリズム: 署名および公開鍵生成が15〜20%高速化。
- Straussアルゴリズムの最適化: マルチポイント楕円曲線乗算操作のメモリ使用量を30%削減(ジョナス・ニックによる執筆)。
- バッチポイント変換の最適化: 新しい
secp256k1_ge_set_all_gej関数により、MuSig2およびECDSAアダプタモジュールのパフォーマンスが向上(ティム・ラフィングによる執筆)。
- テスト・インフラストラクチャ: 並列実行、選択的なテスト実行、名前付きコマンドライン引数を備えた新しいユニットテスト・フレームワークを導入。開発体験とテストカバレッジが劇的に向上しました。
パフォーマンス・ベンチマーク
Blockstream Researchは、アップストリームとのマージ前後のlibsecp256k1-zkpのパフォーマンスを比較する包括的なベンチマークを実施しました。ベンチマークは、8GB RAM、macOS 14.1.2を搭載したMacBook Air (M1, 2020) で実施されました。結果は、主要な暗号操作、MuSig2のワークフロー、およびゼロ知識証明において測定可能な改善を示しています。
主要な暗号操作:
| 操作 | 以前 | 以後 | 改善 |
| ECDSA署名 | 22.9 μs | 19.9 μs | 13% 高速化 |
| 鍵生成 | 15.1 μs | 12.7 μs | 16% 高速化 |
| Schnorr署名 | 16.1 μs | 13.6 μs | 16% 高速化 |
MuSig2 マルチシグ操作:
| 操作 | 以前 | 以後 | 改善 |
| ノンス生成 | 94.5 μs | 69.3 μs | 27% 高速化 |
| ノンス集約 | 5.84 μs | 1.85 μs | 68% 高速化 |
| ノンス処理 | 29.1 μs | 23.6 μs | 19% 高速化 |
| 部分署名 | 220 μs | 178 μs | 19% 高速化 |
| 署名の完成 | 175 μs | 141 μs | 19% 高速化 |
ゼロ知識証明プリミティブ:
| 操作 | 以前 | 以後 | 改善 |
| ECDSA S2C署名 | 38.8 μs | 33.6 μs | 13% 高速化 |
| ECDSAアダプタ暗号化 | 89.9 μs | 80.3 μs | 11% 高速化 |
| サジェクション証明生成 | 69.5 μs | 65.0 μs | 7% 高速化 |
これらのベンチマークは、Liquid上で構築されているすべてのウォレット、取引所、アプリケーションにとっての実世界でのパフォーマンス向上を意味します。署名の高速化は、より速いトランザクション構築を意味し、MuSig2の高速化は、より効率的なLightningチャネルを意味します。
メンテナンス作業
2.5年の間、libsecp256k1-zkpは、アップストリームであるlibsecp256k1の継続的な改善から遅れていました。Blockstream ResearchのエンジニアであるMariia ZhvankoとIllia Melnykは、包括的な同期作業を完了させ、これらのアップストリームの変更を統合して、フォークを本家と同等の状態に戻しました。
このメンテナンス作業には、アップストリームの改善とzkp固有のモジュールとの間の競合の解決、試験的な機能との互換性を確保するためのテストの更新、およびダウンストリームのプロジェクトで何も壊れていないことの検証が含まれていました。この同期には、libsecp256k1-zkpのMuSig2実装をアップストリーム版(もともとジョナス・ニックによってzkpで開発され、2024年10月にBitcoin Coreに移植されたもの)に合わせる更新も含まれており、その上でzkpフォークにのみ存在するアダプタ署名のサポートを再追加しました。
これは重要な点を示しています。Blockstream Researchは単にアップストリームの変更をlibsecp256k1-zkpに受動的にマージしているだけではありません。ジョナス・ニックとティム・ラフィングはアップストリームのメンテナーであるため、彼ら自身が多くの改善を執筆しています。彼らがStraussアルゴリズムを最適化したり、Bitcoin Coreのためにバッチポイント変換を実装したりすると、それらの同じ改善は即座にLiquidや、libsecp256k1-zkpを利用して構築しているエコシステム全体に利益をもたらします。MariiaとIlliaによる同期作業は、Liquidのプライバシーと機能を可能にする高度な暗号モジュールを維持しつつ、これらの改善が確実にzkpに流れるようにしています。これが、Blockstream Researchが両方のレイヤーにおいて重要なインフラストラクチャを維持するということです。
耐量子暗号の研究
libsecp256k1-zkpは現在、実用的な楕円曲線暗号に焦点を当てていますが、Blockstream Researchは耐量子(ポスト量子)の未来にも備えています。チームは最近、Simplicityを使用してLiquid上での耐量子署名検証を展開し、ユーザーが将来の量子コンピューターによる攻撃からLiquid Bitcoin (LBTC) を保護できるようにしました。
これは、Blockstream Researchのアプローチを象徴しています。今日のBitcoinとLiquidのための実用的な暗号技術を維持しながら、明日のBitcoinを守るための暗号スキームを開発しています。
なぜメンテナンスが重要なのか
暗号ライブラリは、派手な機能で評価されるものではありません。正確で、速く、メンテナンス可能であることによって成功します。libsecp256k1がBitcoinの標準となったのは、セキュリティとパフォーマンスを優先しているからです。外部依存関係のないC言語で書かれ、タイミングアタックに耐える定数時間(constant-time)アルゴリズムを使用し、Bitcoinメインネットで数十億ドルを保護することで実戦テストされています。
libsecp256k1-zkpはその厳格さを継承しつつ、Liquidのプライバシーと効率を可能にするコンフィデンシャル・トランザクションや高度な署名のサポートを追加しています。アップストリームの最新状態を維持することは、Liquid上で構築されるすべてのプロジェクトが、Bitcoin Coreを保護しているのと同じセキュリティ基準の恩恵を受けられることを意味します。
エコシステムのためのオープンソース
libsecp256k1-zkpはオープンソースであり、GitHubで自由に利用可能です。
Blockstream Researchは、自社製品のためだけでなく、Liquidエコシステム全体、および高度なBitcoinアプリケーションを構築するすべての人のためにこれをメンテナンスしています。今回のアップデートにより、コンフィデンシャル・トランザクション、MuSig2、またはその他の高度な暗号プリミティブを扱う開発者は、最新かつ高速で安全な基盤にアクセスできるようになります。
Bitcoin Coreのためのlibsecp256k1と、Liquidのためのlibsecp256k1-zkpの両方に対する積極的な取り組みは、Bitcoinインフラストラクチャに対するBlockstream Researchのコミットメントの一環です。それは派手ではありませんが、エコシステムを動かし続けるために不可欠な作業です。
Blockstream Researchの詳細については、blog.blockstream.com/researchをご覧ください。
Bitcoinにおけるlibsecp256k1の役割については、Bitcoin Magazineの記事「The Core Issue: libsecp256k1, Bitcoin’s Cryptographic Heart」をお読みください。