Su pregunta cambia de TPM a TrustZone a mitad de camino. Esas son tecnologías diferentes, que proporcionan una funcionalidad diferente, con diferentes propiedades de seguridad, y están disponibles en diferentes conjuntos de plataformas (en gran parte desunidas). Lo que tienen en común es que ambos son entornos informáticos que contienen una clave secreta que es exclusiva del dispositivo al que están conectados y que está protegido del sistema operativo principal que se ejecuta en ese dispositivo.
Un TPM es un chip separado que proporciona un conjunto fijo de servicios. Uno de estos servicios es proteger una clave en reposo envolviéndola con una clave que no abandona el TPM. Para usar esta clave en una aplicación, la aplicación necesita recuperar la clave del TPM, y en ese punto la clave termina dentro del sistema operativo principal. Los TPM se encuentran casi exclusivamente adjuntos a los procesadores x86.
TrustZone (y tecnologías asociadas) proporciona un entorno aislado que se ejecuta en el mismo procesador que el sistema operativo principal del dispositivo. Es posible usarlo para proteger una clave en reposo, y también para proteger una clave en tiempo de ejecución si la clave es manipulada por una aplicación que se ejecuta en el lado TrustZone del procesador (el entorno de ejecución confiable (TEE )). TrustZone es una función ARM.
Un TPM proporciona una instalación de almacenamiento de claves. Android proporciona este servicio a través del servicio Keymaster. En muchos teléfonos Android recientes, el servicio de keymaster es respaldado por hardware , que se ejecuta en el mundo seguro de TrustZone. Pero al final, la clave debe ser recuperada por la aplicación que la usa.
TrustZone ofrece potencialmente la funcionalidad adicional de ejecutar aplicaciones personalizadas en el mundo seguro. Si puedes hacer eso, entonces puedes tener una clave que no salga del mundo seguro.
Algunos procesadores x86 muy recientes tienen una funcionalidad similar llamada SGX . Permiten que las aplicaciones se ejecuten en un contexto que está protegido del sistema operativo principal.
Si puede implementar aplicaciones en TrustZone o SGX, el siguiente problema es cómo procesar los datos que están cifrados o firmados con la clave. Si esos datos se intercambian con un servidor que utiliza un canal seguro, es posible que no tenga que confiar en el sistema operativo principal. El problema posterior, para muchas aplicaciones, es cómo establecer una relación con un dispositivo específico, es decir, el aprovisionamiento. Eso tiende a requerir una infraestructura algo pesada.