web-dev-qa-db-ja.com

盗難からスマートフォンのデータを保護する方法?

私は典型的なAndroidが完全に暗号化されたディスクを含み、キーはヘッダーに保存されています。ヘッダーはピン/パターン/指紋を使用して暗号化されているか、ロックがない場合は暗号化されていません。それは正しいですか?

電話がオンのとき、泥棒はOSを使用してデータにアクセスできます。ピンとパターンの受け入れ遅延で十分です。このシナリオでは、すべての盗難防止アプリケーションが作動する可能性もあります

しかし、泥棒が電話をオフにしてディスクを取り出したときにどうなりますか。彼は単純な総当たりを実行できます。 4桁または6桁のピン、パターン、そしておそらく指紋は、ディスクのパスワードのブルートフォースにとって問題ではありませんよね?ハードウェアレベル(NANDレベル?)の保護メカニズムはありますか?または機能する唯一のものは強力なディスクパスワードでしょうか?

いいえの場合、OSレベルの保護のために強力なディスクパスワードと個別のPINパスワード/パターン/指紋を設定するオプションはありますか?または、盗難の場合にデータを安全に保つ他の方法はありますか(Androidデバイス)?

2
piotrek

ここにドキュメント: フルディスク暗号化

Android 7-9は、128ビットキーでFDEを実装しています。もちろん、パターンがない、またはPINは128ビットのキーを形成します。そして、私が見たすべてのデバイスには[〜#〜]ピン[〜#〜 ]ディスク暗号化のため、ロック画面のパターンを設定するときは常にPINが必要でした。

最初の起動時に、デバイスはランダムに生成された128ビットのマスターキーを作成し、デフォルトのパスワードと保存されたソルトでハッシュします。デフォルトのパスワードは次のとおりです: "default_password"ただし、結果のハッシュは、署名のハッシュを使用するTEE(TrustZoneなど)によっても署名されます。マスターキーを暗号化します。

Android Open Source Project cryptfs.cppファイルで定義されているデフォルトのパスワードを見つけることができます。

ユーザーがデバイスにPIN /パスまたはパスワードを設定すると、128ビットキーのみが再暗号化されて保存されます。 (つまり、ユーザーのPIN /パス/パターンを変更しても、ユーザーデータは再暗号化されません。)管理対象デバイスは、PIN、パターン、またはパスワードの制限を受ける可能性があることに注意してください。

デバイスを盗む泥棒は、ディスクのみでストレージメディアを復号化することはできません。 128ビットキーをブルートフォースで強制することはできません。

したがって、PINを強制する必要があります。保護は、ハードウェアTEE(Trusted Execution Environment、ハードウェア暗号チップ)によって保証されています。

TEEは、PINを使用して実際の暗号化キーを形成しますが、状態レジスタ内の情報を隠します。

暗号チップへのハードウェア攻撃が実行不可能であることを考えると、これにより、攻撃者は128ビットのキーを形成しない4桁から8桁の合理的なPINを推測できなくなります(10 ^ 8の可能なPIN、2 ^ 128> 10 ^ 30の可能なキー)。

TEEの裁量によるその他の保護は次のとおりです。

  • 試行制限:実行される試行回数が多すぎる場合、チップは暗号データ​​を自己破壊します
  • 遅延:TEEは暗号機能に待機を追加するため、攻撃が遅くなります

詳しくは、すでにリンクされているドキュメントの「暗号化されたキーの保存」 paragraph をご覧ください。

デモ

デバイスを起動し、PINを要求するblack画面が表示された場合、それがFDE起動プロンプトです。

モダンAndroid私のPixel 3XLのような10台のデバイスは、別のファイルベースの暗号化を使用し、アニメーション化されていない壁紙をプレーンテキストとして保存しますが、PINはシステムを復号化するためのもので、基本的にユーザーエクスペリエンスを変更しました。