すべての記事

バックアップが本当に必要になる日:Senvra がプライベートデータを取り戻す仕組み

Senvra のプライベート空間バックアップが元の Space Access Key で保護される仕組み、公開空間との違い、保存後の検証と復元について説明します。

バックアップ暗号化復元プライバシーiOS

バックアップが本当に必要になる日は、たいてい良い日ではありません。

iPhone をなくした、App を誤って削除した、端末が起動しなくなった。その時に重要なのは、設定画面で以前チェックマークを見たかどうかではありません。保存したファイルを今も検証できるか、そしてそれを開く資格情報が手元に残っているかです。

現在の Senvra は、バックアップごとに新しい秘密を管理させることなく、この二つの問いに答える設計になっています。

クイックスタート:作成、確認、復元

バックアップを作成して保存する

  1. 保護したい空間を開き、メインメニューからバックアップを選びます。
  2. バックアップをタップし、プライベート空間では暗号化バックアップを作成、公開空間ではバックアップを作成を選びます。
  3. ファイルの準備ができたら、必要に応じて名前を変更し、保存をタップして「ファイル」で保存先を選びます。バックアップを保存して検証しましたと表示されるまで Senvra を開いたままにしてください。
  4. プライベート空間では、バックアップ作成時に有効だった Space Access Key を保管します。Key と .senvrabackup ファイルは別々に、できれば同じ iPhone 以外の場所にも保存してください。

読み込まずにバックアップを確認する

  1. バックアップと同じ種類の空間へ戻り、バックアップを開いて復元をタップします。
  2. .senvrabackup ファイルを選びます。現在形式のプライベート空間バックアップには元の Space Access Key が必要です。公開空間バックアップには Key は不要です。
  3. チェックするをタップします。Senvra は内容を読み込まずに、アーカイブ全体を読み取って認証します。復元テストが成功すれば、そのファイルと資格情報を組み合わせて使用できることを確認できます。

内容を復元する

  1. バックアップと同じ種類の復元先空間を開き、バックアップ → 復元からファイルを選びます。
  2. 検出された保護方式を確認し、必要な Key を入力してインポートをタップします。
  3. Senvra は不足している項目だけを追加し、一致する既存項目は変更しません。復元先空間の名前、パスワード、Access Key、生体認証設定、ジェスチャー、スキンも置き換えません。

バックアップごとの新しい Key ではなく Space Access Key

プライベート空間の復元に必要なのは、次の二つです。

  1. Senvra の外へ保存した .senvrabackup ファイル
  2. そのバックアップを作成した時点で、元のプライベート空間が使用していた Space Access Key

現在の形式には追加の Backup Password がなく、ユーザーが別に保管する Backup Key も新しく生成しません。

これは意図的な使いやすさの判断です。バックアップごとに独立した秘密を作る方式は暗号学的には強くても、年数とファイル数が増えるほど、利用者は多数の「ファイルと Key」の組み合わせを正確に管理し続けなければなりません。一組でも取り違えたり失ったりすれば、唯一残ったバックアップが使えなくなる可能性があります。

Space Access Key は、もともとプライベート空間の復元材料です。同じ資格情報でその空間のバックアップも保護すれば、手順は明確になります。Space Access Key を守り、バックアップファイルを信頼できる場所へ保存し、できるだけ両者を別々に保管します。

プライベート空間のバックアップを保護する仕組み

Space Access Key で、バックアップ内の写真、動画、メモ、書類を一つずつ直接暗号化するわけではありません。

各プライベート空間には、ランダムな256ビットのマスターキーがあります。バックアップには認証済みの Access Key エンベロープが含まれ、対応する Space Access Key だけが元の空間のマスターキーを復元できます。Senvra はそのマスターキーとバックアップごとの新しいランダムコンテキストからラッピングキーを導出し、新しく生成した Archive Key を保護します。実際のバックアップレコードを暗号化・認証するのは Archive Key です。

フロー図 図を準備しています

横にスワイプして図全体を表示

図のソースを表示
flowchart LR
    K[元の空間の Space Access Key] --> E[認証済み Access Key エンベロープを開く]
    E --> M[元の空間のマスターキーを復元]
    M --> W[新しいランダムソルトと組み合わせて<br/>バックアップ用ラッピングキーを導出]
    W --> A[ランダムな Archive Key を開く]
    A --> F[バックアップフレームを認証して復号]

この階層では、各要素の役割が分かれています。

  • Space Access Key は、元のプライベート空間を復元する権限を証明する
  • 空間のマスターキーは、その空間の暗号学的な同一性を支える
  • バックアップごとに新しい Archive Key が一つのファイル内容を保護する
  • 認証付き暗号は内容を隠すだけでなく、変更も検出する

バックアップファイルに Space Access Key 自体は保存されません。ファイルだけを入手しても、プライベート空間のバックアップは開けません。

公開空間のバックアップは境界が異なります

Everyday 公開空間はプライベート保管庫ではありません。そのため、公開空間のバックアップを機密性のある暗号化バックアップとは表現しません。

公開空間のバックアップは、Key なしで復元できます。そのファイルを入手し、互換性のあるツールを使える人は、内容を読み取ったり復元したりできる可能性があります。Senvra は、公開空間には存在しない保護を装うのではなく、作成と復元の前にこの境界を明示します。

バックアップ後も内容を秘密に保つ必要がある場合は、先にプライベート空間へ保存してください。

Senvra の外へ出る前と後にファイルを検証します

ファイルを書き出せたことと、信頼できるバックアップができたことは同じではありません。

Senvra は構造化されたコンテナとしてバックアップを書き込み、保存画面へ進む前に認証レコード、項目関係、バイト数、ダイジェスト、終了マーカーを検査します。未完了の処理は pending のまま残り、完成したバックアップとしては表示されません。

次に問題になるのはコピーです。「ファイル」、iCloud Drive、外部ストレージ、その他のサービスへの保存も、中断や変更が起こり得ます。Save を使用すると、Senvra は保存先のファイルを読み直し、Header、バイト数、ファイル全体のダイジェストを、検証済みの App 内ファイルと比較します。一致した外部コピーだけが現在のバックアップとして記録されます。

Share で送ったコピーも利用できますが、別の App が選んだ保存先を Senvra が必ず読み戻せるわけではありません。そのため共有コピーは外部検証済みとして記録されません。

復元テストではファイル全体を読みます

復元テストは何もインポートしません。バックアップファイルと対応する資格情報を壊さずに確かめる検査です。

現在のプライベート空間バックアップでは、作成時に使われていた Space Access Key を入力します。Senvra はキーエンベロープを開き、Header を認証し、すべてのフレームを読み、項目とアーカイブのダイジェスト、終了マーカーを検証し、末尾に予期しないデータがあれば拒否します。

これにより、次の二つを区別できます。

  • 暗号学的に完全で、今も復元できる古いバックアップ
  • 完全で、元の空間の現在の内容とも一致するバックアップ

どちらにも価値はありますが、後者だけが最新の保護状態を表します。

復元は現在の空間を置き換えず、内容を追加します

復元は追加方式です。不足している項目を現在開いている空間へ追加し、一致する既存項目は変更しません。

プライベートバックアップはプライベート空間の経路からのみ、公開バックアップは公開空間の経路からのみ復元できます。Senvra はデータを受け入れる前にバックアップ全体を検証します。各項目は保護された pending 領域へ書き込み、検証後にアトミックに公開します。

バックアップには、元の空間の内容とコレクションやタグなどの整理情報が含まれます。ただし、復元先の空間 ID、名前、パスワード、Space Access Key、Face ID、ジェスチャー設定、スキンは置き換えません。

インポートが中断しても既存データは維持されます。同じバックアップを再び選ぶと、一致する項目を飛ばし、重複コピーを暗黙に作りません。

Access Key の交換は古いバックアップに影響します

これは現在の設計で最も重要な運用上の注意点です。

プライベートバックアップは、作成時に有効だった Space Access Key に結び付いています。後から空間の Access Key を交換しても、外部に保存済みのファイルは書き換わりません。新しい Key では古いバックアップを開けません。

Access Key を交換した後は、次の順序を守ってください。

  1. まだ保持する古いバックアップのために、以前の Access Key を保管する
  2. 新しい Access Key で新しいバックアップを作成し、外部へ保存する
  3. 保存した新しいファイルで復元テストを実行する
  4. 古いバックアップが不要だと判断してから、古い Key とファイルを整理する

この挙動により、後の Key 変更が不変のバックアップファイルを暗黙に変えることはありません。一方で、Key の交換もバックアップ運用の一部として扱う必要があります。

古いバックアップでは Backup Key を求める場合があります

ファイルを選ぶと、Senvra はそこに記録された資格情報方式を判別します。リリース前の古い設計で作成されたファイルは、当時の Backup Key を求める場合があります。

ファイル選択後に表示されるラベルに従ってください。

  • Source Space Access Key は現在のプライベート空間形式
  • Backup Key for older backup は、その古いファイルと一緒に保存した専用 Key
  • 現在の公開空間バックアップは Key 不要

Senvra が別の資格情報へ暗黙に置き換えることはありません。

現実に続けられるバックアップ習慣

  1. 各プライベート空間の Access Key を Senvra の外、同じ iPhone 以外にも保管する
  2. 大きな内容変更の後に新しいバックアップを作る
  3. .senvrabackup ファイルを自分が管理できる場所へ保存する
  4. 可能なら Save を使い、保存先のコピーを Senvra に読み戻して検証させる
  5. 新しいバックアップの復元テストが通るまで、最後の既知の正常なバックアップを削除しない
  6. Access Key を交換したら、古い復元材料を廃棄する前に新しいバックアップを作成して検証する

Senvra はバックアップを自社のホスト型保管庫へアップロードしません。「ファイル」で選んだ場所が iCloud や別のサービスで同期されるかどうかは、その保存先の規則によります。

最後に、正直な境界

プライベート空間では、バックアップファイルがあっても対応する Space Access Key がなければ Senvra は復元できません。Access Key だけがあっても、保存したデータはありません。両方を失えば、サーバー側のリセットやホスト済みコピーは存在しません。両方が一緒に漏れれば、バックアップの機密性は失われます。

公開空間ではバックアップ自体に機密性がないため、ファイルを持っていることが復元条件になります。

現在の設計が取り除いたのは、管理しにくい「バックアップごとの新しい Key」です。利用者の保管責任を取り除いたわけではありません。目標は、実際に最後まで実行できる復元経路です。プライベート空間ごとに一つの既存 Access Key、バックアップごとに一つの持ち運べるファイル、明示的な検証、そして明確な限界があります。

製品全体の変更は Senvra 1.3 の新機能 と iPhone のプライベートデータを Senvra が保護する仕組み で紹介しています。

参考資料

MonoWare より

Senvra にはこのノートの背景があります。

製品サイトを開くか、Senvra のノートを続けて読めます。

ニュースレター

プライバシーと製品技術ノートを、ときどき送信します。