もっともらしい否認とパターンで分離された保管庫
誰かにVaultaireを開くよう迫られたとします。パターンを1つ描くと、ほかの保管庫を並べたメニューを出さずに、1つの暗号化保管庫が開きます。別のパターンなら別の保管庫が開きます。画面上では実用的な区分けができますが、アプリコンテナを調べられる調査官に対しては明確な限界があります。
Vaultaireのもっともらしい否認機能は、パターンごとに別々の暗号化保管庫インデックスを割り当て、保管庫の一覧を表示しません。画面を見られるだけの確認ならほかの保管庫を隠せますが、ディスク上の構成から、アプリコンテナにアクセスできる調査官には保管庫の数がわかります。
もっともらしい否認可能性とは何か
暗号学の最も厳密な意味では、もっともらしい否認とは、観測できるストレージから、保護されたコンテンツがほかにも存在すると証明できないことを指します。一方、日常的な製品説明では、ある画面だけを見せて別の画面を隠すおとりの認証情報にもこの言葉が使われます。この2つは別の基準です。Vaultaireの現在の実装が満たすのは画面上の区分けという目標であり、情報理論的な否認ではありません。
ほとんどの保管庫アプリはパスワード一つで守られた保管庫を一つ提供する。誰かに強制的に開けさせられれば、すべてが露わになる。第二のパスワードで偽の画面を表示する「デコイモード」を提供するアプリもある。しかしそのような実装は通常、見た目だけのものだ。フォレンジック調査官はアプリのデータを見て、設定フラグを確認し、暗号化データのサイズが表示されているファイルと合わないことに気づき、または隠しレイヤーの存在を示すメタデータを発見できる。
Vaultaireはパターンで保管庫を指定する方式を採用しています。5×5グリッド上の有効なパターンごとに、異なる候補保管庫キーが導出されます。アプリはそのキーをハッシュして暗号化インデックスのファイル名を求め、インデックスが存在すればそれを開いて認証します。パターンや保管庫名を対応づける平文の登録簿はありません。ただし、暗号化インデックスファイルそのものは列挙して数えられます。
導出したインデックスが存在し、AES-GCMの認証に成功すると、その保管庫のファイルが表示されます。そうでなければ、Vaultaireは空の画面を表示し、そのパターンで新しい保管庫を作成できます。ロック画面に別の保管庫名や一覧を示すエラーは出ません。この静かな画面は簡単な確認には有効ですが、後述するファイルシステム上の痕跡は消えません。
従来の保管庫アプリは、開くとコンテナの一覧が表示されることがよくあります。Vaultaireでは各パターンが1つの暗号化インデックスを指定します。画面を操作する人に見えるのは選ばれた保管庫だけで、ほかの保管庫の一覧は見えません。ファイルシステムを調べる人はより多くを把握でき、保存ディレクトリから保管庫の数を数えられます。
内部の仕組み
技術的な土台は、パターンから導出したアドレス指定と認証付き暗号の組み合わせです。パターンが違えば、候補キーもファイル名も違います。さらにAES-GCMが明示的な整合性チェックを行います。正しいキーなら暗号化インデックスの認証に成功し、間違ったキーなら失敗します。この認証結果は安全性に役立つ一方で、コピーされたデータを使ってオフラインで推測を検証できることも意味します。
パターンが異なれば鍵も異なる
パターンを描くと、Vaultaireはドットの順序とグリッドサイズをシリアライズし、Keychainに保存されたデバイス共通のランダムなソルトを使ってPBKDF2-HMAC-SHA512を600,000回実行します。出力は256ビットの保管庫キーです。異なるパターンからは無関係なキーが生成されますが、認証情報としての強度はパターンの推測しやすさに左右されます。出力が256ビットでも、人が選んだパターンに256ビットのエントロピーがあるわけではありません。
各鍵は自分のブロブを復号する
Vaultaireは、各保管庫のファイルマップとラップされたランダムなマスターキーを、AES-256-GCMで暗号化したインデックスに保存します。パターンを描くと、アプリは候補の保管庫キーを導出し、対応するキーフィンガープリントのファイル名を確認します。ファイルが存在すれば、認証付き復号は成功か失敗のどちらかになり、AES-GCMが無意味な平文を受け入れることはありません。有効なインデックスが開かなければ、ほかの保管庫を一覧表示することなく空の画面を表示します。
保管庫をまたぐ平文の一覧はない
Vaultaireには、パターンと読み取り可能な保管庫名を対応づけるデータベースはありません。通常のロック解除では、導出したキーで1つのインデックスだけを指定します。ディスク上では、各保管庫に「vault_index_<locator>.bin」というルートファイルがあり、これらはランダムなダミーファイルで64単位に埋められたプールに置かれます。さらに同じロケーター名の保存ディレクトリもあります。アプリ自身もストレージ管理のためにこれらを列挙します。ロケーターから元のパターンはわかりませんが、ディレクトリの数から保管庫の数がわかり、どのルートファイルが本物かも判明します。
どちらの保管庫も等しく本物だ。どちらも同じアルゴリズムで暗号化されている。どちらも同じ種類の暗号化出力を生成する。一方を「本物」、他方を「デコイ」とラベル付けするフラグも、マーカーも、メタデータもない。数学的に見れば、両者は同一だ。
おとり保管庫戦略
もっともらしい否認可能性が機能するためには、見せるものが必要だ。空の保管庫は不審だ。守る価値のあるものが明らかに入っていない保管庫も不審だ。最も強力な防御は、誰かが見つけることを期待するものとまったく同じように見える保管庫だ。
デコイを準備する
第二のパターンを選ぶ——プレッシャー下でも素早く自然に描けるものを。そのパターンで保管庫を作成する。保管庫アプリを使う人にとって自然なコンテンツで埋める:センシティブではないがプライベートにしておきたい個人的な写真、いくつかの財務書類、メモなど。コンテンツは信憑性があって少し恥ずかしいくらいのもの——スマートフォンを探る人が「見つけた」と思うくらいのものがよい。
説得力を持たせる
優れたおとり保管庫にはいくつかの特徴がある。適切な数のファイルが入っていること——少なすぎず(不審に空)、多すぎず(なぜそれほど平凡なコンテンツを守る?)。ファイルは実際に使用していることを示すほど最近のものであること。そして理想的には、コンテンツがそもそも保管庫アプリをインストールした理由として説得力のあるものであること。
ロック解除後の画面しか見られない人には、選ばれた保管庫だけが表示され、保管庫の選択画面は表示されません。これで何気ない確認による露出を減らせます。一方、ファイルシステムにアクセスできる人は保管庫の数を数えられます。インデックスとパターンを結びつけたり中身を読んだりできなくても、ローカルに複数の保管庫があることは知られる可能性があります。
プレッシャー下で
デバイスのロック解除を強要されたら、おとりのパターンを描いてください。保管庫が開き、ファイルが表示されます。通常の画面には、見つけられる隠しメニューも保管庫の一覧もありません。スマートフォンを手にした人に見えるのは、ロック解除された1つの保管庫だけです。簡単な確認なら話の筋が通りますが、ファイルシステムを調べれば、ほかの暗号化インデックスが見つかる可能性があります。
機密保管庫は、そのパターンを描かない限り画面に表示されません。隠しメニューの奥に並んでいるわけでもありません。ただし、その暗号化インデックスはアプリコンテナ内に存在するため、この機能をあらゆる強制開示やフォレンジック解析への防御とみなすべきではありません。
セキュリティの境界を正確に
Vaultaireが強く主張できるのは暗号化されたコンテンツについてであり、画面について言えることはもっと限られます。AES-GCMはインデックスとファイルの中身を保護します。パターンによる指定の仕組みは、ほかの保管庫をロック解除の画面に出しません。しかし、どちらの性質も、アプリコンテナを読める調査官から暗号化インデックスファイルの数を隠すものではありません。
暗号化されたコンテンツは機密のままです
AES-256-GCMは、キーとノンスが正しく扱われていれば、平文を隠し、改ざんを検出するように設計されています。調査官はファイル名と保存場所からVaultaireのインデックスファイルや暗号化データファイルを特定できますが、対応するキーがなければ、保護されたファイルマップ、ラップされたマスターキー、ファイル名、メタデータ、サムネイル、ファイルの中身は読めません。
インデックスは数えられるが、平文のパターン対応表はない
各保管庫には専用の保存ディレクトリがあるため、ファイルシステムから保管庫の数はわかります。わからないのは、フィンガープリントと、それを生成したパターン、保管庫名、復号された中身を結びつける平文の対応表です。これは意味のある境界ですが、数そのものは隠れていません。
オフラインで推測を検証できる
デバイスのソルトと暗号化されたアプリデータをコピーした攻撃者は、推測したパターンから候補キーを導出できます。対応するインデックスのフィンガープリントから、一致するファイル名があるかどうかがわかり、AES-GCMの認証付き復号で、その推測が正しいことをほぼ確実に確認できます。PBKDF2は推測1回あたりのコストを上げますが、このオフライン検証をなくすことも、弱いパターンのエントロピーを増やすこともできません。
空の画面で得られること
ロック画面でVaultaireは「パターンが違います」と知らせることも、ほかにどの保管庫があるかを示すこともありません。一致しないパターンは空の画面か作成画面に進むため、画面を操作するだけの人は保管庫の一覧を得られません。ただし、この効果を、元のファイルをコピーして解析した攻撃者にまで当てはめるべきではありません。
開示を強制する法律は、国や地域、状況によって異なります。当局が何を推測し、要求し、証明できるかをVaultaireの画面が決めるわけではありません。暗号化インデックスファイルの数自体から、ローカルに複数の保管庫があるとわかる可能性もあります。製品の機能を法的な結論として頼らず、ご自身の状況を資格のある弁護士に相談してください。
もっともらしい否認可能性が必要な人
もっともらしい否認可能性はスパイや内部告発者のためだけのものと思うかもしれない。実際には、何百万人もの普通の人々が、強制下で情報を守る能力が贅沢ではなく必要不可欠な状況に直面している。
ジャーナリストと情報源
調査報道ジャーナリストは機密性の高い素材を持ち歩くことが多い:情報源の身元、流出文書、インタビューの録音。多くの国で、ジャーナリストは国境、検問所、または捜索中に日常的に拘留され、デバイスを捜索される。無害なメモと公開された写真が入ったおとり保管庫が隠れ蓑になり、本物の保管庫が匿名性に命がかかっているかもしれない情報源を守る。
活動家とオーガナイザー
政治活動家、労働運動の組織者、人権活動家は、スマートフォンが監視対象となる環境で活動していることがあります。パターンを分ければ通常のアプリ使用時に見える内容を区分けできますが、没収されたり侵害されたりしたスマートフォンからは、暗号化インデックスの数が知られ、オフラインでパターンを推測される可能性があります。運用上のセキュリティは、アプリの外まで広げて考える必要があります。
虐待的な状況にある人
虐待を記録している人は、機密性の高い証拠を、見せても安全な資料と分けておく必要があるかもしれません。2つ目の保管庫を使えば、アプリの画面しか見られない相手への露出を減らせます。ただし、デバイスの監視、スパイウェア、強要、ファイルシステムの調査に対する安全は保証できません。危険な状況にある方は、地域の専門支援団体の助言に従ってください。
国境を越える旅行者
国境での捜索権限や旅行者の義務は国によって異なります。Vaultaireで1つのパターンを開いても保管庫の一覧は表示されませんが、ほかの暗号化インデックスがフォレンジック検査で見つからなくなるわけではありません。持ち歩く機密データは最小限にし、経路と状況に応じた最新の法的助言を得てください。
プライバシーを大切にするすべての人
プライバシーを守るのに、危険な状況にいる必要はありません。個人的な日記をつけている人もいるでしょう。誰にも見られたくない医療情報がある人もいるでしょう。スマートフォンを手に取った誰もがデジタル生活のすべてにアクセスできるべきではない、と考えるだけでも十分です。パターンで分けた保管庫は、通常のロック解除で見える範囲を絞って画面上のプライバシーを高めます。ただし、暗号化インデックスの数はファイルシステムを調べる人には見えたままです。
他の保管庫アプリとの比較
多くの保管庫アプリは、セキュリティをアクセス制御の問題として扱います。1つの認証情報で1つの見えるコンテナを守る方式です。偽のPINやおとりモードを追加している製品もあります。こうした機能の強さを決めるのは、宣伝上の名前ではなくストレージの設計です。目に見える設定フラグや別のおとり用データベースがあれば、別のモードの存在がわかってしまいます。
単一保管庫の問題
コンテナが1つだけの設計は、強要にそのまま弱いという問題を抱えています。唯一の認証情報を明かせば、その奥にあるすべてのコンテンツが見られてしまいます。製品ごとに現在の機能は異なるため、特定の競合製品が決まった方式を使っていると決めつけず、実際のストレージとおとり機能の実装を評価してください。
見せかけのデコイモード
偽パスワード機能は簡単な確認には有効ですが、フォレンジック解析に対して役立つかどうかは、デバイスに検出できるおとりフラグ、2つ目のデータベース、見分けのつくファイルサイズが残るかどうかで決まります。設計の公開や監査がなければ、名前だけでは強い否認性があるとも、ないとも言えません。
Vaultaireのアプローチはアーキテクチャ的に異なる
Vaultaireは、通常のロック解除の流れにパターンによる分離を組み込んでいます。保管庫がおとりかどうかを決める特別な偽PINフラグはなく、設定した各パターンがそれぞれ普通の暗号化保管庫を指定します。個々のインデックスファイルは暗号化コンテナとして見えたままなので、設計上の違いが最もはっきり表れるのは画面とコンテンツの分離であり、フォレンジック上の数の隠蔽ではありません。
その結果、どの保管庫も同じように扱われます。「本物」や「偽物」というラベルはなく、どの保管庫もそれぞれ認証済みのロック解除または復元の手順が必要です。必要な保管庫キーとマスターキーがなければ、暗号化されたコンテンツは読めません。ただし、コンテナが存在すること自体は暗号によって消されるわけではありません。
よくある質問
保管庫はいくつ作れるか?
無料プランでは保管庫は3つまでです。Proでは、有効なパターンごとに、別々の暗号化インデックスを割り当てられます。ただし、ストレージ容量、実際に使えるパターンの数、デバイスのリソースによる実用上の制約はあります。また、アプリに保管庫の選択画面がなくても、ディスク上のインデックスファイルの数は数えられます。
フォレンジック調査官は保管庫の数を特定できるか?
はい。調査官がVaultaireのアプリコンテナを読み取れる場合は可能です。ルートのvault_indexファイルはランダムなダミーファイルとともに64スロット単位でまとめられていますが、実在する各保管庫には専用の保存ディレクトリもあるため、保管庫の数を数えられます。ロケーター名からパターンや読み取り可能な内容はわかりません。ただし、Vaultaireは保管庫の数がファイルシステム解析から隠れているとは主張していません。
Vaultaireのもっともらしい否認可能性の仕組みを知っている人がいたら?
設計を知っていても、どのパターンがどの暗号化インデックスを開くのか、その保管庫に何が入っているのかはわかりません。ただし、限界は明らかになります。アプリコンテナを調べる調査官は保管庫の数を数えられ、キーのフィンガープリントとAES-GCMの認証結果を使って、推測したパターンをオフラインで試せます。そのため、パターンの強さとデバイスのセキュリティは引き続き重要です。
複数の保管庫を持つとストレージやパフォーマンスに影響するか?
各保管庫は含むファイルに比例したストレージを消費する。暗号化と復号のオーバーヘッドは、保管庫が1つでも複数でも同じだ。アプリは描いたパターンに対応する保管庫だけを復号するため、他の保管庫の存在によってパフォーマンスは影響を受けない。
ソフトウェアアップデートでVaultaireがすべての保管庫を開示するよう強制できるか?
ソフトウェアアップデートはアプリと同じ権限で動くため、暗号化インデックスファイルを列挙したり、今後の動作を変えたりできます。それでも、パターンから導出したキーがなければ、開かれていない保管庫は復号できません。ただし、ソフトウェアの配布は信頼モデルの一部です。リスクの高いユーザーは、アップデート内容と独立した監査結果を確認してください。
すでに使用しているパターンで誤って保管庫を作成したらどうなるか?
同じデバイス上の既存保管庫と一致するパターンを描くと、アプリはその保管庫を開きます。ローカルのキー導出は、パターン、グリッドサイズ、デバイスのソルトが同じなら必ず同じ結果になるため、アプリは重複を作らず同じインデックスを開きます。
大切なものを守る
最初のおとり保管庫は1分以内に設定できます。強いプライバシーは、画面で何が隠れ、暗号化ストレージから何がわかるのかを正確に知ることから始まります。
Vaultaireを無料ダウンロード