2012-09-28 12 views
6

Wir entwickeln sichere Anwendung für Android. Es ist für Benutzer erforderlich, Dateisysteme ihrer Geräte verschlüsselt zu halten, aber wir müssen diese Tatsache überprüfen und die Verwendung der App verbieten. Ist es möglich zu überprüfen, ob das Dateisystem verschlüsselt ist? Auch gibt es einige Geräte mit Android < 3.0, die Verschlüsselung unterstützt, zum Beispiel Motorola RAZR. Es wäre interessant über die Verschlüsselung solcher Geräte zu wissen.Überprüfen, ob Android-Dateisystem verschlüsselt ist

Antwort

8

Wenn Ihre App als a device admin registriert ist, können Sie getStorageEncryptionStatus() unter DevicePolicyManager anrufen, um den Verschlüsselungsstatus des Geräts für API Level 11 und höher zu ermitteln.

Wenden Sie sich für die Verschlüsselung ganzer Geräte auf niedrigeren API-Ebenen an den Gerätehersteller.

+0

Gibt es eine Möglichkeit herauszufinden, ob die Verschlüsselung software- oder hardwarebasiert ist? Zumindest in Android 5.1. –

+0

@ArtemRussakovskii: Beats me, tut mir leid. – CommonsWare

+0

@ArtemRussakovskii überprüfen Sie diese http://developer.android.com/reference/android/security/KeyChain.html#isBoundKeyAlgorithm(java.lang.String) – alfongj

12

Um die Antwort von CommonsWare zu klären, können Sie den Geräteverschlüsselungsstatus ohne Android-Berechtigungen lesen.

/** 
* 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, or ENCRYPTION_STATUS_ACTIVE. 
*/ 
@TargetApi(11) 
private int getDeviceEncryptionStatus() { 

    int status = DevicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED; 

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

    return status; 
} 
+1

Dieser Code scheint nicht auf meinem 2013er Modell Nexus 7 zu funktionieren. In diesem In diesem Fall scheint es, als ob dpm.getStorageEncryptionStatus() ENCRYPTION_STATUS_INACTIVE zurückgibt, selbst wenn ich Schritte unternommen habe, um das Gerät zu verschlüsseln. –

4

auf frühere Antworten auf API kehrt zu klären, wenn ENCRYPTION_STATUS_INACTIVE Gerät verschlüsselt ist aber Passcode aktiviert was't.

Bei API> = 23 wird in diesem Fall ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY zurückgegeben.

+1

ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY wird nicht auf Samsung-Geräten zurückgegeben, z. S7 mit Android 6, wenn die PIN zum Starten des Geräts nicht definiert ist. – David

Verwandte Themen