
重要な操作:なぜ一部の操作は 2 台の端末を再び求めるのか
ログインしています。管理者ロールを持っています。「メンバーを削除」をクリックします——すると SSP は、まるでゼロからログインするかのように、2 台の端末での署名を求めます。
これは摩擦のための摩擦ではありません。セッショントークンが認可できてよい操作と、そうでない操作のあいだに意図して引かれた線であり、その線の背後にある考え方は、SSP を使っているかどうかにかかわらず理解する価値があります。
セッションは利便性のためであって、結果のためではない
セッショントークンは持参人式の資格情報です。サーバーから見れば、それを持っている者があなたです。それこそがセッションを便利にしているもの——一度認証すればあとは自由に動ける——であり、それこそが取り返しのつかない判断の土台として不適切な理由です。
セッションは盗まれます。クロスサイトスクリプティングの不具合、ロックしていないノートパソコン、マルウェア、流出したバックアップ、あるいは共有オフィスで開けっ放しのブラウザによって。OWASP のセッション管理の指針は、セッションの窃取を例外的な事象ではなく想定される状態として扱っており、そうでないと仮定する設計はどれも楽観的です。
ほとんどの操作についてこれは受け入れられるリスクです。ほとんどの操作は取り消せるからです。Vault の名前変更、ビューアの追加、通知設定の調整——盗まれたセッションを持つ攻撃者がこれらを行っても、あなたが元に戻せます。
そうではない操作があります。組織の所有権の移転は、支配権を他人に渡します。メンバーの除名は、その人のアクセスを断ちます。組織の削除は最終的です。これらについて SSP は、行為者がいまこの瞬間も両方の端末を保持しているという証明を要求します。その日の早い時間に保持していた、ではありません。
13 の操作
13 の操作が再署名を要求します。それらは 4 つのまとまりに分かれます。
組織の支配権
- 所有権を移転する
- 組織を削除する
メンバーシップと役割
- メンバーを除名する
- メンバーを管理者に昇格する
- 管理者を降格する
アカウントのアイデンティティ
- 企業メールアドレスを変更する
- 企業メールアドレスを削除する
Vault のライフサイクルと管理
- Vault をアーカイブする、そしてアーカイブから戻す
- Vault を凍結する、そして凍結を解除する
- Vault 管理者を昇格する、そして降格する
これらを結びつけているのは、お金を動かすことではありません。どれも動かしませんし、動かせません。資金を動かせるのは署名者だけだからです。これらを結びつけているのは、その後に誰が何をできるかを変える点です。攻撃者がアクセスを固め、本来の所有者を締め出し、あるいは後日の窃取に向けて静かに準備するために欲しがる操作が、まさにこれらです。
注目すべきは、メール関連の操作が一覧に含まれていることです。アカウントの企業メールアドレスを変更するのは事務的に見えますが、アカウント乗っ取りの古典的な初手です。復旧チャネルを付け替え、あとはゆっくり作業する。これに 2 台の端末を要求することが、その道を塞ぎます。
なぜチャレンジをサーバーが書くのか
仕組みは要件と同じくらい重要で、ある設計判断がその大半を担っています。
あなたが署名するメッセージはサーバーが生成します。クライアントは決して生成しません。

もしクライアントが自分でチャレンジを組み立てるなら、侵害されたクライアントは都合のよいものを組み立てられます——無害な操作を記したメッセージを、無害なことをしていると信じたユーザーが署名し、それを危険なエンドポイントへ再生する。サーバーがメッセージを書くということは、あなたが署名するものが実行されるものである、ということです。サーバーは自分が発行したメッセージに対してのみ署名を検証するからです。
これは SSP がログインで用いるのと同じ型であり、署名に基づく認証を一般に安全にしているのと同じ型でもあります。検証する当事者から受け取ったのでないものには、決して署名しない。
チャレンジは何に結び付いているのか
メッセージは一般的な「はい」ではありません。4 つの要素を含む具体的な文字列であり、それらが合わさって、捕捉された署名を他のどこでも無用にします。
正確な操作。 remove_member と transfer_ownership は異なるメッセージを生みます。一方への署名が他方を認可することはありません。
正確な対象。 組織、該当する場合は Vault、そして操作の対象となる人物が、メッセージの中で名指しされます。Vault を対象とする操作は Vault の ID を明示的に含むため、ある Vault の凍結のための署名を別の Vault の凍結に再生することはできません。
タイムスタンプ。 メッセージの先頭 13 文字を占めます——固定の位置です。SSP Wallet が何かを表示する前にこの形式を検証するからです。チャレンジは 15 分で失効します。
ランダムな nonce。 12 バイトの暗号論的乱数であり、同一の対象に対する同一の操作が同じ秒に行われても、各チャレンジを一意にします。
そしてチャレンジは使い切りです。引き換えられると、サーバーはそれを検証するのと同じアトミックな操作の中で使用済みに印を付けます。したがって再生された署名は、静かに二度成功するのではなく「すでに使用済み」として拒否されます。失効したチャレンジは TTL インデックスが自動で片付けます。
あらゆる試行が記録される。失敗したものも含めて
重要な操作は恒久的なログに書かれますが、ここに見落としやすい細部があります。ログの記載はチャレンジが要求された時点で書かれます。操作が完了したときだけではありません。
つまりログには、途中でやめた試行、署名に失敗した試行、拒否された試行が含まれます。単発の失敗した重要操作は、たいてい気が変わっただけの誰かです。それが午前 3 時にまとまって現れるなら、それは物語です。
SSP の他の監査証跡と同じく、これらの記録に有効期限はなく、掃除ジョブもありません。監査ログの価値は、必要になると誰も予想しなかった部分に丸ごと宿ります。
実際にはどう見えるか
始める前に 2 台の端末を手元に。 重要な操作は 1 台では完了できず、チャレンジは 15 分で失効します。スマートフォンが別の部屋にあるなら、先に取りに行ってください。
操作をダッシュボードだけでなくスマートフォンでも読む。 端末が表示するメッセージは操作と対象を名指しします。対象が想定した相手でないと気づく機会がそこにあります——トランザクションを確認するときにあなたを守るのと同じ習慣です。暗号資産ユーザーを狙うフィッシング攻撃が、2 台目でのその一瞥がかける数秒に見合う理由を扱っています。
まとめて処理しない。 重要な操作はそれぞれ固有のチャレンジと固有の署名を持ちます。退職する 3 人を外すなら、署名は 3 回です。これは意図的です。まとめるとは、1 つの署名が複数の変更を認可することであり、まさに避けたい性質だからです。
最悪のタイミングで来るものと心得る。 重要な操作は、誰かが去るとき、アカウントが侵害されたとき、Vault を凍結すべきときに集中します。つまり人が張り詰めていて、早く進めたいと思っている瞬間です。これらに 2 台が要ると前もって知っておけば、不意打ちが手順に変わります。
何が何を強制しているのかという広い見取り図——そしてなぜ再署名が最強の層ではなく中間の層に位置するのか——はトランザクションを実際に止めているものは何かにあります。組織とその Vault の組み合わさり方は、SSP Enterprise:チームのためのマルチシグ Vaultから始めてください。


