Módulo de plataforma segura (TPM) en Windows 10 IoT Core

¿Qué es TPM?

Un módulo de plataforma segura (TPM) es un coprocesador criptográfico que incluye funcionalidades para la generación aleatoria de números, generación segura de claves criptográficas y limitación de su uso. También incluye funcionalidades como la atestación remota y el almacenamiento sellado. La especificación técnica de TPM está disponible públicamente, controlada por el grupo de computación de confianza (TCG). La versión más reciente de TPM 2.0 (publicada en octubre de 2014), es un rediseño importante de la especificación que agrega nuevas funcionalidades y corrige las debilidades del antiguo TPM 1.2.

¿Por qué TPM?

Los equipos que incorporan un TPM pueden crear claves criptográficas y cifrarlas para que solo las pueda descifrar el TPM. Este proceso, a menudo denominado "encapsular" o "enlazar" una clave, puede ayudar a proteger la clave de la divulgación. Cada TPM tiene una clave principal de "ajuste", denominada clave raíz de almacenamiento, que se almacena dentro del propio TPM. La parte privada de una clave creada en un TPM nunca se expone a ningún otro componente, software, proceso o persona.

Los equipos que incorporan un TPM también pueden crear una clave que no solo se ha ajustado, sino que también está vinculada a determinadas medidas de plataforma. Este tipo de clave solo se puede desencapsular cuando esas medidas de plataforma tienen los mismos valores que tenían cuando se creó la clave. Este proceso se denomina "sellado" la clave al TPM. El descifrado de la clave se denomina "desealing". El TPM también puede sellar y anular los datos generados fuera del TPM. Con esta clave sellada y software, como el cifrado de unidad BitLocker, puedes bloquear los datos hasta que se cumplan determinadas condiciones de hardware o software.

Con un TPM, las partes privadas de los pares de claves se mantienen independientes de la memoria controlada por el sistema operativo. Las claves se pueden sellar en el TPM y se pueden realizar ciertas garantías sobre el estado de un sistema (garantías que definen la "confiabilidad" de un sistema) antes de que las claves no estén selladas y se liberen para su uso. Dado que el TPM usa su propio firmware interno y circuitos lógicos para procesar instrucciones, no se basa en el sistema operativo y no se expone a vulnerabilidades que podrían existir en el sistema operativo o el software de aplicación.

Arquitectura de TPM

Diferencia entre TPM 1.2 y TPM 2.0.
La especificación de TPM se ha desarrollado dos veces. La primera vez, desarrolló de 1.1b a 1.2, incorporando nuevas funcionalidades solicitadas/identificadas por el comité de especificación. Esta forma de evolución de características hizo que la especificación TPM 1.2 final sea muy complicada. Finalmente, se mostraron las debilidades criptográficas de SHA-1 (que era el algoritmo comercial más fuerte de TPM 1.2), lo que provocó la necesidad de un cambio. La arquitectura de TPM se ha rediseñado desde cero, lo que da lugar a un diseño mucho más integrado y unificado de TPM 2.0.

Los cambios y mejoras en comparación con el TPM 1.2 anterior incluyen:

  • Compatibilidad con algoritmos criptográficos adicionales
  • Mejoras en la disponibilidad del TPM en las aplicaciones
  • Mecanismos de autorización mejorados
  • Administración simplificada de TPM
  • Funcionalidades adicionales para mejorar la seguridad de los servicios de plataforma

Nota:

Windows IoT Core solo admite TPM 2.0 y no admite el TPM 1.2 obsoleto.

¿Qué es TBS?

La característica Servicios base de TPM (TBS) es un servicio del sistema que permite el uso compartido transparente de los recursos de TPM. Comparte los recursos de TPM entre varias aplicaciones en la misma máquina física a través de llamadas a procedimientos remotos (RPC). Centraliza el acceso de TPM entre aplicaciones mediante prioridades especificadas por las aplicaciones que llaman.

El TPM proporciona funciones criptográficas diseñadas para proporcionar confianza en la plataforma. Dado que el TPM se implementa en hardware, tiene recursos finitos. El TCG define una pila de software de TPM (TSS) que hace uso de estos recursos para proporcionar operaciones de confianza para el software de aplicación. Sin embargo, no se realiza ningún aprovisionamiento para ejecutar una implementación de TSS en paralelo con el software del sistema operativo que también puede usar recursos de TPM. La característica TBS resuelve este problema habilitando cada pila de software que se comunica con TBS para usar recursos de TPM comprobando cualquier otra pila de software que se pueda ejecutar en la máquina.

Soluciones de TPM disponibles en Windows IoT Core

Algunas palabras sobre TPM de software (sTPM), TPM de firmware (fTPM), TPM discreto (dTPM)...

TPM de firmware (fTPM)

El TPM de firmware (fTPM) requiere compatibilidad especial con procesador o soC que no está implementada actualmente en Raspberry Pi 2 o 3. MinnowBoard Max necesita la versión de firmware 0.80 o posterior. DragonBoard410c proporciona funcionalidades fTPM habilitadas de forma predeterminada.

TPM discreto (dTPM)

TPM discreto (dTPM) se considera la solución de máxima confianza por todos los medios.
Hay varios fabricantes de chips dTPM y módulos pcb compatibles con Windows IoT Core:

Fabricante Página web Tipo modul TPM Chip
Infineon Infineon TPM Evalboard Infineon SLB9670 TPM 2.0
Pi3g Pi3g.com Producto masivo & Evalboard Infineon SLB9670 TPM 2.0

TPM de software (sTPM)

TPM de software (sTPM) también se conoce como simulador de TPM. Es independiente de la plataforma, compatible con Windows IoT Core.

Nota:

sTPM está pensado solo para fines de desarrollo y no proporciona ninguna ventaja real de seguridad.

Ejemplos

  • Ejemplo de biblioteca urchin Este tutorial muestra cómo crear una aplicación de C++ de ejemplo que ejerce la funcionalidad de TPM mediante la biblioteca Urchin. Urchin es una biblioteca compatible con especificaciones derivada de la implementación de referencia de TPM 2.0. Proporciona al cliente la funcionalidad de serializar o desmarshalar todas las estructuras de datos, calcular correctamente las autorizaciones, realizar el cifrado de parámetros y realizar la auditoría.

Recursos adicionales