Las claves seguras de hardware no son una característica de Android, son una característica de algunos dispositivos (pero no todos) que ejecutan Android, incluidos la mayoría, si no todos, los teléfonos inteligentes y tabletas de gama alta y media. La forma en que funcionan depende de las capacidades del hardware.
Todos los procesadores basados en un núcleo ARM Cortex-A (y algunos más antiguos), ya sean de 32 bits o de 64 bits, tienen una característica llamada TrustZone , que es un tipo de virtualización altamente especializada. Hay solo dos particiones: el mundo seguro y el mundo normal. El mundo seguro tiene acceso al mundo normal, el mundo normal no tiene acceso al mundo seguro. TrustZone en sí no es suficiente para hacer nada útil: el bus de memoria tiene que hacer cumplir la protección, como ocurre en la mayoría (pero no en todos) sistema en chips (SoC) basado en un Cortex-A.
En un procesador adecuado, el mundo seguro ejecuta un entorno de ejecución confiable (TEE) con un pequeño sistema operativo. En versiones de Android razonablemente modernas, las claves del keymaster de Android se almacenan en el TEE, Android (incluso completamente rooteado) no tiene acceso directo a ellas. Hay teléfonos en los que la clave de cifrado del dispositivo reside dentro del TEE, pero no siempre es así.
Los datos de TEE se almacenan encriptados mediante una clave a la que Android no puede acceder. Esta clave se deriva de una clave raíz que se almacena en la memoria de una sola escritura (puede ser fusibles u otra tecnología de memoria programable por única vez). La razón por la que Android no puede acceder a esta clave es que el procesador garantiza que solo sea accesible para el mundo seguro.
En algunos SoC, el mundo seguro lee directamente la memoria. En otro SoC, hay un componente dedicado en el SoC que tiene acceso exclusivo a la clave raíz, y todo lo que el mundo seguro puede hacer en el procesador principal es solicitar una derivación de clave basada en la clave raíz. Esto no cambia mucho con respecto a la seguridad del sistema: en cualquier caso, la clave en la que se basa la seguridad del sistema es una clave que se almacena en la memoria del mundo seguro.
La restricción del mundo seguro a una clave derivada tiene una ventaja: la clave se puede cambiar cambiando la modificación en la derivación. Un atacante que rompió parcialmente el TEE y logró leer datos, pero no ejecutó código arbitrario, tendría acceso a la clave. Si se soluciona el error y la nueva versión de TEE usa un parámetro de derivación de clave diferente, entonces el atacante ya no podrá leer los datos de TEE.
Algunos procesadores ARMv8 (incluidos todos los teléfonos de gama alta hoy) tienen instrucciones similares a AES-NI, pero esto no tiene ningún impacto en la seguridad (excepto de manera indirecta, haciendo que la criptografía sea menos costosa y menos propensa a los ataques de canal lateral). AES-NI y el equivalente de ARM son solo formas de calcular AES más rápido, las claves y los datos aún se encuentran en el mismo lugar.