Descifrando claves envueltas por la clave de la raíz de almacenamiento (SRK) de un TPM

3

Digamos que tengo una clave simétrica envuelta con una clave de raíz de almacenamiento (SRK) en un TPM. El SRK no puede ser leído por un atacante, por lo que realizo el descifrado y uso el SRK y obtengo la clave simétrica en la memoria para realizar las operaciones posteriores utilizando la clave simétrica. ¿Cómo se obtiene la seguridad de la clave simétrica en la memoria? En un linux estándar (Android), ¿no debería ser capaz de volcar el contenido de la memoria y, por lo tanto, obtener la clave simétrica? Entonces, ¿qué es lo que la Zona de confianza y la envoltura con SRK me dan? ¿Hay una manera de proteger esta clave simétrica y todas las operaciones posteriores utilizando la clave simétrica? Recuerdo haber leído hace un rato que en la Zona de confianza solo podemos ejecutar códigos firmados, lo que es bueno, pero ¿no se requiere que la memoria cifrada sea segura? ¿Hay un modo de zona de confianza donde obtengo la memoria cifrada al proteger la clave en la memoria?

¿Cómo lo resuelve Android? Si hay una opción para usar la memoria cifrada en Android, ¿cómo se cifra la memoria, con qué clave y cómo se aprovisiona / genera la clave?

    
pregunta user220201 27.03.2016 - 06:28
fuente

2 respuestas

2

TrustZone y TPM (con su SRK) son dos cosas muy diferentes. Intentaré deferrar ambos antes de explicar cómo pueden usarse para lograr lo que usted explicó.

TrustZone es un entorno de plataforma ARM. Proporciona un segundo entorno que está destinado a ser seguro. Con esto quiero decir, muchas características están disponibles para obtener seguridad.

En su ejemplo, el entorno normal (el mundo rico en términos de TrustZone) estaría ejecutando Android y un llamado kernel de confianza / seguro (el TEE) estaría en el lado de TrustZone (el mundo seguro). Estas protecciones están definidas por el mismo ETE y dependen de sus objetivos reales. Lo que se está ejecutando en el mundo seguro usa memoria protegida que no se puede escribir / leer en el mundo normal (Android) y algunos dispositivos pueden estar mediados o reservados exclusivamente por el núcleo TrustZone también.

Usted tiene razón cuando dice que una clave simétrica envuelta por el SRK del TPM normalmente se expondría directamente en la memoria una vez desenvuelta. El TPM no ofrece nada en ese punto. El supuesto es que solo está haciendo esto desde un entorno de confianza. Sin embargo, si nos unimos tanto a un TPM como a TrustZone, podemos cifrar / descifrar datos con el SRK (por ejemplo, una clave simétrica) y solo exponer el texto plano al mundo seguro, por lo tanto, protegerlo de la palabra normal, Android.

Esta es básicamente la forma en que Apple protege la información / los procesos sensibles (obviamente muy simplificados).

    
respondido por el northox 29.11.2016 - 18:40
fuente
0

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.

    
respondido por el Gilles 29.11.2016 - 21:27
fuente

Lea otras preguntas en las etiquetas