Atestación de TPM
En este artículo se describen los conceptos implicados al aprovisionar dispositivos mediante la atestación de un módulo de plataforma segura (TPM) en Device Provisioning Service (DPS). Este artículo es apropiado para todas las personas implicadas en la preparación de un dispositivo para la implementación.
Un módulo de plataforma segura (TPM) es un tipo de módulo de seguridad de hardware (HSM). En este artículo se supone que usa un TPM discreto, de firmware o integrado. Los TPM emulados por software son adecuados para prototipos o pruebas, pero no brindan el mismo nivel de seguridad que los TPM discretos, de firmware o integrados. No se recomienda el uso de TPM de software en producción.
Este artículo solo es pertinente para dispositivos que utilizan TPM 2.0 con compatibilidad con claves de HMAC y sus claves de aprobación. TPM es un estándar ISO para todo el sector industria de Trusted Computing Group; puede obtener más información sobre TPM en la especificación TPM 2.0 completa o la especificación ISO/IEC 11889 . En este artículo también se da por supuesto que está familiarizado con los pares de claves públicas y privadas, y cómo se utilizan para el cifrado.
Los SDK de dispositivo del servicio Device Provisioning controlan todo lo que se describe en este artículo en su lugar. No es necesario implementar la compatibilidad con TPM si usa los SDK en los dispositivos. Este artículo le ayudará a comprender conceptualmente lo que ocurre con el chip de seguridad de TPM cuando su dispositivo se aprovisiona y por qué es tan seguro.
Información general
TPM usa algo denominado clave de aprobación como raíz de confianza segura. La clave de aprobación es única para el TPM, y su cambio básicamente transforma el dispositivo en otro nuevo.
Los TPM tienen otro tipo de clave denominada clave raíz de almacenamiento (SRK). Una clave raíz de almacenamiento puede generarse por el propietario del TPM una vez que tome posesión del TPM. Tomar posesión del TPM es la forma específica del TPM de decir "alguien establece una contraseña en el HSM". Si un dispositivo TPM se vende a un nuevo propietario, el nuevo propietario puede tomar posesión del TPM para generar una nueva clave raíz de almacenamiento. La generación de una nueva clave raíz de almacenamiento garantiza que el propietario anterior no puede usar el TPM. Dado que la clave raíz de almacenamiento es única para el propietario del TPM, puede utilizarse para sellar datos en el propio TPM para ese propietario. La clave raíz de almacenamiento ofrece un espacio aislado al propietario para almacenar sus claves y permite revocar el acceso en caso de que el dispositivo o el TPM se venda. Es lo mismo que mudarse a una casa nueva: tomar propiedad implica cambiar las cerraduras y deshacerse de los muebles que hayan dejado los propietarios anteriores (clave raíz de almacenamiento), pero no puede cambiar la dirección de la casa (clave de aprobación).
Una vez configurado un dispositivo, tiene un EK y un SRK disponibles para su uso.
Los pasos específicos implicados en la toma de posesión de un TPM varían según el fabricante, el conjunto de herramientas de TPM que se usa y el sistema operativo del dispositivo.
El servicio Device Provisioning usa la parte pública de la EK (EK_pub) para identificar e inscribir dispositivos. El proveedor del dispositivo puede leer la parte pública de la clave de aprobación durante la fabricación o la prueba final y cargar la parte pública de la clave de aprobación en el servicio de aprovisionamiento de manera que el dispositivo se reconozca cuando se conecte al aprovisionamiento. El servicio Device Provisioning no comprueba la clave raíz de almacenamiento ni el propietario; por tanto, "borrar" el TPM elimina los datos del cliente, pero se mantiene la clave de aprobación (y otros datos del proveedor) y el dispositivo seguirá siendo reconocido por el servicio Device Provisioning cuando se conecte al aprovisionamiento.
Proceso de atestación
Cuando un dispositivo con un TPM se conecta a Device Provisioning Service, el servicio contrasta primero la EK_pub proporcionada con la EK_pub almacenada en la lista de inscripción. Si la EK_pubs no coincide, el dispositivo no puede aprovisionar. Si la parte pública de la clave de aprobación no coincide, el servicio requiere que el dispositivo demuestre la propiedad de la parte privada de la clave de aprobación por medio de un desafío nonce, que es un desafío seguro que se utiliza para demostrar la identidad. El servicio Device Provisioning genera un nonce y, a continuación, lo cifra con la clave raíz de almacenamiento y la parte pública de la clave de aprobación, que se suministran en ambos casos por parte del dispositivo durante la llamada de registro inicial. El TPM siempre mantiene la parte privada de la clave de aprobación segura. Esto evita la falsificación y garantiza que los tokens SAS se aprovisionen de manera segura en dispositivos autorizados.
Analicemos el proceso de atestación en detalle.
El dispositivo solicita una asignación de IoT Hub
En primer lugar, el dispositivo se conecta al servicio Device Provisioning y solicita el aprovisionamiento. Al hacerlo, el dispositivo proporciona al servicio un identificador de registro, un ámbito de identificador y la parte pública de la clave de aprobación y la clave raíz de almacenamiento del TPM. El servicio pasa el nonce cifrado de nuevo al dispositivo y le solicita que lo descifre, y lo usa para firmar un token SAS para conectarse de nuevo y finalizar el aprovisionamiento.
Desafío nonce
El dispositivo toma el nonce y usa las porciones privadas de la clave privada y la clave raíz de almacenamiento para descifrar el nonce en el TPM; la solicitud de cifrado del nonce delega la confianza desde la clave de aprobación, que es inmutable, a la clave raíz de almacenamiento, que puede cambiar si un nuevo propietario toma posesión del TPM.
Validación del nonce y recepción de credenciales
El dispositivo puede firmar un token de SAS utilizando el nonce descifrado y restablecer una conexión con el servicio Device Provisioning utilizando el token SAS firmado. Con el desafío de nonce completado, el servicio permite que el dispositivo se aprovisione.