デフォルトのAndroid 4.0.4でのデバイス暗号化ICS(AES-CBC 128Bit)を使用する場合、キー導出関数がどのように機能するかを理解しようとしていますか?ユーザーの復号化パスコードは、復号化で使用する安全なキーにどのように変換されますか?
そして、復号化パスワードはどのようにデバイスに保存され、ハッシュされますか?
私は、企業の潜在的な脆弱性のポイントを実証しようとしていますAndroidデバイスとその緩和策。
Android暗号化の実装に関する注意事項 には、ディスク暗号化が3.0からどのように実装されるかについてのかなり詳細な説明があります。ユーザーがピンセットをまだ持っていない場合に暗号化を有効にすると、ピンを設定する必要があります。
マスターキーは、/ dev/urandomからの読み取りによって作成された128ビットの数値です。 SSLライブラリのPBKDF2関数で作成されたユーザーパスワードのハッシュで暗号化されます。フッターには、PBKDF2からのハッシュにエントロピーを追加するために使用されるランダムなソルト(/ dev/urandomからも読み込まれる)も含まれており、パスワードに対するRainbowテーブルの攻撃を防止します
マスターキーは、暗号化されたパーティションのフッターに格納されます。暗号化プロセスを開始するために使用されるコードのほとんどは、AndroidのボリュームデーモンであるVoldにあります。 Androidの完全なAOSPソースがある場合は、/ system/core/vold/cryptfs.cを確認できます。これは、voldでの暗号化用のコマンドの多くと、検証用のコマンドを実装しています。パスワードを変更します。
このブログの投稿 Android Disk Encryption は、暗号化の実装、およびユーザーが入力したピン/パスワードにマスターキーの復号化を結び付けてデバイスのロックを解除することの意味について、いくつかの優れた洞察も持っています。
お役に立てれば。