Qué es el TPM en Windows — la "caja fuerte que no deja salir la llave" y el arranque medido, explicados con diagramas

· Actualizado el: · · TPM, Windows, BitLocker, Seguridad, Windows 11, Sistemas de información, C#

«Hay un PC que no puede pasar a Windows 11. Dice que no tiene TPM» — en los últimos años, en las consultas sobre renovación de equipos en empresas, esta frase aparece siempre. Se sabe que es «como una especie de chip de seguridad», pero pocas personas pueden explicar qué hace exactamente y por qué es obligatorio, ni por qué basta con actualizar la BIOS para que BitLocker pida la clave de recuperación.

El TPM no es «un chip que acelera el cifrado» ni «un chip que evita virus». Dicho sin rodeos, hace solo estas dos cosas:

  1. Permite usar una clave privada sin dejarla salir nunca de sí mismo.
  2. Registra qué se cargó durante el arranque y solo entrega la clave cuando ese registro es el esperado.

Al entender estos dos puntos, se explica con claridad por qué funciones de seguridad de Windows como BitLocker, Windows Hello, Credential Guard o la certificación del estado del dispositivo se apoyan en la misma base, y también por qué ocurren los problemas que se encuentran en la práctica.

En este artículo repasamos con diagramas el funcionamiento del TPM, dónde lo usa Windows, cómo comprobar el estado del propio equipo, cómo manejar en el día a día la pantalla de la clave de recuperación o el borrado del TPM, y cómo puede un desarrollador usar el TPM desde su propia aplicación, todo ello respaldado por la documentación oficial.

Como el alcance es amplio, presentamos primero cómo leer este artículo según el objetivo. No hace falta leerlo de principio a fin.

Perfil / objetivo Capítulos a leer
Informática interna / gestión de PC (migración a Windows 11, operación de BitLocker) Capítulo 1 → 6 → 8 → 9 → 11
Tengo ahora la pantalla de la clave de recuperación y no sé qué hacer Sección 9.1 → capítulo 11 (la tabla de causas está al inicio del capítulo 9)
Encargado de PC industriales o de equipos empotrados Sección 6.1 → capítulo 11
Desarrollador (quiero usar el TPM desde mi propia aplicación) Capítulo 2 → 10 → 11
Quiero entender el mecanismo para poder explicarlo a otras personas Capítulo 2 → 3 → 4 (los diagramas se concentran aquí)
Solo quiero la conclusión y las pautas de referencia Capítulo 1 → 11

1. La conclusión, primero

El TPM (Trusted Platform Module) es un procesador dedicado a la seguridad que se encarga de generar, guardar y usar claves criptográficas.1 Lo que hace se resume en los dos puntos del inicio.

  • Deja usar la clave privada sin que salga nunca del chip (la caja fuerte). La parte privada de una clave marcada como no exportable no se revela nunca a ningún otro software, proceso o usuario.2
  • Registra qué se cargó durante el arranque (el libro de registro). El firmware y el gestor de arranque, antes de ceder el control al siguiente componente, registran en una zona llamada PCR el hash del código que van a ejecutar. Solo cuando ese registro coincide con lo esperado se puede «sellar» y extraer una clave, y BitLocker es el ejemplo por excelencia.32

De estos dos puntos se derivan conclusiones útiles en la práctica. Cada capítulo las desarrolla en detalle.

  • Que el PIN de Windows Hello sea seguro aunque tenga solo 4 dígitos se debe a que la protección contra ataques de diccionario (bloqueo tras 32 intentos fallidos) reside en el hardware (capítulo 2).2
  • El requisito mínimo de Windows 11 es un firmware «con UEFI, compatible con arranque seguro» y TPM 2.0. No obstante, Windows 11 IoT Enterprise tiene requisitos flexibilizados para equipos dedicados, y hay configuraciones en las que el TPM pasa a ser opcional (capítulo 6).45
  • Existen tres formas de implementar el TPM (chip dedicado, integrado y por firmware), pero Windows usa cualquiera de ellas del mismo modo (capítulo 5).6
  • Windows 10 y 11 inicializan el TPM automáticamente y toman posesión de él, por lo que normalmente no hace falta tocar la configuración en tpm.msc (capítulo 8).1
  • Borrar el TPM provoca pérdida de datos. Antes de hacerlo es imprescindible confirmar la copia de seguridad y los medios de recuperación (capítulo 9).7
  • Un desarrollador no debe invocar el TPM directamente, sino usar el «Microsoft Platform Crypto Provider» de CNG (capítulo 10).8

2. Qué es el TPM — la «caja fuerte que no deja salir la llave»

Empecemos imaginando un mundo sin TPM. Si se intenta proteger una clave privada solo con software, esa clave acaba convertida en algún momento en texto plano en memoria. Para calcular una firma o un descifrado, la CPU necesita leer el valor de la clave. Es decir, frente a un malware que haya llegado al kernel o a un atacante capaz de leer físicamente la memoria, es, en principio, imposible ocultarla por completo. La propia documentación oficial afirma que la protección de claves por software está «expuesta a ataques de ingeniería inversa que analizan cómo se guarda la clave en memoria durante su uso y cómo se generan copias de ella».3

El TPM invierte esta premisa. La clave se genera dentro del TPM y permanece dentro del TPM. La aplicación o el sistema operativo no reciben la clave: le encargan una tarea al TPM y solo reciben el resultado.

B. Depositar la clave en el TPMsolo envía la petición«firma esto» / «descifra esto»devuelve solo el resultadono puede extraer la clave en síTPMAplicación / SOEl cálculo se hace con la clave privadadentro del TPM, que nunca sale del chipLa aplicación / SO recibeúnicamente el resultado de firmar o descifrarMalware que llegó al kernelanálisis de memoria, ataque físicoA. Proteger la clave solo con softwarelee la clave y calculase puede llegar a leerClave privada en memoriahay un instante en texto planoAplicación / SOMalware que llegó al kernelanálisis de memoria, ataque físico

Figura 1: Diferencia entre proteger la clave solo con software y depositarla en el TPM

Aquí es importante señalar que el TPM es pasivo. El TPM no vigila nada por su cuenta ni detiene virus. Es un componente que se limita a recibir comandos y devolver respuestas.6 Precisamente por eso, para aprovechar el valor del TPM el fabricante del equipo (OEM) tiene que integrar cuidadosamente el hardware y el firmware, y Windows construye sus funciones dando por hecho esa integración.

Otro pilar es la protección contra ataques de diccionario. A las claves que protege el TPM se les puede asignar un valor de autenticación, como un PIN. Cuando el intento de adivinar ese valor falla un número determinado de veces, el TPM rechaza nuevos intentos y bloquea el acceso. En TPM 2.0, este comportamiento lo configura Windows: concretamente, bloquea tras 32 intentos fallidos de autenticación y olvida un intento fallido cada 10 minutos transcurridos. Si pasan 320 minutos sin ningún fallo, el contador de fallos recordados vuelve a cero.2

El hecho de que «el límite de intentos resida en el hardware» es lo que marca la diferencia. Si el conteo de fallos se llevara por software, bastaría con reiniciar el equipo, retrasar el reloj del sistema o revertir el archivo que registra el contador para anularlo. Con el TPM eso no es posible.3 La razón por la que un PIN de 4 dígitos de Windows Hello puede considerarse más seguro que una contraseña está precisamente aquí.

3. El interior del TPM — EK, SRK, PCR y NVRAM

Dentro del TPM hay varios elementos con funciones distintas. Como los nombres se parecen y se prestan a confusión, conviene fijar su posición relativa con un diagrama.

solo se puede extraercuando el valor coincideTPM 2.0EK / clave de aprobaciónse deriva de una semilla de fabricaciónlleva certificado del fabricanteSRK / clave raíz de almacenamientoclave padre que envuelve a otras clavesPCR 0 a 23acumulan los valores medidos del arranqueNVRAMpequeña zona que no se borra al apagarAIK / clave de identidad de certificaciónidentidad que se muestra al exterior en lugar de la EKClave de BitLockerClave de Windows HelloClave privada de un certificado

Figura 2: Elementos principales del TPM y la relación padre-hijo entre las claves

La EK (Endorsement Key / clave de aprobación) es un par de claves asimétricas propio de ese TPM en concreto. La parte privada se guarda dentro del TPM y nunca se revela ni se puede acceder a ella desde fuera.2 Lleva asociado un certificado EK firmado por el fabricante, que demuestra que «esta clave está efectivamente dentro de un TPM fabricado por esta empresa». Esto permite distinguir un TPM auténtico de un malware que finge serlo.3

Nota: la EK de TPM 2.0 no es una «clave grabada de fábrica», sino una «clave derivada de una semilla»

La documentación de Microsoft describe la EK como un par de claves RSA2, pero esa descripción viene de la época de TPM 1.2. Lo que TPM 2.0 graba de forma inmutable en el chip durante la fabricación es, con precisión, una semilla llamada «semilla primaria de aprobación» (endorsement primary seed), y la EK se deriva de esa semilla siguiendo un procedimiento fijo (una plantilla). Como derivar a partir de la misma semilla siempre produce la misma clave, la EK puede recrearse y sigue siendo, en la práctica, propia de ese TPM. Se pueden derivar EK tanto en RSA como en ECC, y no es raro que un mismo equipo tenga ambas disponibles. No hace falta este detalle para entender lo esencial del artículo, así que puede saltárselo sin problema.

Ahora bien, mostrar la EK tal cual al exterior permitiría identificar el equipo de forma unívoca, lo cual plantea un problema de privacidad. Por eso, en los escenarios reales se usa la AIK (Attestation Identity Key / clave de identidad de certificación). Una autoridad de certificación usa la EK y su certificado para demostrar que «esta AIK existe realmente dentro de un TPM auténtico» y emite un certificado de AIK. Como se puede usar una AIK distinta para cada interlocutor, se evita que varios verificadores se pongan de acuerdo para rastrear el mismo equipo.3

La SRK (Storage Root Key / clave raíz de almacenamiento) es la clave padre que envuelve (wrap) a otras claves. El TPM puede cifrar una clave que ha creado y sacarla al exterior, y esa clave solo se puede descifrar en ese mismo TPM. A este proceso se le llama «envolver» (wrap) o «vincular» (bind).2 Es decir, aunque el espacio de almacenamiento dentro del TPM sea pequeño, si se guarda cifrado en almacenamiento externo, en la práctica se pueden tener tantas claves como se quiera.

El PCR (Platform Configuration Register) es un registro especial que acumula los valores medidos durante el arranque. Va del número 0 al 23, y cada uno tiene asignado de antemano qué mide.9 La propiedad clave es que no se puede escribir directamente un valor cualquiera: solo se puede avanzar mediante la operación Extend. Extend es una operación de un solo sentido que «concatena el valor actual con la nueva medición y convierte el hash resultante en el nuevo valor», de modo que en principio es imposible «borrar solo el registro que resulta inconveniente». El valor se reinicia al reiniciar el equipo.3

Cabe señalar que TPM 2.0 también tiene PCR con atributo reiniciable (para usos como DRTM o aplicaciones). Pero los PCR que usa BitLocker para sellar (0, 2, 4, 7 y 11) son PCR de arranque medido estático, que no se pueden reiniciar hasta el siguiente arranque. La explicación de este artículo parte de este segundo tipo.

La NVRAM es una pequeña zona no volátil que se usa para guardar certificados, entre otras cosas. TPM 2.0 mejora respecto a TPM 1.2 en algoritmos, criptografía, jerarquías, claves raíz, autorización y NVRAM.6

4. Arranque medido y PCR — por qué «si el arranque cambia, no se abre»

Otro de los pilares del TPM es el arranque medido (Measured Boot). Este es el punto clave para entender el funcionamiento de BitLocker.

4.1. Qué significa «medir» exactamente

Antes de seguir, conviene precisar el término «medición». Aquí no se trata de medir una magnitud física como el peso o la temperatura, sino de calcular un valor hash a partir de toda la secuencia de bytes del programa o los datos de configuración que se van a ejecutar a continuación. El valor hash es un valor de longitud fija, como una «huella dactilar del contenido», y tiene estas propiedades:

  • El mismo contenido produce siempre el mismo valor, sin importar quién ni cuándo lo calcule.
  • Si el contenido difiere aunque sea en un solo byte, el valor resultante es completamente distinto.
  • Es prácticamente imposible reconstruir el contenido original a partir del valor.

Por ejemplo, al calcular con el hash SHA-256, abc produce

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

y abd, que solo difiere en el último carácter, produce

a52d159f262b2c6ddb724a61840befc36eb30c88877a4030b65cbe86298449c9

Una diferencia de un solo carácter cambia el valor por completo, y comparando ambos valores ni siquiera queda un indicio de que «el contenido era parecido». Con Get-FileHash de PowerShell se puede calcular el SHA-256 de cualquier archivo, así que puede comprobar en su propio equipo esta sensación de «huella dactilar».

En resumen, el «valor medido del arranque» es el valor hash del firmware, el gestor de arranque y la configuración que se ejecutan durante el arranque. Si los valores medidos coinciden todos con los de la vez anterior, se puede afirmar con certeza que «el software y la configuración que participaron en el arranque son exactamente los mismos que la vez anterior». A la inversa, si el gestor de arranque ha sido alterado o se arranca desde otro sistema operativo, el valor medido correspondiente cambia forzosamente. Esta es la base del arranque medido.

4.2. La cadena de medición — medir lo que se carga antes de ejecutarlo

El mecanismo es sencillo. Dentro del firmware del sistema hay un punto de partida en el que se confía incondicionalmente, llamado CRTM (Core Root of Trust for Measurement). El CRTM calcula sin condiciones el hash del siguiente componente de software que va a ejecutar y registra ese valor medido en el TPM. Los componentes posteriores repiten lo mismo: se mide lo que se va a cargar, antes de ejecutarlo. Como el valor medido se envía antes de la ejecución, ningún componente puede borrar su propio valor medido del TPM.3

TPMNúcleo de WindowsAdministrador de arranque de WindowsFirmware UEFI CRTMTPMNúcleo de WindowsAdministrador de arranque de WindowsFirmware UEFI CRTMSe actualizan PCR 0, 2, 4 y 7Se mide antes de ceder el controlalt[PCR coincide con el valor del sellado][PCR con un valor distinto]Extend con el hash del código a ejecutar a continuación1Cede el control2Solicita liberar la clave sellada de BitLocker3Devuelve la clave4Descifra el volumen del SO5Extend con el núcleo, ELAM y controladores de arranque6Cede el control e inicia Windows7No devuelve la clave8Pasa a la pantalla de clave de recuperación9

Figura 3: Flujo del arranque medido y la liberación de la clave de BitLocker

En el diagrama, el orden «se mide el núcleo después de descifrar» responde al principio del arranque medido: lo que se va a cargar se mide antes de ejecutarlo. El gestor de arranque de Windows verifica la firma digital del núcleo antes de cargarlo, y a su vez el núcleo verifica los controladores de arranque, los archivos de inicio y ELAM.10 Si el núcleo se midiera a sí mismo después de arrancar, la medición podría omitirse y perdería su sentido.

BitLocker crea dentro del TPM una clave que solo se puede usar cuando el valor medido es el esperado. El valor esperado se calcula en el momento en que el gestor de arranque de Windows se ejecuta desde el volumen del SO del disco del sistema. Si se arranca con otro sistema operativo o se cambia la configuración, el valor medido dentro del TPM cambia, el TPM no autoriza el uso de la clave y el volumen del SO cifrado no se puede descifrar.3

Entonces, ¿qué PCR concretos se observan? En una configuración UEFI nativa, el perfil de validación de plataforma predeterminado es el siguiente.9

PCR Objeto medido
PCR 0 Código ejecutable principal del firmware del sistema
PCR 1 Datos principales del firmware del sistema
PCR 2 Código ejecutable de extensiones y dispositivos extraíbles
PCR 3 Datos de firmware de extensiones y dispositivos extraíbles
PCR 4 Gestor de arranque
PCR 5 GPT / tabla de particiones
PCR 6 Eventos de reanudación desde S4/S5
PCR 7 Estado del arranque seguro
PCR 11 Control de acceso de BitLocker
PCR 12 a 14 Eventos de datos, detalle de módulos de arranque, autoridad de arranque

De forma predeterminada, el sellado se hace sobre PCR 0, 2, 4 y 11. Ahora bien, cuando se admite el estado del arranque seguro (PCR 7), el sellado se hace con PCR 7 y PCR 11.9 Esta es una diferencia importante. PCR 0/2/4 son el hash directo de las propias imágenes del firmware y del gestor de arranque, de modo que cambian cada vez que se actualiza el firmware y provocan una caída a modo de recuperación. PCR 7, en cambio, mide «si el arranque seguro está activado y en qué claves confía», de modo que su valor no cambia aunque se actualice la imagen, siempre que el firmante siga siendo el mismo. Microsoft también explica que vincularse a PCR 7 reduce la probabilidad de entrar en modo de recuperación por actualizaciones de firmware o de imagen.9

El uso de PCR 11 tiene un matiz interesante y es un buen truco de diseño. El escenario que se contempla es un atacante que deja intacto el equipo de la víctima (con el mismo hardware y firmware) y solo sustituye el disco del SO por uno propio. Como la clave está sellada en el TPM original, cambiar todo el equipo no tendría sentido para el atacante, así que su objetivo es seguir usando el TPM de la víctima. El atacante extrae de los metadatos de la partición del SO de la víctima el blob de clave de BitLocker sellado, arranca su propio sistema operativo bajo su control y luego llama a la API del TPM para intentar desellar (unseal) ese blob de clave.

Esto no funciona porque Windows sella la clave con el valor de PCR 11 en 0, y el gestor de arranque cambia siempre PCR 11 a 1 en el momento de ceder el control al siguiente cargador de arranque, sea legítimo o no. Cuando el sistema del atacante ya está en marcha, el gestor de arranque ya ha cedido el control, por lo que PCR 11 ya no vale 0 con total seguridad. En consecuencia, aunque se use el mismo equipo y el mismo TPM, no es posible pedir la clave desde una etapa posterior al gestor de arranque.11

Cabe señalar que el propio arranque seguro también forma parte de la defensa de BitLocker. De forma predeterminada, BitLocker aprovecha la protección de integridad del arranque seguro mediante la medición de PCR 7 para impedir que un firmware EFI, una aplicación de arranque EFI o un gestor de arranque no autorizados lleguen a arrancar y obtengan la clave de BitLocker.11

5. dTPM, fTPM y Pluton — diferencias de implementación

La expresión «chip TPM» está tan extendida que se tiende a pensar que el TPM es siempre un componente físico independiente, pero en realidad existen tres formas de implementación.6

bus LPC / SPICPUChip TPM dedicado= discreto (dTPM)Paquete de CPUo chipsetHardware dedicado dentro del mismo paqueteseparado lógicamente= integrado (integrated)CPU de propósito generalImplementación en firmwareque corre sobre un entorno de ejecución de confianza (TEE)= por firmware (fTPM)SoCProcesador de seguridaddiseñado por Microsoft= Pluton

Figura 4: Las tres formas de implementación del TPM y Pluton como su extensión

  • El TPM discreto (dTPM) es un chip dedicado en un paquete de semiconductor independiente. Se monta en la placa base y tiene la ventaja de que el OEM puede evaluarlo y certificarlo por separado del resto del sistema.6
  • El TPM integrado se implementa como hardware dedicado, separado lógicamente aunque comparta el mismo paquete que otros componentes.6
  • El TPM por firmware (fTPM) ejecuta el TPM como firmware dentro del entorno de ejecución de confianza (TEE) de una unidad de cálculo de propósito general.6 Resulta adecuado en dispositivos pequeños y de bajo consumo donde un chip dedicado no es viable.

Windows usa de la misma manera cualquier TPM compatible. Microsoft no toma partido sobre qué método de implementación debe usarse, y sostiene que un ecosistema amplio responde mejor a todo tipo de necesidades.6 Es decir, no es cierto que «un fTPM sea de segunda categoría».

Sobre esa base, Microsoft Pluton lleva un paso más allá la forma integrada. Es un procesador criptográfico seguro integrado en la CPU, diseñado por Microsoft y fabricado por socios de silicio, que ofrece las funciones del TPM y a la vez está pensado para aportar funciones de seguridad que van más allá del alcance de la especificación TPM 2.0.12 En 2026, Pluton está disponible en equipos con Windows 11 que integran los siguientes chipsets.12

  • AMD: series Ryzen 6000, 7000, 8000 y 9000, y series Ryzen AI
  • Intel: serie Core Ultra 200V y procesadores Core Ultra Series 3
  • Qualcomm: Snapdragon 8cx Gen 3 y series Snapdragon X

En cuanto a la operación, la característica de Pluton es que tiene dos vías de actualización de firmware. Además de la actualización de cápsula UEFI habitual, que actualiza el firmware en la memoria flash SPI de la placa base, se puede cargar dinámicamente firmware nuevo de Pluton a través de las actualizaciones del sistema operativo. Al arrancar el sistema, se inicializa con el firmware de la memoria flash SPI, y durante el arranque de Windows se carga (si existe) la versión más reciente obtenida vía Windows Update.12 Que, al descubrirse una vulnerabilidad en el firmware del TPM, esta pueda distribuirse sin esperar a que el fabricante del PC publique una actualización de BIOS es una propiedad muy útil en la práctica.

6. Diferencias entre TPM 1.2 y 2.0, y los requisitos de Windows 11

Si se trabaja con equipos antiguos, todavía se encuentra TPM 1.2 de vez en cuando. La diferencia entre ambos va más allá de un simple «número de versión más alto».6

Aspecto TPM 1.2 TPM 2.0
Algoritmos criptográficos Solo RSA y SHA-1 Admite varios algoritmos (agilidad criptográfica)
Política de bloqueo Depende de la implementación, varía según el fabricante La configura Windows, garantizando una protección coherente contra ataques de diccionario
Forma de implementación Básicamente chip discreto Discreto, integrado o por firmware
Estandarización Estandarizado internacionalmente como ISO/IEC 11889:2015
Requisito de firmware Puede funcionar con BIOS Requiere UEFI nativo (el CSM debe estar desactivado)

Lo que más pesa es el SHA-1. El NIST ya pedía en 2014 a numerosas agencias federales que migraran a SHA-256, y en 2017 tanto Microsoft como Google retiraron el soporte de firmas y certificados basados en SHA-1. Como la especificación de TPM 1.2 solo admite SHA-1, no puede seguir esa tendencia.6

Y llegamos a Windows 11. Sus requisitos mínimos son: una CPU de 64 bits de la lista de compatibilidad, 4 GB de memoria, 64 GB de almacenamiento, gráficos compatibles con DirectX 12 o superior y controlador WDDM 2.0, una pantalla de al menos 720p, más de 9 pulgadas y 8 bits por canal, un firmware de sistema «con UEFI, compatible con arranque seguro (Secure Boot capable)», y TPM 2.0.4

Aquí conviene leer con precisión. El requisito mínimo pide ser compatible con el arranque seguro, no que esté activado.4 El requisito se cumple aunque permanezca desactivado, así que no hace falta tocar la configuración de UEFI solo para poder pasar a Windows 11. Ahora bien, si se activa el arranque seguro y la plataforma cumple el requisito de vinculación a PCR 7, BitLocker queda vinculado a PCR 7 y cae con menos frecuencia en modo de recuperación (capítulo 4). Activarlo por sí solo no produce ese efecto automáticamente, así que conviene comprobar realmente a qué PCR está vinculado con el perfil de validación de PCR de manage-bde -protectors -get C:. El orden correcto es activarlo por este beneficio práctico, no porque lo exija el requisito.

Otro punto que se pasa por alto con frecuencia es que TPM 2.0 no es compatible con el modo heredado ni con el modo CSM (Compatibility Support Module) de la BIOS. Los dispositivos con TPM 2.0 deben configurar el modo de BIOS como «UEFI nativo únicamente», y las opciones de heredado/CSM deben quedar desactivadas.6

Esto genera situaciones complicadas en la práctica. Un sistema operativo instalado en modo heredado deja de arrancar si se cambia el modo de BIOS a UEFI. Antes de cambiar el modo de BIOS es necesario usar la herramienta MBR2GPT para dejar el sistema operativo y el disco en un estado compatible con UEFI.6 No es raro que un equipo «que tiene TPM pero no se puede subir a Windows 11» se encuentre precisamente en esta situación. La visión de conjunto sobre la decisión de migración desde Windows 10 está recogida en «Windows 10 tras el fin de soporte — tabla de decisión entre ESU, LTSC y renovación».

Cabe señalar también que, en cuanto a la certificación del estado del dispositivo (Device Health Attestation), lo que admite Windows es TPM 2.0, y aunque el equipo tenga TPM 2.0, en un dispositivo con BIOS heredada no funciona como se espera.1

6.1. La excepción — en Windows 11 IoT Enterprise el TPM es opcional

Todo lo dicho hasta aquí —«en Windows 11 el TPM 2.0 es obligatorio»— se aplica a las ediciones orientadas al PC general. Windows 11 IoT Enterprise tiene definidos, aparte, unos requisitos mínimos flexibilizados para equipos dedicados: en IoT Enterprise LTSC (y en las versiones no LTSC 24H2 en adelante) tanto el TPM como el arranque seguro son opcionales (Optional).5 En el terreno de los PC industriales y los equipos empotrados, saber esto puede invertir por completo la conclusión de «con esta placa no se puede pasar a Windows 11».

La tabla oficial de requisitos se organiza en dos columnas: PREFERRED (recomendado) y OPTIONAL (mínimo para equipos dedicados).5

Elemento Windows 11 para PC general Windows 11 IoT Enterprise LTSC
PREFERRED
Windows 11 IoT Enterprise LTSC
OPTIONAL
TPM TPM 2.0 obligatorio TPM 2.0 Opcional (Optional)
Arranque seguro Compatibilidad obligatoria Activado Opcional (Optional)
Firmware del sistema UEFI UEFI También válido con BIOS
Memoria 4 GB 4 GB 2 GB
Almacenamiento 64 GB 64 GB 16 GB

Hay tres puntos de atención.

  • No es cierto que «con LTSC no haga falta TPM». El requisito flexibilizado está definido para IoT Enterprise, y Windows 11 Enterprise LTSC (sin IoT) recibe el mismo trato que las ediciones para PC general. Como los nombres se parecen, se confunden con facilidad, pero la conclusión cambia según cuál sea la licencia que se adquiere.
  • En las versiones no LTSC de IoT Enterprise, la situación cambia según la versión. En los requisitos OPTIONAL de 21H2 a 23H2, TPM 2.0 sigue siendo obligatorio (solo el arranque seguro pasa a ser opcional), y el TPM no se vuelve opcional hasta 24H2 en adelante.5
  • Los requisitos de procesador se definen aparte. Aunque el TPM y el arranque seguro sean opcionales, la lista de procesadores compatibles se define en otro lugar, así que hay que consultarla siempre por separado.5

Y el propio Microsoft advierte del significado de elegir estos requisitos flexibilizados: en dispositivos en los que el usuario final pueda añadir software más adelante, esta reducción de requisitos debe considerarse con cautela, porque prescindir del TPM puede afectar al software que el usuario final necesite.5 Sin TPM, BitLocker no puede sellar la clave al estado de arranque, y la clave de Windows Hello también cae a protección por software. La decisión correcta no es «lo incorporo para cumplir el requisito», sino «lo incorporo para obtener la protección que ese equipo necesita».

La visión de conjunto sobre cómo elegir entre IoT Enterprise/LTSC y sobre la adquisición de licencias está recogida en «Qué Windows instalar en un PC industrial — Guía práctica de Windows IoT Enterprise / LTSC».

7. Dónde usa Windows el TPM

Cuando le dicen a uno «el TPM es obligatorio» sin ver a qué funciones del día a día afecta, cuesta convencerse. Trazamos aquí el mapa.

TPM 2.0BitLocker / cifrado de dispositivosella la clave al estado de arranqueWindows Helloprotege la clave asociada al PIN o a los datos biométricosPIN corto seguro gracias a la protección contra ataques de diccionarioCredential Guardprotege con valores medidos la clave del entorno aisladoArranque medido / certificación remotaemite un «quote» firmado sobre el estado de arranqueCertificación del estado del dispositivocriterio de decisión para el acceso condicional de la administración de dispositivosPlatform Crypto Providerhace que la clave privada de un certificado no se pueda extraer

Figura 5: Principales funciones de seguridad de Windows que se apoyan en el TPM

BitLocker / cifrado de dispositivo. Es lo que vimos en el capítulo 4. Hay cuatro métodos de desbloqueo: solo TPM, TPM+PIN, TPM+clave de inicio, y TPM+PIN+clave de inicio; el método solo TPM es el de mayor comodidad, pero se considera de menor seguridad que los métodos que exigen un factor de autenticación adicional.11

Cabe señalar que las condiciones previas del cifrado de dispositivo (el mecanismo que activa BitLocker automáticamente) han cambiado en los últimos años. Antes se exigía cumplir los requisitos de Modern Standby o HSTI y no tener puertos externos con acceso DMA, pero desde Windows 11 versión 24H2 esta condición previa se ha eliminado, y ahora hay más equipos que quedan cubiertos.13 La explicación antigua de que «solo funciona en equipos compatibles con Modern Standby» ya no es aplicable a partir de 24H2. Puede comprobar si su equipo está cubierto en «Compatibilidad con cifrado de dispositivo» dentro de msinfo32.exe (información del sistema).13

Windows Hello / Windows Hello for Business. Autentica combinando una clave aprovisionada en cada equipo con un PIN o datos biométricos. Si hay TPM, este protege la clave; si no, la protección la hace el software. Los datos biométricos se usan en ese equipo únicamente para acceder a la clave ya aprovisionada, y no se comparten entre equipos.3 En los equipos con TPM, la clave no se puede copiar a otro sitio, de modo que se obtiene la propiedad de que aunque se filtren las credenciales, no se pueden usar en otro equipo.

Credential Guard. Es una función que procesa el hash de las credenciales en una región de memoria aislada, inaccesible desde el kernel. Esta región aislada se inicializa y se protege durante el proceso de arranque, y Credential Guard usa el TPM para proteger su clave con valores medidos. La clave solo es accesible «durante la etapa del proceso de arranque en que se inicializa la región aislada», y no se puede usar desde el kernel normal.3

Arranque medido y certificación remota. Usando la AIK, el TPM puede generar una declaración (quote) firmada criptográficamente sobre el estado actual de los valores medidos. Al enviarla a un servicio remoto, se puede certificar «con qué software y configuración se arrancó y se inicializó el sistema operativo».3 La medición se detiene en el estado inicial de Windows, así que no incluye información de privacidad como qué aplicaciones se están usando.3

Certificación del estado del dispositivo. El servicio de certificación del estado de Microsoft emite certificados de AIK para TPM de distintos fabricantes, analiza la información del arranque medido y la convierte en afirmaciones sencillas como «¿BitLocker está activado?», «¿el arranque seguro está activado?» o «¿DEP está activado?». Herramientas de administración de dispositivos móviles (MDM), como Intune, pueden usar estas afirmaciones —sin tener que analizar por sí mismas el quote complejo— para aislar un equipo o bloquear su acceso a servicios en la nube.13

Platform Crypto Provider. Protege con el TPM la clave privada de un certificado. En una plantilla de certificado se puede indicar «usar el Platform Crypto Provider del TPM», y la clave privada de un certificado configurado como no exportable no se puede extraer del TPM. Si el certificado exige un PIN, la protección contra ataques de diccionario del TPM se aplica automáticamente.3 Este es el punto de entrada para el desarrollador que se trata en el capítulo 10.

Tarjeta inteligente virtual. Hace que el TPM se comporte como «una tarjeta inteligente que siempre está insertada», eliminando el coste de comprar y distribuir tarjetas físicas y lectores.3 Sin embargo, Microsoft recomienda actualmente a quienes usan tarjeta inteligente virtual que migren a Windows Hello for Business o a llaves de seguridad FIDO2.2 Sigue existiendo como activo heredado, pero no es la opción a elegir en un diseño nuevo.

8. Cómo comprobar el TPM de su propio equipo

A partir de aquí toca poner manos a la obra. Antes de nada, conviene tener presente que Windows 10 y 11 inicializan el TPM automáticamente y toman posesión de él. Por eso, normalmente no hace falta tocar la configuración en la consola de administración del TPM (tpm.msc), y el propio Microsoft indica que «en la mayoría de los casos, se recomienda evitar configurar nada desde tpm.msc». Las excepciones se limitan a escenarios relacionados con el restablecimiento del PC o una instalación limpia.1 Por cierto, el desarrollo activo de la consola de administración del TPM ha finalizado a partir de Windows Server 2019 / Windows 10 versión 1809.1

8.1. Verlo desde la interfaz gráfica

  • Win + Rtpm.msc abre la consola de administración del TPM. Muestra si hay TPM, su estado, la versión de especificación y el fabricante. La pantalla se divide en el apartado «Estado» (si está en condiciones de usarse) y el apartado «Información del fabricante del TPM» (nombre del fabricante, versión del fabricante y versión de especificación), y si la versión de especificación es 2.0 es el dato que determina si se cumple el requisito de TPM de Windows 11. En equipos sin TPM o con el TPM desactivado, aparece un mensaje indicando que no se encuentra ningún TPM compatible (el orden de comprobación para ese caso está en la sección 8.4).
  • La misma información también se ve en Seguridad de Windows, en Seguridad del dispositivoDetalles del procesador de seguridad. Desde esta pantalla se puede llegar a Solución de problemas del procesador de seguridadBorrar el TPM (se trata en el capítulo 9, pero no debe pulsarse a la ligera).7

8.2. Verlo desde PowerShell

Para revisar varios equipos, PowerShell es la vía más fiable. El módulo TrustedPlatformModule reúne un conjunto completo de cmdlets.14

# Comprobar de forma conjunta el estado del TPM (ejecutar como administrador)
Get-Tpm

La salida tiene esta forma.15

TpmPresent                : True
TpmReady                  : True
TpmEnabled                : True
TpmActivated              : True
TpmOwned                  : True
ManufacturerIdTxt         : INTC
ManufacturerVersion       : 402.1.0.0
ManagedAuthLevel          : Full
OwnerClearDisabled        : False
AutoProvisioning          : Enabled
LockedOut                 : False
LockoutHealTime           : 10 minutes
LockoutCount              : 0
LockoutMax                : 31

Los puntos clave para interpretarla son estos.15

  • TpmPresent: si hay un TPM presente. Si aparece en False, el problema está en el hardware o en la configuración de UEFI.
  • TpmReady: si Windows puede usarlo. Si TpmPresent es True pero TpmReady es False, algo falla en la inicialización o en la toma de posesión.
  • LockedOut / LockoutCount / LockoutMax / LockoutHealTime: el estado de la protección contra ataques de diccionario. Si LockedOut es True, el acceso está bloqueado temporalmente, por ejemplo por errores al introducir el PIN.
  • OwnerClearDisabled: si es True, no se puede restablecer (borrar) el TPM desde el sistema operativo mediante el valor de autenticación del propietario.
  • AutoProvisioning: si el aprovisionamiento automático de Windows está activado o desactivado.

Si lo que se busca es determinar de forma automatizada si la versión de especificación es 2.0, es más práctico consultarlo desde WMI.

# Obtener la versión de especificación, el fabricante y el estado de activación
Get-CimInstance -Namespace 'root/CIMv2/Security/MicrosoftTpm' -ClassName Win32_Tpm |
    Select-Object SpecVersion, ManufacturerId, ManufacturerVersion,
                  IsEnabled_InitialValue, IsActivated_InitialValue, IsOwned_InitialValue

Aquí conviene prestar atención a ManufacturerId. La propiedad ManufacturerIdTxt que devuelve Get-Tpm (una cadena como INTC) solo existe en Get-Tpm; la clase Win32_Tpm no la tiene.16 Si por descuido se escribe Select-Object ManufacturerIdTxt, esa columna queda vacía sin ningún aviso.

Lo que Win32_Tpm sí tiene es ManufacturerId como uint32, y si se interpreta cada byte como un carácter ASCII se obtiene la cadena (por ejemplo, 14145487360x54 0x50 0x4D 0x00TPM).16 Si quiere obtenerla como cadena, puede convertirla usted mismo así, o simplemente usar Get-Tpm.

# Convertir ManufacturerId (uint32) a cadena ASCII y listarlo
Get-CimInstance -Namespace 'root/CIMv2/Security/MicrosoftTpm' -ClassName Win32_Tpm |
    Select-Object SpecVersion, ManufacturerVersion,
        @{ Name = 'ManufacturerText'; Expression = {
            $bytes = [System.BitConverter]::GetBytes([uint32]$_.ManufacturerId)
            # Leer el uint32 desde el byte más significativo (ej.: 1229870147 → 0x49 0x4E 0x54 0x43 → INTC)
            if ([System.BitConverter]::IsLittleEndian) { [array]::Reverse($bytes) }
            -join ($bytes | Where-Object { $_ -ne 0 } | ForEach-Object { [char]$_ })
        } }

SpecVersion se devuelve con la forma 2.0, 0, 1.16, es decir «versión de especificación, revisión, fe de erratas».16 Comprobando si empieza por 2.0 se puede usar para determinar si se cumple el requisito de TPM de Windows 11 (los demás requisitos, como CPU, memoria o almacenamiento, requieren una comprobación aparte; véase el capítulo 11). Para ejecutarlo de forma remota contra varios equipos, consulte «Introducción a PowerShell Remoting (WinRM)».

Además, Get-TpmEndorsementKeyInfo permite consultar la información de la EK y su certificado, y Get-TpmSupportedFeature permite comprobar el soporte de funciones concretas. Para liberar un bloqueo se usa Unblock-Tpm, y para restablecer el TPM, Clear-Tpm.14

8.3. Verlo con herramientas de línea de comandos

tpmtool es la herramienta estándar para obtener información y diagnósticos del TPM.17

:: Mostrar la información básica del TPM
tpmtool getdeviceinformation

:: Recopilar los registros del TPM en el directorio actual
tpmtool gatherlogs

Para revisarlo junto con el estado de BitLocker, combínelo con manage-bde -status o Get-BitLockerVolume. El procedimiento de investigación desde el registro de eventos está recogido en «Cómo investigar el registro de eventos en la práctica con Get-WinEvent».

8.4. Orden de comprobación cuando «debería ser TPM 2.0 pero no funciona»

Comprobar el estado por sí solo no basta para avanzar, así que enlazamos aquí los resultados con el siguiente paso según cada caso. El punto de partida del diagnóstico son TpmPresent y TpmReady de Get-Tpm.

Resultado de Get-Tpm Significado Siguiente paso
TpmPresent : False Windows no ve ningún TPM Sospeche primero de la configuración de UEFI (véase más abajo). Si tras configurarlo sigue sin verse, es posible que directamente no haya TPM instalado
TpmPresent : True / TpmReady : False Existe, pero no está en condiciones de usarse por Windows Está atascado en la inicialización o en la toma de posesión. Revise el indicador de estado en tpm.msc. El procedimiento oficial de solución de problemas cubre el caso de que el TPM no se detecte o no se pueda preparar7
SpecVersion empieza por 1.2 Hay TPM, pero la versión es insuficiente Algunos modelos se pueden actualizar, pero en principio es un problema de hardware. Vaya a la decisión del capítulo 6
LockedOut : True Bloqueado por la protección contra ataques de diccionario Vaya a la sección 9.3

Los puntos a revisar en la configuración de UEFI son los siguientes. En muchos modelos, el TPM por firmware viene desactivado de fábrica, y basta con activarlo para resolver el problema.

  • El nombre del elemento varía según el fabricante. En plataformas Intel suele aparecer como PTT (Platform Trust Technology), y en plataformas AMD como fTPM (AMD fTPM, AMD CPU fTPM, etc.); hay modelos en los que la palabra TPM no aparece en pantalla en absoluto. No dé por hecho que «no hay TPM» solo porque no vea ese elemento.
  • Suele estar dentro de Security o de Advanced. A veces está bajo apartados como Trusted Computing o PCH-FW Configuration.
  • Algunos modelos tienen una opción para alternar entre el chip dedicado (dTPM) y el TPM por firmware. En ese caso, aplica lo descrito en la sección 9.2, «cambiar entre varios TPM hace que BitLocker entre en modo de recuperación»: una vez decidido, no lo cambie.7
  • Compruebe si el modo heredado/CSM está activado. TPM 2.0 no funciona en modo CSM. Si el origen del problema es este, hace falta MBR2GPT antes de pasar a UEFI (capítulo 6).6
  • Al activar el TPM en UEFI, no olvide suspender BitLocker. Es una operación que cambia la premisa de los valores medidos, así que se trata igual que la tabla de causas al inicio del capítulo 9.

9. Problemas habituales en la práctica — pantalla de clave de recuperación, borrado del TPM y bloqueo

En el terreno práctico, el TPM sale a relucir casi siempre cuando algo no funciona. Tratamos aquí los tres casos más habituales.

Antes de entrar en ellos, colocamos por adelantado, en forma de tabla de causas, la respuesta directa a la pregunta planteada al inicio de este artículo: «¿por qué basta con actualizar la BIOS para que se pida la clave de recuperación de BitLocker?». Es la correspondencia entre «qué operación cambia qué PCR y qué resultado provoca».9117

Esa operación Qué cambia ¿Entra en modo de recuperación? Resultado y solución
Actualizar el firmware UEFI/BIOS PCR 0 (código ejecutable principal del firmware del sistema), entre otros Sí entra en configuraciones selladas a PCR 0/2/4. Con sellado a PCR 7/11, es menos probable Lo correcto es suspender BitLocker antes de actualizar. Aunque entre en modo de recuperación, al desbloquear con la clave, a partir de entonces se vuelve a sellar con el nuevo valor medido
Desactivar el arranque seguro o cambiar las claves de confianza PCR 7 (estado del arranque seguro) Sí entra Revierta la configuración o desbloquee con la clave de recuperación
Activar el modo CSM (heredado) PCR 7. Además, TPM 2.0 no funciona en modo CSM (capítulo 6) Sí entra Revierta el cambio. Si el objetivo es pasar a UEFI, ejecute antes MBR2GPT (capítulo 6)
Arrancar otro SO desde USB u otro medio, cambiar el orden de arranque El valor medido del gestor de arranque (PCR 4) y la configuración de arranque en general Sí entra Revierta la configuración de arranque y reinicie
Un atacante arranca su propio SO e intenta desbloquear la clave PCR 11 (pasa de 0 a 1 en cuanto el gestor de arranque cede el control) No se puede desbloquear (es la defensa funcionando como está diseñada) Como se explica en el capítulo 4, esto es la prueba de que la protección funciona
Borrar el TPM, cambiar la placa base, o pasar solo el disco del SO a otro equipo No es un PCR: la clave sellada en sí ya no está disponible Sí entra (si no se suspendió antes, la clave de recuperación es el único recurso) Si se suspendió BitLocker de antemano, se puede arrancar sin la clave de recuperación y volver a sellar (sección 9.1)

Lo importante de esta tabla es que las cinco primeras filas y la última describen fenómenos completamente distintos. En las cinco primeras filas «la clave existe, pero el valor medido no coincide», y basta con pasar la clave de recuperación para volver a la normalidad. En la última fila, «la clave en sí ya no está disponible», y sin la clave de recuperación no hay forma de recuperarse.

El traslado del disco del SO cae en la última fila porque la clave sellada está dentro del TPM del equipo original. Aunque el disco se inserte en otro equipo, la clave no viaja con él. Aunque la intención sea solo trasladar el disco, en la práctica equivale a un cambio de placa base. Si hay previsto un traslado, suspenda BitLocker antes del trabajo o tenga a mano la clave de recuperación.

9.1. Se solicitó la clave de recuperación de BitLocker

Es la consulta más frecuente. La separación de causas es, en realidad, sencilla.

Se actualizó UEFI/BIOSSe cambió la configuración del arranque seguroo se activó el CSMSe borró el TPMo se cambió la placa baseSe arrancó otro SO desde USBo se cambió el orden de arranqueNo hay ningún cambio identificableAl arrancar apareció la pantalla de clave de recuperación¿Se cambió algo justo antes?Cambió un valor medido como PCR 0a partir de ahora se vuelve a sellardesbloquee con la clave y continúeCambió el valor medido de PCR 7revierta la configuración o desbloquee con la claveLa clave sellada desapareciósi no se suspendió BitLocker de antemanola clave de recuperación es el único recursoCambió el valor medido de la configuración de arranquerevierta el cambio y reinicieInvestigue, sin descartar un ataquedesbloquee con la clave tras recopilar registrosConfirme dónde está guardada la clave de recuperaciónAD DS / Entra ID / cuenta de Microsoft

Figura 6: Separación de causas cuando se solicita la clave de recuperación de BitLocker

Actualizar el firmware es el detonante habitual del modo de recuperación. Microsoft también recomienda suspender BitLocker antes de actualizar el firmware cuando se ha configurado un perfil que incluye PCR 0.9 A la inversa, en un equipo con el arranque seguro correctamente configurado y vinculado a PCR 7, la frecuencia con la que una actualización de firmware provoca la caída a modo de recuperación disminuye.9 En los equipos compatibles con Modern Standby, la medición de PCR 7 es un requisito de certificación (logo), y si el TPM y el arranque seguro están correctamente configurados, se vinculan por defecto a PCR 7 y PCR 11.9

La conclusión operativa es sencilla. Suspenda siempre BitLocker antes de una actualización de UEFI, un cambio de configuración del arranque seguro, un borrado del TPM o un cambio de placa base. Y antes de eso, confirme dónde está guardada la clave de recuperación (Active Directory Domain Services, Microsoft Entra ID, o su cuenta de Microsoft si es un uso personal). En una organización se puede configurar BitLocker para que guarde la clave de recuperación en AD DS.3

El haber suspendido o no de antemano cambia por completo el esfuerzo posterior. Suspender BitLocker deja en el volumen un protector de clave sin cifrar (clear key), de modo que, tanto si se borra el TPM como si se cambia a uno nuevo, se puede arrancar sin introducir la clave de recuperación (al reanudar la protección después de arrancar, se vuelve a sellar frente al nuevo TPM). Cuando en la figura 6 decimos que «la clave de recuperación es el único recurso», nos referimos al caso de haber borrado o cambiado sin suspender antes. Dicho de otro modo, con un solo paso de preparación previa se puede evitar esta bifurcación por completo.

9.2. Quiero borrar el TPM / ya lo borré

Borrar el TPM provoca pérdida de datos. La advertencia de la documentación oficial es clara: al borrarlo se pierden todas las claves creadas ligadas al TPM y los datos protegidos con ellas (como la tarjeta inteligente virtual o el PIN de inicio de sesión). Asegúrese siempre de tener copia de seguridad y un medio de recuperación para cualquier dato protegido o cifrado con el TPM.7

Además, hay tres precauciones que importan en la práctica.7

  • No borre el TPM de un equipo que no sea de su propiedad (un PC de la empresa o del centro educativo) sin instrucciones del administrador.
  • El borrado debe hacerse siempre desde una función del sistema operativo (tpm.msc o Seguridad de Windows), nunca directamente desde UEFI.
  • Si lo único que quiere es detener temporalmente el funcionamiento del TPM, use «desactivar el TPM» en lugar de borrarlo.

Después de borrarlo, Windows lo reinicializa automáticamente y vuelve a tomar posesión de él.7

Conviene subrayar aquí que borrar el TPM no es lo mismo que borrar datos (sanitizar). Lo que se pierde al borrar son las claves que había dentro del TPM; los datos del disco en sí no desaparecen ni un byte. Como es habitual que la clave de recuperación de BitLocker esté guardada de antemano en AD DS, Microsoft Entra ID o una cuenta de Microsoft, quien disponga de ella puede seguir descifrando el volumen incluso después de borrar el TPM.

Lo esencial al entregar un equipo a terceros son los procedimientos de borrado del propio almacenamiento: «Restablecer este PC (también quitar los archivos)» de Windows, una herramienta de borrado dedicada, el borrado criptográfico o la destrucción física. Borrar el TPM es solo el toque final de ese proceso. El procedimiento completo de desecho y cesión de equipos está recogido en «Lista de comprobación para el desecho y la cesión de PC con Windows».

Hay otra trampa poco conocida. Algunos sistemas tienen varios TPM instalados y permiten alternar entre ellos desde UEFI, pero Windows no admite esta configuración. Si se cambia de TPM, es posible que Windows no detecte correctamente el nuevo, y BitLocker entra en modo de recuperación. Si se quiere cambiar, hay que hacerlo y además borrar el TPM y reinstalar Windows. Microsoft recomienda encarecidamente que, en sistemas con dos TPM, una vez elegido uno no se cambie.7

9.3. El TPM quedó bloqueado

Si se acumulan errores al introducir el PIN, el TPM se bloquea. Con la configuración predeterminada de Windows, TPM 2.0 se bloquea tras 32 intentos fallidos de autenticación y olvida un intento fallido cada 10 minutos. Aunque esté bloqueado, basta con mantener el equipo encendido durante el intervalo de recuperación para salir del bloqueo.2 Los 10 minutos son solo el valor predeterminado de Windows, así que compruebe el intervalo real de su equipo con LockoutHealTime en la salida de Get-Tpm (capítulo 8). A veces esperar es más rápido que reiniciar repetidamente con nerviosismo.

Si quiere desbloquearlo de inmediato, se envía un comando de restablecimiento del bloqueo. Aquí es fácil confundirse con la contraseña de propietario del TPM. A partir de Windows 10 versión 1607, Windows no conserva la contraseña de propietario al aprovisionar el TPM (establece un valor aleatorio de alta entropía y lo descarta).18 Si se diseña un procedimiento asumiendo que «el administrador dispone de la contraseña de propietario», este se atasca en la práctica.

En su lugar se usa la autorización de bloqueo (lockout authorization). El valor predeterminado 5 de OSManagedAuthLevel significa, en TPM 2.0, «conservar únicamente la autorización de bloqueo».18 Es decir, el estado predeterminado es que «se ha perdido la contraseña completa de propietario, pero se conserva la autorización para desbloquear el bloqueo», y tanto el restablecimiento del tiempo de bloqueo en tpm.msc como Unblock-Tpm funcionan normalmente con esa autorización. Existe también una configuración para conservar la propia contraseña de propietario (poniendo OSManagedAuthLevel en 4 en el registro), pero Microsoft la desaconseja firmemente.18

Cabe señalar que, aunque no haya contraseña de propietario, sigue existiendo una vía para realizar operaciones de administración como activar, desactivar o borrar el TPM mediante la confirmación de presencia física en UEFI.18 Pero esto no es una alternativa para desbloquear el bloqueo de forma inmediata y no destructiva. Cuando la autorización de bloqueo no está disponible, lo básico es esperar a la recuperación por tiempo (un intento cada 10 minutos), y el borrado es el último recurso, que pierde todas las claves (sección 9.2).

Cabe señalar además que, en una configuración en la que se introduce explícitamente el valor de autorización para restablecer, si se intenta el restablecimiento con un valor incorrecto, el TPM no permitirá reintentar el restablecimiento durante 24 horas.2 No lo intente al azar repetidamente.

También hay que señalar que en TPM 2.0 existen claves que se pueden crear sin valor de autenticación, y esas se pueden usar aunque el TPM esté bloqueado. La configuración predeterminada de BitLocker solo TPM permite arrancar Windows aunque el TPM esté bloqueado.2

10. El TPM desde la perspectiva del desarrollador — Platform Crypto Provider y CNG

Cuando en su propia aplicación surge un requisito como «quiero vincular una clave de licencia al equipo», «quiero usar un certificado de cliente propio del equipo para conectarme al servidor» o «quiero que un valor sensible del archivo de configuración solo se pueda descifrar en este equipo», el TPM es una opción sólida.

10.1. Use CNG, no TBS

Windows dispone de una API de bajo nivel llamada TBS (TPM Base Services). Es un servicio del sistema que centraliza el acceso al TPM entre aplicaciones, se ofrece como una API vía RPC, y programa de forma cooperativa el acceso al TPM según la prioridad indicada por quien la invoca.19

Sin embargo, la propia documentación de TBS dice esto: «el TPM también puede usarse para guardar claves, pero para estos escenarios se recomienda a los desarrolladores usar la API de almacenamiento de claves. Esta API ofrece funciones de creación, firma, cifrado y persistencia de claves, y es de más alto nivel y más fácil de usar que TBS».19 Es decir, si lo único que se busca es proteger una clave, no hay razón para tocar TBS.

Lo que hay que usar es el proveedor de almacenamiento de claves de CNG (Cryptography API: Next Generation) llamado «Microsoft Platform Crypto Provider». CNG separa el proveedor criptográfico del proveedor de almacenamiento de claves, y Platform Crypto Provider, como KSP que utiliza el TPM, guarda la clave privada de forma segura e impide que se pueda extraer.8

Las características que ofrece Platform Crypto Provider y que un proveedor de CNG puramente software no puede lograr (o no puede lograr en la misma medida) son dos.3

  • Protección de la clave: se pueden crear dentro del TPM claves con restricciones de uso. El sistema operativo puede cargarlas y usarlas dentro del TPM sin copiarlas a la memoria del sistema. Se pueden configurar como no exportables. Una clave creada por el TPM solo existe en ese TPM, y ese TPM no se convierte en origen de copias de la clave.
  • Protección contra ataques de diccionario: se puede exigir un valor de autenticación, como un PIN, para la clave, y si hay demasiados intentos fallidos, el TPM responde rechazando el acceso durante un tiempo.

10.2. Cómo escribirlo en C#

Desde .NET se puede trabajar con las clases de CNG de System.Security.Cryptography. Primero, esta es la forma mínima de crear una clave dentro del TPM y dejarla no exportable (.NET 8 / Windows).

using System.Security.Cryptography;

var parameters = new CngKeyCreationParameters
{
    // Proveedor de almacenamiento de claves que usa el TPM
    Provider = new CngProvider("Microsoft Platform Crypto Provider"),
    // No permitir en absoluto la exportación de la clave privada
    ExportPolicy = CngExportPolicies.None,
};

using var key = CngKey.Create(CngAlgorithm.Rsa, "KomuraSoft.DeviceKey", parameters);
using var rsa = new RSACng(key);

Con esto, la clave privada se crea dentro del TPM y nunca aparece en la memoria del proceso. Ahora bien, en un uso real hace falta manejar «abrir la clave existente a partir de la segunda vez», «si es por usuario o por equipo» y «la concurrencia entre ejecuciones simultáneas». El siguiente código incorpora todo eso.

using System;
using System.Security.Cryptography;

const string KeyName = "KomuraSoft.DeviceKey";

// NTE_EXISTS: "El objeto ya existe" (ya hay una clave con el mismo nombre)
const int NTE_EXISTS = unchecked((int)0x8009000F);

// Proveedor de almacenamiento de claves que usa el TPM
var provider = new CngProvider("Microsoft Platform Crypto Provider");

// Decidir si la clave es por usuario o por equipo (para usarla desde un servicio o una tarea).
// Hay que mantener el mismo valor al crear y al referenciar; si no coinciden, aparece
// el problema de "la clave que se creó no se encuentra".
const bool UseMachineKey = false;
var openOptions = UseMachineKey ? CngKeyOpenOptions.MachineKey : CngKeyOpenOptions.None;
var creationOptions = UseMachineKey
    ? CngKeyCreationOptions.MachineKey   // Crearla requiere permisos de administrador
    : CngKeyCreationOptions.None;

CngKey OpenOrCreateKey()
{
    if (CngKey.Exists(KeyName, provider, openOptions))
    {
        // A partir de la segunda vez, abrir la clave existente (la clave persiste en el TPM)
        return CngKey.Open(KeyName, provider, openOptions);
    }

    var creationParameters = new CngKeyCreationParameters
    {
        Provider = provider,
        KeyCreationOptions = creationOptions,
        // No permitir en absoluto la exportación de la clave privada: el núcleo del sentido de usar el TPM
        ExportPolicy = CngExportPolicies.None,
    };
    creationParameters.Parameters.Add(
        new CngProperty("Length", BitConverter.GetBytes(2048), CngPropertyOptions.None));

    try
    {
        return CngKey.Create(CngAlgorithm.Rsa, KeyName, creationParameters);
    }
    catch (CryptographicException ex) when (ex.HResult == NTE_EXISTS)
    {
        // Si otro proceso crea una clave con el mismo nombre entre Exists y Create,
        // Create falla con NTE_EXISTS. Solo en ese caso, se abre la clave que creó
        // el proceso que ganó la carrera. Cualquier otro fallo (el TPM no está
        // disponible, faltan permisos, etc.) se propaga tal cual a quien la llamó.
        return CngKey.Open(KeyName, provider, openOptions);
    }
}

using (var key = OpenOrCreateKey())
using (var rsa = new RSACng(key))
{
    byte[] payload = System.Text.Encoding.UTF8.GetBytes("device-attestation-challenge");
    // La firma se realiza dentro del TPM. La clave privada no aparece en la memoria del proceso
    byte[] signature = rsa.SignData(payload, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}

ExportPolicy = CngExportPolicies.None es la clave. Si se deja el valor predeterminado, aunque se use el TPM, la configuración podría permitir extraer la clave. Como la razón de usar el TPM es que «la clave no salga al exterior», indique explícitamente que no se puede exportar.

Otra trampa habitual es confundir una clave por usuario con una clave por equipo. La versión de dos argumentos de CngKey.Exists / CngKey.Open solo busca claves por usuario. Si se cambia únicamente el lado de creación a CngKeyCreationOptions.MachineKey y se deja igual el lado de referencia, no se encuentra la clave de equipo existente, y se produce el fallo típico de «cada vez intenta crear una clave con el mismo nombre y falla». Como en el código anterior, mantenga el mismo ámbito en los tres puntos (creación, comprobación de existencia y apertura) (CngKeyCreationOptions.MachineKey y CngKeyOpenOptions.MachineKey).

Que OpenOrCreateKey esté separado en una función con try/catch también tiene su razón de ser. «Comprobar si existe y luego crear» es frágil frente a la concurrencia. Si, por ejemplo con varias instancias de la aplicación en marcha, dos procesos ven ambos Exists == false y avanzan a Create, gana el que consigue crearla primero, y el que pierde falla con «ya existe una clave con el mismo nombre». Como solo ocurre en el primer arranque, y raramente, en las pruebas casi nunca se detecta. Incluya desde el principio, como reacción de respaldo, que el proceso perdedor vuelva a abrir la clave que creó el ganador.

Ahora bien, solo conviene volver a abrir la clave cuando la razón del fallo es «ya existe una clave con el mismo nombre» (NTE_EXISTS). Si se hace pasar por la misma vía un fallo distinto, como que el TPM no esté disponible o falten permisos, la causa real queda enmascarada por otra excepción distinta, «no se encuentra la clave», de Open, y la investigación se desvía. Por eso el código anterior filtra por HResult en la excepción.

10.3. Realidades que debe incorporar al diseño

A partir de la documentación oficial y de la naturaleza del TPM, hay varias cosas que conviene decidir antes de implementar.

  • El TPM no es rápido. Es un microcontrolador dedicado, o bien un pequeño procesador que corre en el modo protegido de la CPU.2 No es raro que la generación de una clave tarde varios segundos. No use directamente una clave del TPM para cifrar grandes volúmenes de datos. Cifre los datos con una clave simétrica (AES, por ejemplo) y proteja esa clave simétrica con la clave del TPM, en un esquema de dos niveles.
  • No ejecute la generación de claves ni la firma en el hilo de la interfaz de usuario. La lentitud mencionada arriba se traduce directamente en una interfaz que se congela.
  • Al borrar el TPM, la clave desaparece. Diseñe partiendo de que se puede perder por una reparación, un cambio de placa base o una reinstalación del sistema operativo, e incluya en el diseño una vía para volver a registrarse (por ejemplo, un procedimiento del lado del servidor para volver a registrar el equipo). Un diseño en el que «si se pierde la clave, no hay salida» siempre acaba provocando incidentes en producción.
  • Decida si es por usuario o por equipo. Una clave por usuario está ligada al perfil. Si la va a usar un servicio o una tarea programada, necesita ser por equipo (CngKeyCreationOptions.MachineKey), y crearla requiere permisos de administrador. No olvide pasar también CngKeyOpenOptions.MachineKey en el lado de referencia. El criterio para decidir dónde guardar los datos también puede consultarse en «Cómo elegir dónde guardar los datos locales de una aplicación de Windows».
  • El solo hecho de ponerla por equipo no permite que la cuenta del servicio pueda usar esa clave. MachineKey determina únicamente la ubicación del almacén de claves; quién puede usarla depende de la ACL (descriptor de seguridad) asociada a la clave. Es un incidente típico que un administrador cree la clave y luego una cuenta de servicio sin privilegios de administrador intente abrirla y se detenga con «acceso denegado». La solución es crear la clave con los privilegios de la propia cuenta que la va a usar (la cuenta del servicio), o bien, al crearla, configurar el descriptor de seguridad (la propiedad Security Descr de CNG) para permitir el SID del servicio. En cualquier caso, verifique siempre el funcionamiento con la cuenta de ejecución real.
  • Decida si el TPM ausente se maneja de algún modo. Puede rechazarlo como requisito, o bien recurrir (fallback) al Microsoft Software Key Storage Provider y aceptar que «el nivel de protección baja». En entornos mixtos, en la práctica se opta por priorizar Platform Crypto Provider en la plantilla de certificado y permitir también el proveedor por software.3
  • Piense con cuidado si va a poner PIN a la clave. Que la protección contra ataques de diccionario funcione es una ventaja, pero el bloqueo del TPM es global. No es técnicamente realista gestionar el contador de fallos clave por clave, así que si se acumulan demasiados intentos fallidos, se bloquea todo el TPM.2 Es decir, un error de entrada en su propia aplicación puede arrastrar también a Windows Hello en el mismo equipo.
  • El manejo de las credenciales en sí sigue siendo un asunto aparte. El diseño para no guardarlas en texto plano en scripts o archivos de configuración está recogido en «Manejo seguro de credenciales en PowerShell».

11. Prácticas recomendadas (tabla de decisión)

Situación Qué hacer Motivo / detalle
Quiero saber si puedo pasar a Windows 11 Use PC Health Check (comprobación de estado del PC) o una herramienta de administración para decidirlo. Si lo comprueba a mano, revise la lista de CPU compatibles, 4 GB de memoria, 64 GB de almacenamiento, GPU con DirectX 12 o superior y controlador WDDM 2.0, pantalla de 720p/más de 9 pulgadas/8 bpc, firmware UEFI nativo con compatibilidad de arranque seguro, y TPM 2.0 No concluya que «se puede pasar» mirando solo el TPM. La GPU y la pantalla también forman parte de los requisitos mínimos. Por el riesgo de omitir algo, la decisión conviene delegarla básicamente en la herramienta4
Quiero hacer solo un inventario del requisito de TPM Confirme 2.0 con Get-Tpm y con SpecVersion de Win32_Tpm Esto es la comprobación del requisito de TPM, no el juicio completo de elegibilidad para Windows 11416
Hay TPM pero no se cumplen los requisitos de Windows 11 Compruebe si el modo de BIOS está en heredado/CSM. Pase a UEFI con MBR2GPT antes de cambiar el modo TPM 2.0 no funciona en modo CSM6
PC industrial o equipo empotrado sin TPM o donde no se puede incorporar Consulte los requisitos mínimos OPTIONAL de Windows 11 IoT Enterprise. Ahora bien, distinga siempre la edición (IoT Enterprise, o Enterprise LTSC sin IoT) y la versión (LTSC, o si es no LTSC, si es 24H2 en adelante) El TPM es opcional en IoT Enterprise LTSC y en las versiones no LTSC 24H2 en adelante. En las no LTSC 21H2 a 23H2, TPM 2.0 es obligatorio. Windows 11 Enterprise LTSC sin IoT no entra en la flexibilización5
Voy a actualizar UEFI/BIOS Suspenda BitLocker de antemano y confirme dónde está guardada la clave de recuperación Actualizar el firmware cambia el valor medido de los PCR9
Quiero borrar el TPM Asegure primero la copia de seguridad y los medios de recuperación. Hágalo desde una función del sistema operativo (no desde UEFI) El borrado hace perder todas las claves y datos derivados del TPM7
Apareció la pantalla de clave de recuperación Identifique el cambio inmediatamente anterior (firmware, arranque seguro, orden de arranque, TPM) El cambio movió el valor medido, y esa es la causa911
El TPM se bloqueó Espere con el equipo encendido durante el intervalo de recuperación (10 minutos por defecto; confírmelo con LockoutHealTime de Get-Tpm). Si tiene prisa, use el restablecimiento del tiempo de bloqueo en tpm.msc o Unblock-Tpm La contraseña de propietario no se conserva desde 1607. De forma predeterminada, TPM 2.0 solo conserva la autorización de bloqueo. Restablecer con un valor de autorización incorrecto provoca la prohibición de reintentar durante 24 horas182
Equipo que debe resistir incluso ataques físicos Configure TPM+PIN (PIN extendido) y desactive la suspensión, operando con hibernación o apagado El método solo TPM prioriza la comodidad11
Quiero proteger una clave desde mi propia aplicación Microsoft Platform Crypto Provider de CNG + ExportPolicies.None Se recomienda una API de almacenamiento de claves de más alto nivel que TBS198
Quiero cifrar grandes volúmenes de datos Cifre con una clave simétrica y proteja solo esa clave con el TPM El TPM es lento. No es adecuado para el cifrado masivo directo2
Voy a desechar o ceder un equipo Tome como procedimiento principal el borrado del disco (restablecimiento de Windows, herramienta de borrado dedicada, destrucción física), y el borrado del TPM como el paso final de ese proceso Borrar el TPM no borra los datos del disco. Podrían seguir descifrándose con una clave de recuperación guardada aparte. Tenga también cuidado de no quedarse usted mismo sin acceso a los datos por un error en el procedimiento7

12. Resumen

  • El TPM es un procesador de seguridad pasivo que combina «una caja fuerte que permite usar la clave privada sin que salga nunca del chip» y «un libro de registro de lo que se cargó durante el arranque».
  • Los PCR estáticos para el arranque medido solo pueden avanzar mediante Extend, y como la medición se hace antes de la ejecución, ningún componente intermedio puede borrar su propio rastro. BitLocker sella su clave a este valor medido (TPM 2.0 también tiene PCR reiniciables, pero los que se usan para el sellado quedan fuera de esa categoría).
  • Con la configuración predeterminada de UEFI nativo se sella a PCR 0/2/4/11, y en entornos donde se puede usar el arranque seguro, a PCR 7/11. Vincularse a PCR 7 hace menos probable caer en modo de recuperación por una actualización de firmware.
  • Hay tres formas de implementación (discreto, integrado y por firmware), y Windows las trata a todas por igual. Pluton es la variante integrada en la CPU, y su rasgo distintivo en operación es que el firmware también se puede actualizar vía Windows Update.
  • El requisito de Windows 11 es TPM 2.0 y un firmware «con UEFI, compatible con arranque seguro». El requisito es la compatibilidad, no la activación, aunque activarlo trae el beneficio práctico de que BitLocker se vincule a PCR 7. Aunque haya TPM, en modo CSM no se cumple el requisito, así que pase primero por MBR2GPT antes de cambiar el modo de BIOS.
  • La excepción es Windows 11 IoT Enterprise, cuyos requisitos flexibilizados para equipos dedicados dejan tanto el TPM como el arranque seguro como opcionales. Ahora bien, esto se aplica solo a IoT Enterprise LTSC y a las versiones no LTSC 24H2 en adelante; en las no LTSC 21H2 a 23H2, TPM 2.0 es obligatorio, y Windows 11 Enterprise LTSC sin IoT no entra en la flexibilización. En cualquier caso, no incorporar TPM significa también renunciar a la protección de BitLocker y de Windows Hello.
  • Antes de actualizar el firmware, cambiar la configuración del arranque seguro, borrar el TPM o cambiar la placa base, suspenda BitLocker y confirme dónde está la clave de recuperación, siempre juntos.
  • Desde su propia aplicación, use el Microsoft Platform Crypto Provider de CNG, no TBS. Indique explícitamente que la clave no se puede exportar, e incorpore al diseño la lentitud del TPM y la pérdida de la clave al borrarlo.

Artículos relacionados

Áreas de consultoría relacionadas

KomuraSoft LLC atiende consultas sobre el inventario de requisitos de hardware para la migración a Windows 11, el diseño de la operación de BitLocker, y el desarrollo por encargo de aplicaciones de negocio para Windows que incluyen la gestión de claves propias del equipo mediante el TPM.

Referencias

  1. Microsoft Learn, Trusted Platform Module Technology Overview. Sobre que el TPM es un procesador criptográfico seguro con varios mecanismos de seguridad física resistentes a manipulaciones, que el malware no puede alterar sus funciones de seguridad, las tres ventajas de generación/almacenamiento/restricción de uso de claves más autenticación de dispositivo e integridad de plataforma, la medición y el registro del código de arranque, que Windows 10/11 inicializa el TPM automáticamente y toma posesión de él por lo que normalmente debe evitarse configurar desde tpm.msc, que el desarrollo activo de la consola de administración del TPM ha finalizado a partir de Windows Server 2019 / Windows 10 1809, y que la certificación del estado del dispositivo requiere TPM 2.0 y firmware UEFI y no funciona como se espera con BIOS heredada + TPM 2.0.  2 3 4 5 6

  2. Microsoft Learn, Trusted Platform Module (TPM) fundamentals. Sobre que las partes privadas de la clave raíz de almacenamiento y de la clave de aprobación no se revelan nunca a otros componentes, software, procesos o usuarios, el envoltorio/vinculación de claves, el sellado (sealing) y el desellado (unsealing) frente a valores medidos de la plataforma, que la EK es un par de claves RSA cuya parte privada no sale del TPM, la certificación de claves (key attestation), que la protección contra ataques de diccionario es un bloqueo global, que en TPM 2.0 Windows configura el bloqueo tras 32 intentos fallidos de autenticación y el olvido de un intento cada 10 minutos, que la memoria vuelve a cero si pasan 320 minutos sin fallos, que incluso en estado de bloqueo basta con mantener el equipo encendido 10 minutos para salir de él, el restablecimiento inmediato con la contraseña de propietario y la prohibición de reintentar 24 horas tras una entrada incorrecta, que las claves sin valor de autenticación se pueden usar incluso bloqueado y que la configuración solo TPM de BitLocker puede arrancar, que el TPM funciona en un microcontrolador dedicado o en el modo protegido de la CPU, y que se recomienda a quienes usan tarjeta inteligente virtual migrar a Windows Hello for Business o FIDO2.  2 3 4 5 6 7 8 9 10 11 12 13 14 15

  3. Microsoft Learn, How Windows uses the TPM. Sobre que la protección de claves por software está expuesta a ataques de ingeniería inversa, la protección de claves y la protección contra ataques de diccionario de Platform Crypto Provider, la confirmación de autenticidad del TPM mediante el certificado EK y la protección de privacidad mediante la AIK, que el CRTM calcula sin condiciones el hash del siguiente componente y lo registra en el TPM antes de la ejecución de modo que el valor medido no se puede borrar (el valor se elimina al reiniciar), que BitLocker crea dentro del TPM una clave que solo se puede usar cuando el valor medido del arranque coincide con el esperado, que la clave de recuperación se puede guardar en AD DS, que el arranque medido registra el núcleo de Windows, el controlador ELAM y los controladores de arranque, el quote y la certificación remota mediante la AIK, la colaboración entre el servicio de certificación del estado y la administración de dispositivos móviles, que Credential Guard protege con valores medidos del TPM la clave del entorno aislado, la protección de claves de Windows Hello for Business y que los datos biométricos no se comparten fuera del equipo, la tarjeta inteligente virtual, y la operación de plantillas de certificado en entornos mixtos.  2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

  4. Microsoft Learn, Windows 11 requirements. Sobre los requisitos mínimos de Windows 11 (CPU o SoC de 64 bits compatible con 1 GHz o más y 2 núcleos o más, 4 GB o más de memoria, 64 GB o más de almacenamiento, tarjeta gráfica compatible con DirectX 12 o superior con controlador WDDM 2.0, firmware de sistema «con UEFI, compatible con arranque seguro (Secure Boot capable)», TPM 2.0, pantalla de 720p o superior, más de 9 pulgadas y 8 bits por canal, y conexión a Internet). Incluye que el requisito es ser compatible con el arranque seguro, no tenerlo activado.  2 3 4 5

  5. Microsoft Learn, Minimum System Requirements - Windows IoT Enterprise. Sobre que los requisitos mínimos PREFERRED de Windows IoT Enterprise coinciden con los requisitos de los dispositivos orientados al consumidor general, y que existe flexibilidad para apartarse de ese nivel en dispositivos dedicados (los requisitos mínimos OPTIONAL). Que los requisitos mínimos OPTIONAL de Windows 11 IoT Enterprise LTSC son 2 GB de memoria, 16 GB de almacenamiento, firmware de sistema BIOS admitido, TPM «Optional» y arranque seguro «Optional». Que en las versiones no LTSC de Windows 11 IoT Enterprise, los requisitos OPTIONAL de 21H2/22H2/23H2 requieren TPM 2.0 y solo el arranque seguro es Optional, y que el TPM pasa a ser Optional a partir de 24H2. Que los requisitos de procesador están definidos en otra página. Y que, cuando se reducen los requisitos en un dispositivo dedicado en el que el usuario final puede añadir software, es necesario considerarlo con cautela, ya que no ofrecer TPM puede afectar al software que el usuario final necesite (a diferencia de un cambio de tipo de almacenamiento, que solo afecta al rendimiento de lectura/escritura). Este requisito flexibilizado se aplica a las ediciones de la familia Windows IoT Enterprise.  2 3 4 5 6 7

  6. Microsoft Learn, TPM recommendations. Sobre que el TPM es un componente pasivo que recibe comandos y devuelve respuestas, que TPM 1.2 solo admite RSA y SHA-1, que el NIST pedía en 2014 migrar a SHA-256 y que Microsoft y Google retiraron en 2017 el soporte de firmas y certificados basados en SHA-1, la agilidad criptográfica de TPM 2.0 y su estandarización internacional como ISO/IEC 11889:2015, que la política de bloqueo de TPM 1.2 varía según la implementación mientras que en TPM 2.0 la configura Windows garantizando una protección coherente contra ataques de diccionario, las tres implementaciones discreta (dTPM), integrada y por firmware (fTPM) que Windows usa por igual sin que Microsoft tome partido sobre el método de implementación, y que TPM 2.0 no es compatible con BIOS en modo heredado ni CSM, requiriendo una configuración UEFI nativa, y que un sistema operativo instalado en modo heredado necesita MBR2GPT antes de cambiar el modo de BIOS. Cabe señalar que la misma página menciona Modern Standby como condición previa del cifrado de dispositivo, condición que se eliminó en Windows 11 versión 24H2 (véase el capítulo 7 del cuerpo del artículo y [^bitlockerindex]).  2 3 4 5 6 7 8 9 10 11 12 13 14

  7. Microsoft Learn, Troubleshoot the TPM. Sobre que Windows inicializa el TPM automáticamente y toma posesión de él, por lo que no hace falta crear una contraseña de propietario; que borrar el TPM provoca pérdida de datos y hace perder todas las claves y datos derivados del TPM, incluidos la tarjeta inteligente virtual y el PIN de inicio de sesión; que no debe borrarse sin instrucciones del administrador un equipo que no sea propio; que el borrado debe hacerse siempre desde una función del sistema operativo (tpm.msc) y no directamente desde UEFI; que existe la opción de desactivar el TPM si solo se quiere detenerlo temporalmente; el procedimiento de borrado desde Seguridad del dispositivo → Detalles del procesador de seguridad → Solución de problemas en Seguridad de Windows; que tras el borrado Windows se reinicializa automáticamente y vuelve a tomar posesión; que Windows no admite el cambio entre varios TPM instalados y que cambiar provoca que BitLocker entre en modo de recuperación; y la comprobación de la configuración de UEFI cuando no se detecta TPM 2.0.  2 3 4 5 6 7 8 9 10 11

  8. Microsoft Learn, CNG Key Storage Providers. Sobre que CNG separa el proveedor criptográfico del proveedor de almacenamiento de claves (KSP), que Microsoft Platform Crypto Provider es un KSP que utiliza el TPM y guarda de forma segura la clave privada impidiendo que incluso software malicioso pueda extraerla, y sobre el uso de NCryptOpenStorageProvider con MS_PLATFORM_CRYPTO_PROVIDER.  2 3

  9. Microsoft Learn, Configure BitLocker. Sobre la lista de PCR 0 a 23 y su objeto de medición en la directiva «Configure TPM platform validation profile for native UEFI firmware configurations», que el perfil predeterminado en UEFI nativo es PCR 0, 2, 4 y 11, que cuando se admite el estado del arranque seguro (PCR 7) el sellado predeterminado se hace con PCR 7 y PCR 11, que usar PCR 7 —que indica el estado activado del arranque seguro y las claves de confianza— en lugar de PCR 0, 2 y 4 —que son el hash real de las imágenes de firmware y de Bootmgr— reduce la probabilidad de caer en modo de recuperación por actualizaciones de firmware o de imagen, que en configuraciones que incluyen PCR 0 se debe suspender BitLocker antes de actualizar el firmware, y que en sistemas compatibles con Modern Standby la medición de PCR 7 es un requisito de certificación y, si el TPM y el arranque seguro están correctamente configurados, se vinculan de forma predeterminada a PCR 7 y PCR 11.  2 3 4 5 6 7 8 9 10

  10. Microsoft Learn, Secure the Windows boot process. Sobre las funciones de Secure Boot, Trusted Boot, ELAM y Measured Boot; que en Trusted Boot el gestor de arranque verifica la firma digital del núcleo antes de cargarlo, y que el núcleo verifica además los controladores de arranque, los archivos de inicio y ELAM; que ELAM se carga antes que los controladores de arranque de terceros; y que en Measured Boot el firmware UEFI guarda en el TPM el hash de todo lo que se carga antes que el firmware, el gestor de arranque, los controladores de arranque y las aplicaciones antimalware. 

  11. Microsoft Learn, BitLocker countermeasures. Sobre que, de forma predeterminada, BitLocker aprovecha la protección de integridad del arranque seguro mediante la medición de PCR 7 para impedir que un firmware EFI, una aplicación de arranque EFI o un gestor de arranque no autorizados obtengan la clave de BitLocker, los cuatro métodos de desbloqueo (solo TPM, TPM+clave de inicio, TPM+PIN, TPM+clave de inicio+PIN) y que solo TPM prioriza la comodidad con una seguridad relativamente menor, que el TPM o los cambios en la configuración de BIOS/UEFI, los archivos de arranque o la configuración de arranque provocan la entrada en modo de recuperación, que los bootkits y rootkits se detectan por la medición de PCR y no se libera la clave, que Windows sella la clave con PCR 11 en 0 y el gestor de arranque cambia siempre PCR 11 a 1 al ceder el control, por lo que sustituir el disco no permite el desbloqueo, y la recomendación de TPM+PIN extendido y desactivar la suspensión cuando se contempla un ataque físico.  2 3 4 5 6

  12. Microsoft Learn, Microsoft Pluton security processor. Sobre que Pluton es un procesador criptográfico seguro integrado en la CPU, que está diseñado para ofrecer las funciones del TPM y además funciones de seguridad más allá de la especificación TPM 2.0, los chipsets compatibles (series AMD Ryzen 6000/7000/8000/9000 y Ryzen AI, serie Intel Core Ultra 200V y Core Ultra Series 3, Qualcomm Snapdragon 8cx Gen 3 y series Snapdragon X), que el firmware se carga al arrancar desde la memoria flash SPI de la placa base y que durante el arranque de Windows se usa la versión más reciente vía Windows Update, y las dos vías de actualización mediante cápsula UEFI y actualización del sistema operativo.  2 3

  13. Microsoft Learn, BitLocker overview. Sobre que el cifrado de dispositivo exigía cumplir los requisitos de seguridad de Modern Standby o HSTI y no poder tener puertos externos con acceso DMA, y que a partir de Windows 11 versión 24H2 se eliminaron las condiciones previas de DMA y de HSTI/Modern Standby, quedando cubiertos más dispositivos por el cifrado de dispositivo automático y manual; que el cifrado de dispositivo solo cifra la unidad del SO y las unidades fijas; que la clave de recuperación se respalda en Microsoft Entra ID, AD DS o una cuenta de Microsoft antes de eliminar la clave sin cifrar (clear key); y que en «Compatibilidad con cifrado de dispositivo» de msinfo32.exe se puede comprobar si se cumplen las condiciones previas.  2

  14. Microsoft Learn, TrustedPlatformModule Module. Sobre los cmdlets Clear-Tpm, ConvertTo-TpmOwnerAuth, Disable-TpmAutoProvisioning, Enable-TpmAutoProvisioning, Get-Tpm, Get-TpmEndorsementKeyInfo, Get-TpmSupportedFeature, Import-TpmOwnerAuth, Initialize-Tpm, Set-TpmOwnerAuth y Unblock-Tpm, y sus funciones respectivas.  2

  15. Microsoft Learn, Get-Tpm (TrustedPlatformModule). Sobre que Get-Tpm devuelve un TpmObject, y el significado y ejemplos de salida de propiedades como TpmPresent, TpmReady, TpmEnabled, TpmActivated, TpmOwned, ManagedAuthLevel, OwnerAuth, OwnerClearDisabled, AutoProvisioning, LockedOut, LockoutHealTime, LockoutCount, LockoutMax y SelfTest.  2

  16. Microsoft Learn, Win32_Tpm class. Sobre las propiedades de la clase Win32_Tpm (IsActivated_InitialValue, IsEnabled_InitialValue, IsOwned_InitialValue, SpecVersion, ManufacturerVersion, ManufacturerVersionInfo, ManufacturerId, PhysicalPresenceVersionInfo). Incluye que ManufacturerId es un uint32 y que, interpretando cada byte como carácter ASCII, se obtiene una cadena (por ejemplo, 1414548736 → 0x54/0x50/0x4D/0x00 → “TPM”), y que SpecVersion es una cadena que incluye la versión mayor y menor de la especificación TCG junto con la revisión y la fe de erratas. ManufacturerIdTxt no está incluida entre las propiedades de esta clase.  2 3 4

  17. Microsoft Learn, tpmtool. Sobre que tpmtool es una utilidad que sirve para obtener información del TPM, que getdeviceinformation muestra la información básica del TPM, y que gatherlogs recopila los registros del TPM en el directorio actual. 

  18. Microsoft Learn, Change the TPM owner password. Sobre que, a partir de Windows 10 versión 1607, Windows no conserva la contraseña de propietario al aprovisionar el TPM, estableciendo un valor aleatorio de alta entropía y descartándolo. Que la clave de registro HKLM\Software\Policies\Microsoft\TPM, con OSManagedAuthLevel en 4, permite conservarla, pero que Microsoft lo desaconseja firmemente; que el valor predeterminado en versiones posteriores a Windows 10 1703 es 5, y que ese valor significa, en TPM 2.0, «conservar la autorización de bloqueo»; y que, aunque no haya contraseña de propietario, siguen siendo posibles operaciones como activar, desactivar o borrar mediante la confirmación de presencia física en UEFI.  2 3 4 5

  19. Microsoft Learn, TPM Base Services. Sobre que TBS es un servicio del sistema que centraliza el acceso al TPM entre aplicaciones y ofrece una API vía RPC, que programa de forma cooperativa el acceso al TPM según la prioridad indicada por quien lo invoca, y que para el uso de almacenamiento de claves recomienda a los desarrolladores usar la API de almacenamiento de claves, de más alto nivel y más fácil de manejar, en lugar de TBS.  2 3

Artículos recientes con las mismas etiquetas para profundizar en temas cercanos.

Estas páginas sitúan el tema en un contexto más amplio de servicios y decisiones.

El artículo está directamente relacionado con los siguientes servicios.

Preguntas frecuentes

Preguntas habituales en las consultas sobre el tema del artículo.

En definitiva, ¿qué hace el TPM?
En una frase: es «una pequeña caja fuerte que permite usar una clave privada sin dejarla salir nunca al exterior». La clave privada creada dentro del TPM, si así se configura, no sale del chip en ningún momento. Las aplicaciones y el sistema operativo no reciben la clave en sí: le piden al TPM «firma estos datos» o «descifra con esta clave» y solo reciben el resultado. Además, durante el arranque el TPM acumula en una zona llamada PCR el hash del firmware y del gestor de arranque que se van cargando, y puede «sellar» una clave para que solo se pueda extraer cuando esos valores coinciden con lo esperado. Que BitLocker «no se desbloquee si se sustituye el contenido del equipo» se debe precisamente a este mecanismo.
¿Por qué Windows 11 exige TPM 2.0 obligatoriamente?
Porque funciones como BitLocker, Windows Hello, Credential Guard o la certificación del estado del dispositivo están diseñadas partiendo de un punto de confianza anclado en el hardware. TPM 1.2 solo admite RSA y SHA-1, y el comportamiento del bloqueo por reintentos variaba según el fabricante; con TPM 2.0 se pueden usar algoritmos nuevos y Windows configura de forma coherente la protección contra ataques de diccionario. Además, TPM 2.0 no funciona en modo BIOS heredado ni con el módulo de compatibilidad (CSM), por lo que exige una configuración UEFI nativa. La excepción es Windows 11 IoT Enterprise: en IoT Enterprise LTSC y en las versiones no LTSC 24H2 en adelante, tanto el TPM como el arranque seguro son opcionales (en las versiones no LTSC 21H2 a 23H2, TPM 2.0 sigue siendo obligatorio. Windows 11 Enterprise LTSC, sin «IoT» en el nombre pese al parecido, no entra en esta flexibilización).
¿En qué se diferencian dTPM, fTPM y Pluton? ¿Cuál debería elegir?
Es una diferencia de forma de implementación. El dTPM (TPM discreto) es un chip dedicado en la placa base; el fTPM (TPM por firmware) es una implementación por software que corre en el entorno de ejecución de confianza de la CPU; y Pluton es un procesador de seguridad diseñado por Microsoft e integrado en la CPU. Desde el punto de vista de Windows, el uso es idéntico en los tres casos, y Microsoft indica expresamente que no toma partido sobre qué implementación elegir. En la práctica, las diferencias son que el chip dedicado expone a ataques físicos el bus entre él y la CPU, que el fTPM depende del comportamiento de las actualizaciones de firmware de la CPU, y que Pluton puede actualizar su firmware a través de Windows Update. Cuando la elección es posible en la compra, lo realista en equipos de trabajo es basarse en la política de mantenimiento del fabricante y en la disponibilidad de actualizaciones de firmware.
Actualicé la BIOS y me pidió la clave de recuperación de BitLocker. ¿Por qué?
La clave de BitLocker está sellada a los valores medidos en el arranque (PCR), así que si el objeto medido cambia, la clave no se libera y el equipo entra en modo de recuperación. Actualizar el firmware es precisamente una operación que cambia valores como el de PCR 0. Microsoft recomienda suspender BitLocker antes de actualizar el firmware en configuraciones que incluyan PCR 0. Si se desbloquea con la clave de recuperación, a partir de entonces se vuelve a sellar con el nuevo valor medido, así que no vuelve a ocurrir lo mismo. Como práctica operativa, suspenda siempre BitLocker antes de una actualización de UEFI, un cambio en la configuración del arranque seguro, borrar el TPM o cambiar la placa base, y compruebe de antemano dónde está guardada la clave de recuperación (Active Directory, Microsoft Entra ID o su cuenta de Microsoft).
¿Cómo protejo una clave con el TPM desde mi propia aplicación?
No se trata de invocar directamente los comandos del TPM, sino de usar el proveedor de almacenamiento de claves de CNG (Cryptography API: Next Generation) llamado «Microsoft Platform Crypto Provider». En .NET basta con indicar ese proveedor y ExportPolicies.None en CngKey.Create para que la clave privada se cree dentro del TPM en un estado del que no se puede sacar. También existe TPM Base Services (TBS), de nivel más bajo, pero el propio Microsoft recomienda usar la API de almacenamiento de claves, de nivel más alto, para guardar, firmar y cifrar. En la implementación, tenga en cuenta que el TPM es lento, que borrar el TPM elimina las claves, y cómo diseñar el respaldo en entornos sin TPM.

Perfil del autor

Página de presentación del autor del artículo.

Go Komura

Representante de KomuraSoft LLC

Especializado en desarrollo de software para Windows, consultoría técnica e investigación de fallos, sobre todo en proyectos con sistemas existentes y errores difíciles de reproducir.

Volver al blog