Velcryptが保管庫を暗号化する仕組み
保管庫がただの隠しフォルダと違うのは、暗号化されているからです。Velcryptでは、すべての写真・ビデオ・書類が、保存される前にiPhone上で暗号化されます。使われる鍵は、あなたのパターンからしか再生成できません。このページでは、その鍵がどのように作られ、使われるのかを順に説明します。
鍵の仕組みを順に説明
Velcryptは階層型の鍵モデルを採用しています。それぞれの層に1つの役割があります。
- あなたのパターン。 5×5のグリッドに描きます。覚えておく必要がある秘密はこれだけです。
- PBKDF2-HMAC-SHA512による鍵ストレッチング。 パターンはランダムなソルトとともに、SHA-512を使ったPBKDF2に60万回以上通されます。鍵ストレッチングとは、1回ごとの推測をわざと遅くする技術で、パターンを1つずつ試す攻撃のコストを大きくします。
- キーチェーンに保存される端末ごとのソルト。 ソルトはあなたの端末上でランダムに作られ、iOSのキーチェーンに保存されます。同じパターンでも別のiPhoneでは別の鍵になるため、事前に計算した推測表は役に立ちません。
- 保管庫のマスター鍵。 保管庫ごとに独自のランダムな256ビットのマスター鍵があります。ストレッチングしたパターンの鍵でファイルを直接暗号化するのではなく、このマスター鍵を開きます。
- HKDFによるファイルごとの鍵。 マスター鍵から、標準的な鍵導出関数であるHKDFでファイルごとに別の鍵を導出します。同じ鍵を共有するファイルはありません。
- AES-256-GCM。 各ファイルは、AppleのCryptoKitを通じて、個別の鍵とGCMモードのAES-256で暗号化されます。
| 層 | 役割 |
|---|---|
| パターン | あなただけが知っている秘密 |
| PBKDF2-HMAC-SHA512(60万回以上) | 1回ごとの推測を遅くする |
| 端末ごとのソルト(キーチェーン) | 鍵を端末固有にする |
| ランダムな256ビットのマスター鍵 | 保管庫ごとに1つ、保管庫同士を分離する |
| HKDF | ファイルごとに固有の鍵を作る |
| AES-256-GCM | ファイルを暗号化し、改ざんを検出する |
| iOSのデータ保護 | OSレベルの2層目 |
保管庫ごとにマスター鍵が異なるため、保管庫同士は暗号的に分離されています。だからこそ隠し保管庫は、見た目だけのトリックではありません。
認証付き暗号とは
認証付き暗号とは、秘密性と完全性の両方を守る暗号化です。AES-256-GCMは2つのことを同時に行います。鍵がなければ読めないようにファイルをかき混ぜ、さらにファイルが改変されていないことを証明する認証タグを付けます。
Velcryptはファイルを開くときにこのタグを確認します。破損でも改ざんでも、1バイトでも変わっていれば、壊れたデータや操作されたデータを黙って返すのではなく、復号自体が失敗します。認証なしで暗号化する古いモードでは、これを検出できません。暗号方式そのものをわかりやすく知りたい場合は、AES-256暗号化とはをご覧ください。
2層目としてのiOSデータ保護
Velcryptは独自の暗号化に加えて、保管庫のファイルを完全な保護クラスのiOSデータ保護で保存します。このクラスでは、iPhoneがロックされている間、iOSはデバイスのパスコードに結びついた鍵でファイルを暗号化したまま保ちます。
2つの層は互いに独立しています。仮に一方が何らかの方法で突破されても、もう一方がロックされたiPhoneとあなたのファイルの間に残ります。
鍵がほかのどこにもない理由
Velcryptは完全オフラインでアカウント不要です。サーバーもアップロードもなく、iPhoneの外に鍵のコピーはありません。この設計により、リスクの一分類がまるごとなくなります。侵害されるデータベースも、あなたのファイルを復号できる社員も存在しません。
ただし代償もあります。鍵は端末上に、しかもパターンを通じてしか存在しないため、パターンを忘れたりiPhoneを紛失したりすると、誰も保管庫を復元できません。暗号化バックアップのオプションは計画中ですが、最初のバージョンにはありません。
暗号化では守れないもの
強力な暗号化は、保存されたファイルを守ります。しかし、パターンを描くところを見られた場合、保管庫を開いたままiPhoneを渡した場合、脱獄した端末でマルウェアが動いている場合には役に立ちません。また、「写真」に残っている元の写真のように、Velcryptの外にあるコピーにも届きません。脅威モデルの全体像は、Velcryptが防げないものを含めてセキュリティの概要で説明しています。
よくある質問
Velcryptはどんな暗号化を使っていますか?
AppleのCryptoKitフレームワークによる、認証付き暗号モードのAES-256-GCMです。各ファイルは、保管庫のランダムな256ビットのマスター鍵から導出された個別の鍵で暗号化されます。
パターンはiPhoneに保存されますか?
パターンがそのまま鍵として使われることはありません。端末ごとのソルトとともにPBKDF2-HMAC-SHA512で60万回以上ストレッチングされ、その結果で保管庫のマスター鍵を開きます。
Velcryptは私のファイルを復号できますか?
いいえ。Velcryptにはサーバーがなく、あなたの鍵のコピーも持っていません。鍵はあなたのiPhone上でパターンからしか再生成できません。パターンを忘れるとリセットできないのもそのためです。
なぜiOSのデータ保護も使うのですか?
独立したもう1つの層を加えるためです。ファイルには完全な保護クラスが使われるため、iPhoneがロックされている間、iOSはVelcrypt自身の暗号化に加えて、デバイスのパスコードに結びついた鍵でファイルを暗号化したまま保ちます。