Cryptile のセキュリティ設計を層ごとに説明
Cryptile は、すべてのファイル、サムネイル、インデックスを AES-256-GCM で暗号化します。鍵は、あなたが描くパターンから iPhone 上で作られます。アカウントもサーバーもありません。開発者が鍵を持つことはありません。
わかりやすい要約はセキュリティのページにあります。
知っておくべきことは何ですか?
- すべての鍵の元はあなたのパターンです。 パターンがなければ、読める形では何も保存されていません。
- サイズとボールトの数はぼかされます。 ファイルはパディングされ、おとりスロットがボールトの数を隠します。
- 自分で確かめられます。 暗号化のコアは、誰でも監査できるよう公開されています(ソース公開)。脅威モデルとテストベクターもあります:github.com/jasonbrelsford/cryptile-core。
パターンはどう鍵になりますか?
- パターンは、グリッドの大きさと、触れたマスを順番に並べたものとして記録されます。
- それが、この iPhone 専用として iPhone のキーチェーンに保存された 32 バイトのデバイスの秘密と組み合わされます。
- その上で PBKDF2-HMAC-SHA512 を 600,000 回実行します。推測 1 回ごとに、それだけの計算が必要になります。
- HKDF-SHA256 が結果を、参照用の鍵とラップ用の鍵に分けます。
- 参照用の鍵がボールトのインデックスファイルの名前を決めます。ラップ用の鍵がそれを開きます。
インデックスの中には、ボールトのランダムな 256 ビットのマスターキーがあります。HKDF はそこから、ファイル、サムネイル、インデックス用に別々のサブキーを作ります。1 つの鍵を 2 つの目的に使うことはありません。
ファイルはどう暗号化されますか?
サムネイルやインデックスのような小さな項目は、ランダムなノンスとともに AES-256-GCM でひとまとめに封じられます。
大きなファイルは、1 MB ずつのチャンクに分ける STREAM 形式を使います。各チャンクは専用のノンスを持ち、自分の位置と、最後のチャンクかどうかを記録します。チャンクを切り取ったり、並べ替えたり、入れ替えたりすると、復号に失敗します。
GCM はすべてのヘッダーも認証するので、変更されたファイルは表示されずに拒否されます。
サイズとボールトの数はどう隠されますか?
すべての小さなデータと、すべてのファイルの最後のチャンクは、64 KiB の倍数までパディングされます。コピーした人にわかるのはおおよそのサイズで、正確なサイズではありません。
ボールトの一覧はありません。アプリは、本物とおとりを合わせて、インデックスと同じ形のスロットを少なくとも 8 つ持ち、書き込みのたびにおとりを作り直します。どのスロットにも当たらないパターンを描くと、空のボールトが開きます。
復元はどう働きますか?
各ボールトには 9 語のリカバリーフレーズがあり、96 ビットのランダム性を持ちます。フレーズは、ボールトの別の復元用コピーを開きます。このコピーは、フレーズから作った鍵で封じられています。
iCloud バックアップは、暗号化されたファイルをそのままの形で写します。初期設定ではデバイスの秘密が含まれないので、バックアップだけではパターンの推測に使えません。
何が暗号化され、何がされませんか?
暗号化されるもの:写真、動画、ファイル、メモ、サムネイル、名前、フォルダ、お気に入り、認識されたテキスト、写真の位置情報。おとりと無料プランの件数を管理する小さなファイルは、デバイスの鍵で封じられます。
Cryptile が暗号化しないもの:
- 設定。 自動ロックの時間、並べ替えの順序、バックアップのスイッチには、秘密は含まれません。
- 追加を待っている共有項目。 ボールトを開くまで、iOS のファイル保護の下に置かれます。
- コンテナ全体のサイズと書き込みの時刻。 10 GB のボールトが 10 MB に見えることはありません。
- あなたが書き出したもの。 写真やファイルに保存したコピーは、ボールトの外にあります。
これは何から守りますか?
- キーチェーンなしでアプリのファイルをコピーする人。 手に入るのは暗号文で、パターンを試すことはできません。
- Apple、または Apple での情報漏えい。 iCloud にあるのは暗号文だけで、鍵はありません。
- 改ざん。 変更されたり並べ替えられたりしたデータは、復号に失敗します。
- 私たち。 私たちはサーバーを運用しておらず、鍵も持たないので、アクセスをリセットできません。
これは何から守りませんか?
- 短いパターン。 パターンはパスフレーズより弱いものです。ファイルとキーチェーンがそろえば、4×4 のグリッドで 6 マスのパターンは、GPU で数分のうちに破られます。8 マス以上を使ってください。
- ロックが解除された iPhone 上のマルウェア。 ボールトが開いている間にメモリを読み取るコードは、どのアプリにも防げません。
- 描くところを見ている人。 手元が誰にも見えない場所で描いてください。
- iPhone とフレーズの両方をなくすこと。 ボールトは失われます。リセットはありません。
Plus のパニックパターンはデバイスの秘密を破棄するので、復元するまで、その iPhone 上のどのボールトも開きません。