暗号化、復旧コード、バックアップ、機種変更 — 気になる疑問の答えがここに。
本当に暗号化されています。CosmosBox はアカウント不要設計:データはデフォルトで自分の端末にのみ存在し、最強クラスのアルゴリズムで処理されます — パスワードは Argon2id(128MB のメモリを使用。GPU 総当たりは事実上不可能)でマスター鍵を導出し、各ファイルはさらに独立した AES-256-GCM のランダム鍵で暗号化されます。鍵(マスター鍵)はロック解除中のみメモリに存在し、ロックすると即座に消去。データ鍵は端末のセキュリティチップ(Android Keystore / iOS Keychain)が保管します。
アカウントがないということは、「サーバーがパスワードを保管する」という段が存在しない — パスワードの漏洩面はゼロです。その代償として、パスワードを忘れた場合は復旧コードでのみデータを取り戻せます。
「パスワード復旧」(復旧コード方式)がそのための仕組みです。有効化すると端末が復旧コードを生成します(5つに分割可能。3つ揃えば復元):1-2つは自分で保管し、残りは信頼できる人に預けます。パスワードを忘れたら復旧コードを入力するだけで、パスワードをリセットし全データを復元できます — サーバーの介入は一切不要です。
パスワードを忘れ、パスワード復旧も未設定、バックアップもない — その場合データは復元できません。これがアカウント不要暗号化の物理的限界です。強くおすすめします:パスワード設定後、すぐにパスワード復旧を有効化してください。
復旧コード = 32 バイトの真性乱数(32 × 8 = 256 ビットのエントロピー)。生成にはシステムの安全な乱数源(Random.secure())を使用 — 1ビット1ビットが独立したコイン投げの結果です。破るには 2²⁵⁶ 通りの可能性から正解を見つける必要があります。
2²⁵⁶ はどれほど大きい?直感的な比較:
つまり「数学的に破れない」の正確な意味は:絶対に不可能というわけではなく、物理法則が許す計算能力の範囲内では不可能 — 「難しい」のではなく「物理的に不可能」なのです。
量子コンピューターでも救えません: グローバーのアルゴリズムは対称鍵探索を半分にできます:256 ビット → 2¹²⁸ 回。しかし 2¹²⁸ も宇宙の原子数を超えます — 量子コンピューターでも解けません。復旧コードが使う AES-256-GCM はまさに量子探索に耐える強度です。
なぜ人間のパスワードではダメなのか?
| 人間のパスワード | 復旧コード | |
|---|---|---|
| エントロピー源 | あなたの記憶 — 予測可能(よくある単語、誕生日、キーボードパターン) | 真性乱数生成器 |
| 実際のエントロピー | 12桁ランダム ≈ 78 ビット;よくあるパスワードはしばしば 30 ビット未満 | 256 ビット |
| 破壊コスト | 30 ビット ≈ 10⁹ 回、GPU で数時間 | 2²⁵⁶ 回、物理的に不可能 |
30 ビットと 256 ビットの差は 8 倍ではなく 2²²⁶ ≈ 10⁶⁸ 倍 — これが「KDF の高強度(Argon2id)は人間のパスワードを守れるが、256 ビットのランダム鍵には錦上添花に過ぎない」理由です:復旧コードは KDF の減速すら不要 — それ自体が完全エントロピーの鍵なのです。
正直な限界:「数学的に破れない」のは鍵そのものだけです。復旧コードを実際に無力化するのは総当たりではなく、人の部分 — メモに書いて撮影された、root 端末のメモ帳に保存された、自分に送ったスクリーンショットがクラウドに上がった。鍵はどれほど強くても、漏れれば終わりです。鉄則:紙に書いて鍵のかかる引き出しへ / パスワードマネージャーにも保存(これも強力なマスターパスワードを)— 撮影しない、クラウドに上げない、誰にも送らない。 友人のシェアは Shamir 分割後の断片で、1つだけでは無意味 — 安心して分けられます。
保存暗号化レベル(暗号化カメラ、暗号化ノートなどのツール)はセキュリティ強度の低い順に:
| レベル | ファイル | セキュリティ | 機種変更 |
|---|---|---|---|
| 平文 | 暗号化なし | 手に入れたら誰でも読める | コピーするだけ |
| ポータブル | 暗号化、ソルトはファイル内 | パスワードが必要 | パスワード入力でOK |
| ソルト分離(暗号化) | 暗号化、ソルトは端末に | パスワード + 端末ソルトが必要 | 復旧コードが必要 |
| 塩交換(最強のエクスポート) | 暗号化、塩はオフライン交換 | パスワード + 塩の二要素 | 相手の塩が必要 |
覚え方:平文 → ポータブル → ソルト分離と、安全性も手間も上がります。デフォルトの「グローバルに従う」で十分なことがほとんど。ファイルが機密になるほど、高いレベルを選びましょう。
標準フロー: 旧端末でバックアップ(ローカルまたは WebDAV クラウド)→ 新端末で復元 → バックアップパスワードを入力。
新端末で旧鍵を取り戻す: バックアップには復旧設定が自動で含まれます — 復元後に復旧コードを入力すれば、旧端末のマスター鍵が復元され、すべての暗号化データがすぐに読めるようになります。
単一ファイルの共有: キャラクターカードなどのツールはエクスポートに対応 — ポータブル形式なら新端末でエクスポートパスワードを入力するだけ。「オフライン塩交換」形式は事前に塩をオフライン交換する必要があります(より安全、機密ファイル向け)。
バックアップは暗号文の単純コピーではないからです。バックアップは機種変更後にすべてを再構築できるように、暗号文だけでなく平文の構造データ(一部ツールのデータ)や鍵材料(塩、検証データ、復旧設定)も含みます — これらをバックアップ専用のパスワードで全体をもう一度ロックする必要があります。端末上の暗号化は「ファイル漏洩」を防ぎ、バックアップパスワードは「バックアップファイル漏洩」を防ぐ — 2つの独立した層です。バックアップパスワードを忘れたら?復旧コードでマスター鍵を復元してから、バックアップを取り直す必要があります。
暗号化バックアップをあなた自身のクラウド/プライベートクラウド(坚果雲、NextCloud、Synology など WebDAV 対応サーバー)に自動アップロード — 第三者を介しません。バックアップファイルは暗号化(.encbak)、パスワードは Keystore に保管、転送は HTTPS。毎日/毎週の自動バックアップが起動時に実行され、端末を失ってもクラウドからデータを取り戻せます。
塩を失くした: ソルト分離バックアップ(ファイルに塩が含まれない)は復号できなくなります — 自分自身も含めて。だから有効化時にアプリは繰り返し注意します:バックアップ塩をエクスポートしてオフライン保管(USB / 印刷 / パスワードマネージャー)してください。
塩が漏れた: 漏洩以前のすべてのソルト分離バックアップが危険にさらされます(挽回不可 — クラウドの旧バックアップ削除を推奨)。バックアップ塩を再生成すれば、新しいバックアップは自動的に新塩を使用し、もう漏れません。旧塩が塩ライブラリに残っている間は旧バックアップも復元可能です。
塩の保管が面倒なら、デフォルトの「ポータブル」バックアップで十分です — 塩がファイルに含まれ、機種変更時はパスワード入力で復元でき、すでに十分安全です。
されません。 初期バージョンには「外部ファイルのインポートが既存データを上書きする」という重大な欠陥があり、後のバージョンで修正済み:端末にデータがある場合、外部からバックアップを開くとロック解除後のマージインポート(既存データ + 新規分、id で重複排除)になります。完全に空の端末(初回使用)だけがワンステップインポートです。必ず最新版にアップデートしてください。
旧バージョンでエクスポートされたバックアップの場合:中の写真はまだ元端末の鍵で暗号化されており、移行先の端末では復号できません — 新しいバージョンでエクスポートし直してください(新しいエクスポートはエクスポートパスワードで写真を再暗号化するので、移行先でパスワードを入力すれば見られます)。
新しいバージョンのエクスポートなら:入力したのがエクスポートパスワードか確認してください。「オフライン塩交換」形式は、送信元の塩を先にインポートする必要があります。
2つの過去の問題はどちらも修正済み:① 共有先がかつて本アプリのタスクスタックに統合され「微信画面に張り付く」原因に — 現在は共有を独立タスクで開き、戻るだけでアプリに帰れます;② 华为端末での FileProvider クラッシュ(R8 難読化が原因)でエクスポートが落ちる問題 — org.xmlpull.v1 の保持で修正済み。まだ問題が起きる場合は、端末モデルとシステムバージョンをフィードバックでお知らせください。
暗号化エクスポートは強力なパスワードを必須とします:8文字以上、英字と数字を含み、数字のみ・英字のみは不可 — 弱いパスワードは確認できません。ポータブル形式では塩がファイルに同梱されるため、パスワードがファイルの唯一の鍵です — パスワードが強いほどファイルは安全。「オフライン塩交換」エクスポートと組み合わせれば、パスワードもファイルも漏れても解読できません。