保管庫一覧を表示しない隠し保管庫
Vaultaireを開いても、名前付き保管庫の一覧は出てこない。パターンを描くと、アプリはそこから導出した鍵に対応する暗号化保管庫インデックスだけを探し当てる。肩越しに見ている人に見えるのは開いた保管庫だけで、ほかの保管庫を並べたメニューではない。
Vaultaireの隠し保管庫は、インターフェースと鍵ルーティングの性質だ。アプリは保管庫間の平文の一覧を表示せず、パターンから鍵を導出してはじめて保管庫を開く。ディスク上では個々の暗号化インデックスファイルを列挙できるため、この設計で保管庫の数がフォレンジック上見えなくなるわけではない。
「隠し保管庫」とは実際何を意味するのか
ほとんどの保管庫アプリはキャビネットのように機能する。アプリを開くと保管庫のリストが見える。名前があるかもしれない。カウントが表示されるかもしれない。それぞれの横に小さな鍵アイコンがあるかもしれない。アプリはあなたの保管庫が何個あるかを正確に知っており、その情報はアプリを開く人——またはデバイスを調べる人——誰にでも見える。
Vaultaireはインターフェース上の動きが違う。保管庫名を並べる画面も、どの保管庫を開くか尋ねる画面もない。パターンを描くと、アプリはPBKDF2で256ビットの保管庫鍵を導出し、その鍵をハッシュして想定されるインデックスファイル名を作り、その暗号化インデックスの認証付き復号を試みる。インデックスが存在し、AES-GCMタグの検証に成功すれば、Vaultaireはランダムなマスター鍵のラップを解除してファイルを開く。そうでなければ空の状態を表示する。
このルーティングはストレージ設計の一部だが、その保護には限界がある。Vaultaireは、保管庫とパターンやラベルを結びつける平文のマスター登録簿を持たない。各保管庫の暗号化ルートインデックスは、ランダムなカバーファイルで64スロット単位に埋められたプールに置かれる。しかし実在する各保管庫には同じロケーターで名付けられた保存ディレクトリも1つあり、アプリにはそれらを列挙する保守処理がある。そのためファイルシステムの検査官は、鍵がなければインデックスの内容を読めなくても、保管庫の数を数え、本物のルートファイルとカバーを見分けられる。
Vaultaireが保管庫間の一覧を隠すのは通常のユーザーインターフェースからだ。パターンは、ほかのインデックスのパターン、ラベル、内容を明かさずに1つの暗号化インデックスを選ぶ。これでアプリを使う誰かにうっかり知られる危険は減るが、iOSやフォレンジックツールからすべての保管庫の痕跡を隠すこととは違う。
これは「隠しフォルダー」ではない
「隠し保管庫」というフレーズを聞くと、見つけにくい場所にフォルダーを隠すアプリを思い浮かべるかもしれない。ファイルブラウザーに表示されないようドットプレフィックスで名前がついたフォルダー。「電卓」に見せかけて真の目的を隠すアプリ。これらはカモフラージュのトリックであり、すべてに同じ致命的な欠陥がある:隠されたデータはまだそこにあり、既知の場所に、見つけられるのを待っている。
デバイスにアクセスしたフォレンジック検査官は隠しフォルダーを簡単に見つけられる。ファイルシステムツールはすべてのディレクトリを一覧表示する。ストレージアナライザーはディスク容量がどこに割り当てられているかを示す。5分と検索エンジンがあれば、ある程度技術に詳しい友人でもほとんどの「隠し」フォルダーを見つけられる。
Vaultaireは偽装フォルダーや電卓の見た目には頼らない。アプリコンテナ内には、暗号化保管庫インデックスと暗号化データファイルを保存する。インデックスの内容は、ファイル名、MIMEタイプ、日付、ファイルマップ、ラップされたマスター鍵をAES-256-GCMで隠す。正しいパターンから導出した鍵でインデックスが認証されるまで、これらの内容は読めない。
実際の違いは、わかりやすい名前の秘密フォルダーか、鍵から導出したファイル名で選ばれる認証付き暗号化コンテナかにある。デバイスの検査官はコンテナの存在を確認できるが、正しい認証情報がなければ、読める形のファイルマップや内容は手に入らない。
ストレージレイアウトからわかること
保管庫一覧がなくても、賢い敵対者は別のアプローチを試みるかもしれない:ディスク使用量の分析だ。今日Vaultaireが500MBのストレージを使い、明日800MBを使うなら、保管庫を追加したかもしれない。一つの保管庫から写真を削除してストレージが正確に200MB減るなら、悪用できる相関関係があるかもしれない。
Vaultaireはローカルストレージの使用量を一定に保たない。ファイルを追加すれば容量を使い、保管庫を削除すれば容量が空くことがあり、保存ディレクトリは保管庫ごとに1つある。暗号化は内容と完全性を守るが、ファイルシステムからサイズ、数、時刻の情報をすべて消すわけではない。
アプリコンテナにアクセスできる観察者は、ファイル数、サイズ、更新時刻を利用状況と照らし合わせられる。iOSのデータ保護はデバイスのロック中にアクセスを制限でき、暗号化されたペイロードは鍵がなければ秘密のままだが、Vaultaireはローカルのトラフィック分析への耐性をうたっていない。
パディングを使う場所
Vaultaireは特定の形式でパディングを使う。暗号化ファイルヘッダーは固定サイズを確保するため、通常のファイル名やMIMEタイプは平文で露出しない。暗号化iCloudバックアップは、固定サイズ10MBのレコードとおとりのチャンクを使う。これらを、サイズ一定のローカルストレージプールと混同してはならない。
ローカルの保管庫インデックスと暗号化データファイルには、アプリ固有とわかるファイル名とサイズが残る。AES-GCMは平文を隠し改ざんを検出するが、すべてのバイトやファイルシステムの痕跡を、無作為なディスクセクターと見分けがつかなくするわけではない。
フォレンジック耐性:スマートフォンを取り上げられたらどうなるか
脅威モデルを具体的に説明しよう。アプリをざっと見た人には、保管庫一覧は見えない。侵害されたデバイスやロック解除されたデバイスからアプリコンテナにアクセスした人はもっと多くを見られ、ファイル名、数、サイズ、タイムスタンプ、Keychainの可用性、暗号化されたペイロードを調べられる。
フォレンジックツールが見られるもの
フォレンジック検査官には、Vaultaireがインストールされていること、使用容量、保管庫ごとの保存ディレクトリの数、それらに対応する「vault_index_*.bin」ルートファイル、暗号化データファイル、更新メタデータが見える可能性がある。検査官は暗号文をコピーし、オフラインでパターンを推測することもできる。
暗号化がなお守るもの
- 読める形の保管庫名とファイルマップ。暗号化インデックスが、ファイルの記録とラップされたランダムなマスター鍵を守る。
- 元のファイル名とMIMEタイプ。これらは平文のディレクトリ名ではなく、認証付きで暗号化されたファイルヘッダーの中にある。
- 写真、動画、書類の内容。ファイルのペイロードは、保管庫のランダムなマスター鍵によるAES-256-GCMで暗号化される。
- パターンそのもの。Vaultaireはパターンを平文の設定として保存しない。ただし通常使用中のデバイスでは、暗号化されたローカルのリカバリーデータベースにパターンとフレーズの情報が含まれる。
- 推測を省く近道。PBKDF2は候補1つあたりのコストを上げるが、コピーしたインデックスファイル名とAES-GCMタグがあれば、攻撃者はオフラインで推測を検証できる。
暗号化データは、暗号化データが存在するという証拠を残す。Vaultaireの現在のストレージ構成は、パターン、ラベル、ファイルマップ、平文を明かさないが、保管庫の数は明かしうる。隠し保管庫が守るのはインターフェースと内容であり、情報理論的な否認可能性を約束するものではない。
隠し保管庫がもっともらしい否認可能性を可能にする方法
隠し保管庫は、Vaultaireのもっともらしい否認機能を支えるインターフェース上の区画化を担う。主張を評価するうえでは、この関係と、ファイルシステム検査に対する限界が重要になる。
Vaultaireのインターフェースでは、有効なパターンごとに別の実在保管庫を開ける。機密性の高いものに1つのパターンを、それほど機密でない保管庫に別のパターンを割り当てられる。ロック解除後の画面だけを見る観察者には、どちらの保管庫が「本物」か「おとり」かを示すラベルは表示されない。
これで何気ない確認やのぞき見による露見は減らせるが、フォレンジックの観点で最も厳密な意味のもっともらしい否認は満たさない。アプリコンテナにアクセスできる検査官は保管庫の数を数えられる。この機能は、ほかの保管庫が存在しない証明としてではなく、インターフェース上の区画化として使ってほしい。
完全な連鎖
- ステップ1:異なるパターンで複数の保管庫を作る——本物のファイル用に一つ、おとり用に一つ、望む数だけ。
- ステップ2:圧力をかけられたら、おとりパターンを描く。観察者は退屈な写真が入った保管庫を見る。
- ステップ3:ロック解除後の画面には、保管庫間の一覧も、ほかの保管庫の名前を示す表示も出ない。
- ステップ4:別の脅威の境界を忘れないこと。ファイルシステムにアクセスされると、観察者が内容を復号できなくても、暗号化インデックスの数はわかる場合がある。
結果として、内容を暗号化で守ったうえで、アプリ内での実用的な区画化が実現する。デバイスの検査官がほかの暗号化コンテナを検出できないという数学的な保証ではない。
なぜこれが重要なのか
フォレンジック耐性は極端に聞こえると思うかもしれない。ほとんどの人はデバイス押収や裁判所命令に直面していない。しかし隠し保管庫の背後にある原則は日常的なシナリオでもあなたを守る。
Vaultaireのロック画面にたどり着いた人に、狙うべき保管庫名の一覧は渡らない。デバイスを借りた同僚が、選択画面から保管庫を切り替えて見ることもできない。盗んだ人はVaultaireがインストールされていることを知り、アプリやデバイスを狙うかもしれないが、暗号化された内容はパターン、PBKDF2のコスト、AES-GCM、そしてiOSのセキュリティ境界によって守られたままだ。
隠し保管庫が答えるのは、もっと狭いプライバシーの問いだ。1つの保管庫を開くと、ほかの保管庫の一覧が見えるのか。通常のインターフェースでは、答えは「いいえ」だ。より強力な検査官が暗号化コンテナを検出できるかどうかはデバイスの状態とアクセス権限しだいであり、Vaultaireはその限界をそのまま文書化している。
よくある質問
Vaultaireは保管庫一覧を表示せずに、どうやって保管庫を見つけるのか?
Vaultaireはパターンから保管庫鍵を導出し、その鍵の128ビットのフィンガープリントを計算して、対応する暗号化インデックスファイルを探す。ファイルが存在し、AES-GCMの認証に成功すると、アプリはその保管庫を開き、ランダムなマスター鍵のラップを解除する。そうでなければ、ほかの保管庫を見せる代わりに空の状態を表示する。
ストレージ使用量を見て保管庫が何個あるかわかりますか?
ストレージ使用量から読める形のファイル名や内容はわからないが、Vaultaireが暗号化データを保存していることと、その占有容量はわかる場合がある。ルートインデックスファイルはランダムなカバーファイルとともに64個単位のプールに置かれるが、各保管庫には専用の保存ディレクトリもあるため、アプリコンテナにアクセスできる検査官は保管庫の数を数えられる。Vaultaireは、ストレージ容量が保管庫数を隠すとは主張していない。
保管庫を削除したらどうなりますか?ストレージは縮小しますか?
保管庫を削除すると、その暗号化インデックスと、その保管庫だけが所有する暗号化データファイルが削除される。そのためストレージは減ることがある。ただしフラッシュストレージ、ファイルシステムのスナップショット、バックアップなどのシステム層には、アプリの管理外で痕跡が残る可能性がある。そのため削除を、確実なフォレンジック消去とは説明していない。
フォルダーを暗号化するのとどう違いますか?
Vaultaireは、ユーザーが名前を付けた保管庫フォルダや平文の保管庫一覧をインターフェースに表示しない。ただしアプリコンテナ内には暗号化インデックスファイルと暗号化データファイルを作成する。その名前からパターン、保管庫名、ファイル名、内容はわからないが、ファイルの存在と数はファイルシステムの検査官から隠されない。
Vaultaireの将来のアップデートが隠し保管庫を危険にさらす可能性はありますか?
クローズドソースのクライアントは、将来のバージョンでアプリが記録・表示する内容を変える可能性がある。Vaultaireの現在の設計は、保管庫間の平文の登録簿をユーザーインターフェースに持たないが、ソフトウェアの更新は引き続き信頼モデルの一部だ。リスクの高い状況では、更新をインストールする前にリリースノートとセキュリティ文書を確認してほしい。
隠し保管庫はiCloudバックアップと連携しますか?
はい。Vaultaireはバックアップの構成要素を、パターンから導出した別のバックアップ鍵でデバイス上で暗号化し、固定サイズ10MBのCloudKitレコードに詰め、構造タグを暗号化し、おとりのレコードを加える。プライベートCloudKitデータベースは引き続きレコード数と転送メタデータをAppleに見せるが、保管庫のファイル名、内容、レコードの役割は読み取れない。
一覧を見せない保管庫
パターンごとに別々の暗号化保管庫を作成できる。Vaultaireは、保管庫間の一覧を見せずに指定した保管庫だけを開き、この設計のストレージ上の限界も明示している。
Vaultaireを無料ダウンロード