隠しボールト:いくつ存在するか誰にもわからない
ボールト一覧はない。ディレクトリもない。カウントもない。Vaultaireはデバイス上にいくつのボールトが存在するかを暗号的に特定不可能にする——フォレンジックツールと物理アクセスがあっても。ボールトの存在を誰も証明できなければ、誰もそれを開くよう要求できない。
Vaultaireはすべての暗号化データをボールト一覧なし、ディレクトリなし、いくつのボールトが存在するかを明かすメタデータなしで単一の均質なプールに保存する。ストレージパディングはボールト数やファイル数に関係なく合計サイズを一定に保つ。アプリ自体もデバイス上のボールトを列挙できない。
「隠しボールト」とは実際何を意味するのか
ほとんどのボールトアプリはキャビネットのように機能する。アプリを開くとボールトのリストが見える。名前があるかもしれない。カウントが表示されるかもしれない。それぞれの横に小さな鍵アイコンがあるかもしれない。アプリはあなたのボールトが何個あるかを正確に知っており、その情報はアプリを開く人——またはデバイスを調べる人——誰にでも見える。
Vaultaireは違う仕組みで動く。ボールトのリストはない。ディレクトリもない。レジストリもない。存在するものをカタログするメタデータファイルもない。パターンを描くとき、Vaultaireはデータベースでボールトを検索しない。パターンから暗号鍵を導出し、その鍵でデータの復号を試みる。鍵が既存のボールトに一致すれば、データがファイルとして復号される。何にも一致しなければ、復号はノイズを生成する——Vaultaireは「このパターンにボールトは存在しない」と「ボールトは存在するが間違ったパターンを描いた」を区別できない。
これはUIの決定ではない。アーキテクチャ上の決定だ。Vaultaireはデバイス上にいくつのボールトがあるかを本当に知らない。アプリはカウントできず、列挙できず、明かすことができない——そもそもそれを追跡するよう設計されていないからだ。
ほとんどのアプリはボールトをユーザーインターフェースから隠す。Vaultaireはボールトを自分自身から隠す。列挙可能な記録が存在しないため、アプリにはボールトを列挙するメカニズムがない。ボールトは、正しい鍵が適用されたときにのみ意味を持つ暗号化データに過ぎない。
これは「隠しフォルダー」ではない
「隠しボールト」というフレーズを聞くと、見つけにくい場所にフォルダーを隠すアプリを思い浮かべるかもしれない。ファイルブラウザーに表示されないようドットプレフィックスで名前がついたフォルダー。「電卓」に見せかけて真の目的を隠すアプリ。これらはカモフラージュのトリックであり、すべてに同じ致命的な欠陥がある:隠されたデータはまだそこにあり、既知の場所に、見つけられるのを待っている。
デバイスにアクセスしたフォレンジック検査官は隠しフォルダーを簡単に見つけられる。ファイルシステムツールはすべてのディレクトリを一覧表示する。ストレージアナライザーはディスク容量がどこに割り当てられているかを示す。5分と検索エンジンがあれば、ある程度技術に詳しい友人でもほとんどの「隠し」フォルダーを見つけられる。
Vaultaireはフォルダーを隠さない。ファイルを偽装しない。代わりに、すべてのボールトの暗号化データが単一の均質なストレージプールに存在する。ボールトの境界に対応するファイルの境界はない。一つのボールトが終わり別が始まる場所を示すヘッダーはない。プール全体が暗号化データであり、特定のボールトの正しい鍵がなければ、どのバイトがどのボールトに属するか——またはプールにいくつのボールトが含まれるか——を特定する方法はない。
その違いは、本を高い棚に隠すことと、本のインクをプールに溶かすことの違いだ。一方には脚立が必要だ。もう一方は、どの分子があなたのものだったかを正確に知ることが必要だ。
ストレージ難読化:パディングメカニズム
ボールト一覧がなくても、賢い敵対者は別のアプローチを試みるかもしれない:ディスク使用量の分析だ。今日Vaultaireが500MBのストレージを使い、明日800MBを使うなら、ボールトを追加したかもしれない。一つのボールトから写真を削除してストレージが正確に200MB減るなら、悪用できる相関関係があるかもしれない。
Vaultaireはストレージパディングでこれを無効にする。アプリは暗号的にランダムなバイトでデータプールをパディングすることで一貫したストレージフットプリントを維持する。ボールトにファイルを追加するとパディングが縮む。ファイルを削除するとパディングが増える。ストレージプールの合計サイズは個々のファイル操作への応答ではなく、事前に決定された閾値でのみ変化する。
つまり、デバイスのストレージを時系列で観察している人物は、変化がファイルの追加、削除、新しいボールトの作成、古いボールトの破棄のどれによって引き起こされたかを特定できない。ストレージフットプリントは情報を与えないよう設計されている。意図的なノイズだ。
パディングの仕組み
パディングメカニズムはシンプルな原則で動く:ストレージプールは常に固定のステップ境界に収まるサイズを占める。スロープではなく階段のようなものだと考えるといい。実際のデータが347MBかもしれないが、プールは512MBを占める。写真を100MB追加しても、プールはまだ512MBを占める——パディングが差分を吸収した。次のステップ閾値を越えたときにのみプールサイズが変わり、その変化は1つのボールトを追加したか10個追加したかに関係なく同一だ。
パディングバイトは暗号化データと区別がつかない。どちらもランダムに見えるバイト列だ。どのバイトがパディングで、どのバイトが暗号化されたボールトの内容かを識別するヘッダーも、マーカーも、メタデータもない。正しい鍵がなければ、すべてのバイトがまったく同じに見える。
フォレンジック耐性:スマートフォンを取り上げられたらどうなるか
脅威モデルを具体的にしよう。デバイスに物理アクセスを持ち、プロのフォレンジックツールを持ち、無制限の時間を持ち、すべてのバイトを調べる法的権限を持つ人物を想像しよう。あなたのボールトについて何を特定できるか?
フォレンジックツールが見られるもの
フォレンジック検査官はVaultaireがインストールされていることを見られる。Vaultaireが一定量のストレージを使用していることを見られる。保存されたデータが暗号化されていることを見られる。以上だ。
フォレンジックツールが特定できないもの
- いくつのボールトが存在するか。ボールト数を明かすボールトカウント、ディレクトリ構造、メタデータはない。
- ボールトが存在するかどうか。ストレージプールはボールトがゼロ個でも100個でも関係なく存在する。パディングはどちらの場合も空間を埋める。
- 各ボールトの中身。暗号化されたデータは正しい鍵がなければランダムノイズと区別がつかない。
- ボールトがいつ作成・変更されたか。タイムスタンプはデータとともに暗号化される。ファイルシステムのタイムスタンプはボールトレベルの操作ではなくプールレベルの操作を反映する。
- 実際のデータ量。パディングは実際のデータ量を不確定にする。500MBのストレージに10MBの実データと490MBのパディングが含まれている場合も、490MBの実データと10MBのパディングが含まれている場合もある。
従来のフォレンジック分析では、暗号化されたデータは課題だ——しかし暗号化されたデータの存在は証拠だ。Vaultaireでは、ボールトの存在自体も証明できない。検査官は「Vaultaireがインストールされている」と言えるが、「このデバイスにはNつのボールトが含まれている」とは言えない。答えは常に:わからない、そしてアプリもわからない。
隠しボールトがもっともらしい否認可能性を可能にする方法
隠しボールトは、Vaultaireのもっともらしい否認可能性機能を実際に機能させる基盤だ。二つが切り離せない理由を説明する。
もっともらしい否認可能性とは、描くどのパターンも何かを開くことを意味する。本物のパターンを描けば、プライベートなファイルが見える。別のパターンを描けば、おとりのボールト——まさにこのシナリオのために置いた無害な写真のセット——が見える。観察者にとって、どちらの結果も同一に見える。「本物の」パターンを描いたか「おとりの」パターンを描いたかを見分ける方法はない。
しかしもっともらしい否認可能性は、追加のボールトの存在が検出不可能な場合にのみ機能する。デバイスに3つのボールトが含まれることを検査官が特定できるなら、1つのボールトを見せても否認できない——2つ存在することを知っているから。隠しボールトはこの脆弱性を排除する。誰もボールトを数えられないから、誰もあなたがそのいずれかへのアクセスを隠していることを証明できない。
完全な連鎖
- ステップ1:異なるパターンで複数のボールトを作る——本物のファイル用に一つ、おとり用に一つ、望む数だけ。
- ステップ2:圧力をかけられたら、おとりパターンを描く。観察者は退屈な写真が入ったボールトを見る。
- ステップ3:観察者は他のボールトが存在するかどうかを特定できない。カウントも、リストも、追加のボールトの証拠もない。
- ステップ4:持っているものを見せたと正直に述べる。それ以外を証明できない。
隠しボールトなしでは、もっともらしい否認可能性は芝居だ。隠しボールトがあれば、それは数学だ。
なぜこれが重要なのか
フォレンジック耐性は極端に聞こえると思うかもしれない。ほとんどの人はデバイス押収や裁判所命令に直面していない。しかし隠しボールトの背後にある原則は日常的なシナリオでもあなたを守る。
スマートフォンを手に取ったパートナーは、プライベートなボールトがあるかどうか判断できない。デバイスを借りた同僚は興味を引くものを何も見ない。スマートフォンを盗んだ泥棒は、抽出する価値があるものがあるかどうかを判断できない。どの場合も保護は同じだ:見つけられないものは標的にされない。
これはプライバシーの機能についての根本的なシフトだ。従来のセキュリティは問う:「侵入できるか?」隠しボールトはまったく異なる質問をする:「侵入するものがあるとさえわかるか?」設計上、答えはノーだ。
よくある質問
アプリがいくつのボールトが存在するか知らないなら、どうやって自分のものを見つけるのですか?
パターンを描くと、Vaultaireは暗号鍵を導出し、ストレージプールに対して復号を試みる。鍵がボールトに一致すれば、データが意味のあるファイルとして復号される。一致しなければ、結果はノイズだ。アプリはボールトを検索しない——パターンから数学的に再構成する。インデックスがないため、検索も必要ない。
ストレージ使用量を見てボールトが何個あるかわかりますか?
いいえ。Vaultaireは暗号的にランダムなデータでストレージプールをパディングするため、合計フットプリントはボールトの数やサイズと相関しない。50枚の写真が入ったボールトが1つでも、500枚の写真が入ったボールトが10個でも、ストレージプールは同じ量を占められる。パディングが差分を吸収する。
ボールトを削除したらどうなりますか?ストレージは縮小しますか?
ボールトを削除すると、占有していたスペースはパディングに回収される。合計ストレージフットプリントはすぐには変化しない。事前に決定された閾値をパディングとデータの比率が超えたときにのみ調整され、その調整は何が引き起こしたかに関係なく同一だ。ストレージの変化がボールトの削除、ファイルの追加、または単なる定期的な再調整によるものかを観察者は特定できない。
フォルダーを暗号化するのとどう違いますか?
暗号化されたフォルダーはまだフォルダーだ。ファイルシステムに表示され、名前があり、サイズがあり、タイムスタンプがある。検査官は内容を読み取れなくても存在することを知っている。Vaultaireの隠しボールトは個別のエンティティとしてファイルシステム上に存在しない。パディングされたストレージプール内の均質なバイトとしてのみ存在する。「あれがボールトだ」と指差せるものが何もない。
Vaultaireの将来のアップデートが隠しボールトを危険にさらす可能性はありますか?
隠しボールトアーキテクチャはVaultaireのデータ保存方法の根本であり、オフに切り替えられる機能ではない。追加するボールトレジストリも、作成するディレクトリ構造もない。これを変更するにはストレージエンジン全体を最初から作り直す必要がある。設計は意図的に不可逆だ——アプリは知るよう作られていなかったことを裏切れない。
隠しボールトはiCloudバックアップと連携しますか?
はい。VaultaireがiCloudにバックアップするとき、パディングされたストレージプール全体が暗号化されて単一のブロブとしてアップロードされる。バックアップはローカルストレージと同じ均質なデータを含む。iCloudは特定のサイズの暗号化ファイルを見る——中にいくつのボールトが入っているか、何が含まれているか、データがほとんどパディングか実ファイルかを特定できない。