Estamos desarrollando una aplicación segura para Android. Se requiere que los usuarios mantengan encriptados los sistemas de archivos de sus dispositivos, pero debemos verificar este hecho y prohibir el uso de la aplicación. ¿Es posible verificar si el sistema de archivos está encriptado? También hay algunos dispositivos con Android < 3.0 que admiten el cifrado, por ejemplo Motorola RAZR. Sería interesante saber sobre el cifrado en tales dispositivos.Compruebe si el sistema de archivos Android está encriptado
Respuesta
Si su aplicación está registrada como a device admin, puede llamar al getStorageEncryptionStatus()
en DevicePolicyManager
para conocer el estado de cifrado del dispositivo, para API Nivel 11 y superior.
Para cualquier encriptación de todo el dispositivo en niveles inferiores de API, póngase en contacto con el fabricante del dispositivo.
Solo para aclarar la respuesta de CommonsWare, puede leer el estado de cifrado del dispositivo sin ningún permiso de 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, 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;
}
Este código no parece funcionar en mi modelo 2013 Nexus 7. En este caso, parece que incluso cuando he tomado medidas para encriptar el dispositivo, dpm.getStorageEncryptionStatus() devuelve ENCRYPTION_STATUS_INACTIVE. –
para aclarar las respuestas anteriores el API vuelve ENCRYPTION_STATUS_INACTIVE
cuando el dispositivo está cifrado, pero el código de acceso era't habilitado.
En API> = 23 devuelve ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY
en este caso.
ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY no se devuelve en dispositivos Samsung, p. S7 con Android 6 si el PIN para iniciar el dispositivo no está definido. – David
- 1. Compruebe si un directorio es un (sistema de archivos) raíz
- 2. RSync sólo si el sistema de archivos está montado
- 3. Compruebe si el archivo ya está abierto
- 4. compruebe si NSNumber está vacío
- 5. Compruebe si "exec" está deshabilitado
- 6. Compruebe de forma programática si el monitor está apagado
- 7. Compruebe si la aplicación está disponible en Android Market
- 8. Compruebe si el socket está escuchando en C
- 9. Compruebe si $ _POST-value está vacío
- 10. WP7 compruebe si Internet está disponible
- 11. compruebe si la 1ª opción está seleccionada
- 12. AS3: compruebe si un diccionario está vacío
- 13. Compruebe si el tiempo frontal está habilitado en el dispositivo
- 14. OSX: compruebe si la pantalla está bloqueada
- 15. Compruebe si la cadena está vacía
- 16. Compruebe si una matriz está vacía
- 17. Compruebe si un puerto está abierto
- 18. Compruebe si el objeto está en una lista de objetos
- 19. compruebe si el indicador de acarreo está establecido
- 20. Compruebe si el cliente de SQL Server está instalado
- 21. Compruebe si el parámetro de función está configurado
- 22. compruebe si el archivo de entrada archivado está vacío jquery
- 23. Compruebe si un archivo está abierto
- 24. Compruebe si OpenCV está compilado con TBB
- 25. Compruebe si la consola está presente
- 26. Android: compruebe si el audio se está reproduciendo actualmente y deténgalo
- 27. está encriptado pero no firmado, ¿debilidad?
- 28. Compruebe si ningún usuario está actualmente conectado a Windows
- 29. Android: compruebe si el servicio se está ejecutando a través de. bindService
- 30. Compruebe si jQuery está incluido en el encabezado (Joomla)
¿Alguna manera de averiguar si el cifrado está basado en software o hardware? Al menos en Android 5.1. –
@ArtemRussakovskii: Me late, lo siento. – CommonsWare
@ArtemRussakovskii revise esto http://developer.android.com/reference/android/security/KeyChain.html#isBoundKeyAlgorithm(java.lang.String) – alfongj