Comprobar si el sistema de archivos Android está encriptado
Estamos desarrollando aplicaciones seguras para Android. Es necesario que los usuarios mantengan los sistemas de archivos de sus dispositivos cifrados, pero tenemos que comprobar este hecho y prohibir el uso de la aplicación. ¿Es posible comprobar si el sistema de archivos está encriptado? También hay algunos dispositivos con Android <3.0 que soporta cifrado, por ejemplo Motorola RAZR. Sería interesante saber sobre el cifrado en tales dispositivos.
- Sistema de archivos de la tarjeta SD de Android
- Leer archivo en android - permiso de archivo denegado
- Android escribir en disco no fiable - escrito file.length! = Expected.length
- Crear un archivo en diferentes teléfonos móviles en Qt
- ¿Qué es el concepto de hilo único o multi en el área del sistema de archivos?
- ¿Cuál es el contenido de vold.fstab, o la sintaxis de la línea dev_mount?
- ¿Dónde está mi carpeta de aplicación en android?
- Ubicación grabable y ejecutable en Android
- ¿Por qué puedo mover con éxito un archivo en Linux mientras se está escribiendo?
- ¿Cómo obtenemos los separadores de archivos utilizados por los diferentes sistemas de archivos?
- Reproducción de vídeos del sistema de archivos Chrome no funciona en Android
- Carpeta añadida en android no visible a través de USB
- ¿Qué es el sistema de archivos de Android?
Si su aplicación está registrada como admin de dispositivo , puede llamar a getStorageEncryptionStatus()
en DevicePolicyManager
para averiguar el estado de cifrado del dispositivo, para el Nivel 11 de API y superior.
Para cualquier cifrado de dispositivo completo en niveles API más bajos, póngase en contacto con el fabricante del dispositivo.
Sólo para aclarar la respuesta de CommonsWare, puedes 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; }
Para aclarar las respuestas anteriores de la API <23 getStorageEncryptionStatus()
devuelve ENCRYPTION_STATUS_INACTIVE
cuando el dispositivo está cifrado, pero no se ha habilitado la contraseña.
En API> = 23 devuelve ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY
en este caso.