セキュリティ

デジタルライフのための銀行レベルの暗号化

ゼロ知識アーキテクチャ

ByteGuardはゼロ知識セキュリティモデルに基づいて構築されています。暗号化キーを閲覧、アクセス、保存することは決してありません。

  • マスターパスワード: アプリのロック解除用のあなた専用のキー。転送されることも、リモートに保存されることもありません。
  • リカバリーキー(Secret Key): 保管庫作成時に生成される12単語のリカバリーフレーズ(BIP39)。マスターパスワードと組み合わせて最大限のセキュリティを実現。
  • ローカルキー導出: 64MBのメモリコストと3回の反復によるArgon2idでマスターキーをローカルに導出。HKDF-SHA256で鍵階層を構築。
  • バックドアなし: マスターパスワードとリカバリーキーの両方を紛失した場合、データを復元することはできません。これは仕様です。

暗号化の詳細

複数層の暗号化がすべての機密データを保護します。

  • フィールドレベル暗号化: 各機密フィールド(パスワード、カード番号、APIキー)はAES-256-GCMで個別に暗号化されます。
  • 鍵階層: マスターキー → 鍵暗号化キー(KEK)→ データ暗号化キー(DEK)。各項目は独自のDEKを持ちます。
  • 一意の初期化ベクトル: 暗号化操作ごとに一意の初期化ベクトルを使用し、同じ平文でも異なる暗号文が生成されます。

データストレージ

データはデバイス上に保持されます。クラウド同期はオプションで、常に暗号化されています。

  • ローカルファースト: すべてのデータはデバイス上の暗号化されたローカルデータベースに保存されます。
  • オプションのiCloud同期: 有効にすると、データはデバイス上で暗号化された後、CloudKit経由でプライベートiCloudコンテナにアップロードされます。
  • 生体認証保護: Secure Enclave経由でFace IDとTouch IDに対応。生体認証データはiOSが処理し、アプリからはアクセスできません。

当社にできないこと

ゼロ知識アーキテクチャにより:

  • 保存されたデータの閲覧、アクセス、復号化はできません
  • マスターパスワードのリセットはできません
  • リカバリーキーなしでの保管庫の復元はできません
  • 法執行機関を含む誰にもデータを共有することはできません
  • 暗号化にバックドアを挿入することはできません

デバイスセキュリティ互換性

ByteGuard は Apple の組み込みセキュリティ機能とシームレスに連携するよう設計されています。

  • Apple Lockdown Mode: Apple の最高レベルのセキュリティ保護に完全対応。ロックダウンモードが有効な状態でも、AutoFill、iCloud 同期、ウィジェットなどすべての機能が正常に動作します。
  • WebView 非依存: ByteGuard はウェブレンダリングエンジンを一切使用しません。保管庫のデータが WebKit を通じて処理されることはなく、ブラウザベースの攻撃を根本から排除します。
  • Secure Enclave 統合: 生体認証は iOS の Secure Enclave によって完全に処理されます。ByteGuard が生体認証データにアクセスしたり保存することはありません。

デバイスレベルの保護

生体認証によるクイックロック解除のセキュリティ境界は、iOS Keychain と Secure Enclave が共同で維持します。アプリ層は Face ID/Touch ID から派生したいかなる鍵も保持しません。

  • iOS Keychain ACL: Vault DEK のコピーを kSecAttrAccessibleWhenUnlockedThisDeviceOnly + kSecAccessControlBiometryCurrentSet で Keychain に保存。デバイスがロック中、または Face ID 認証が通っていない場合は読み取れません。
  • Secure Enclave による引き継ぎ: Keychain エントリは Secure Enclave 内のデバイス鍵で暗号化されます。アプリが SecItemCopyMatching を呼び出すと、iOS が Face ID をトリガーし、認証成功時に SE が復号して平文の DEK を返します — アプリは SE の鍵に一切触れません。
  • Face ID 再登録時の自動失効: biometryCurrentSet のセマンティクス:ユーザーが設定で Face ID を削除/再登録すると、iOS が該当する Keychain エントリを自動的に削除します。ByteGuard は起動時に失効を検出し、マスターパスワードの再入力を強制します。
  • ストリクトモード(フォールバックなし): biometryCurrentSet が利用できない場合(シミュレーター、生体認証未登録)、DEK のキャッシュは単に失敗します — 保護の弱い Keychain エントリにフォールバックすることは決してありません。フォールバックは Face ID 未有効状態より弱く、ユーザーの意図に反します。
  • メモリゼロ化(Vault DEK): ロック、サスペンド、ヴォールト切り替え時に Vault DEK を 3 回上書き(zero → random → zero)し、コンパイラ最適化を阻むメモリバリアを併用します。Master Key / KEK はロック解除関数内のローカル変数で、Swift ARC により解放されます(明示的なゼロ化はしません)。Argon2 内部バッファは libsodium の sodium_memzero でゼロ化されます。
App Storeでダウンロード