Velcryptの仕組み:セキュリティモデル

更新日

  1. あなたのパターン 5×5のグリッドに描きます。保存も送信も一切されません。
  2. PBKDF2-HMAC-SHA512 60万回以上の反復と、iOSのキーチェーンに保存された端末ごとのランダムなソルト。
  3. パターン鍵(256ビット) このパターンに属する保管庫だけを開きます。
  4. 保管庫のマスターキー 保管庫ごとに固有のランダムな256ビットの鍵。パターン鍵で保護されます。
  5. HKDF → ファイルごとの鍵 すべてのファイルに、マスターキーから導出した専用の鍵が与えられます。
  6. AES-256-GCM Apple CryptoKitによる認証付き暗号。ファイルにはさらにiOSのデータ保護を適用。
パターンが、ファイルを暗号化する鍵になるまで。すべての工程はiPhoneの中で行われます。

このページでは、写真・動画・書類をVelcryptに入れたときに何が起きるのか、そして保護がどこで終わるのかを、わかりやすい言葉で説明します。個人的なものを預ける前に、設計を理解しておきたい方のためのページです。

要点

VelcryptはiPhoneアプリで、プライベートなファイルを端末上の暗号化された保管庫に保存します。保管庫を開くには、5×5の点のグリッドにパターンを描きます。このパターンはどこにも保存されません。代わりに、時間のかかる鍵導出関数に通して鍵を作り、その鍵が保管庫の中身を守ります。

すべてはiPhoneの中で完結します。Velcryptにはアカウントもサーバーもアップロードの工程もないため、保管庫や鍵のコピーはほかのどこにも存在しません。これが強みであると同時に、最大の制約でもあります。パターンを忘れたり、iPhoneをなくしたりすると、保管庫は復元できません。

パターンから鍵へ

パターン

パターンとは、25個の点のうち6個以上を通る一筆書きの線で、少なくとも1回は方向を変える必要があります。8〜12個の点を使う長めのパターンをおすすめします。点が1つ増えるごとに、攻撃者が試さなければならないパターンの数が何倍にも増えるからです。それぞれの長所と短所はパターンロック・PIN・Face IDの比較で、ロックそのものの仕組みはパターンロックの機能ページで詳しく紹介しています。

端末ごとのソルトを使うPBKDF2

描き終えると、Velcryptは点の並びをPBKDF2-HMAC-SHA512で60万回以上反復して鍵に変換します。PBKDF2とは鍵導出関数のことで、秘密の情報(あなたのパターン)を暗号鍵に変える、あえて時間がかかるように作られた再現可能な手順です。この遅さこそが狙いです。あなたにとって鍵の導出は一瞬ですが、何百万通りものパターンを試そうとする人は、そのコストを何百万回も支払わなければなりません。

導出の際にはソルトも混ぜ込みます。ソルトとは端末上で一度だけ生成され、iOSのキーチェーンに保存されるランダムな値です。ソルトはiPhoneごとに異なるため、たまたま同じパターンを描いた2人でもまったく別の鍵になり、「よくあるパターン → 鍵」を事前に計算した表は役に立ちません。

保管庫ごとのマスターキー

保管庫にはそれぞれ専用のマスターキーがあります。保管庫を作成するときに、システムの安全な乱数生成器で生成される256ビットのランダムな値です。保管庫のファイルを実際に守っているのはこのマスターキーです。マスターキーは、パターンから導出した鍵で封をした(ラップした)保護された形でのみ保存されます。正しいパターンがなければ、マスターキーの封は解けません。

この分離には意味があります。マスターキーは真にランダムなので、その強度はパターンの覚えやすさに左右されません。また、同じiPhone上のほかの保管庫とは暗号的に完全に独立しています。

ファイルごとの鍵

Velcryptはマスターキーから、HKDFを使ってファイルごとに別々の鍵を導出します。HKDFは、1つの強力な秘密から互いに独立した複数の鍵を導出するための標準的な関数です。万一あるファイルの鍵が漏れても、マスターキーやほかのファイルの鍵が明らかになることはありません。

ファイルの暗号化の仕組み

Apple CryptoKitによるAES-256-GCM

写真・動画・書類はそれぞれAES-256-GCMで暗号化されます。独自の暗号コードではなく、AppleのCryptoKitフレームワークを使っています。AES-256-GCMは認証付き暗号で、中身を秘密に保つだけでなく、改ざんも検出します。暗号化されたファイルが1ビットでも書き換えられていれば、壊れたデータや操作されたデータを出力するのではなく、復号そのものが失敗します。詳しくはAES-256暗号化の解説と暗号化の機能ページをご覧ください。

2つ目の層としてのiOSデータ保護

Velcrypt独自の暗号化に加えて、保管庫のファイルはiOSのデータ保護を完全保護クラスに設定して書き込まれます。このクラスでは、iOSはiPhoneのロックが解除されている間だけ使える鍵でファイルを暗号化したまま保ちます。iPhoneがロックされているときは、OS自身もファイルを読み取れません。この層はAppleが提供するもので、Velcryptの鍵とは独立しているため、攻撃者は両方を突破する必要があります。

未知のパターンで空の保管庫が開く理由

多くのアプリは、入力されたパスワードを保存済みの何か(ハッシュ、検証用の値、「正解」)と照合し、パスワードが違いますと表示します。Velcryptはあえてそうしていません。

保管庫の一覧も、パターンが「正しい」かどうかを確かめるための保存値もありません。パターンを描くと、Velcryptは鍵を導出し、それに対応する保管庫を開こうとします。一致する保管庫がなければ、そのパターン用の新しい空の保管庫を開くだけです。iPhoneを手にしている人から見ると、一度も使われていないパターンと、実在するが空の保管庫とは見分けがつきません。

これにより否認可能性(plausible deniability)が得られます。アプリの中にそれ以上何かがあることを証明するものがないため、「ほかには何もない」と説得力をもって言える性質です。ありふれた写真を入れたダミー保管庫と、本当にプライベートなもののための別の保管庫を分けて持つこともできます。詳しくは隠し保管庫のページと、ダミー保管庫や否認可能性のガイドをご覧ください。

実用上の副作用として、パターンを1点だけ覚え違えていると、エラーが出るのではなく空の保管庫が開きます。これは不具合ではなく、意図した設計です。

ロックとAppスイッチャー

Velcryptはバックグラウンドに移ると、設定した時間が経過したあとに自動でロックされます。ロックされると保管庫の鍵はメモリから破棄され、もう一度パターンを描く必要があります。保管庫の中身はiOSのAppスイッチャーにも表示されないため、最近使ったアプリを見られても、プライベートな写真のサムネイルが映ることはありません。設定については自動ロックをご覧ください。

Face IDやTouch IDによるロック解除は、設計上ありません。顔や指は、寝ている間やプレッシャーをかけられた状況で、本人の同意なしに使われる可能性があります。パターンはあなたの記憶の中にしか存在しません。

通信なし、アカウントなし、バックアップなし

Velcryptは完全にオフラインで動作します。登録もメールアドレスもサーバーも、保管庫の中身のアップロードもなく、保存した内容についての解析データも収集しません。それが実際に何を意味するかはオフライン・アカウント不要のページにまとめています。

初版では、保管庫のデータはiCloudとコンピュータ(Finder)のバックアップからも除外されます。暗号化したファイルがAppleのサーバーや同期先のコンピュータに置かれないようにするためですが、現実的な影響もあります。iPhoneをなくしたり、壊したり、初期化したりすると、保管庫も一緒に失われます。暗号化バックアップ機能は予定していますが、時期は未定です。

脅威モデルの一覧

脅威保護されるか補足
誰かが写真ライブラリをスクロールするはい読み込んだあと写真アプリから削除した項目(「最近削除した項目」も含む)は、Velcryptの中にしか残りません。
ロック解除済みのiPhoneを手に取ってVelcryptを開くはいパターンが必要です。違うパターンでは空の保管庫が表示されます。
ほかにも保管庫があることを証明しようとするほぼ保護保管庫の一覧も「パターンが違います」の表示もなく、アプリ内に保管庫の数は表示されません。
ロックされたiPhoneの盗難はいiOSのデータ保護と、Velcrypt独自のAES-256-GCM暗号化の二重の保護。
取り出したファイルからのパターンの総当たり遅延される60万回以上反復するPBKDF2と端末ごとのソルト。長いパターンが重要です。
クラウドアカウントの侵害はい保管庫のデータはアップロードされず、初版ではiCloudバックアップからも除外されます。
暗号化ファイルの改ざん検出されるAES-256-GCMの認証により、改ざんされたデータは拒否されます。
パターンを描くところを見られるいいえ下記を参照。
マルウェアや脱獄(ジェイルブレイク)した端末いいえ下記を参照。
パターンを忘れた、iPhoneをなくしたいいえ復元はできません。

Velcryptが守れないこと

どんなセキュリティツールにも限界があります。頼る前に、Velcryptの限界を知っておいてください。

  • のぞき見。 パターンを描くところを直接またはカメラ越しに見られると、その保管庫は開けられてしまいます。人目のない場所で描き、単純な文字や形に見えないパターンを選びましょう。
  • ロック解除の強要。 Velcryptは、誰かに脅されてパターンを描かされることを防げません。ダミー保管庫は役に立ちます。また、選んだ保管庫を開きつつ、ほかの保管庫へのアクセスを気づかれずに消す強要時パターン(近日公開、Premium)を予定しています。
  • 保管庫を開いたまま渡したiPhone。 保管庫のロックが解除されている間は、iPhoneを持っている人なら誰でもあなたと同じものが見えます。人に渡す前にロックしてください。
  • 侵害された端末・脱獄した端末やマルウェア。 侵害された端末で画面を読み取ったり、タッチを記録したり、アプリのメモリを調べたりできるソフトウェアは、アプリレベルのどんな暗号化も無効にできます。
  • 画面のスクリーンショットや撮影。 別のカメラで画面を撮影されることは、Velcryptでは防げません。
  • ほかの場所にあるコピー。 読み込みは写真をコピーする操作です。元の写真は削除するまで写真アプリに残り、削除後も約30日間は「最近削除した項目」に残ります。iCloud写真、チャットアプリ、メール、他人のiPhoneにコピーが残っている場合もあります。読み込み後に元の写真を削除する方法に沿って対処してください。
  • iPhoneの紛失やパターンの忘却。 どちらの場合もデータは失われます。リカバリーフレーズもリセットもありません。保管庫のパターンを忘れたときをご覧ください。
  • Velcryptを使っていることの発覚。 アプリのアイコンは表示されており、フォレンジックツールでVelcryptが暗号化データを保持していることやおおよその容量がわかる可能性があります。Velcryptがそれを隠せるとは主張していません。隠すのは保管庫の数と中身だけです。
  • 弱いパターン、推測されやすいパターン。 短いパターンや、L・Z・四角形のような形のパターンは、ずっと推測されやすくなります。パターン強度チェッカーでは、本物ではなく似た形のパターンで試してください。

第三者によるレビュー

Velcryptは独自に考案したアルゴリズムではなく、広く研究された標準的な構成要素と、Apple自身の暗号ライブラリに依拠しています。それでも、優れた設計と検証された設計は同じではありません。Velcryptは第三者による監査を受けていません。外部のセキュリティレビューは歓迎しており、実施された場合はその結果をこのページで公開します。

用語集

  • AES-256-GCMとは、256ビットの鍵を使い、データを認証もする共通鍵暗号の方式で、復号時にあらゆる改ざんを検出します。
  • PBKDF2(Password-Based Key Derivation Function 2)とは、パスワードやパターンなどの秘密をハッシュ関数の反復によって鍵に変え、推測を遅くするための標準規格です。
  • ソルトとは、鍵導出の前に秘密と組み合わせるランダムな値で、同じパターンでも端末が違えば別の鍵になります。
  • HKDF(HMAC-based Key Derivation Function)とは、1つの強力な鍵から独立した複数の鍵を導出するための標準的な方法です。
  • マスターキーとは、1つの保管庫に属するランダムな256ビットの鍵で、その保管庫のすべてのファイル鍵を保護します。
  • 否認可能性(plausible deniability)とは、ほかの保管庫が存在することをアプリ内の何も証明できないため、1つの保管庫を見せてもほかを明かさずに済むという性質です。

よくある質問

Velcryptの運営者は私の写真を見たり復元したりできますか?

いいえ。Velcryptにはサーバーもアカウントの仕組みもなく、鍵のコピーも持っていません。パターンは保存されないため、Velcryptの誰も保管庫を開くことも、リセットすることも、復元することもできません。

Velcryptで間違ったパターンを描くとどうなりますか?

Velcryptが一度も見たことのないパターンは、新しい空の保管庫を開くだけです。エラーメッセージは表示されず、ほかの保管庫が存在するかどうかを知る手がかりもありません。

Velcryptの暗号化はiPhone標準の暗号化と同じですか?

いいえ、それに上乗せされるものです。iOSはもともと端末を暗号化しており、Velcryptは自分のファイルに最も厳しいiOSのデータ保護クラスを適用します。そのうえで、保管庫のパターンから導出したAES-256-GCMの鍵で各ファイルを個別に暗号化するため、iPhoneのロックが解除されているだけでは保管庫は開きません。

Velcryptは第三者の監査を受けていますか?

まだ受けていません。VelcryptはAppleのCryptoKitと、広く研究された標準的なアルゴリズムの上に構築されています。第三者によるセキュリティレビューは歓迎していますが、これまでに実施されたものはありません。

暗号化された保管庫を使っていること自体を隠せますか?

完全には隠せません。アプリはホーム画面に表示されますし、フォレンジックツールを使えば、Velcryptが暗号化データを保存していることやおおよその容量がわかる可能性があります。Velcryptが隠すのは、保管庫がいくつあるかと、その中身です。

Well Encrypted. Truly Private.

パターンを描いて、プライベートな保管庫を開く。写真・動画・書類はiPhoneの中で暗号化されたまま。アカウントもクラウドも不要です。

近日公開 App Store

iPhone(iOS 17以降)向けに近日公開。無料版と任意のPremium。