セキュリティ
デジタルライフのための銀行レベルの暗号化
ゼロ知識アーキテクチャ
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でダウンロード