Cardano のステークプール BKIND を運営する Smit Blockchain Operations は、日本時間 10 月 30 日 19 時 27 分、ネットワークにつながない端末で署名するための道具 SPO Tools・DRep Tools・Wallet Tools を、そろってバージョン 1.4.0 として GitHub で公開しました。このうち Wallet Tools は今回が初めての公開で、シードフレーズを持たない鍵で ADA やネイティブアセットの送受信と委任ができます。
SPO や DRep (委任代表者) の鍵は、プールの運営やガバナンスの投票そのものを左右します。これまで 3 つの道具はそれぞれ別の版で出ていましたが、今後は共通部品の airgap-core を含めて 1 つの版番号で出すとしています。同じ運営者が前日に出した兼任開示の CIP とは別の、道具のリリースです。何ができて、使う前に何を知っておくべきかを、リリースと各ツールの説明書から整理します。
オンラインの端末と署名の端末を、QR コードでつなぐ
3 つの道具はどれも、二つのプログラムの組で動きます。ネットワークにつながった端末で動く「オンライン側」と、ネットワークから切り離した端末 (エアギャップ) で動く「署名側」です。オンライン側が取引を組み立て、それを QR コードの断片として画面に出し、署名側がカメラで読み取って署名します。署名済みの結果も同じく QR コードで戻します。秘密鍵は署名側から一度も出ません。
どちらの側も、自分のブラウザで開く Web 画面で操作します。コマンドを打つ必要はなく、プログラムを起動してページを開けば作業できます。両者の間の通信は、最初に一度だけ行うペアリングの後、すべて暗号化されます。ペアリングでは両方の画面に出る 16 バイトの指紋を目で見比べ、一致しなければ途中に割り込んだ相手がいると分かる仕組みです。
要になるのは、署名側が取引の中身を自分で読み解いてから見せることです。説明書によれば、署名側はオンライン側の説明を信じず、取引の本体を自分で解読して、送り先・金額・手数料などが依頼と合っているかを確かめます。合わない依頼は、画面に出す前に断ります。オンライン側の端末がマルウェアに乗っ取られていても、最終的な確認はネットにつながらない画面の上で行える、という設計です。
SPO Tools と DRep Tools で増えたこと
SPO Tools は、ブロック生成の予定表 (leaderlog) の計算、KES 鍵の更新、報酬の引き出し、DRep への委任、プールの登録情報の更新、SPO としてのガバナンス投票をまとめて扱います。投票に添える理由書 (CIP-136) の署名にも対応しています。今回加わったのは、プールのメタデータの URL から実際に配信されているファイルを取りに行き、そのハッシュ値を計算する機能です。登録の証明書に、世の中から見えているファイルそのもののハッシュ値を載せられるようになりました。いずれの操作も、BKIND のプールでメインネット上の動作を確かめたと BKIND は書いています。
DRep Tools は、DRep の登録・更新・退役と投票、理由書の署名を扱います。更新や投票、署名つきの理由書を添えた投票は、DRep としての BKIND でメインネット上の動作を確かめたとしています。
前回の公開版 (7 月 22 日の 1.1) からの変更として、BKIND は次の点も挙げています。
- 外部の文書は https でしか取りに行かず、内部ネットワークのアドレスからは取らない
- 署名する鍵に属さないステークアドレスが入った依頼は、署名側が断る
- 配布するプログラムを再現可能ビルドにした (同じソースから誰がビルドしても同じものができる)
初めて公開された Wallet Tools
Wallet Tools は、資金を一人の管理者だけで動かすためのウォレットです。鍵は署名側の端末の中で生まれ、cardano-cli と同じ形式のファイルとして保存されます。24 個の単語のシードフレーズは作られないため、アプリに読み取られたり、偽のダウンロードで漏れたりする単語がそもそもありません。
できることは、ADA とネイティブアセットの送受信、プールへの委任、DRep への委任、報酬の引き出しです。自分のウォレットは最大 10 個までアドレス帳で管理でき、送金のたびにどのウォレットから払うかを明示して選びます。署名側には守りの仕掛けがいくつかあり、お釣りが元のウォレットに戻らない取引には署名しない、手数料が 3 ADA を超える取引には署名しない、署名の直前に両側で同じ暗証番号を打つ、といった確認が入っています。
説明書には、いまの制約も書かれています。動くのは Linux だけで、ハードウェアウォレットにはまだ対応していません (端末上での署名は今後の予定とされています)。
使う前に知っておきたい前提
もっとも大事な前提は、エアギャップを守るのはソフトウェアではなく使う人だという点です。署名側は起動時にネットワークから切り離されているかを確認する表示を出し、通信の有無も見張っていますが、説明書はどちらも「参考」にすぎないと明記しています。すでに署名側の端末に入り込んだ攻撃者はネットワークを戻せますし、仮想マシンの共有フォルダや USB、Bluetooth 経由のファイルのやり取りは検出できません。信頼の起点は、署名側の端末を物理的に切り離しておく運用です。
配布されているのは x86-64 (glibc 版と静的リンクの musl 版) と arm64 の Linux 向けプログラムで、改ざんがないかを照合するための SHA256SUMS が付いています。ソースは MIT か Apache 2.0 のどちらかを選べる形で公開されており、「信じて使う必要がないようにオープンソースにした」と説明書は書いています。そのうえで、署名する取引を画面で確かめ、結果に責任を持つのは使う本人だという免責も、同じ説明書に置かれています。
SPO と DRep の鍵を一つの道具立てで扱えるようになった一方で、3 つのツールは互いのコードを一行も含まない別のプログラムとして作られています。ウォレット用の署名側はプールのコールド鍵や DRep の鍵を読み込む欄そのものを持たず、どれか一つが破られても、ほかの役割の鍵には届かない設計です。版をそろえても、鍵の置き場所は役割ごとに分けたままにする。今回のリリースの作りは、そう要約できます。
この先の確認点は、GitHub のリリースページ (GS1973/Cardano-Tools) です。Wallet Tools の説明書が予定に挙げているハードウェアウォレットでの署名がどの版で入るか、そして次の版も 3 つのツールが同じ番号で出るかを、ここで追えます。
ことば
- エアギャップ — ネットワークから物理的に切り離した状態の端末のことです。鍵をこの端末にだけ置き、取引は QR コードで受け渡すことで、オンラインの端末が乗っ取られても鍵が外へ出ないようにします。
- KES 鍵 — ステークプールがブロックを作るときに使う、期限つきの鍵です。一定期間ごとに作り直す必要があり、SPO Tools はその更新の手順を署名側の端末で完結させます。
- CIP-136 — ガバナンス投票に添える理由書の書式を定めた CIP で、もとは憲法委員会の投票向けに作られました。SPO Tools と DRep Tools は、この形の理由書への署名を、取引とは別の手順として扱います。
一次ソース / 関連リンク
SPO Tools v1.4.0 のリリース (GitHub)(github.com)
DRep Tools v1.4.0 のリリース (GitHub)(github.com)
Wallet Tools v1.4.0 のリリース (GitHub)(github.com)
Wallet Tools の説明書 (README・v1.4.0 時点)(github.com)
- BKIND 公式 X の告知
https://x.com/BKINDSPO/status/2116146172523942207

