署名鍵とセキュリティキー
Vela のウォレットは Safe であり、Safe には所有者がいます。あなたのウォレットは所有者を最大 7 つまで持て、しきい値は 1 です。つまり、どの署名鍵も単独で取引を承認できます。これを 1-of-n と書きます。
何が署名鍵になれるか
3 種類あり、自由に組み合わせられます。
| 方式 | 中身 | 典型的な例 |
|---|---|---|
| プラットフォーム | いま使っている端末に内蔵された認証器 | このスマートフォンやノート PC の Face ID / Touch ID。iCloud キーチェーンや Google パスワードマネージャーが同期 |
| 近くの端末 | コードを読み取ってつなぐ別の端末 | デスクトップの代わりにスマートフォンが署名する。WebAuthn の hybrid トランスポートを使用 |
| セキュリティキー | USB や NFC でつなぐ、取り外しできる認証器 | YubiKey などの FIDO2 キー |
3 つとも P-256 曲線上の WebAuthn クレデンシャルです。Safe から見れば区別はありません。どれも所有者で、Safe のパスキーモジュールがオンチェーンで同じやり方で署名を確認します。(最初の鍵は Safe の共有署名器が検証し、追加の鍵はそれぞれ専用の小さな署名器コントラクトが検証します。この署名器は、ウォレットがそのチェーンに初めてデプロイされるときに、Safe のファクトリーが作成します。)
各アプリで使える鍵の種類は次のとおりです。
| アプリ | この端末 | 近くのスマホ(QR) | セキュリティキー |
|---|---|---|---|
| ウェブウォレット、ブラウザ拡張 | 対応 | 対応 | ブラウザ経由で USB または NFC |
| デスクトップ(macOS、Windows、Linux) | macOS と Windows | 対応 | USB |
| Android | 対応(Google Play 開発者サービスが必要) | 対応 | USB |
| iOS | 対応 | 対応 | USB-C または Lightning の YubiKey(ファームウェア 5.8 以降) |
デスクトップアプリの「この端末」(Touch ID、Windows Hello)と、Windows 対応全般はまだ新しく、ほかの方法ほどテストされていません。いまのところデスクトップでは、スマートフォンかセキュリティキーが確実な選択です。
セキュリティキーは予備としてだけでなく、最初の署名鍵にもできます。ウォレットを Apple や Google のアカウントにまったく依存させたくないなら、セキュリティキー 2 本で作成し、1 本は安全な場所に保管してください。(どこにも同期されない鍵が 1 本だけのウォレットは作成できません。その端末ひとつをなくせばウォレットを失うため、アプリが 2 本目の鍵を求めます。)
なぜ作成時に選ぶのか
ここは驚かれるところなので、言い訳ではなく仕組みを書きます。
ウォレットのアドレスは、所有者の組から導出されます。Vela は Safe のセットアップデータ(すべての署名鍵の公開鍵を含みます)から CREATE2 でアドレスを計算します。しかも、オンチェーンに何かがデプロイされる前にです。だからこそ、まだ存在しないアドレスで資金を受け取れます。
アドレスについて言えば、そこから導かれるのは単純な計算の結果です。鍵の組が違えば、アドレスも違います。あとから署名鍵を 1 本足しても、いまのウォレットが拡張されるわけではありません。新しいアドレスに、資金がまったく入っていない新しいウォレットが計算されるだけです。
そのため「あとから鍵を追加できますか?」という質問には、正直な答えが 2 つあります。
- 資金を入れる前なら:できます。そのアドレスはまだ何にも使われていないので、望む鍵でウォレットを作り直してください。
- 資金を入れたあとなら:そのアドレスこそが資金の在り処です。ウォレットがすでにデプロイされているチェーンでは、Safe 自体は所有者を変更できます。しかし、まだデプロイされていないすべてのチェーンでは、同じアドレスが元の鍵の組を表したままなので、チェーンごとに所有者の組が食い違っていきます。チェーンをまたいで所有者をそろえ続けることは可能で、実際にそうしているスマートウォレットもありますが、Vela はそれを実装していないため、所有者の変更は提供していません。鍵の組は作成時に計画してください。
これで実際に何が守られるか
端末の紛失。署名鍵が複数あれば、スマートフォンをなくしても不便なだけで済みます。別の鍵で署名できるからです。鍵が 1 本きりで OS の同期もオフなら、スマートフォンをなくすことはウォレットを失うことです。だからこそ「パスキーは自動で同期されます」というのは、あなたが操作できる設定の説明であって、私たちがあなたに代わって約束できることではありません。
もう信頼できなくなったプラットフォームのアカウント。パスキーが iCloud キーチェーンや Google パスワードマネージャーにあるなら、そのアカウントを握った人がそれを使える可能性があります。セキュリティキーはあなたの手元にあり、どこにも同期されません。
そして、1-of-n は両刃なので、守れないこともあります。鍵を 1 本足すのは、2 つ目の錠をかけることではなく、2 つ目の入り口を足すことです。あなたの署名鍵のどれか 1 本でも手に入れた人は、単独で署名できます。鍵が増えるほど紛失には強くなり、盗難に対しては狙われる面が広がります。それがトレードオフであり、どうするかを決めるのはあなたです。
鍵が漏れたかもしれないとき
鍵は削除できません。鍵のどれかが他人の手に渡ったかもしれないとき(ロックを解除したまま紛失したスマートフォン、誰かに見られたパスコード、もう自分で管理できなくなった Apple や Google のアカウント)は、信頼できる鍵で作った新しいウォレットにすべてを移してください。古いアドレスは、どのネットワークでもその鍵で引き続き資金を動かせます。あとから誰かがそのアドレスに送った資金も同じです。
復旧と、追加は別のこと
この 2 つは別物なので、ドキュメントでも分けています。
- 復旧とサインイン —— すでに持っている鍵で、新しい端末から既存のウォレットに戻ること。
- このページ —— そもそもどの鍵を存在させるかを、前もって決めること。