Desde el anuncio por parte de Microsoft de que TPM iba a ser obligatorio para poder instalar Windows 11, las noticias sobre este término no dejan de sucederse; nosotros ya hemos hablado en profundidad de ello mucho antes de esto, así que lo que vamos a abordar en este artículo es la versión TPM 2.0 y las novedades y características que trae frente a la versión 1.2 anterior, y especialmente cómo afecta a los procesadores de Intel y AMD.
Como ya sabréis, TPM son las siglas de Trusted Platform Module (también conocido como ISO/IEC 11889), un estándar internacional de seguridad para un criptoprocesador seguro, que no es otra cosa que un microcontrolador dedicado diseñado para proteger el hardware a través de claves criptográficas integradas. A estas alturas ya sabemos qué es y para qué sirve, así como seguramente qué dispositivos lo llevan pero, ¿conoces las diferencias entre sus distintas versiones?
Los diferentes tipos de implementación de TPM 2.0
Para poder entender las diferencias entre las diferentes versiones del estándar y cómo afectan a los procesadores de Intel y AMD, primero debemos entrar a explicar los distintos tipos de implementación que podemos encontrar. TPM no es algo nuevo, ya que desde el año 2006 se vendieron miles de ordenadores portátiles que ya integraban un chip TPM. A partir de ahí, se desarrollaron diferentes formas de integración, convirtiéndolo en un concepto que podía integrarse en cualquier otro dispositivo incluyendo los teléfonos móviles. En un PC, se utiliza el bus LPC o el SPI para que la CPU pueda conectarse al chip TPM.
El Trusted Computing Group (TCG) ha certificado chips TPM fabricados por distintos fabricantes como Infineon, Novoton o STMicroelectronics, pero también ha asignado ID de proveedor a otros como AMD, Atmel, Broadcom, IBM, Intel, Lenovo, National Semiconductor, Nationz, Qualcomm, Rockchip, SMC, Samsung, Sinosun, Texas Instruments o Winbond, por lo que si encuentras un supuesto módulo TPM fabricado por alguno que no esté en este listado, es definitivamente falso.
Hay cinco tipos de implementaciones diferentes para TPM 2.0, y a continuación los vamos a enumerar en orden de mayor a menor seguridad:
- TPM 2.0 dedicado: son chips dedicados que implementan la funcionalidad TPM en su propio paquete de semiconductores a prueba de manipulaciones. En teoría son el tipo más seguro porque las rutinas implementadas en el hardware deberán ser más resistentes a los errores en comparación con las implementadas por software, y sus paquetes deberán implementar cierta resistencia a la manipulación.
- TPM 2.0 integrado: son parte de otro chip, y aunque utilizan hardware que resiste los errores de software, no es necesario que implementen una resistencia física a la manipulación. Intel ha integrado TPM de esta manera en algunos de sus chipsets, por ejemplo.
- TPM por firmware (fTPMs): son soluciones pasadas en firmware (por ejemplo, UEFI) que se ejecutan en el anillo de ejecución confiable de la CPU. Intel, AMD y Qualcomm han implementado TPM por firmware de esta manera.
- TPM por Hipervisor (vTPMs): son TPM virtuales proporcionados por hipervisores y dependen por lo tanto de ellos. Se ejecutan de manera aislada y oculta al software dentro de las máquinas virtuales para proteger su código, y pueden proporcionar un nivel de seguridad comparable a los fTPMs.
- TPM 2.0 por software: son emuladores que se ejecutan sin más protección que la que obtiene un programa normal dentro del sistema operativo. Dependen completamente del entorno en el que se ejecutan, por lo que no brindan mayor seguridad que la que pueda proporcionar el entorno de ejecución normal, y por lo tanto son vulnerables a sus propios errores de software y ataques. Son útiles únicamente para fines de desarrollo.
Microsoft ha desarrollado la implementación de referencia oficial de TPM 2.0, tiene licencia BSD y el código fuente está disponible de forma abierta. Microsoft proporciona una solución de Visual Studio y scripts de compilación para herramientas automáticas de Linux. Intel por su parte, en 2018 ya abrió su código de TPM 2.0 con soporte para Windows y Linux, igualmente con licencia BSD.
¿Qué diferencia TPM 2.0 de la versión anterior (1.2)?
A pesar de que la versión TPM 2.0 aborda muchos de los mismos casos de uso que la versión 1.2 y en esencia tiene unas características similares, los detalles son distintos, y de hecho TPM 2.0 no es compatible con versiones anteriores a TPM 1.2 (por eso son estas dos versiones las que comparamos).
Arquitectura
TPM 1.2 consta de una arquitectura de tres partes, o con tres librerías diferentes. La versión 2.0 por su parte consiste en una especificación específica de la plataforma que hace referencia a una biblioteca TPM 2.0 común de cuatro partes. Estas especificaciones de la plataforma definen qué partes de la biblioteca son obligatorias, opcionales o prohibidas para ésta. Estas especificaciones incluyen PC de cliente, móviles y automoción.
Algoritmos
Para la versión 1.2 se requieren los algoritmos de cifrado SHA-1 y RSA, mientras que AES es opcional. Triple DES fue también un algoritmo opcional en su momento en versiones anteriores, pero se prohibió en la versión 94 de TPM 1.2 por motivos de seguridad. Se requiere la función de generación de máscara basada en el hash MGF1 que se define en PKCS#1.
Para la versión 2.0, se requiere SHA-1 y SHA-256 para la arquitectura de PC de cliente, así como RSA y ECC utilizando la curva Barreto-Naehrig de 256 bit y NIST P-256 para criptografía de clave pública y generación y verificación de firma digital asimétrica. También se requiere HMAC para generación y verificación simétrica de firmas digitales, AES de 128 bit para el algoritmo de clave simétrica, y la función de generación de máscara basada en hash MGF1. También se definen una infinidad de algoritmos adicionales, pero son opcionales. Hay que tener en cuenta que Triple DES se incorporó a TPM 2.0 pero con restricciones.
Primitivas criptográficas y consideraciones adicionales
Para la versión 1.2, se utiliza un generador de números aleatorios (RNG), un algoritmo criptográfico de clave pública, una función hash criptográfica, una función de generación de máscaras, generación y verificación de firmas digitales y atestación directa anónima. Los algoritmos de clave simétrica exclusivos son opcionales.
En TPM 2.0, se utiliza un generador de números aleatorios, algoritmos criptográficos de clave pública, funciones hash criptográficas, algoritmos de clave simétrica, generación y verificación de firmas digitales, funciones de generación de máscaras, atestación directa o exclusiva anónima, o también basada en ECC utilizando la curva de 256 bits de Barreto-Naehrig. La especificación también requiere funciones de generación y derivación de claves.
Por otro lado, también hay que reseñar que la versión 1.2 tiene jerarquía única (almacenamiento) mientras que la versión 2.0 utiliza tres (plataforma, almacenamiento y confianza), utilizando solo una clave raíz (SRK RSA-2048) en el caso de la versión anterior y múltiples claves y algoritmos por cada jerarquía en la versión más moderna de TPM.
Igualmente, en cuanto a autorización la versión 1.2 admite HMAC, PCR, localidad y presencia física mientras que TPM 2.0 admite contraseña, HMAC y distintas políticas configurables (lo cual cubre HMAC, PCR, localidad y presencia física). Finalmente, a destacar que en cuanto a NVRAM la versión 1.2 solo usa datos sin estructurar, mientras que la versión 2.0 hace uso de datos sin estructurar pero también contador, mapa de bits, extensión y PIN.