パターン暗号化:図形を描くだけでファイルを保護

指でパターンを描く。PBKDF2がその動きを保管庫キーに変え、そのキーが、AES-256-GCMでファイルを保護する別のランダムなキーのロックを解除する。パスワード欄も短いPINもない。あるのはあなたのパターンと、意図的に階層化したキー構造だけだ。

Vaultaireは5×5グリッドに描かれた形をシリアル化し、iOS Keychainに保存されたデバイス共通のソルトとともに、PBKDF2-HMAC-SHA512で600,000回反復処理する。得られた256ビットの値が保管庫キーだ。保管庫キーは保管庫のインデックスを暗号化し、AES-256-GCMがファイルの内容とメタデータに使う別のランダムなマスターキーをアンラップする。

パターン暗号化とは何か

ほとんどの保管庫アプリはPINかパスワードの後ろに隠れている。4桁を入力すると写真が現れる。十分に安全に聞こえる、そうではないか?

問題はこうだ:4桁のPINには正確に10,000の組み合わせがある。コンピューターは1秒以内にすべてを試せる。6桁?100万の組み合わせ。それでも現代のハードウェアには取るに足らない速さだ。8文字のパスワードでさえ、小文字だけを使うなら約2000億の可能性がある。それは多く聞こえるが、標準的なノートパソコンが1秒間に数十億のパスワードハッシュをテストできることを知るまでの話だ。

パターン暗号化は根本的に異なるアプローチをとる。ボックスに文字を入力する代わりに、ドットのグリッド上に幾何学的な形を描く。なぞった経路、つまりどのドットに、どの順序で、どんな形で触れたかが、パスワードベースの鍵導出関数への入力になる。その結果はインターフェースで照合されるだけではない。認証付きで暗号化されたインデックスと、その中にあるランダムなマスターキーのロックを解除できなければならない。

この違いは重要だ。一部のアプリでは、PINを入力するとアプリは番号が正しいかどうかを確認するだけだ。正しければ、ファイルが主にアクセス制御でしか守られていなくても、そのまま開く。Vaultaireは描かれたパターンをPBKDF2に入力し、256ビットの保管庫キーを導出する。このキーで保管庫のインデックスを認証して復号できて初めて、ファイルに使われるランダムなマスターキーをアンラップできる。認識されないパターンでは空の保管庫が表示されるが、内部のAES-GCM認証は正しいキーと誤ったキーを区別している。

核心的な違い

PINによるアクセス制御は、読み取れるファイルの前に置かれた鍵付きのドアのようなものになりうる。Vaultaireのパターンは保管庫のダイヤル番号に近い。暗号化されたインデックスを開くキーを導出し、そのインデックスが中身を保護する別のキーを解放する。インターフェースがこの暗号の連鎖を単純に迂回することはできない。

仕組み:ステップごとの解説

指が画面に触れた瞬間から、ファイルが他の全員にとって読み取れなくなるまでに何が起きるかを説明する。

ステップ1:パターンを描く

Vaultaireは5×5のドットのグリッドを表示する。少なくとも6つのドットを、1回以上方向を変えながら一筆でつなぐ。アプリは、どのドットをどの順序でたどったかを正確に記録する。この並びがあなたのパターンだ。

5×5パターングリッド

Androidのロック画面でよく使われる3×3グリッドと違い、Vaultaireは5×5グリッドを使う。これは見た目のための選択ではない。25か所の点があれば、9か所よりはるかに多くの経路、交差、飛び越し、方向転換が可能になる。理論上の空間が大きいことは役に立つが、実際のセキュリティは選んだ経路の予測しにくさに左右される。グリッドが何十億通りもの経路を表現できても、見慣れた文字や単純な形は推測されやすい。

ステップ2:パターンから保管庫キーが導出される

描いたパターンはグリッドサイズとともにシリアル化され、HMAC-SHA512、600,000回の反復、デバイス共通のランダムなソルトを使うPBKDF2(Password-Based Key Derivation Function 2)に入力される。ソルトは秘密ではない値で、iOS KeychainにWhenUnlockedThisDeviceOnlyの項目として保存される。これによりローカルでの導出はデバイスに結びつく。ソルトは保管庫ごとに固有ではなく、人が選んだパターンにエントロピーを加えるものでもない。

暗号化フロー
パターン
5×5グリッドの経路
→
PBKDF2 + Salt
鍵導出
→
256ビット鍵
保管庫ごとに一意
→
AES-256-GCM
ファイル暗号化

鍵導出の処理は意図的に重くしてある。PBKDF2は候補パターンごとにHMAC-SHA512を600,000回実行し、推測攻撃のコストを引き上げる。これで低エントロピーのパターンが256ビットのセキュリティになるわけではなく、攻撃にかかる時間は攻撃者のハードウェア次第だ。目的はもっと限定的で測定可能なものだ。つまり、推測1回ごとのコストを単純なハッシュよりはるかに高くすることだ。

ステップ3:ファイルが暗号化される

保管庫を最初に作成するとき、Vaultaireはランダムな256ビットのマスターキーを生成する。パターンから導出した保管庫キーはインデックスを暗号化し、そのマスターキーをラップする。すべてのファイルを直接暗号化するわけではない。マスターキーはAES-256-GCMで、ファイルのヘッダー、内容、サムネイル、関連するメタデータの暗号化に使われる。毎回新しいノンスを使うため、同じキーで同じ平文を暗号化しても同じ暗号文にはならない。

GCMモードは重要な層を追加する:認証だ。データをスクランブルするだけでなく、改ざんを検出するタグも生成する。暗号化ファイルの1ビットでも変更されると、復号が失敗する。あなたの知らないところでファイルを改ざんすることは誰にもできない。

ステップ4:アクティブなキーの状態が消去される

Vaultaireはロックされると、アクティブな保管庫キーとマスターキーの状態を消去し、ファイルを再び表示する前にもう一度ロック解除を求める。保管庫を開いている間は、CryptoKitがAES-GCMの処理を行えるよう、これらの対称キーのバイト列が必ずアプリのプロセス内に存在する。またVaultaireは、パターンやフレーズで暗号化したリカバリーエンベロープなどのリカバリー情報を、iOS Keychainに保存したAES-GCM暗号化データベースに保持している。これは「パターンもキーのコピーもどこにも保存されていない」と主張することとは大きく異なる。

背後にある数学(平易な言葉で)

なぜこれが機能するかを理解するために計算機科学の学位は必要ない。セキュリティは3つの数字に集約される:可能なパターン数、各推測にかかる時間、攻撃者が行える推測数。

2256
AES鍵空間
5×5
グリッドサイズ
数十億
可能なパターン数

エントロピー:予測不可能性の尺度

エントロピーは「推測がどれだけ難しいか」を表す専門用語だ。コイントスには1ビットのエントロピー(2通りの結果)がある。4桁のPINには約13ビットのエントロピー(10,000通りの結果)がある。5×5グリッドの理論上の経路は多いが、人が実際に選ぶパターンのエントロピーは低い。6つのドットと1回の方向転換のパターンは11,168通りで、一様に選んでも約13.45ビットにとどまる。長く、方向転換の多いパターンほど推測しにくい。

パターンのエントロピーが、推測攻撃に対する上限を決める。PBKDF2は動きに含まれていないエントロピーを生み出せないが、候補1つを試すコストを大幅に高くできる。

鍵導出:推測を高コストにする

PBKDF2はシリアル化されたパターンを受け取り、HMAC-SHA512を600,000回実行する。攻撃にかかる時間は、推測に使うハードウェアで実測したコストで見積もる必要がある。候補1つの処理にちょうど1ミリ秒かかるとすれば、10億の候補を1台で試すのに100万秒、つまり約11.6日かかる。実測コストがもっと大きければ時間は延び、並列ハードウェアを使えば縮む。出力が256ビットでも、パターンの探索空間の大きさは変わらない。

デバイス共通のソルトはKeychainに保存されており、秘密にしておく前提の値ではない。KeychainとiOSのデータ保護により、デバイス押収時の抽出は難しくなるかもしれないが、暗号上の分析では、暗号化されたファイルを入手した調査者がソルトも入手しうると想定しなければならない。ソルトはデバイスをまたいだ事前計算を防ぐものであり、強いパターンの代わりにはならない。

AES-256:公開され、よく研究された標準

AES-256は、NISTがFIPS 197として公開した強力な標準の暗号だ。「256」はビット単位の鍵の長さを指す。256ビット鍵には2256の可能な値があり、総当たりで試すには多すぎる。そのため攻撃者は代わりにパターンを狙う。Vaultaireがパターンを600,000回のPBKDF2反復で強化するのはこのためだ。

AES-256のセキュリティは、アルゴリズムを秘密にすることに依存しない。ただし、システム全体がAESの鍵空間だけで守られているわけではない。現実的な推測の限界は、パターンのエントロピー、PBKDF2の作業量、そしてデバイスソルトと暗号化ストレージを取り巻く保護で決まる。正しいランダムなマスターキーのロックが解除されれば、AES-256-GCMは強力な認証付き暗号化を提供する。

攻撃者が乗り越えなければならないもの

暗号化されたファイルにアクセスしようとする主な手口と、Vaultaireがそのコストを引き上げるために何をしているか、そしてどこに限界が残るかを見ていこう。

ブルートフォース:すべてのパターンを試す

PBKDF2により、パターンの候補ごとにHMAC-SHA512を600,000回実行するコストがかかる。これは意味のある防御だが、何年もつと約束できるものではない。結果は、パターンの選び方、実測した導出速度、並列処理、調査者がデバイスソルトを取得しているかどうかで変わる。PBKDF2は新しいエントロピーを生むのではなく推測コストを上げるだけなので、長く予測しにくい経路が重要になる。

スマッジ攻撃:画面を読む

3×3グリッドでは、画面の指紋跡が可能なパターンを大幅に絞り込める。5×5グリッドでは、指紋跡のパターンがどのドットが触れられたかを明かすが、順序、方向、それらの間のつながりは明かさない。そのため候補は絞り込まれるが、長く方向転換の多いパターンほど絞り込みにくい。

ショルダーサーフィン:描くところを見る

小さなスマートフォン画面に素早く描かれたパターンは、特に5×5グリッドでは、観察によって覚えることが極めて難しい。研究によると、観察者がPINやパスワードを声に出して話しているのを聞くのと比べて、複雑なパターンを再現する方がはるかに難しいことが示されている。

デバイス押収:スマートフォンを取られる

スマートフォンを奪われても、Vaultaireのファイルの内容とインデックスは、必要なキーが手に入るまでAES-GCMの暗号文のままだ。アプリは従来のパスワード検証用レコードを保存しないが、それでオフラインでの検証が不可能になるわけではない。暗号化された各保管庫インデックスのファイル名には保管庫キーの切り詰めたハッシュが含まれており、AES-GCMの認証付き復号も候補キーに対して成功か失敗かを返す。そのため、デバイスの保護とパターンの強さは引き続き脅威モデルの一部だ。

検証オラクルなし

認証付き暗号文に対して推測を試すのに、別のパスワードハッシュは必要ない。VaultaireのAES-GCMタグは成功か失敗かを高い確度で示し、インデックスのファイル名はもっと安価な事前チェックになる。防御の要は、認証情報のコストと予測しにくさ、そしてローカルの素材に対するiOSの保護であり、検証手段が存在しないことではない。

強力なパターンを選ぶ

暗号化は選ぶパターンの強度に比例する。最小の努力でセキュリティを最大化する方法を説明する。

強力なパターンを作るもの

  • より多くのドットを使う。利用可能な25ドットのうち少なくとも8つをつなぐ。追加ドットごとに可能なパターン数が倍増する。
  • 自分の経路を交差させる。ループバックし、ドットをスキップし、予期せず方向を変えるパターンは、記憶や観察による再現が格段に難しい。
  • 明らかな形を避ける。文字(L、Z、S)、単純な幾何学的形状(正方形、三角形)、直線は攻撃者が最初に試すものだ。
  • グリッド全体を使う。一角や一辺に留まるパターンは利用可能なエントロピーを無駄にする。広げること。

避けるべきもの

  • 最小長のパターン。 Vaultaire では、少なくとも 6 つのドットと 1 回の方向変更が必要ですが、最小値を満たしていてもパスが予測不可能になることはありません。結果を確実に思い出せる場合には、グリッドをより多く使用してください。
  • 単純な幾何学的形状。L字型、ジグザグ、直線の斜め線は「password123」のパターン版だ。
  • 毎回同じ角から始める。Androidのロックパターンの研究によると、ほとんどの人が左上のドットから始める。攻撃者はこれを知っている。

最適な選択

少なくとも2回の方向転換を持つ8〜12ドットをつなぐパターンは、筋肉記憶で覚えやすいままで優れたセキュリティを提供する。パスワードのように覚える必要はない——署名の書き方を覚えるのと同じように、手が動きを覚える。

安心できる理由

Vaultaireのパターン暗号化は、見た目のよいPINパッドにとどまらない。描いた動きは本物の鍵導出関数で処理され、認証付きで暗号化されたデータのロックを解除しなければならない。その強さは選んだ動きに左右されるため、Vaultaireは256ビットの出力長を人が覚える秘密の256ビットのエントロピーとして示すのではなく、大きなグリッドとPBKDF2の高い作業量を組み合わせている。

パターンとローカルの保管庫キーがVaultaireに送信されることはない。バックアップがオンの間(デフォルト)は、パターンから導出した別のバックアップキーがCloudKitのレコードを暗号化し、暗号化されたリカバリーマニフェストによってリカバリーフレーズで保管庫キーとバックアップキーを復元できる。Vaultaireはこれらのレコードを復号するプロバイダーキーを持たないが、デバイスとリカバリー用の認証情報は引き続き設計上のセキュリティの要だ。

形を描く。その形がファイルを守る。数学が残りをやる。

よくある質問

パターンを忘れたらどうなりますか?

保管庫を作成すると、Vaultaireは9語のカスタムリカバリーフレーズを生成する。PBKDF2がそのフレーズからリカバリーキーを導出し、そのキーで保管庫キーを収めた暗号化エンベロープを開く。パターンとリカバリーフレーズの両方を失った場合、保管庫を復元できるサーバー側のキーはVaultaireにはない。

パターンは本当にパスワードよりセキュアですか?

いいえ。パターンは長いパスワードほど強くはない。6つのドットと1回の方向転換のパターンは11,168通りで、一様に選んでも約13.45ビットにとどまり、人は一様には選ばない。長く、方向転換の多いパターンほど推測しにくい。パターンの利点は使いやすさだ:人々は強力なものを覚えにくいため弱いパスワードを選ぶ。パターンは筋肉記憶を活用し、意識的に暗記せずに複雑なものを使うことを自然にする。

誰かがパターンのスクリーンショットや録画を撮れますか?

Vaultaireはパターングリッドにベストエフォートのスクリーンショット対策をかけ、iOSが画面収録中と報告したときに反応する。iOSには任意のアプリ画面を保護する公開のセキュア画面フラグがないため、これらの対策は意図しないキャプチャを減らせるが、あらゆるキャプチャ手段を防げるとは保証できない。

Vaultaireはどの暗号化アルゴリズムを使っていますか?

VaultaireはPBKDF2-HMAC-SHA512を600,000回反復し、パターンとデバイス共通のKeychainソルトから保管庫キーを導出する。この保管庫キーが保管庫のインデックスを暗号化し、ランダムな256ビットのマスターキーをラップする。ファイルの内容、ヘッダー、メタデータ、サムネイルは、マスターキーを使ったAES-256-GCMの認証付き暗号化で保護される。

パターンはデバイスに保存されますか?

Vaultaireは、パターンを含むリカバリー情報を、iOS Keychainに保持されたAES-GCM暗号化のリカバリーデータベースに保存する。パターンがVaultaireに送信されることはなく、平文のファイルに保存されることもない。保管庫を開いている間、キーのバイト列はアプリのプロセス内に存在する。ロックすると、Vaultaireはアクティブなキーの状態を破棄する。

Vaultaireは暗号化されたファイルにアクセスできますか?

Vaultaireは、パターン、リカバリーフレーズ、復号キー、読み取れる保管庫の中身を受け取るサービスを運用していない。暗号化されたiCloudバックアップは、あなたのプライベートなCloudKitデータベースにとどまる。ただしこのプロバイダーとの境界は、開いている保管庫を、改ざんされたアプリのビルド、OS、デバイスから守るものではない。

パターン暗号化を試す

最初のパターンを描いて、ファイルが本当に守られる感覚を体験してください。

Vaultaireを無料ダウンロード