このページは機械翻訳されたもので、現在も確認中です。英語版で読む

セキュリティ

セキュリティ

VaultWell が中に保管したものをどう守るのかを、わかりやすい言葉で。守れない部分や、まだ実施していないことも含めて。

経路から暗号化ファイルまで保管庫がどのようにロックされるかを示す図です。ハニカム上でなぞった経路は、64 MiB のメモリと 2 回のパスを使う Argon2id で引き延ばされます。その結果は、端末のセキュリティハードウェアに保持された秘密情報と組み合わされます。iPhone では Secure Enclave、Android では利用可能な場合 StrongBox 付きの Android Keystore です。両者が合わさって保管庫の鍵となり、保管庫のマスターキーを解錠します。項目はその後 AES-256-GCM で 1 MiB ごとのチャンクに暗号化され、各チャンクは認証され、端末上にのみ保存されます。同じ手順を下に文章で記しています。 あなたの経路ハニカムでなぞる8 セル以上 Argon2id64 MiB のメモリ2 回のパス (t=2) 組み合わせこの端末上だけで 保管庫の鍵マスターキーを解錠 AES-256-GCM1 MiB のチャンクそれぞれ認証済み 暗号化ファイル端末内に保存私たちには送信されない ハードウェアの秘密iPhone は Secure EnclaveAndroid は利用可能なら StrongBox 経路から暗号化ファイルまで保管庫がどのようにロックされるかを示す図です。ハニカム上でなぞった経路は、64 MiB のメモリと 2 回のパスを使う Argon2id で引き延ばされます。その結果は、端末のセキュリティハードウェアに保持された秘密情報と組み合わされます。iPhone では Secure Enclave、Android では利用可能な場合 StrongBox 付きの Android Keystore です。両者が合わさって保管庫の鍵となり、保管庫のマスターキーを解錠します。項目はその後 AES-256-GCM で 1 MiB ごとのチャンクに暗号化され、各チャンクは認証され、端末上にのみ保存されます。同じ手順を下に文章で記しています。 あなたの経路ハニカムでなぞる8 セル以上 Argon2id64 MiB のメモリ2 回のパス (t=2) 組み合わせこの端末上だけで ハードウェアの秘密iPhone は Secure EnclaveAndroid は利用可能なら StrongBox 保管庫の鍵マスターキーを解錠 AES-256-GCM1 MiB のチャンクそれぞれ認証済み 暗号化ファイル端末内に保存私たちには送信されない
すべての手順は端末上で行われます。アカウントもサーバーもありません。 手順を文章で読む

誰から、何から守るのか

VaultWell は、多くの人が実際に直面する、日常的なプライバシーの脅威を想定して設計されています。

  • 誰かがあなたのスマートフォンを手に取る。 パートナー、家族、同僚、あるいは拾った見知らぬ人。経路がなければ、スマートフォンのパスコードを知っていても保管庫は閉じたままです。
  • 誰かにロック解除を迫られる。 普段使いの保管庫か、強要時用の保管庫を開くことができます。ほかの保管庫があることは、画面のどこにも表示されません。
  • 誰かがアプリのファイルをコピーする。 鍵はスマートフォンのセキュリティハードウェアに結び付いているため、高速なコンピュータで推測を試すことはできません。
  • 誰かが保存されたファイルを改ざんする。 暗号化された各部分は認証されているため、変更は表示されるのではなく検出されます。

すでにスマートフォンにマルウェアを仕込んだ攻撃者、経路をなぞるところを見ている人、すべての経路を明かすよう強制できる人に耐えるようには設計されていません。それを約束できるアプリはありません。

暗号化の仕組み

  1. 経路。 ハニカム上でなぞるセルの順序(8 つ以上、重複なし)が入力になります。
  2. Argon2id。 その入力を、64 MiB のメモリと 2 回のパスで Argon2id により強化します。そのため推測 1 回ごとに相応の時間とメモリがかかります。
  3. ハードウェアへの結び付け。 結果は、iPhone では Secure Enclave、Android では Android Keystore(利用可能なら StrongBox)に保持された秘密と組み合わされます。この秘密は書き出せないため、鍵はあなたのスマートフォン上でしか導き出せません。
  4. マスター鍵。 各保管庫には 256 ビットのランダムなマスター鍵があり、経路から得た鍵で暗号化された形でのみ保存されます。
  5. チャンク単位の AES-GCM。 アイテムは AES-256-GCM で 1 MiB ずつのチャンクに分けて暗号化されます。各チャンクはアイテムと位置に結び付いているため、入れ替え、並べ替え、切り詰めをすると必ず失敗します。サムネイル、アイテム一覧、設定も暗号化されます。

アカウントもサーバーもありません。鍵がスマートフォンの外に出ることはなく、保管庫の中身が私たちに送られることもありません。

隠し保管庫と、調査する人にそれでも見えるかもしれないもの

画面上では、VaultWell は何も明かしません。ロック画面はハニカムだけです。間違った経路と、一度も使われていない経路は同じに見えます。保管庫の一覧や数の表示もありません。どの保管庫の設定ファイルも同じサイズに揃えられているため、保管庫のオプション(強要時用の保管庫かどうかを含む)を外から見分けることはできません。

ディスク上については、正確にお伝えします。各保管庫は、それぞれ暗号化されたフォルダとして保存されます。アプリの生ファイルに完全にアクセスできる人(たとえばロック解除されたスマートフォンのフォレンジック抽出によって)は、そのフォルダの数や、復旧フレーズが設定された保管庫の数を数えられます。開いたり中身を見たりはできませんが、保管庫が複数あることは推測できます。これは、たとえばダミーのエントリなどで軽減する予定で、変更したら詳細を公開します。

画面上では

何も明かさない

  • 表示されるのはハニカムだけ
  • 保管庫の一覧も数もない
  • 間違った経路は、使われたことのない経路と同じに見える

生のファイルを完全に調べた場合

数えられる可能性があるもの

  • 暗号化された保管庫フォルダがいくつあるか
  • 復旧フレーズが設定された保管庫がいくつあるか

読めないままのもの

  • 各保管庫の中身
  • どれが強要時用の保管庫か

強要時用の保管庫

強要時用の保管庫が経路で開かれると、VaultWell はまずほかのすべての保管庫の鍵ファイルと復旧用ファイルを削除し、次にそれらの保管庫のフォルダを削除します。鍵ファイルがなければデータは復号できません。その後、強要時用の保管庫はほかと同じように開き、画面には何のメッセージも表示されません。

  • スマートフォン上の消去は永久的で、元に戻せません。
  • 強要時用の保管庫を復旧フレーズで開いた場合は、何も消去されません。
  • 別の場所に保管したバックアップや共有には影響しません。

バックアップと共有

バックアップ(.vwbackup)は新しいスマートフォンで開ける必要があるため、古いスマートフォンのハードウェアは使えません。代わりに各バックアップは、保管庫のマスター鍵を、経路(設定していればフレーズも)から Argon2id で導いた鍵と新しいランダムなソルトで保護します。アイテムは保存時のまま暗号化されています。バックアップの安全性は経路やフレーズの強さにかかっているため、バックアップファイルは人目に触れないようにしてください。

共有(.vwshare)は新しいランダムな鍵を使い、別の共有フレーズで保護されます。アイテムはその鍵で暗号化し直されるため、受け取った人があなたの保管庫の鍵を知ることはありません。開封回数、有効期限、保存の可否といった制限は、サーバーがないため暗号ではなくアプリによって適用されます。フレーズを持つ人がその気になれば、見えるものをコピーすることはできます。

私たちが主張しないこと

  • 監査はまだ完了していません。 リリース前に独立したセキュリティ監査を予定しています。結果は公開します。
  • 見えなくなるわけではありません。 偽装アイコンを使っても、アプリはスマートフォン上に見えています。また、フォレンジック調査で保管庫が複数あることがわかる可能性があります。
  • iPhone ではスクリーンショットを防げません。 VaultWell は画面キャプチャから保護しますが、iOS ではアプリがスクリーンショットをブロックできません。撮影されたときは VaultWell がお知らせします。画面を写真に撮ることは、どのアプリにも止められません。
  • 私たちによる復旧はできません。 経路とフレーズの両方をなくした場合、私たちにはお手伝いできません。私たちがそれらを持つことは決してないからです。

問題の報告

セキュリティ上の問題を見つけたら、まずは非公開でお知らせいただけるとありがたいです。ご希望があればお名前を記載します。連絡先はリリース前に掲載します。