7 votos

Desencriptar la tarjeta microSD en otro dispositivo Android u ordenador de sobremesa

Estoy buscando una solución que permita cifrar la tarjeta microSD externa con las siguientes condiciones:

  • tarjeta microSD externa es no fusionado con el almacenamiento interno;
  • La microSD externa encriptada se monta al arrancar automáticamente;
  • El contenido de una tarjeta microSD encriptada puede verse en otro Dispositivo Android y PC Windows/Linux si el smartphone en el que se ha utilizado esta tarjeta fue destruido físicamente sin posibilidad de reparación.

La motivación de estos criterios proviene de mi flujo de trabajo en ordenadores de sobremesa. Todos ellos tienen tanto las unidades de sistema como las de almacenamiento totalmente encriptadas con VeraCrypt . Los configuro de manera que introduzco una contraseña al arrancar una vez, y todos los volúmenes favoritos se montan automáticamente y arranco en un sistema totalmente funcional. Por otro lado, si por alguna razón ya no puedo arrancar (por ejemplo, si falta la unidad del sistema o está dañada), puedo sacar la unidad de datos encriptada, conectarla a cualquier otra máquina que ejecute Windows/Linux/MacOS con VeraCrypt instalado y desencriptar mis archivos en un abrir y cerrar de ojos.

Sin embargo, no puedo lograr lo mismo con el cifrado por defecto que ofrece Android. Para cifrar la tarjeta SD, hay que fusionarla con la memoria interna, y si el dispositivo no se inicia, no hay forma fácil de recuperar/descifrar mis datos de la tarjeta externa.

He buscado en Google Play y no he encontrado ninguna aplicación de terceros similar a VeraCrypt.

Hay temas relacionados, pero tampoco he podido encontrar la respuesta en ninguno de ellos:

Estoy usando un Moto G5s rooteado que ejecuta Android 8.1, pero sería más preferible una respuesta independiente del proveedor.

0 votos

¿Buscas una solución sin root o sólo para dispositivos con root?

0 votos

¿tal vez sea esto lo que busca? alternativeto.net/software/luks/?platform=Android Android es básicamente linux. puedes compilar tus propios binarios estáticos para la arquitectura arm con Linux Deploy google.com/search?q=cryptsetup+Android

0 votos

@alecxs Personalmente, yo todos los dispositivos que uso son rooteado . Si hay una solución para los smartphones no rooteados de la que pueda beneficiarse la comunidad, sería ideal.

6voto

Jack Wade Puntos 231

No conozco ninguna solución GUI que se ajuste a tus necesidades pero puedo compartir algo sobre soluciones CLI que funcionen.

ENCRIPTACIÓN DEL DISCO:

la tarjeta microSD externa no se fusiona con el almacenamiento interno

Estás hablando de Android's Almacenamiento adoptable . En realidad no se fusiona (como en el caso de LVM ), simplemente se descifra y se monta como un sistema de archivos independiente. Android inicia emulando a /sdcard de /mnt/expand/[UUID] que por otra parte es de /data/media/ . Además, algunas aplicaciones también son móvil a este nuevo adoptado almacenamiento. En caso de FDE (basado en dm-crypt ), la clave se almacena en /data/misc/vold/expand_*.key que puede utilizarse para montar la tarjeta SD en cualquier sistema operativo que ejecute el kernel de Linux (incluido Android). Todo lo que necesitas es dmsetup . Ver esta respuesta para más detalles.

el contenido de una tarjeta microSD encriptada puede verse en otro dispositivo Android y en un PC con Windows/Linux

En el caso del Almacenamiento Adaptable se puede hacer una copia de seguridad de la llave maestra en algún lugar seguro para que pueda ser utilizada en caso de que el dispositivo se borre o deje de ser booteable. O si no quieres utilizar el cifrado nativo de Android, puedes configurar manualmente dm-crypt FDE (plain / LUKS) en la tarjeta SD utilizando cryptsetup .

CIFRADO DEL SISTEMA DE ARCHIVOS:

Las versiones recientes de Android utilizan principalmente FBE que se basa en Linux cifrado a nivel de sistema de archivos (para ext4 y f2fs ). No utiliza una única clave, sino que la clave maestra genera claves por archivo sobre la marcha. En Android las claves maestras encriptadas se guardan en /data/misc/vold/user_keys/ . Los almacenamientos Device Encrypted (DE) y Credential Encrypted (CE) lo complican aún más. También FBE con Almacenamiento Adoptable no funciona en Nougat y Oreo, y no parece muy estable en la tarta. Así que no es una opción muy fiable por el momento.

También es posible configurar manualmente el FBE mediante fscrypt (o e4crypt / f2fscrypt ) siempre que su kernel soporta lo. Pero, de nuevo, hay múltiples problemas con la implementación en el espacio de usuario, así como en el espacio del kernel, particularmente relacionados con gestión de llaves . Así que, de nuevo, no es una opción muy factible.

fscrypt es muy probable que sustituya a ecryptfs ; otra característica nativa del kernel de Linux. Es un sistema de archivos apilado que puede cifrar cualquier otro sistema de archivos. Pero fscrypt ( encriptación por archivo ) "es más eficiente en cuanto a la memoria, ya que evita el almacenamiento en caché de las páginas cifradas y descifradas en la caché de páginas" . Puede utilizar ecryptfs también en Android si el kernel está construido con CONFIG_ECRYPT_FS .

ENCRIPTACIÓN BASADA EN FUSIBLES:

Todas las opciones comentadas anteriormente son nativas del kernel de Linux, por lo que no funcionarán (o al menos muy mal) en Windows (siento no tener experiencia con Mac). Sin embargo, puedes optar por soluciones basadas en FUSE que tienen más o menos soporte en Windows también. Por ejemplo encfs y gocryptfs son sistemas de archivos criptográficos apilables; son más útiles en situaciones como copias de seguridad incrementales .

Si quiere seguir con veracrypt que también funciona perfectamente, funciona incluso mejor que en Windows si se combina con dmsetup para hacer uso de los servicios criptográficos nativos del kernel de Linux.

Otra solución basada en FUSE dislocker puede descifrar Bitlocker. Pero FUSE sobre FUSE puede ejercer una penalización de rendimiento, por lo que debe evitarse con la elección correcta de los controladores del sistema de archivos.


la microSD externa encriptada se monta al arrancar automáticamente

No encontrará una opción con interacciones de la interfaz gráfica de usuario para introducir una contraseña al arrancar porque a diferencia de Linux no hay un terminal login o crypttab o PAM . La interacción con el usuario sólo es posible mediante el desarrollo de una aplicación de inicio automático, que no estará en funcionamiento antes de zygote / system_server y todos los servicios (nativos / Java) están en pleno funcionamiento. O puede intentar hackear el paquete SystemUI del framework de Android para obtener las mismas credenciales que se piden a través de la interfaz de usuario (en caso de FDE/FBE).

Un enfoque sencillo sería poner un init.d script o crear un init servicio. Esto debería funcionar con cualquiera de los métodos descritos anteriormente. Esta respuesta puede ser útil. He estado utilizando EncFS para ampliar mi almacenamiento externo en dispositivos K y L (detalles aquí ). La tarjeta SD fue montada por un init servicio, la contraseña se guardó en /data partición que a su vez fue encriptada con FDE.


NOTAS:

  • Los métodos de encriptación descritos anteriormente cubren todos los sistemas de archivos comúnmente utilizados, incluyendo FAT , exFAT , NTFS , ext4 , f2fs etc.
  • Si no se utiliza el Almacenamiento Adoptable, mejor crear dos particiones en la tarjeta SD para que vold servicio de montaje de la primera partición en el arranque. La primera partición puede ser de unos pocos cientos de MBs. Utilice la segunda partición para el cifrado.
  • Las aplicaciones de línea de comandos utilizadas para el cifrado están disponibles aquí para Android.

RELACIONADO:

1 votos

Estoy muy agradecido por una respuesta tan profunda y agradable de leer, aunque puede que me cueste un poco de tiempo entenderla:)

1 votos

@andselisk pide cualquier tipo de ayuda.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X