セキュリティ

セキュリティアーキテクチャ

Rust/Tauri スタック、.rkvey v5 フォーマット、コンパートメント、遅延復号、脅威モデル。

QubKey のセキュリティは 多層アーキテクチャ多層防御(Defense in Depth) の原則に基づいています。ファイルシステム、.rkvey v5 フォーマット、暗号化、Rust アプリケーションコアが、保存からロック解除まで、あらゆる段階でシークレットを保護します。

各レイヤーは相互に補完する保証を提供します。システムレベルの保護(例:ディスク暗号化なし)が欠けていても、アプリケーション層と暗号化層は引き続きボルトを保護します。フォーマット v5 では、エントリのシークレットは 表示またはコピーするときだけ復号 されます — ボルトを開いたときや一覧表示時には復号されません。

UI

インターフェース (React + Tauri)

  • 保管庫
  • フォルダー
  • 検索
  • ジェネレータ
  • ワンタイムコード
  • ダッシュボード
  • 同期
  • 共有
  • ブラウザ拡張機能
Core

Rust コア (QubKey コア)

  • .rkvey v5 形式
  • Argon2id の導出
  • 認証された暗号化
  • 検索インデックス
  • 安全なコミット
  • メモリーワイプ
  • クラッシュリカバリー
Storage

ファイルシステム上の .rkvey v5 ファイル

  • 前文
  • 暗号化されたヘッダー
  • 暗号化されたインデックス
  • 秘密のコンパートメント
  • 添付ファイル
  • コミット履歴

セキュリティレイヤー

ロック解除フロー

ロック解除は厳密なパイプラインに従います:マスターパスワードが Rust コアに渡され、Argon2id がマスターキーを導出し、サブキーがヘッダーと B-Tree インデックスを復号します。エントリの コンパートメント(シークレット、添付)は暗号化されたままで、必要なときだけ 読み取られます。ロック時にはすべての鍵とシークレットがメモリから消去されます。

マスターパスワード + ソルト

.rkvey プリアンブル (平文)

  • Rust コア (Tauri IPC) に組み込まれています - WebView に公開されることはありません
  • プリアンブル (16 バイト) に格納されたランダム ソルト
KDF

Argon2id

  • 64 MB RAM · 3 iter · p=4 (デフォルト `KdfParams`)
  • GPU/ASIC耐性
  • プラットフォームに応じて調整済み ~250 ~ 500 ミリ秒

マスターキー

256 ビット · `KeyManager::derive_master_key`

サブキーの導出

HKDF-SHA256(マスター、ソルト=ファイル∥エントリ、情報=種類)

ヘッダーキー

セキュアヘッダー

インデックスキー

B ツリー インデックス

コンパートメントキー

コンパートメント

AEAD復号化

  • AES-256-GCM または XChaCha20-Poly1305
  • ヘッダー、インデックス、コンパートメント (オンデマンド)

ロック解除後のメモリ

  • リスト/ビュー: メタデータのみ
  • シークレットと添付ファイルはオンデマンドでのみ復号化されます

ロック

  • `KeyManager::clear_keys()` + ゼロ化
  • シークレットが消去され、クリップボードがクリアされました

脅威モデル

QubKey はローカルパスワードマネージャーで最も一般的な脅威シナリオ向けに設計されています。下表は攻撃ベクトルと組み込みの対策(.rkvey v5 フォーマット)を示します。

脅威ベクトルQubKey の対応
不正なファイルアクセス.rkvey の盗難またはコピーAEAD 暗号化 + Argon2id 導出
ネットワーク窃取クラウド傍受 / MITMLocal-first:QubKey はシークレットをアップロードしません
データ破損書き込み中のクラッシュ検証済み追記専用コミット + 起動時復旧
ボルト改ざん手動でのファイル変更コンパートメントごとの AEAD 認証 + チェックサム
メモリダンプ(閲覧中)ボルト解錠、一覧 / 表示表示するまでシークレットは暗号化されたまま
弱いマスターパスワードオフライン総当たりキャリブレーション済み Argon2id(約 500 ms)+ エントロピー計測
パスワードの使い回し他サイトでの漏洩セキュリティダッシュボード(ローカル検出)
クリップボード漏洩シークレットのコピークリップボードタイムアウト(30 秒)+ ロック時消去
サイドチャネル攻撃暗号操作のタイミング定数時間実装(RustCrypto)

ベストプラクティス

このモデルは、QubKey がアーキテクチャで直接対処する脅威をカバーします。最適な保護のため、QubKey とシステムのベストプラクティスを組み合わせてください:ディスク暗号化の有効化、OS の最新化、強力なマスターパスワード。

組み込み保護

領域QubKey がデータを保護する方法
保存時(at rest)AEAD(AES-256-GCM / XChaCha20)、Argon2id 鍵、コンパートメントごとの独立鍵
ボルト整合性検証済み追記専用コミット、チェックサム、原子的書き込み
機密性Zero-Knowledge:シークレットはデバイス上で暗号化されたまま
遅延復号一覧・表示ではシークレットなし;表示 / コピーは必要時のみ
鍵導出キャリブレーション済み Argon2id(約 500 ms、64 MB)でマスターパスワードを保護
アプリケーション分離された Rust コア、Tauri IPC 経由の UI、ロック時 Zeroization
ブラウザ拡張ローカル Native Messaging — 拡張機能はマスターパスワードを取得しません
同期オプションの暗号化マルチデバイス同期(クラウドまたはセルフホスト)、または暗号化 .rkvey ファイル(クラウド、USB、NAS)

信頼アーキテクチャ

Zero-knowledge

QubKey は複数の補完的なレベルで信頼を構成します:

  1. アクセスはあなたが管理 — マスターパスワードと必要に応じて 復元キー がボルトへのアクセスを制御します。QubKey はそれらを読み取ったりリセットしたりできません。

  2. システム統合 — QubKey は OS のセキュリティを利用します:ファイル権限、ディスク暗号化(FileVault、BitLocker、LUKS)、安全なストレージ(Keychain、Credential Manager)、プロセス分離。

  3. Rust / UI 分離 — すべての暗号処理は Rust コア でコンパイル時メモリ安全性とともに実行されます。React UI は Tauri IPC で通信;WebView はマスターパスワードに直接アクセスできません。

  4. 慎重なメモリ処理(v5) — ロック解除時はヘッダーとインデックスのみ復号。シークレットと添付は明示的な操作(表示、コピー、ダウンロード)まで暗号化されたまま。ロック時:Zeroization とクリップボード消去。

  5. ブラウザ拡張 — ローカル Native Messaging;拡張機能はマスターパスワードを取得しません。

保護機能

自動ロック

設定可能な非アクティブ時間後にボルトをロック(デフォルト:5 分)。Zeroization とクリップボード消去をトリガーします。

遅延復号

エントリのシークレットは表示またはコピーするときだけ復号されます。一覧と表示では保護フィールドは表示されません。

Zeroization

ロック時に RAM からシークレットを消去(Rust zeroize クレート);キャッシュをクリアし、必要時のみ一時的な復号。

クリップボードタイムアウト

30 秒後にクリップボードを自動消去。ボルト設定で変更可能。