Cifrado de disco completo (FDE) para cifrado de Android

Cifrado de disco completo

Nota: Los dispositivos equipados con Android 7.0-9 admiten el cifrado de disco completo. Los dispositivos nuevos con Android 10 y superior deben usar cifrado a nivel de archivo .

El cifrado de disco completo es el proceso de utilizar una clave (la clave en sí también está cifrada) para codificar todos los datos del usuario en el dispositivo Android. Una vez encriptado el dispositivo, todos los datos creados por el usuario se encriptarán automáticamente antes de ser almacenados en el disco, y todas las operaciones de lectura desencriptarán automáticamente los datos antes de devolverlos al proceso de llamada.

El cifrado de disco completo se introdujo en Android 4.4, pero se han introducido las siguientes funciones nuevas en Android 5.0:

  • Se ha agregado un nuevo método de encriptación rápida. Este método de encriptación solo encriptará los bloques usados ​​en la partición de datos, para que no tarde demasiado en iniciarse la primera vez. Actualmente, solo los sistemas de archivos EXT4 y F2FS admiten el cifrado rápido.
  • Se ha añadido la  forceencrypt  fstab bandera activar el cifrado en la primera puesta en marcha.
  • Se agregó soporte para patrón de desbloqueo y sin cifrado de contraseña.
  • Se agregó un espacio de almacenamiento de claves de cifrado compatible con hardware que utiliza la función de firma de un entorno de ejecución confiable (TEE, como TrustZone). Para obtener más información, consulte Almacenamiento de claves cifradas .

Nota : Para los dispositivos actualizados a Android 5.0, si están encriptados después de la actualización, se pueden restaurar a un estado no encriptado restaurando la configuración de fábrica. Un nuevo dispositivo Android 5.0 cifrado en el primer arranque no se puede restaurar a un estado sin cifrar.

Hay 4 estados de cifrado en Android 5.0 :

  • defecto
  • Código PIN
  • contraseña
  • Patrón de desbloqueo

Cuando se inicia por primera vez, el dispositivo crea una clave maestra de 128 bits generada aleatoriamente y luego la utiliza con la contraseña predeterminada y la sal almacenada. La contraseña predeterminada es "default_password". Sin embargo, el dispositivo también firma el hash generado a través de un TEE (como TrustZone). El TEE utilizará el hash de la firma correspondiente para cifrar la clave maestra.

Puede  encontrar la contraseña predeterminada definida en el archivo cryptfs.cpp  del proyecto de código abierto de Android .

Cuando el usuario establece el PIN / código de acceso o la contraseña en el dispositivo, solo se volverá a cifrar y almacenar la clave de 128 bits (es decir, cambiar el PIN / código de acceso / patrón de desbloqueo del usuario no hará que se vuelvan a cifrar los datos del usuario). cifrado). Tenga en cuenta que los dispositivos administrados pueden tener códigos PIN, patrones de desbloqueo o restricciones de contraseña.

Utilice forceencrypt para cifrar nuevos dispositivos

Este es el proceso normal cuando un dispositivo Android 5.0 se inicia por primera vez.

  1. Detecta  sistemas de archivos no cifrados marcados con forceencrypt 

/ data  no  está cifrado, pero debe cifrarse porque forceencrypt es  obligatorio para este cifrado. Desinstalar  / data .

  1. Comience a cifrar  / datos

vold.decrypt = "trigger_encryption"  activa  init.rc , de modo que  vold  to  / data  -free contraseña encriptación. (Debido a que este debería ser un dispositivo nuevo, aún no se ha establecido ninguna contraseña).

  1. Monte tmpfs

vold  montará un tmpfs  / Data (usando las  opciones tmpfs de ro.crypto.tmpfs_options  ), y la  propiedad vold.encrypt_progress  se establece en 0. vold  preparará TMPFS  / datos  para iniciar el sistema de cifrado y establecer el  vold.decrypt  propiedad a  trigger_restart_min_framework

  1. Lanzar el marco para mostrar el progreso

Dado que casi no hay datos para cifrar en el dispositivo, el proceso de cifrado se completará muy rápidamente, por lo que en la práctica, la barra de progreso generalmente no se muestra. Para obtener detalles sobre la pantalla de progreso, consulte Cifrar dispositivos existentes .

  1. Después de  cifrar / data , cierre el marco

vold  será  establecido vold.decrypt  a  trigger_default_encryption , que comenzará el  defaultcrypto  servicio. (Esto iniciará el siguiente proceso para cargar los datos de usuario encriptados predeterminados). Trigger_default_encryption  verificará el tipo de encriptación para ver  si se usa una contraseña para / data  encriptación. Dado que el dispositivo Android 5.0 está encriptado cuando se inicia por primera vez, no se debe establecer una contraseña, por lo que debemos desencriptar y cargar  / data .

  1. Carga  / datos

A continuación, init  utilizará  los parámetros seleccionados de ro.crypto.tmpfs_options (  establecidos en init.rc  ) para cargar  / data en el tmpfs RAMDisk .

  1. Iniciar marco

Establezca  vold  en  trigger_restart_framework , que continuará con el proceso de inicio normal.

cambiar la contraseña

Cuando el usuario elige cambiar o eliminar la contraseña en la configuración, la interfaz  vold enviará un  cryptfs changepw comando y luego  vold volverá a cifrar la clave maestra del disco con la nueva contraseña.

 

Supongo que te gusta

Origin blog.csdn.net/baidu_40808339/article/details/115227125
Recomendado
Clasificación