SpaceMoon がファイルを守るしくみ

このページでは、SpaceMoon がしていることを、わかりやすい言葉で説明します。できないことも説明します。大きすぎる約束を信じてもらうより、限界を知っておいてほしいと考えています。

概要

パターンから鍵へ

パターンは5×5のグリッドに、6個以上の点を使い、同じ点を二度通らずに描きます。SpaceMoon は libsodium(Android ではバージョン1.0.20)の Argon2id で、パターンを鍵に変えます。

ファイルの暗号化

復元フレーズ

指紋

指紋での解除は任意です。指紋を確認するのは SpaceMoon ではなく Android で、アプリが指紋を受け取ることはありません。強い生体認証の直後にだけ使える Android Keystore の鍵が、マスターキーを開けます。誰かが端末に新しい指紋を追加すると、この鍵は使えなくなり、もう一度パターンを使う必要があります。

バックアップファイル

アプリのその他の保護

AIとパターンの推測

知っておくべき限界

どんなアプリでも、すべてから守ることはできません。以下が SpaceMoon の正直な限界です。

単純なパターンは推測されます

短いパターンやよくある形(L、Z、直線)は、のぞき見や画面に残った指の跡から、または数回の試行で推測されることがあります。実際に使われるパターンは、可能なパターンの数から想像されるよりもずっと推測しやすいものです。点を増やし、曲がる回数も増やしてください。とても単純なパターンには、アプリが警告を出します。

推測にかかる時間

アプリ内では1回の試行に約1秒かかり、5回間違えると待ち時間が増えていきます。しかし、あなたのバックアップファイルを持っている人や、ルート化された端末から端末ソルトを取り出した人は、代わりにパソコンを使い、待ち時間なしで推測できます。Argon2id はこれを遅くしますが、パターンの組み合わせは長いパスワードよりはるかに少ないのです。高性能なグラフィックカード1枚(RTX 4090 クラス)で、1秒あたり約1,000回推測した場合のおおよその見積もりです:

推測する対象組み合わせの数時間(グラフィックカード1枚)
よく使われるパターン上位10,000個104約10秒
6点のすべてのパターン1.28 × 108約1.5日
7点のすべてのパターン2.42 × 109約28日
8点のすべてのパターン4.36 × 1010約1.4年
復元フレーズ(92ビット)4.95 × 1027約1.6 × 1017年

これらは見積もりで、実測ではありません。パターンの数は上限で、実際に使われるパターンははるかに少なくなります。ハードウェアが多いほど、また速いほど、推測はそれに比例して速くなります。

バックアップファイルは人に見せない

バックアップファイルには端末ソルトが含まれないため、手に入れた人は誰でも、上のようにオフラインでパターンを試せます。自分のクラウドアカウントなど、自分だけがアクセスできる場所にだけ保管し、長めのパターンを使ってください。

ルート化された端末やマルウェアに感染した端末

アプリの権限でコードを実行できる人は(たとえばルート化された端末や、端末を完全に制御するマルウェアを使って)、端末ソルトを開けてオフラインで推測できます。スペースを開いている間は鍵がメモリ上にあり、ルート権限やデバッガで読み取れます。Android や Flutter の内部で作られる一部のコピーや、画面に表示された写真は、すぐにはメモリから消せません。

見えてしまう情報もあります

アプリのストレージにある暗号化されたファイルの数、おおよそのサイズ、作成・変更の日時は隠されていません。SpaceMoon がインストールされていることも隠されていません。

アイコンを変えても、変わるのはホーム画面だけです

指紋は弱い経路です

指紋での解除は Argon2id を通りません。その強さは、端末の指紋センサーと Android Keystore に左右されます。設定でいつでもオフにできます。

侵入者の写真

アプリはシャッター音を鳴らしませんが、日本や韓国など一部の国で販売される端末では、常にシャッター音が鳴ります。別のアプリがカメラを使っているときや、前面カメラがないときは撮影されません。最初に作成したスペースを開くまでは、写真は Android Keystore の鍵で封印されています。

写真の情報

システム画面の表示中はロックが止まります

システム画面(許可の確認、削除の確認、写真やファイルの選択、指紋の確認)が開いている間と、取り込みや書き出しの実行中は、アプリはロックを待ちます。アプリを離れていた場合は、それが終わってから2秒後にロックされます。

スペースは1つの端末ソルトを共有します

端末上のすべてのスペースは、同じ端末ソルトを使います。そのソルトを持つ人は、1回の推測ですべてのスペースを同時に試せます。1つのスペースを攻撃するコストは変わりません。

どんなアプリにも防げないこと

パターンを描くところを誰かに見られることや、カメラで画面を撮影されることです。

両方をなくすと、誰にも助けられません

パターンと復元フレーズの両方をなくすと、誰もファイルを取り戻せません。私たちにもできません。