< ニュースルームに戻る

SSP のリリースが完全に再現可能に — Docker と GPG

·4 分で読める·SSP Editorial Team 著
SECURITY バッジの下にチェック付き盾・南京錠・プロセッサチップ・鍵のアイコンが並び、見出しは「SSP のリリースが完全に再現可能に」。

2025-08-03、SSP Wallet v1.25.0 は二つの変更を投入し、合わせるとウォレット配布における最古の、語られてこなかった弱点のひとつを塞ぎました。もはやストアのバイナリがリポジトリのバイナリだと信じる必要はありません。リリースは Docker 内で決定論的にビルドされ、GPG で署名されます。私たちだけでなく、監査人だけでなく、誰でもソースから再ビルドし、得たものが公開したものとバイト単位で一致することを検証できます。

信じるな、検証せよ — をウォレットのバイナリに当てはめる

「信じるな、検証せよ」というビットコインの格言は普通トランザクションについて言われます。同じ強さで、トランザクションに署名するソフトウェアにも当てはまります。ウォレットのコードはオープンで監査済みでも、それでも改ざんされたバイナリを出荷し得ます。なぜならコードからバイナリに至る経路はビルドサーバー、パッケージング工程、コード署名鍵、ストアへのアップロードを通るからです。どの環も毒を盛られ得ます。漏れた CI トークン、パイプラインで入れ替えられたバイナリ、手を加えられたビルドエージェント — そのいずれも公開リポジトリには触れず、git log からは見えません。

その脅威モデルへの防御的な答えは、バイナリ自体が検証可能でなければならない、というものです。「約束するから検証可能」ではなく、見知らぬ他人によって再現可能、という意味で。

Docker による決定論的ビルド

それを実現するのが v1.25.0 です。SSP のリリースはいずれも、ベースイメージとツールチェーンのバージョンを固定し、完全に隔離した環境の Docker コンテナ内でビルドされます。ビルドは不要な所ではネットワークアクセスを持たず、ホストのファイルシステムを漏らさず、出力にタイムスタンプもマシン固有パスも焼き付けません。出力は入力の決定論的関数です。

実務上の帰結:同じソースコードは、一致するチェックサムを持つ同じバイナリを生みます。タグを取り、文書化されたコンテナで自分のマシンでビルドすれば、私たちと同じ SHA-256 が得られます。得られなければ、タグと公開バイナリの間で何かがずれているということ — そしてそれこそ欲しい合図です。唯一誠実な結果は「バイナリはコードと一致」か「しない」のどちらかしかありません。

これがサプライチェーン攻撃の緩和策です。ビルドサーバーが正直だとは仮定しません。開発者のラップトップが清潔だとも仮定しません。何も仮定せず、確認する道具を見知らぬ他人の手に渡します。

GPG 署名されたリリース

再現性はバイナリがあるソースツリーに対応することを告げます。それ自体ではどのソースツリーが本物かは告げません。それを解決するのが GPG 署名です。

v1.25.0 の各アーティファクト — 拡張機能バンドル、チェックサムファイル — は SSP のリリース鍵で署名されています。署名は GitHub のリリースの隣に公開されます。ダウンロードを検証するには、公開鍵を一度インポートし、署名に対して gpg --verify を実行すれば、ツールがファイルが無傷か、署名した鍵が期待するものかを伝えてくれます。

二つの機構は合成します。GPG 署名は「これは SSP が公開したファイルだ」を証明します。決定論的ビルドは「このファイルはこのコミットに対応する」を証明します。両者でコミットからインストールまでの信頼の隙間が消えます。

リリースを自分で検証する方法

GitHub のリリースページが正確な手順の権威ある情報源です — 公開鍵のフィンガープリント、署名ファイル名、ビルドを再現する Docker コマンド。短くまとめれば:SSP のリリース鍵をインポートし、チェックサムファイルとその署名を取得し、署名に gpg --verify を、ダウンロードしたバイナリにチェックサムで sha256sum -c をかけます。両方通れば、アーティファクトは無傷で本物です。

さらに進みたいパワーユーザーはタグをクローンし、文書化された Docker ビルドを実行し、得られた SHA-256 が公開チェックサムと一致するか確認できます。ほとんどのユーザーはやらないでしょう。要点は、何人かはやる、そしてそのうち一人でも食い違いを見つけた瞬間に攻撃は即座に露見する、という点です。

これが変えるもの

SSP は v1.0.0 からオープンソースであり、2025 年初の全面レビュー以降、Halborn により端から端まで監査されています。v1.25.0 はその三角形の三辺目を閉じます。オープンソースとはコードを読めるということ、監査済みとは専門家がそれを精査したということ、再現可能かつ署名済みとは、あなたのマシンで動くものが実際にあなたの読んだコードだということです。

三つの保証は独立で、合成します。再現できないオープンソースのバイナリは、ビルドパイプラインに依然として侵害を隠せます。再現できない監査済みプロジェクトは、監査人が見たことのない改ざんバイナリを出荷し得ます。v1.25.0 によって「インストール前に検証」は願望でなく、具体的なチェックリストになります。

これがセルフカストディウォレットのサプライチェーンの物語、唯一誠実に語り得る形で語られた姿です。

この記事をシェアする

関連記事