Lockspeareが写真を守る仕組み
Lockspeareはスマホの中で、すべての写真と動画を暗号化します。このページでは、その方法を正確に説明します。守れないものについても書いていますので、ご自身で判断してください。
要点
- すべての写真と動画は、保存される前にスマホの中でAES-256-GCMにより暗号化されます。
- 金庫を開ける鍵は二重に守られています。あなたのPINまたはパターンと、スマホの外に出ることのないAndroid Keystoreのハードウェア保護された鍵です。
- スマホのストレージをコピーしても、中身は暗号化されたデータだけです。スマホのセキュアなハードウェアがなければ、誰もPINやパターンを試すことはできません。
- 別のスマホで、またはバックアップから金庫を開ける方法は、12語のリカバリーフレーズだけです。
- Lockspeareにはサーバーもアカウントもありません。私たちがあなたのファイル、PINまたはパターン、鍵を受け取ることはありません。
暗号化されるもの
金庫に入れたものすべてです。写真、動画、そのサムネイル、元のファイル名、日付、アルバム。
各ファイルは、金庫のマスターキーから導出したファイルごとの鍵で暗号化されます。大きなファイルは1 MBずつの区切りで暗号化され、区切りごとに改ざんチェックが付きます。そのため動画はファイル全体を一度に復号しなくても再生でき、暗号化されたファイルが少しでも変更されれば検出されます。これには独自の暗号を書くのではなく、GoogleのTinkライブラリを使っています。
暗号化されたファイルは、Lockspeareのアプリ専用ストレージにランダムな名前で保存されます。すべての金庫のファイルが同じフォルダに置かれるので、フォルダを見てもどのファイルがどの金庫のものかはわかりません。
PINまたはパターンで金庫が開く仕組み
Lockspeareの設定時に、ロックの解除方法を選びます。6桁以上のPINか、ロック画面と同じ3×3のグリッド上のパターンです。スマホ内のすべての金庫が同じ種類のロックを使うので、ロック画面から何かが分かることはありません。
各金庫には、スマホの中で作られたランダムな256ビットのマスターキーがあります。この鍵は読める形では保存されません。鍵をかけた2つの形で保存されます。
このスマホ上で、PINまたはパターンで鍵をかけた形。 PINまたはパターンはArgon2idで鍵に変換されます。Argon2idは、1回の推測ごとに時間とメモリを大量に使わせるよう設計されたアルゴリズムです。その結果を、スマホのセキュアなハードウェア内にあるAndroid Keystoreの鍵でさらに暗号化します。この2つ目の鍵はスマホの外にコピーできません。
これが重要なのは、PINやパターンが短いからです。それだけなら、ファイルのコピーを使ってコンピューターですぐに推測されかねません。スマホのハードウェアと結び付けることで、推測はそのスマホの上でしかできず、1回ごとに時間がかかります。
リカバリーフレーズで鍵をかけた形。 金庫を作るとき、Lockspeareは2,048語の標準リストからランダムに選んだ12語を表示します。これは約128ビットのランダム性にあたり、誰にも推測できない強さです。PINまたはパターンを忘れたとき、新しいスマホに移るとき、バックアップを復元するときに、このフレーズで金庫を開けられます。
金庫の準備が整う前に、いくつかの単語を確認していただきます。安全な場所に書き留めてください。私たちは控えを持っていません。
複数の金庫とダミーの金庫
PINまたはパターンごとに、それぞれ別の金庫が開きます。2つ目のPINまたはパターンを、当たり障りのない写真だけを入れたダミーの金庫に使えます。誰かにアプリを開けるよう迫られたときのためです。
Lockspeareは、金庫を1つ使っていても複数使っていても、ディスク上の金庫の枠の数を常に同じに保ちます。使っていない枠は、暗号化された本物の金庫と見分けのつかないランダムなデータで埋められます。アプリには金庫の一覧がありません。そのため、画面を見てもファイルのコピーを見ても、金庫がいくつあるかはわかりません。
ひとつ限界があります。新しい金庫を作るときに既存の金庫を上書きしないよう、アプリはどの枠が使用中かのメモを、スマホのハードウェアの鍵でロックして保持しています。ロック解除されたスマホを完全に操作できる人なら、このメモを読んで金庫の数を知ることができます。ただし中身はわかりません。
バックアップ
バックアップは任意で、2種類あります。
Google Drive。 Lockspeareは、ご自身のGoogle Drive内の非表示のアプリ用フォルダにバックアップを保存します。ファイルはスマホに保存されているそのままの形、つまり暗号化済みの状態でアップロードされます。リカバリーフレーズで鍵をかけた金庫の鍵もアップロードします。PINまたはパターンで鍵をかけた方はアップロードしません。そちらはあなたのスマホのハードウェアでしか使えないからです。
新しいスマホで復元するには、リカバリーフレーズを入力し、新しいPINまたはパターンを選びます。
Lockspeareが求めるのは、Drive内の自分専用の非表示フォルダへのアクセス許可だけで、ほかのファイルへのアクセスは求めません。Googleに見えるのは、バックアップファイルの数、おおよそのサイズ、アップロード日時です。中身は見えません。
バックアップファイル。 金庫を1つの暗号化ファイルとして書き出し、ほかのクラウドサービス、メモリーカード、パソコンなど好きな場所に保存することもできます。このファイルはリカバリーフレーズでしか開けません。
Lockspeareでは、Android標準の自動バックアップをオフにしています。ハードウェアに結び付いた鍵は復元できないため、誰にも使えないデータをコピーするだけになるからです。
アプリの使用中
- スクリーンショット、画面録画、最近使ったアプリのプレビューはブロックされます。
- 短い猶予時間を設定しない限り、アプリを離れた瞬間に金庫はロックされます。
- ロックすると、鍵と復号済みのプレビューがアプリのメモリと一時ストレージから消去されます。Androidアプリは、メモリの内部コピーを作ることがあるシステムの上で動いています。そのため、私たちが管理できるものはすべて消去しますが、そのメモリが再利用されるまでコピーが残らないとはお約束できません。
- Lockspeare内のカメラで撮った写真や動画は直接金庫に入り、ギャラリーには一度も表示されないので、クラウドの写真バックアップにも届きません。写真はメモリ上で暗号化されます。Androidの動画録画にはファイルが必要なため、動画は録画中Lockspeareの専用ストレージに書き込まれ、録画を止めた時点ですぐ暗号化され、暗号化されていないファイルは削除されます。
ギャラリーから写真を移す
ギャラリーから写真を追加すると、Lockspeareはまず写真を暗号化し、次に暗号化したコピーを開き直して元の写真と一致するか確認します。そのうえで初めて、Android標準の確認ダイアログを通じて元の写真の削除を提案します。
Lockspeareの手が届かない場所が2つあります。取り込みのたびに、どちらについてもお知らせします。
- ギャラリーのゴミ箱。 多くのギャラリーアプリは、削除した写真を約30日間残します。完全に消すには、ゴミ箱を空にしてください。
- クラウドの写真バックアップ。 クラウドの写真サービスにすでにバックアップされていた写真は、そちらで削除するまでコピーが残ります。
スマホの外に出るもの
- 初期設定では何も出ません。 Lockspeareは完全にオフラインで動作します。
- Google Drive:バックアップをオンにした場合のみ、暗号化済みのファイルだけ。
- Google Play:購入の処理のため。
- クラッシュレポート:設定でオンにした場合のみ。スマホの機種や、アプリのどこで問題が起きたかといった技術的な情報が含まれます。あなたのファイル、ファイル名、PIN、パターンは決して含まれません。
アプリには広告、広告ID、分析ライブラリが一切ありません。
Lockspeareが守れないもの
限界を正直に伝えることも、セキュリティの一部です。Lockspeareは次のものからは守れません。
- PINを入力するところやパターンを描くところを見られること。 画面を手で隠してください。
- 金庫を開いている間に、スマホが乗っ取られていること。 スマホに深くアクセスできるマルウェアや、ハッキングされたOSは、画面に表示されている内容を見ることができます。
- ロック解除されたスマホを完全に操作でき、時間に制限のない人。 その人はスマホ上でPINやパターンを試すことができます。Argon2idで1回ごとの試行は遅くなり、PINやパターンが長いほど大幅に難しくなりますが、短いものはやはり短いのです。
- Lockspeareがインストールされていること、暗号化データの量、暗号化された各ファイルのおおよそのサイズが知られること。
- PINまたはパターンとリカバリーフレーズの両方をなくすこと。 その場合、私たちを含めて誰も金庫を開けられません。
第三者によるレビュー
この設計は、まだ第三者による監査を受けていません。Lockspeareのリリース前にレビューを受ける予定で、その結果はこのページで公開します。問題を見つけた方は、security@lockspeare.com までご連絡ください。