Notas de implementación del cifrado de Android tiene una descripción bastante detallada de cómo se implementa el cifrado de disco desde 3.0. Cuando un usuario habilita el cifrado si aún no tiene un conjunto de pin, se requiere que establezca uno.
La clave maestra es un número de 128 bits creado al leer desde / dev / urandom. Se cifra con un hash de la contraseña de usuario creada con la función PBKDF2 de la biblioteca SSL. El pie de página también contiene una sal aleatoria (también leída de / dev / urandom) utilizada para agregar entropía al hash desde PBKDF2, y evitar ataques de tabla de arco iris en la contraseña
La clave maestra se almacena en el pie de página de la partición cifrada. La mayor parte del código que se utiliza para iniciar el proceso de cifrado se encuentra en Vold, el daemon de volumen de Android. Si tiene la fuente completa de AOSP para Android, puede echar un vistazo a /system/core/vold/cryptfs.c que implementa muchos de los comandos para el cifrado en vold, así como los comandos para verificar y cambiar la contraseña.
Esta publicación del blog, Encriptación de disco de Android también tiene algunos buenos conocimientos sobre la implementación de cifrado, así como las implicaciones de vincular el descifrado de la clave maestra al pin / contraseña ingresado por el usuario para desbloquear el dispositivo.
Espero que esto ayude.