Estado de cifrado después de cambiar el PIN

Habilité el cifrado del dispositivo, pero Android no me dio la oportunidad de elegir una nueva contraseña, sino que usó la pantalla de bloqueo. Volví a la configuración de bloqueo de pantalla y cambié la contraseña y la contraseña de cifrado cambió automáticamente. Pero eso sucedió instantáneamente, mi dispositivo no pasó por ningún proceso de encriptación.

La pregunta es: ¿Cambiar la contraseña de encriptación requiere algún tipo de proceso largo de encriptación? En otras palabras, ¿mi dispositivo sigue siendo seguro y los datos están encriptados de forma segura?

Dispositivo: Xperia E4 Dual

Versión de Android: 4.4.2 stock sony

Respuestas (1)

De la fuente oficial de Android :

En el primer arranque, el dispositivo crea una clave maestra de 128 bits generada aleatoriamente y luego la codifica con una contraseña predeterminada y sal almacenada. (La contraseña predeterminada es: "default_password").
Sin embargo, el hash resultante también se firma a través de un TEE (como TrustZone), que utiliza un hash de la firma para cifrar la clave maestra .

Cuando el usuario establece el PIN/contraseña o la contraseña en el dispositivo, solo se vuelve a cifrar y almacenar la clave de 128 bits. (es decir, los cambios de PIN/contraseña/patrón de usuario NO provocan el nuevo cifrado de los datos de usuario ).

Lo que esto significa es que, esencialmente, hay dos claves para entender:

  1. la llave maestra
  2. La clave user_encryption (o simplemente 'clave')

La clave maestra se genera solo durante el primer arranque y nunca cambia (a menos que se realice un restablecimiento de fábrica o se borre la partición de datos de usuario). Los datos en la partición /data se cifran o descifran solo con la clave maestra. La clave maestra no se puede almacenar tal como está (no es seguro hacerlo, ¿verdad?), por lo que se cifra con otra clave que se indica a continuación.

La clave user_encryption es la clave con la que se puede descifrar la clave maestra cifrada, porque solo con la clave maestra se pueden descifrar los datos cifrados. (Esta clave se calcula en función de su PIN/contraseña/lo que sea).

La gente a menudo tiende a pensar que ambas claves son una y la misma, lo cual no es el caso aquí.

Cuando cambia su PIN/contraseña de desbloqueo, solo cambia la clave user_encryption, no la clave maestra, por lo que los datos no se vuelven a cifrar.

La declaración "usa un hash de la firma para cifrar la clave maestra" es confusa. Si la clave maestra se cifra utilizando un hash de la firma del hash que se generó a partir de la clave maestra, un salt y una contraseña, ¿cómo se puede descifrar la clave maestra?
Estoy de acuerdo, es confuso, y el texto entre comillas todavía está presente en los documentos de Android palabra por palabra.
Estas son mis conjeturas (aumentando mi explicación anterior): el llamado user_encryption keyque he mencionado anteriormente se calcula como hash_128(sign(hash(master_key_hash, password/pin, salt), TEE_key)). Ahora, esta clave se calcula sobre la marcha cada vez que desbloquea el teléfono. Esta es la clave con la que se cifra la clave maestra. Por lo tanto, se requiere la misma clave para descifrar y obtener la clave maestra y usar esa clave maestra para descifrar su archivo userdata.
@Melab para responder a su pregunta, tal vez también tengan el hash de master_key almacenado en algún lugar (no el master_key en sí). Tal vez me equivoque, la única forma de averiguarlo sería revisando el código fuente. Si lo hace y encuentra que mi explicación es incorrecta, no dude en corregirla/editarla.