セキュリティ設計
信じないでください。検証してください。
このページのすべての主張は、守ると約束した方針ではなく、設計そのものの性質です。方針は経営とともに変わりますが、数学は変わりません。Keyvaci に保存した秘密に何が起きるのかを、そのままご説明します。
中核となる仕組み
秘密がたどる道のり、端から端まで
鍵はお使いの端末で生まれます
設定時、マスターパスワードは Argon2id(メモリ 64 MiB、総当たりに意図的に高い負荷をかける設定)を通ってマスター鍵を導出します。このマスター鍵が、個人の X25519 暗号鍵ペアと Ed25519 署名鍵ペアを保護します。マスターパスワードとマスター鍵がブラウザから出ることはありません。
組織が副署します
管理者が別の手段であなたの鍵の照合コードを本人と確認し、組織の署名鍵で副署します。それ以降、組織内のすべての端末は、何かを託す前にその鍵が本当に本人のものかを検証できます。
項目はクライアント側で封じられます
保管庫にはそれぞれ専用の鍵があります。保管庫の名前を含むすべての項目は、XChaCha20-Poly1305 の認証付き暗号によって、お使いの端末で暗号化されます。当社に届き、当社が保存するのは暗号文です。
共有は署名された暗号処理です
保管庫の共有では、副署の検証を経たうえで、その鍵を相手の公開鍵に対して暗号化し、別の鍵へ付け替えられないよう共有そのものにも署名します。取り消すと、保管庫は新しい鍵で暗号化し直されます。
正直な棚卸し
当社のサーバーが持っているもの
ゼロ知識という主張は、その棚卸しの正確さと同じだけの価値しかありません。これが当社の棚卸しです。
| データ | 実際に保存しているもの | Keyvaci に読めるか |
|---|---|---|
| 保管庫の項目(パスワード、メモ) | XChaCha20-Poly1305 の暗号文 | いいえ |
| 保管庫の名前 | 項目と同じ方式で暗号化した暗号文 | いいえ |
| あなたのマスターパスワード | 何も保存していません。送信されないためです | いいえ |
| 秘密鍵 | あなたのマスター鍵で封じられた暗号文 | いいえ |
| 組織の復旧鍵と署名鍵 | 何も保存していません。生成も保管もお客様側です | いいえ |
| 公開鍵と副署 | 平文(設計上、公開されるものです) | はい |
| メンバーの氏名とメールアドレス | 平文。アカウント運用に必要です | はい |
| 監査イベント(誰が、いつ、何をしたか) | 平文のメタデータ、追記のみ | はい |
| サインインリンク(メールサインインのみ) | SHA-256 ダイジェストのみ。一度だけ使え、送信から5分で無効になります。保持するサインインパスワードはありません | ダイジェストのみ |
率直に言えば、Keyvaci のデータベースが完全に侵害されても、得られるのは暗号文、公開鍵、メタデータだけです。保管庫を復号するために必要な材料は、そこには存在せず、盗みようがありません。
多層防御
暗号技術のまわりを固めるもの
表示のたびの再認証
認証情報を読むには直近の認証が必要で、任意で TOTP も使えます。セッショントークンだけで保管庫の項目が開くことはありません。
目的のあるレート制限
表示と保管庫を開く操作は利用者ごとに制限されます。乗っ取られ、再認証まで通ったセッションでも、組織の秘密を一括で持ち出すことはできません。
エッジでの防御
すべての通信は API の手前で WAF(マネージドルールセット、IP レピュテーション、レートルール)を通過し、API のオリジンはそこを経由しないリクエストを拒否します。
テナントの分離
すべてのレコードは組織を鍵として持ち、リクエストごとに検証され、CI で実行されるテナント間分離テストで守られています。
追記のみの監査
監査サービス自身のデータベース権限は、新しいイベントの書き込みだけを許可しています。改ざんは規程違反ではなく、権限エラーとして失敗します。
厳格なセッション
復号鍵はメモリ上にのみ存在し、ロック時、15分間操作がないとき、タブが隠れたときに消去されます。サインインの新しさと対象は、リクエストごとに IdP の鍵で検証します。
クライアントが増えても、規律は同じ
拡張とスマートフォンに許していないこと
ブラウザ拡張とスマートフォンアプリの追加は、多くの保管庫が自らの規律を静かに緩める場所です。何かが代わりに鍵を持っていてくれれば、パスワードの入力はずっと便利になるからです。以下は当社が緩めることを拒んだ箇所と、その拒否が払っている代償です。
| 規律 | どう強制しているか |
|---|---|
| 暗号化の実装はただ一つ | 拡張とスマートフォンは、Web アプリと同じ暗号化と同じ検証チェーンをソースとして利用します。ずれていく二つ目の実装は存在せず、パラメータの弱いクライアントもありません。スマートフォンで鍵導出をネイティブに 64 MiB のまま実行しているのは、まさにこの理由です |
| 署名検証に通らない項目は破棄する | Web アプリなら怪しい項目の横に警告を出す余地があります。自動入力のメニューにその会話の場所はありません。したがって組織署名、権限付与署名、作成者署名のいずれかに通らないものは破棄され、決して提示されません。検証できない出所からパスワードを入力することだけは、これらのクライアントが絶対にしてはならないことです |
| すべての開示が監査に残る | 表示、コピー、入力のいずれもコンソールと同じ監査付きの開示を通り、スマートフォンから他のアプリへの入力も含まれます。二つ目のクライアントは、この製品が売りにしているログを迂回する道ではありません |
| 人がいなければ自動入力は動かない | iOS のプロバイダーはシステムが用意する無人の経路を拒否し、毎回自身のプロセスでマスターパスワードを求めます。その要求に黙って答えられるということは、どこかに鍵が保管されているということです |
| メニューは開いているサイトしか知らない | 照合は厳密なホスト一致か、本物の親子関係のみで、部分文字列では決して行いません。ページのオリジンはページの自己申告ではなくブラウザから取得します。悪意あるサイトで誘導されたクリックは、もともとそのサイトのものだった認証情報しか入力できません |
| 鍵は放置時間ではなく期限で消える | ロック解除から10分後、拡張とスマートフォンは戻ってきたかどうかにかかわらず鍵を消去します。スマートフォンはアプリが画面を離れた瞬間にも消去するため、アプリスイッチャーが開いた保管庫を保持することはありません |
| 保管庫が会社のパスワードを見ることはない | Microsoft でのサインインは、ブラウザまたは OS が所有するウィンドウで行われます。拡張はそれをスクリプトで操作することも読み取ることもできません |
正直な例外がひとつあり、それを決めるのは読者ご自身です。Face ID を有効にすると、マスターパスワードがその1台に保存されます。端末のセキュアハードウェアが保護し、生体情報の登録内容が変わると自動的に無効化されます。既定では無効で、有効にする画面でこの取引をそのまま説明し、マスターパスワードは30日ごと、およびパスワード変更の直後に必ず再入力を求められます。生体認証だけが唯一の入口になる状態は決してありません。
限界も、はっきりと
ゼロ知識で解決できないこと
強みしか並べないセキュリティページは宣伝です。ここではこのモデルの境界と、それぞれに対して当社が講じた手当てを示します。
端末を守るのはお客様です
復号はお客様の端末で行われるため、メンバーの端末にマルウェアがあれば、その人が見えるものはマルウェアにも見えます。自動ロック、自動非表示、クリップボードの消去、表示の監査は、その隙を狭めますが、なくすことはできません。
復旧は実際の権限です
組織の復旧鍵は、どのメンバーの鍵も復元できます。つまり、そのメンバーの保管庫を読めるということです。設定時にすべてのメンバーへ平易な言葉でこれを伝え、復旧はすべて監査に記録されます。このキットは、名前どおりの最重要の秘密として守ってください。
鍵を失えばデータも失われます
メンバーがマスターパスワードを忘れ、組織も復旧キットを失った場合、そのデータは失われます。当社を含め、誰も取り戻せません。登録時にこの警告を繰り返しているのは、それがデータを読めないサーバーの正直な代償だからです。
この設計を実際に使ってみてください
14日間、全機能、カード不要。ご評価の間、keyvaci@xnorgroup.com にセキュリティ担当の厳しいご質問をお寄せいただけます。