ブログ一覧に戻る
セキュリティ

ウォッチオンリーウォレット入門:すべてを見て、何にも署名しない

大きな目が残高パネルとアドレスを見つめ、鍵は打ち消し線付きの円の中に収まっている。ウォッチオンリーウォレットはすべてを見て、何にも署名しない

あらゆるウォレットアプリは、まったく性質の異なる2つの仕事を1つの画面に同居させています。保有資産を表示することと、それを動かすことです。ウォッチオンリーウォレットは、この2つを切り離します。取り込むのはアドレスの一覧や拡張公開鍵(xpub)といった公開情報だけで、秘密鍵にかかわる情報は一切保持しません。その結果、ウォレットの持つ力のちょうど半分だけが手に入ります。残高の表示、履歴の追跡、受取アドレスの生成、さらには署名を待つばかりの取引の作成までできる。しかし、署名だけは決してできません。ウォッチオンリーウォレットがどれほど完全に侵害されようとも、有効な署名が生まれることはない——署名に必要な材料が、そもそもそこに存在しないからです。

制約のように聞こえますし、実際に制約です——ただし、意図された制約です。「見る」と「署名する」の分離は、本格的なコールドストレージ構成のすべてを静かに支える背骨です。インターネットに面した端末はすべてを知りながら何もできず、鍵は何にも接続しない端末の中に住んでいる。本記事では、ウォッチオンリーウォレットの仕組み、できることとできないこと、多くの人が意外に思うプライバシー上の注意点、そしてこの分離が日々の運用でどう回るのかを解説します。

1つのシード、2種類の鍵

すべては、言葉にするのは簡単でも、その重要性はいくら強調してもしすぎることのない、ある非対称性の上に成り立っています。秘密鍵は署名を生成し、対になる公開鍵はその署名を検証することしかできません。秘密鍵から公開鍵を計算するのは一瞬ですが、その逆をたどることは、システム全体が拠って立つ困難な問題です。アドレスはさらに公開鍵から導出されるため、情報はシード、秘密鍵、公開鍵、アドレスという一方向にのみ流れ、決して鎖をさかのぼることはありません。

階層的決定性ウォレット——2012年に導入され、今やほぼ普遍的となった BIP32 標準——は、この非対称性を単一の鍵からウォレット全体へと拡張します。1つのシードが鍵ペアのツリーを生成し、そのツリーにはツリー自身の公開側が存在します。それが拡張公開鍵、すなわち xpub です。xpub はウォレットが将来使うことになるすべての受取アドレスを導出できますが、秘密鍵はただの1つも導出できません。その xpub を別のアプリに取り込めば、ウォレットの公開面——過去も未来も含めた、すべてのアドレス、すべての残高、すべての取引——を完全に再構築できます。しかも、その中には送金できるものが何ひとつ入っていない。これがウォッチオンリーウォレットです。エンジンを取り外した、完全な地図なのです。

できること——そして、その限界

具体的には、xpub から構築したウォッチオンリーウォレットには次のことができます。

  • 残高と履歴の表示。導出されたすべてのアドレスを横断して表示し、入金の到着と承認に合わせて更新されます。
  • 新しい受取アドレスの生成。秘密鍵に一切近づくことなく入金を受け付けられます。
  • 未署名取引の作成。コインを選び、手数料を設定し、送金先を指定して、別の署名者が読み取って承認できる標準形式(Bitcoin では通常 PSBT)にまとめます。
  • 署名済み取引のブロードキャスト。署名が別の場所から届いた後に送信します。

そして、これで全部です。署名も、送金も、資産の引き抜きも、いかなる承認も、どんな状況下でもできません。取引を最後の1バイトまで準備することはできても、決定的な行為はつねに別の場所で行われます。これが動くスマホを盗んでも、手に入るのは「眺め」だけ。この名前は控えめなのではなく正確なのです。このウォレットは、本当に見ているだけなのですから。

ウォッチオンリーのビューは、あなたが持つ最も露出した端末を、最も危険の少ない端末に変える。
ウォッチオンリー側は残高表示・受取・未署名取引の作成ができるが、署名には打ち消し線が引かれている。秘密鍵は別のオフライン端末にある
3つの機能はオンラインに残り、4つ目は決してオンラインに出ない。

コールドストレージがこの分離の上に築かれる理由

コールドストレージは、その核心に矛盾を抱えています。眼目は秘密鍵をインターネットに接続された機器へ一切触れさせないことにある——それでいて、残高は見たいし、入金は受けたいし、いずれは送金もしたい。そのすべてがネットワークを必要とします。何かが中間に立たなければならず、その役目を担うのがウォッチオンリーウォレットです。

標準的なループは次のとおりです。オンライン端末上のウォッチオンリービューが未署名取引を作成し、エアギャップ越しに——通常は QR コードまたはファイルとして——手渡します。鍵を保持しネットワーク接続を持たないオフラインの署名端末は、承認を求められている内容を表示し、署名して、署名だけを返します。そして見張り側がブロードキャストします。鍵はどちらの方向にも動きません。未署名取引が一方向に渡り、署名が逆方向に渡るだけです。決定的に重要なのは、シードフレーズをオンライン経験のある機器に入力することも、復元することも、見せることさえも一切必要ないという点です。シードフレーズは単一障害点である以上、ネットワークにつながる機器から完全に遠ざけておくことには、多少の手間をかける価値があります。

ハードウェアウォレットも、包装が違うだけで同じアーキテクチャです。パソコン上のコンパニオンアプリは機能的にはウォッチオンリーウォレットであり、ケーブルの先の機器が署名者です——どちらの形でも健全な設計です。違いは伝送手段(USB や Bluetooth か、境界を越える際に中身を検査しやすい QR コードか)と、専用ハードウェアをそもそも購入するかどうかにあります。Ownbit のコールドウォレット運用は、この QR 版を普通のスマホ2台で実装しています——詳しくは後述します。

プライバシー上の注意点:xpub は地図である

ウォッチオンリービューの「送金面での安全性」ゆえに、人は xpub の扱いに無頓着になりがちですが、それは正しておくべき誤解です。あなたの xpub を手にした者は誰でも、あなたのウォレットが使ったことのある、そして今後使うことになるすべてのアドレスを見ることができます——残高の全体と履歴の全体が、永久に更新され続ける形で。奪うことは何もできませんが、すべてを見張ることはできる。多くの保有者にとって、それは資産そのものに劣らず機微な情報です。しかも、漏れた xpub をひっそりと差し替えることはできません。本当の逃げ道はただ1つ、新しいシードから作った新しいウォレットへ資金を移すことだけです。

したがって、xpub は技術的には公開鍵の一種であっても、機密情報として扱ってください。取引相手に渡すのは個別のアドレスであって、決して xpub そのものではありません。取り込む先は、あなたの金融履歴のすべてを預けてもよいと思えるアプリやサービスだけに限ること——ポートフォリオトラッカーは便利ですが、それは同時に、その運営者への恒常的な開示でもあります。xpub の広い共有が本当に避けられない唯一の場面はマルチシグです。共同署名者は共有ウォレットを構築するために xpub を交換しなければなりませんが、これはすでにカストディを分かち合う者同士の間で行われる、範囲の限定された意図的な開示です。

1つの xpub から枝分かれするアドレスのツリーが導出され、xpub を持つ者にはそのすべてが見える。打ち消し線付きの鍵は、秘密鍵が一切含まれないことを示す
1つの文字列がすべてのアドレスを——残高まで含めて——明かすのに、そのどれからも送金はできない。

ウォッチオンリーウォレットの実際の使いどころ

コールドストレージとのペアリングが代表的な用途ですが、このパターンは日常的な場面でも十分に役立ちます。

  • 長期保有資産のモニタリング。ポケットのスマホから貯蓄に目を配りつつ、送金する力までは持ち歩かない。
  • 入金の確認。取引所からの出金や請求書の支払いが実際に着金したことを、資金を動かせるものを一切アンロックせずに確かめられます。
  • 送金権限なしの閲覧権限。会計士も、監査人も、共同創業者も、トレジャリーの履歴を追跡できる一方で、資金には一切手を触れられません——「読む」と「書く」が、本来ずっとそうあるべきだったように、別々の権限になります。
  • 共有マルチシグの見守り。2-of-3 マルチシグの参加者全員がウォレットをリアルタイムで追跡できる一方、送金には引き続き定足数が必要です。可視性は全員に開かれ、権限はしきい値の内側に留まります。

Ownbit がウォッチウォレットとオフラインのスマホを組み合わせる方法

Ownbit はこの分離を、上級者向けの機能としてではなく、第一級のフローとして組み込んでいます。恒久的にオフラインへ置いた余ったスマホが署名端末になります。標準の BIP39 シードフレーズを生成して保持し、何にも接続しません。普段使いのスマホではウォッチウォレット——ウォッチオンリー側——が動き、ウォレットのアドレスを把握し、残高を表示し、未署名取引を組み立てます。送金の際は、ウォッチウォレットが未署名取引を QR コードとして表示。オフラインのスマホがそれを読み取り、これから署名する内容を正確に表示したうえで署名し、その署名を別の QR コードとして表示します。それをオンラインのスマホが読み取り返してブロードキャストする。境界を越えるのはこの2つの QR コードだけで、追加のハードウェアは一切不要です。すでに Ledger や Trezor をお持ちなら、同じニーモニックをオフラインのスマホに取り込んで、既存の鍵をコールドマルチシグへ持ち込むこともできます。

この信頼境界は、他の誰に対してと同じように、私たち自身にも適用されます。Ownbit のサーバーは署名を調整しますが、ユーザーの鍵を保持することは決してありません。すべての鍵は標準の BIP39 シードフレーズであり、セキュリティモデルは Ownbit のサーバーがなくても復元が機能するように設計されています。独立に検証できないウォッチオンリービューは、信頼を強いられる画面がもう1つ増えるだけのこと——このアーキテクチャの眼目は、その信頼を強いられない点にあります。

よくある質問

ウォッチオンリーウォレットはハッキングされ得ますか?

侵害されることはあり得ますが、攻撃者が得るのは可視性であって資金ではありません。盗むべき秘密鍵の情報が存在しないため、署名を偽造することはできないのです。現実的な危険はむしろ欺瞞にあります。オンライン端末上のマルウェアが、すり替えた受取アドレスや改ざんした取引を表示するかもしれません。署名前に取引の真の内容を表示するオフライン署名端末が重要なのはまさにこのためであり、高額の入金では署名端末側でアドレスを確認する価値があるのもこのためです。

xpub を共有しても安全ですか?

送金の面では安全ですが、プライバシーの面では要注意です。xpub で資金を動かすことはできませんが、それを持つ者は、あなたのウォレットが導出するすべてのアドレスを、残高と履歴の全体とともに、いつまでも見ることができます。取引相手には個別のアドレスを渡し、xpub は、あなたの金融状況の全体像を預けてもよいと思える端末・サービス・共同署名者のためだけに取っておいてください。

ウォッチオンリービューから暗号資産を送金できますか?

それ単体ではできません。ウォッチオンリーウォレットは未署名取引の作成と署名済み取引のブロードキャストはできますが、署名そのものは秘密鍵を保持する端末——オフラインのスマホ、ハードウェアウォレット、あるいは別の署名者——から来なければなりません。2つの半身がペアになって初めて、完全な送金フローが成立します。

ウォッチオンリービューとコールドウォレットの違いは何ですか?

両者は1つの設計の2つの半身です。コールドウォレットは鍵を保持して署名するオフライン端末であり、ウォッチオンリーウォレットは鍵を持たずに、ネットワークが必要とするすべて——残高、受取アドレス、未署名取引、ブロードキャスト——を担うオンラインの窓口です。両者を組み合わせれば、日常の使い勝手を犠牲にすることなく、鍵を恒久的にオフラインへ保てます。

何も買わずにこの分離を試してみたいなら、Ownbit のコールドウォレット運用が、余ったスマホをオフラインの署名端末に変え、普段使いのスマホ上のウォッチウォレットと組み合わせます——未署名取引が入り、署名が出て、鍵は決してオンラインに出ない。より広いセキュリティモデルも同じ「信頼の最小化」という原則の上に築かれており、メンバーシップの有無にかかわらず、鍵はあなたのものであり続けます。新規ユーザーは全員、7日間の無料トライアルをご利用いただけます。