6

Android用の安全なアプリケーションを開発しています。ユーザーはデバイスのファイルシステムを暗号化しておく必要がありますが、この事実を確認し、アプリの使用を禁止する必要があります。ファイルシステムが暗号化されているかどうかを確認することはできますか?また、Motorola RAZRなど、暗号化をサポートするAndroid<3.0のデバイスもあります。そのようなデバイスでの暗号化について知ることは興味深いでしょう。

4

3 に答える 3

15

CommonsWareの答えを明確にするために、Androidの権限がなくてもデバイスの暗号化ステータスを読み取ることができます。

/**
 * Returns the encryption status of the device. Prior to Honeycomb, whole device encryption was
 * not supported by Android, and this method returns ENCRYPTION_STATUS_UNSUPPORTED.
 *
 * @return One of the following constants from DevicePolicyManager:
 * ENCRYPTION_STATUS_UNSUPPORTED, ENCRYPTION_STATUS_INACTIVE,
 * ENCRYPTION_STATUS_ACTIVATING, ENCRYPTION_STATUS_ACTIVE,
 * ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY, ENCRYPTION_STATUS_ACTIVE_PER_USER.
 */
@TargetApi(11)
private static int getDeviceEncryptionStatus(Context context)
{
    int status = DevicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED;

    if (Build.VERSION.SDK_INT >= 11) {
        final DevicePolicyManager dpm =
                (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        if (dpm != null) {
            status = dpm.getStorageEncryptionStatus();
        }
    }

    return status;
}

DevicePolicyManagerおよび暗号化ステータスフラグのドキュメントを参照してください。

また、Androidが、特にダイレクトブートをサポートするために、フルディスク暗号化からファイルベースの暗号化に移行したことにも言及する価値があります。ファイルベースの暗号化を参照してください。

于 2013-05-23T22:57:34.280 に答える
9

アプリがデバイス管理者として登録されている場合は、APIレベル11以降のデバイスの暗号化ステータスを確認するためにgetStorageEncryptionStatus()呼び出すことができます。DevicePolicyManager

より低いAPIレベルでのデバイス全体の暗号化については、デバイスの製造元にお問い合わせください。

于 2012-09-28T13:16:01.310 に答える
5

デバイスが暗号化されているがパスコードが有効になっていない場合、API<23のgetStorageEncryptionStatus()リターンに関する以前の回答を明確にするため。ENCRYPTION_STATUS_INACTIVE

API> = 23ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEYの場合、この場合は戻ります。

于 2016-02-09T13:45:01.323 に答える