FDE
En versiones anteriores la encriptación predeterminada de Android para /data
y Almacenamiento Adoptable era Full Disk Encryption (FDE) que es una implementación personalizada de dm-crypt
. La partición de userdata
(tanto en FDE como FBE) es difícil (o imposible) de desencriptar fuera del dispositivo debido a la encriptación respaldada por hardware. En el caso del Almacenamiento Adoptable implementado desde Android M, la clave se guarda en /data/misc/vold/expand_*.key
, no necesitas volcar la memoria pero el acceso a /data
requiere permisos de root. La clave se almacena sin encriptar debido a la suposición:
Dado que el contenido de un dispositivo de almacenamiento adoptado está fuertemente ligado al dispositivo Android que lo adoptó, las claves de encriptación no deben ser extraíbles del dispositivo principal, y por lo tanto el dispositivo de almacenamiento no puede ser montado en otro lugar.
Pero si tu dispositivo ya tiene permisos de root y tienes la clave, es posible desencriptar la tarjeta SD en una máquina Linux utilizando dmsetup
. También ten en cuenta que quitar la tarjeta SD física afectará tu /sdcard
y las aplicaciones que hayas movido.
FBE
Las versiones recientes de Android mayormente utilizan File Based Encryption (FBE) que se basa en la encriptación de sistemas de archivos Linux (para ext4
y f2fs
). No utiliza una única clave, en cambio la clave maestra genera claves por archivo (por inodo de hecho) sobre la marcha. En Android, la clave maestra encriptada se guarda en /data/misc/vold/user_keys/de/
y /data/misc/vold/user_keys/ce/
junto con otros archivos relacionados. Se nombran subdirectorios adicionales después del ID de usuario p. ej. 0
para el propietario del dispositivo. Aquí de
es para almacenamiento Encriptado en el Dispositivo que está completamente encriptado por hardware y está disponible durante el arranque sin interacción del usuario. ce
es para almacenamiento Encriptado por Credenciales que requiere un PIN/contraseña del usuario para ser desencriptado además de la clave respaldada por hardware. Diferentes directorios en la partición de /data
están encriptados con diferentes claves; DE o CE, para el usuario 0
o el usuario 10
y así sucesivamente.
Por lo tanto, cada usuario tiene 2 claves encriptadas - una para CE y la otra para DE - al igual que la clave encriptada almacenada al pie de la partición de userdata
como en el caso de FDE. Las claves no pueden ser simplemente utilizadas para desencriptar archivos en una PC a diferencia de una sola clave requerida para desencriptar todo el dispositivo de bloques en el caso del Almacenamiento Adoptable de FDE. Además, FBE con Almacenamiento Adoptable no funciona en Nougat y Oreo, y no parece muy estable en Pie. No estoy seguro de cómo funcionará cuando las cosas se simplifiquen. Si algunas implementaciones almacenan claves maestras no encriptadas (CE/DE) en /data/misc/vold/user_keys/
, habría mayores posibilidades para que FBE funcione en varias plataformas.
OTRAS OPCIONES
Si no deseas utilizar la encriptación nativa de Android FDE o FBE, puedes configurar manualmente dm-crypt
(plain / LUKS), o probar primero soluciones basadas en FUSE como encfs
o gocryptfs
; son relativamente más simples. Los binarios están disponibles aquí.
FBE se puede gestionar manualmente con la herramienta fscrypt
pero no creo que sea una opción muy viable en este momento. Sin embargo, puedes intentarlo.
ecryptfs
es otra característica nativa del kernel de Linux. Android por defecto nunca utilizó ecryptfs
que yo sepa, por lo que depende del creador de la ROM si construyó el kernel con CONFIG_ECRYPT_FS=y
o no. Es posible que tengas que reconstruir el kernel.
Todas las opciones anteriores funcionan bien pero todas requieren acceso de root y configuración manual en Android, p. ej. un script init.d
, o una solución de terceros.
O si solo deseas encriptar directorios seleccionados y no toda la tarjeta SD, prueba MiXplorer. Incluye una versión en Java de encfs
que no requiere permisos de root. Sin embargo, los directorios desencriptados en MiXplorer no serán accesibles para otras aplicaciones. Para un caso de uso similar a Boxcrypter, prefiero rclone
porque es de código abierto.
RELACIONADO:
0 votos
Gracias por todas tus respuestas.. por ahora decidí optar por la encriptación por defecto de Android porque es mucho más sencillo de implementar.. Encontré un par de escritos sobre cómo romper el FDE de Android en versiones antiguas, pero nada sobre cómo recuperar la clave fscrypt (es decir, de la memoria) que se utiliza en las versiones más recientes. ¿Tienes alguna idea si esto es factible o no? // ¡Que tengas un buen día todos!
1 votos
Los dispositivos recientes solo usan
FBE
. La ruta/data/misc/vold
pertenece a la descripción de Irfan deFDE
.