Le TPM sous Windows expliqué en images — le « coffre-fort qui ne laisse jamais sortir la clé » et le démarrage mesuré

· · TPM, Windows, BitLocker, Sécurité, Windows 11, Systèmes d'information, C#

« Il y a des PC qu’on ne peut pas passer à Windows 11. On nous dit qu’il n’y a pas de TPM. » — voilà une phrase qui revient immanquablement, depuis quelques années, dans les consultations sur le renouvellement du parc de PC en entreprise. On sait vaguement qu’il s’agit « d’une sorte de puce de sécurité », mais peu de gens savent expliquer ce qu’elle fait réellement, pourquoi elle est devenue obligatoire, et pourquoi une simple mise à jour du BIOS suffit à faire réclamer la clé de récupération BitLocker.

Le TPM n’est ni « une puce qui accélère le chiffrement » ni « une puce qui bloque les virus ». Pour le dire crûment, il ne fait que deux choses :

  1. Il laisse utiliser une clé secrète sans jamais la faire sortir de lui-même
  2. Il enregistre ce qui a été chargé au démarrage, et ne libère la clé que si cet enregistrement correspond à ce qui était attendu

Une fois ces deux points compris, on voit clairement que des fonctions de sécurité Windows comme BitLocker, Windows Hello, Credential Guard ou l’attestation de l’état de santé de l’appareil reposent sur le même socle, et les problèmes rencontrés en pratique s’expliquent tout aussi clairement.

Cet article commence par fixer le fonctionnement du TPM à l’aide de schémas, puis passe en revue, avec l’appui de la documentation officielle, où il est utilisé dans Windows, comment vérifier l’état de son propre PC, comment traiter sur le terrain des incidents comme l’écran de clé de récupération ou l’effacement du TPM, et enfin comment un développeur peut utiliser le TPM depuis sa propre application.

Le sujet étant vaste, voici d’abord un guide de lecture. Il n’est pas nécessaire de lire l’article dans l’ordre du début à la fin.

Profil / objectif Chapitres à lire
Informatique / gestion de parc (migration Windows 11, exploitation de BitLocker) Chapitre 1 → 6 → 8 → 9 → 11
L’écran de clé de récupération est actuellement affiché et pose problème Section 9.1 → chapitre 11 (le tableau des causes est en tête du chapitre 9)
Responsable de PC industriels / systèmes embarqués Section 6.1 → chapitre 11
Développeur (veut utiliser le TPM depuis sa propre application) Chapitre 2 → 10 → 11
Comprendre le mécanisme pour pouvoir l’expliquer à d’autres Chapitre 2 → 3 → 4 (les schémas sont concentrés ici)
Ne veut connaître que la conclusion et les bonnes pratiques Chapitre 1 → 11

1. La conclusion, d’abord

Le TPM (Trusted Platform Module) est un processeur dédié à la sécurité, chargé de la génération, du stockage et de l’utilisation des clés cryptographiques.1 Ce qu’il fait se résume aux deux points cités en introduction.

  • Il laisse utiliser une clé secrète sans qu’elle sorte jamais de la puce (le coffre-fort). La partie secrète d’une clé désignée comme non exportable n’est jamais révélée à un autre logiciel, processus ou utilisateur.2
  • Il enregistre ce qui a été chargé au démarrage (le registre). Le firmware et le chargeur de démarrage enregistrent le hachage du code suivant à exécuter dans une zone appelée PCR avant de lui passer la main. Cela permet un « scellement » : la clé ne peut être extraite que si cet enregistrement correspond à ce qui était attendu, et BitLocker en est l’exemple type.32

Ces deux points permettent d’en tirer des conclusions utiles en pratique ; le détail est donné dans chaque chapitre.

  • Le fait qu’un code PIN Windows Hello à 4 chiffres reste sûr tient à ce que la contre-mesure aux attaques par dictionnaire (verrouillage après 32 échecs d’authentification) réside côté matériel (chapitre 2).2
  • Les exigences minimales de Windows 11 sont un firmware « UEFI, compatible démarrage sécurisé » et le TPM 2.0. Windows 11 IoT Enterprise dispose toutefois d’exigences assouplies pour les appareils dédiés, avec des configurations où le TPM devient facultatif (chapitre 6).45
  • Il existe trois formes d’implémentation du TPM (puce dédiée / intégrée / firmware), mais Windows les utilise toutes de la même manière (chapitre 5).6
  • Windows 10/11 initialise automatiquement le TPM et en prend possession, si bien qu’il n’est normalement pas nécessaire d’aller modifier les réglages via tpm.msc (chapitre 8).1
  • L’effacement du TPM entraîne une perte de données. Une sauvegarde et la vérification des moyens de récupération sont indispensables avant de le faire (chapitre 9).7
  • Les développeurs doivent utiliser le « Microsoft Platform Crypto Provider » de CNG plutôt que d’appeler directement le TPM (chapitre 10).8

2. Qu’est-ce que le TPM — « le coffre-fort qui ne laisse jamais sortir la clé »

Imaginons d’abord un monde sans TPM. Si l’on essaie de protéger une clé secrète uniquement par logiciel, cette clé finit tôt ou tard par exister en clair en mémoire, à un moment donné. Car pour calculer une signature ou un déchiffrement, le CPU doit lire la valeur de la clé. Autrement dit, on ne peut par principe pas la dissimuler complètement à un logiciel malveillant qui a atteint le noyau, ni à un attaquant capable de lire physiquement la mémoire. La documentation officielle est explicite : la protection logicielle des clés « est exposée à des attaques d’ingénierie inverse qui analysent comment la clé est stockée en mémoire pendant son utilisation et comment des copies en sont faites ».3

Le TPM renverse ce postulat. La clé est générée dans le TPM et y reste. L’application ou l’OS ne reçoit pas la clé : elle confie le travail au TPM et n’en reçoit que le résultat.

B. Confier la clé au TPMEnvoie seulement une demandesigne / déchiffreNe renvoie que le résultatNe peut pas extraire la clé elle-mêmeTPMApplication / OSCalcule avec la clé secrète interne au TPMla clé ne sort jamais de la puceL'application / l'OS ne reçoitque le résultat de la signature ou du déchiffrementLogiciel malveillant ayant atteint le noyauanalyse mémoire, attaque physiqueA. Protéger la clé uniquement par logicielCharge la clé et calculePeut être lueClé secrète en mémoirepasse par un instant en clairApplication / OSLogiciel malveillant ayant atteint le noyauanalyse mémoire, attaque physique

Figure 1 : différence entre protéger la clé uniquement par logiciel et la confier au TPM

Ce qui compte ici, c’est que le TPM est passif. Il ne surveille rien de sa propre initiative et n’arrête aucun virus : c’est un composant qui se contente de recevoir des commandes et de renvoyer des réponses.6 C’est précisément pour cela que tirer parti du TPM exige que l’OEM (le fabricant de PC) intègre soigneusement le matériel et le firmware, Windows construisant ensuite ses fonctions sur cette base.

L’autre pilier est la contre-mesure aux attaques par dictionnaire. Une clé protégée par le TPM peut se voir attribuer une valeur d’authentification comme un PIN. Après un certain nombre d’échecs de deviner cette valeur, le TPM refuse toute nouvelle tentative et se verrouille. Sur TPM 2.0, ce comportement est configuré par Windows : concrètement, verrouillage après 32 échecs d’authentification, et oubli d’un échec toutes les 10 minutes écoulées. Si aucun échec ne survient pendant 320 minutes, le compteur d’échecs mémorisé revient à zéro.2

Ce fait — que la limitation du nombre d’essais réside côté matériel — est déterminant. Si le comptage des échecs se faisait en logiciel, il suffirait de redémarrer, de reculer l’horloge système, ou de restaurer un fichier de comptage antérieur pour le neutraliser. Avec le TPM, cela n’est pas possible.3 C’est précisément là que réside la raison pour laquelle un PIN Windows Hello à 4 chiffres peut être considéré comme plus sûr qu’un mot de passe.

3. À l’intérieur du TPM — EK, SRK, PCR, NVRAM

Le TPM contient en son sein plusieurs éléments aux rôles différents. Leurs noms se ressemblent et prêtent facilement à confusion ; fixons donc leurs relations à l’aide d’un schéma.

N'autorise l'extractionque pour cette valeur préciseTPM 2.0EK / Clé d'approbationdérivée d'une graine créée à la fabricationaccompagnée d'un certificat du fabricantSRK / Clé racine de stockageclé parente qui enveloppe les autres clésPCR 0 à 23empilent les valeurs mesurées au démarrageNVRAMpetite zone qui survit à la coupure d'alimentationAIK / Clé d'identité d'attestationpièce d'identité exposée à la place de l'EKClé de BitLockerClé de Windows HelloClé privée d'un certificat

Figure 2 : les principaux composants du TPM et la hiérarchie parent-enfant des clés

L’EK (Endorsement Key / clé d’approbation) est une paire de clés asymétriques propre à ce TPM. La partie privée est conservée dans le TPM et n’est jamais ni révélée à l’extérieur ni accessible depuis l’extérieur.2 Elle est accompagnée d’un certificat EK signé par le fabricant, qui atteste que « cette clé se trouve bel et bien dans un TPM que nous avons fabriqué ». Cela permet de distinguer un vrai TPM d’un logiciel malveillant qui se ferait passer pour un TPM.3

Complément : sur le TPM 2.0, l’EK n’est pas une « clé gravée » mais une « clé dérivée d’une graine »

La documentation de Microsoft décrit l’EK comme une paire de clés RSA2, mais cette description remonte à l’époque du TPM 1.2. Sur TPM 2.0, le secret immuable inscrit dans la puce à la fabrication est, plus précisément, une graine appelée « Endorsement Primary Seed » ; l’EK en est dérivée selon une procédure fixe (un modèle). Dériver à partir de la même graine donne toujours la même clé, si bien que l’EK, même reconstruite, reste en pratique propre à ce TPM. On peut dériver aussi bien une EK RSA qu’une EK ECC, et il n’est pas rare qu’un appareil réel dispose des deux. Ce point n’est pas nécessaire à la compréhension du sujet principal ; vous pouvez le passer.

Cependant, montrer l’EK telle quelle à l’extérieur permettrait d’identifier le PC de façon unique, ce qui pose un problème de confidentialité. Dans les scénarios réels, on utilise donc l’AIK (Attestation Identity Key / clé d’identité d’attestation). Une autorité de certification utilise l’EK et son certificat pour attester que « cette AIK existe bien dans un vrai TPM » et émet un certificat AIK. Comme on peut utiliser une AIK différente pour chaque interlocuteur, cela empêche plusieurs vérificateurs de se coordonner pour pister le même appareil.3

Le SRK (Storage Root Key / clé racine de stockage) est la clé parente qui sert à envelopper (« wrap ») les autres clés. Le TPM peut chiffrer une clé qu’il a créée et la faire sortir ; cette clé ne peut alors être déchiffrée que par ce même TPM. On appelle cette opération « wrap » ou « bind ».2 Autrement dit, même si l’espace de stockage interne du TPM est réduit, on peut en pratique conserver un nombre illimité de clés en les plaçant, chiffrées, dans un stockage externe.

Le PCR (Platform Configuration Register) est un registre spécial qui empile les valeurs mesurées au démarrage. Il en existe de 0 à 23, chacun ayant un objet de mesure défini.9 Une propriété essentielle : on ne peut pas y écrire directement une valeur arbitraire, seule l’opération Extend permet de le faire avancer. Extend est une opération à sens unique qui « concatène la valeur actuelle et la nouvelle valeur mesurée, puis en prend le hachage pour en faire la nouvelle valeur » ; il est donc par principe impossible d’« effacer seulement un enregistrement gênant en cours de route ». La valeur est réinitialisée au redémarrage.3

Notez que le TPM 2.0 possède aussi des PCR dotés d’un attribut réinitialisable (pour le DRTM ou des usages applicatifs). Mais les PCR que BitLocker utilise pour le scellement (0, 2, 4, 7, 11) sont des PCR de démarrage mesuré statique, qui ne peuvent être réinitialisés qu’au redémarrage. C’est sur ceux-là que se base la suite de cet article.

Le NVRAM est une petite zone non volatile, utilisée notamment pour conserver des certificats. Le TPM 2.0 apporte, par rapport au TPM 1.2, des améliorations sur les plans des algorithmes, de la cryptographie, de la hiérarchie, des clés racines, de l’autorisation et du NVRAM.6

4. Le démarrage mesuré et les PCR — pourquoi « un démarrage différent empêche le déverrouillage »

L’autre pilier du TPM est le démarrage mesuré (Measured Boot). C’est la clé pour comprendre le fonctionnement de BitLocker.

4.1. Ce que signifie concrètement « mesurer »

Avant d’aller plus loin, précisons ce que veut dire « mesurer » ici. Il ne s’agit pas de mesurer une grandeur physique comme un poids ou une température : c’est calculer une valeur de hachage à partir de l’intégralité de la séquence d’octets du programme ou des données de configuration qui vont être exécutés ensuite. Une valeur de hachage est une valeur de longueur fixe qui fait office « d’empreinte du contenu », et possède les propriétés suivantes.

  • À partir d’un même contenu, quiconque le calcule, à n’importe quel moment, obtient toujours la même valeur
  • Si le contenu diffère ne serait-ce que d’un octet, la valeur devient totalement différente
  • Il est en pratique impossible de reconstituer le contenu d’origine à partir de la valeur

Par exemple, avec le hachage SHA-256, abc donne

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

et abd, qui ne diffère que par le dernier caractère, donne

a52d159f262b2c6ddb724a61840befc36eb30c88877a4030b65cbe86298449c9

Une différence d’un seul caractère change entièrement la valeur, et comparer les deux valeurs ne laisse même aucun indice permettant de deviner que « le contenu était semblable ». Get-FileHash en PowerShell permet de calculer le SHA-256 de n’importe quel fichier ; vous pouvez donc tester vous-même cette sensation « d’empreinte ».

Autrement dit, la « valeur mesurée au démarrage » désigne les valeurs de hachage du firmware, du chargeur de démarrage et de la configuration exécutés au cours du démarrage. Si toutes les valeurs mesurées sont identiques à la fois précédente, on peut affirmer que « le logiciel et la configuration impliqués dans le démarrage étaient rigoureusement les mêmes que la dernière fois ». Inversement, si le chargeur de démarrage a été altéré ou si le démarrage s’est fait depuis un autre OS, la valeur mesurée correspondante change forcément. C’est le fondement du démarrage mesuré.

4.2. La chaîne de mesure — mesurer avant d’exécuter ce qui est chargé

Le mécanisme est simple. Le firmware système contient un point de départ inconditionnellement approuvé appelé CRTM (Core Root of Trust for Measurement). Le CRTM hache inconditionnellement le composant logiciel suivant à exécuter et enregistre cette valeur mesurée dans le TPM. Les composants suivants répètent la même opération — on mesure ce qui va être chargé avant de l’exécuter. Comme la valeur mesurée est envoyée avant l’exécution, aucun composant ne peut effacer sa propre valeur mesurée du TPM.3

TPMNoyau WindowsGestionnaire de démarrage WindowsFirmware UEFI CRTMTPMNoyau WindowsGestionnaire de démarrage WindowsFirmware UEFI CRTMPCR 0 / 2 / 4 / 7 mis à jourMesure avant exécution, puis transfert du contrôlealt[Les PCR ont la même valeur qu'au moment du scellement][Les PCR ont une valeur différente]Extend du hachage du code à exécuter ensuite1Transfert du contrôle2Demande de déverrouillage de la clé BitLocker scellée3Renvoie la clé4Déchiffre le volume OS5Extend pour le noyau, ELAM, les pilotes de démarrage6Transfert du contrôle et démarrage de Windows7Ne renvoie pas la clé8Bascule vers l'écran de saisie de la clé de récupération9

Figure 3 : le déroulement du démarrage mesuré et de la libération de la clé BitLocker

Si le schéma montre l’ordre « mesurer le noyau après le déchiffrement », c’est parce que, conformément au principe du démarrage mesuré, on mesure ce qui va être chargé avant de l’exécuter. Le chargeur de démarrage Windows vérifie la signature numérique du noyau avant de le charger, puis le noyau vérifie à son tour les pilotes de démarrage, les fichiers de démarrage et l’ELAM, formant une chaîne.10 Si le noyau se mesurait lui-même après avoir démarré, la mesure pourrait être contournée et perdrait tout son sens.

BitLocker crée dans le TPM une clé utilisable uniquement lorsque cette valeur mesurée correspond à la valeur attendue. La valeur attendue est calculée au moment où le gestionnaire de démarrage Windows s’exécute depuis le volume OS du disque système. Si le démarrage se fait depuis un autre OS ou si la configuration a été modifiée, la valeur mesurée dans le TPM change, le TPM refuse d’autoriser l’utilisation de la clé, et le volume OS chiffré ne peut pas être déchiffré.3

Alors, quels PCR sont réellement examinés ? Voici le profil de validation de plateforme par défaut pour une configuration UEFI native.9

PCR Objet mesuré
PCR 0 Code exécutable du firmware système central
PCR 1 Données du firmware système central
PCR 2 Code exécutable d’extension / amovible
PCR 3 Données de firmware d’extension / amovible
PCR 4 Gestionnaire de démarrage
PCR 5 GPT / table de partitions
PCR 6 Événements de sortie de veille S4/S5
PCR 7 État du démarrage sécurisé
PCR 11 Contrôle d’accès BitLocker
PCR 12 à 14 Événements de données, détails des modules de démarrage, autorité de démarrage

Par défaut, PCR 0, 2, 4 et 11 sont l’objet du scellement. Mais lorsque l’état du démarrage sécurisé (PCR 7) est pris en charge, le scellement se fait sur PCR 7 et PCR 11.9 C’est une différence importante. PCR 0/2/4 correspondent au hachage même de l’image du firmware ou du gestionnaire de démarrage : leur valeur change à chaque mise à jour du firmware, ce qui fait basculer en mode de récupération. PCR 7, en revanche, mesure « si le démarrage sécurisé est actif et quelles clés sont approuvées » : tant que le signataire reste le même, la valeur ne change pas même si l’image est mise à jour. Microsoft explique lui-même que le rattachement à PCR 7 réduit le risque de basculer en mode de récupération lors d’une mise à jour de firmware ou d’image.9

L’usage de PCR 11 est un peu particulier et constitue une astuce intéressante. Le scénario envisagé est celui d’un attaquant qui laisse l’appareil de la victime intact (matériel et firmware conservés) et remplace uniquement le disque OS par le sien. Comme la clé est scellée dans le TPM d’origine, changer d’appareil entier n’aurait aucun sens : le point clé est de continuer à utiliser le TPM de la victime. L’attaquant extrait le blob de clé BitLocker scellé depuis les métadonnées de la partition OS de la victime, démarre un OS sous son contrôle, puis appelle l’API du TPM pour tenter de déverrouiller (« unseal ») ce blob de clé.

Cela ne fonctionne pas parce que Windows scelle la clé en fixant la valeur de PCR 11 à 0, et que le gestionnaire de démarrage change systématiquement PCR 11 à 1 au moment où il passe le contrôle au chargeur de démarrage suivant (qu’il soit légitime ou non). Au moment où l’OS de l’attaquant tourne, le gestionnaire de démarrage a déjà abandonné le contrôle, et PCR 11 n’est certainement plus à 0. Ainsi, même sur le même appareil et le même TPM, il est impossible de réclamer la clé depuis une étape postérieure au gestionnaire de démarrage.11

Notez que le démarrage sécurisé lui-même fait aussi partie de la protection de BitLocker. Par défaut, BitLocker exploite, via la mesure de PCR 7, la protection d’intégrité du démarrage sécurisé, empêchant un firmware EFI, une application de démarrage EFI ou un chargeur de démarrage non autorisés de démarrer et d’obtenir la clé BitLocker.11

5. dTPM, fTPM, Pluton — les différentes formes d’implémentation

L’expression « puce TPM » s’étant répandue, on croit souvent à tort que le TPM est toujours un composant indépendant, mais il existe trois formes d’implémentation.6

Bus LPC / SPICPUPuce TPM dédiée= discret, dTPMBoîtier CPU /chipsetMatériel dédié dans le même boîtierséparé logiquement= intégré, integratedCPU généralisteImplémentation en firmwaretournant sur un environnement d'exécution de confiance (TEE)= firmware, fTPMSoCProcesseur de sécuritéconçu par Microsoft= Pluton

Figure 4 : les trois formes d’implémentation du TPM, et Pluton qui les prolonge

  • Le TPM discret (dTPM) est une puce dédiée en boîtier semi-conducteur indépendant. Implanté sur la carte mère, il présente l’avantage de pouvoir être évalué et certifié par l’OEM séparément du système lui-même.6
  • Le TPM intégré est implémenté comme du matériel dédié, logiquement séparé, tout en étant logé dans le même boîtier que d’autres composants.6
  • Le TPM en firmware (fTPM) fait tourner le TPM sous forme de firmware dans l’environnement d’exécution de confiance (TEE) d’une unité de calcul généraliste.6 Il convient aux appareils compacts et basse consommation où une puce dédiée n’est pas réaliste.

Windows utilise de la même manière n’importe quel TPM compatible. Microsoft ne prend pas parti sur la méthode d’implémentation à privilégier, considérant qu’un écosystème large répond à tous les besoins.6 Autrement dit, il n’y a pas de « TPM de seconde zone » du simple fait qu’il s’agit d’un fTPM.

Ceci posé, Microsoft Pluton pousse encore plus loin la forme intégrée. C’est un processeur cryptographique sécurisé, conçu par Microsoft et fabriqué par des partenaires silicium, intégré au CPU, conçu pour fournir les fonctions du TPM tout en offrant des fonctions de sécurité qui dépassent le périmètre de la spécification TPM 2.0.12 En 2026, Pluton est disponible sur les appareils équipés des chipsets suivants et exécutant Windows 11.12

  • AMD : séries Ryzen 6000 / 7000 / 8000 / 9000, série Ryzen AI
  • Intel : série Core Ultra 200V, processeurs Core Ultra Series 3 et Series 3
  • Qualcomm : Snapdragon 8cx Gen 3, série Snapdragon X

Sur le plan opérationnel, la caractéristique de Pluton est de disposer de deux voies de mise à jour du firmware. On peut toujours mettre à jour le firmware sur la flash SPI de la carte mère par une mise à jour de capsule UEFI classique, mais on peut aussi charger dynamiquement un nouveau firmware Pluton via une mise à jour de l’OS. Le déroulement est le suivant : au démarrage du système, l’initialisation se fait avec le firmware présent sur la flash SPI, puis, pendant le démarrage de Windows, la dernière version obtenue (le cas échéant) via Windows Update est chargée.12 C’est une propriété appréciable en pratique : si une vulnérabilité du firmware du TPM est découverte, un correctif peut être distribué sans attendre la publication d’une mise à jour du BIOS par le fabricant du PC.

6. Les différences entre TPM 1.2 et 2.0, et les exigences de Windows 11

En manipulant de vieux PC, on rencontre encore parfois du TPM 1.2. La différence entre les deux versions va bien au-delà d’un simple « numéro de version supérieur ».6

Aspect TPM 1.2 TPM 2.0
Algorithmes cryptographiques RSA et SHA-1 uniquement Prise en charge de plusieurs algorithmes (agilité cryptographique)
Politique de verrouillage Dépendante de l’implémentation, variable selon le fabricant Configurée par Windows, garantissant une contre-mesure cohérente aux attaques par dictionnaire
Forme d’implémentation Essentiellement une puce discrète Discrète / intégrée / firmware
Normalisation Normalisée à l’international sous ISO/IEC 11889:2015
Exigence de firmware BIOS accepté UEFI natif obligatoire (CSM désactivé)

SHA-1 est particulièrement pénalisant. Dès 2014, le NIST demandait à de nombreuses agences fédérales de migrer vers SHA-256, et Microsoft comme Google ont abandonné en 2017 la prise en charge des signatures et certificats basés sur SHA-1. La spécification du TPM 1.2 ne pouvant utiliser que SHA-1, elle ne peut pas suivre ce mouvement.6

Vient ensuite Windows 11. Les exigences minimales sont : un CPU 64 bits figurant sur la liste de compatibilité, 4 Go de mémoire, 64 Go de stockage, une carte graphique compatible DirectX 12 ou supérieur avec un pilote WDDM 2.0, un écran d’au moins 720p, de plus de 9 pouces et à 8 bits par canal, un firmware système « UEFI, compatible démarrage sécurisé (Secure Boot capable) », et le TPM 2.0.4

Lisez ce point avec précision : ce que l’exigence minimale demande, c’est d’être compatible avec le démarrage sécurisé, pas de l’avoir activé.4 On peut donc satisfaire l’exigence même en le laissant désactivé, et il n’est pas nécessaire de toucher aux paramètres UEFI seulement pour passer à Windows 11. Cela dit, si l’on active le démarrage sécurisé et que la plateforme satisfait les exigences de rattachement à PCR 7, BitLocker se rattache à PCR 7 et bascule moins souvent en mode de récupération (chapitre 4). L’activation seule ne suffit pas automatiquement à produire ce résultat : vérifiez donc réellement à quels PCR le scellement est rattaché via le profil de vérification PCR de manage-bde -protectors -get C:. La bonne façon de voir les choses est d’activer le démarrage sécurisé pour ce bénéfice concret, et non simplement parce que c’est une exigence.

Autre point souvent négligé : le TPM 2.0 n’est pas pris en charge en mode BIOS hérité ni en mode CSM (Compatibility Support Module). Un appareil équipé de TPM 2.0 doit configurer son mode BIOS en « UEFI natif uniquement », et l’option héritée/CSM doit être désactivée.6

Cela crée une situation délicate en pratique : un OS installé en mode hérité ne démarre plus si l’on bascule le mode BIOS vers UEFI. Il faut donc utiliser l’outil MBR2GPT avant de changer le mode BIOS, pour mettre l’OS et le disque dans un état compatible UEFI.6 Un appareil qui « possède bien un TPM mais ne peut pas passer à Windows 11 » se trouve fréquemment dans cet état. La vue d’ensemble des décisions de migration depuis Windows 10 est présentée dans « La solution réaliste après la fin du support de Windows 10 — tableau de décision ESU, LTSC, remplacement ».

Notez que, pour l’attestation de l’état de santé de l’appareil (Device Health Attestation) également, Windows ne prend en charge que le TPM 2.0, et qu’un appareil doté d’un TPM 2.0 mais en BIOS hérité ne fonctionnera pas comme attendu.1

6.1. L’exception — le TPM est facultatif sous Windows 11 IoT Enterprise

Le principe « TPM 2.0 obligatoire pour Windows 11 » énoncé jusqu’ici concerne les éditions destinées au grand public. Windows 11 IoT Enterprise définit à part des exigences minimales assouplies pour les appareils dédiés : pour IoT Enterprise LTSC (et pour les versions non LTSC à partir de 24H2), le TPM comme le démarrage sécurisé sont facultatifs (Optional).5 Sur le terrain des PC industriels et des systèmes embarqués, savoir cela peut renverser la conclusion « cette carte ne peut pas passer à Windows 11 ».

Le tableau officiel des exigences comporte deux colonnes : PREFERRED (recommandé) et OPTIONAL (minimum pour appareil dédié).5

Élément Windows 11 grand public Windows 11 IoT Enterprise LTSC
PREFERRED
Windows 11 IoT Enterprise LTSC
OPTIONAL
TPM TPM 2.0 obligatoire TPM 2.0 Facultatif (Optional)
Démarrage sécurisé Compatibilité obligatoire Activé Facultatif (Optional)
Firmware système UEFI UEFI BIOS accepté
Mémoire 4 Go 4 Go 2 Go
Stockage 64 Go 64 Go 16 Go

Trois précautions s’imposent.

  • Ce n’est pas « LTSC = pas besoin de TPM ». Les exigences assouplies sont définies pour IoT Enterprise ; Windows 11 Enterprise LTSC (sans IoT) est traité comme une édition grand public. Les noms se ressemblent et prêtent à confusion, mais la conclusion dépend entièrement de la licence effectivement achetée.
  • Les versions non LTSC de IoT Enterprise diffèrent selon la version. Dans les exigences OPTIONAL de 21H2 à 23H2, le TPM 2.0 reste obligatoire (seul le démarrage sécurisé est facultatif) ; le TPM ne devient facultatif qu’à partir de 24H2.5
  • Les exigences processeur sont définies séparément. Même si le TPM et le démarrage sécurisé sont facultatifs, la liste des processeurs pris en charge est définie à part : vérifiez-la impérativement.5

Et Microsoft lui-même met en garde sur la portée du choix des exigences assouplies : sur un appareil où l’utilisateur final peut ajouter du logiciel par la suite, abaisser les exigences doit être examiné avec prudence, car ne pas embarquer de TPM peut affecter les logiciels dont cet utilisateur final a besoin.5 Sans TPM, BitLocker ne peut pas sceller sa clé sur l’état du démarrage, et la clé de Windows Hello retombe elle aussi sur une protection logicielle. Passez d’une logique « on l’embarque pour satisfaire l’exigence » à une logique « on l’embarque pour obtenir la protection dont cet appareil a besoin ».

La vue d’ensemble du choix entre IoT Enterprise et LTSC, ainsi que de l’acquisition des licences, est présentée dans « Quel Windows installer sur un PC industriel — guide pratique Windows IoT Enterprise / LTSC ».

7. Où le TPM est-il utilisé dans Windows

Se faire dire « le TPM est obligatoire » est difficile à accepter tant qu’on ne voit pas à quelle fonction du quotidien cela sert réellement. Traçons donc une carte.

TPM 2.0BitLocker / Chiffrement d'appareilscelle la clé sur l'état de démarrageWindows Helloprotège les clés liées au PIN ou à la biométriesûr même avec un PIN court grâce à la contre-mesure anti-dictionnaireCredential Guardprotège la clé de l'environnement isolé par les valeurs mesuréesDémarrage mesuré / attestation à distanceémet un quote signé sur l'état de démarrageAttestation de l'état de santé de l'appareilcritère de décision pour l'accès conditionnel du MDMPlatform Crypto Providerrend la clé privée d'un certificat impossible à extraire

Figure 5 : les principales fonctions de sécurité Windows qui reposent sur le TPM

BitLocker / chiffrement d’appareil. C’est ce que nous avons vu au chapitre 4. Il existe quatre méthodes de déverrouillage : TPM seul, TPM+PIN, TPM+clé de démarrage, TPM+PIN+clé de démarrage ; TPM seul offre la plus grande commodité, mais est classé comme moins sûr que les méthodes exigeant un facteur d’authentification supplémentaire.11

Notez que les conditions préalables du chiffrement d’appareil (le mécanisme qui active automatiquement BitLocker) ont changé ces dernières années. Il fallait auparavant satisfaire les exigences Modern Standby ou HSTI et ne pas posséder de port externe accessible en DMA ; depuis Windows 11 version 24H2, ces conditions ont été supprimées, et davantage d’appareils sont désormais concernés.13 L’affirmation, présente dans d’anciens articles, qu’« il faut un appareil compatible Modern Standby pour l’utiliser » ne s’applique plus à partir de 24H2. Pour savoir si votre appareil est concerné, consultez « Prise en charge du chiffrement de l’appareil » dans msinfo32.exe (Informations système).13

Windows Hello / Windows Hello for Business. L’authentification combine une clé provisionnée pour chaque appareil avec un PIN ou une donnée biométrique. Si un TPM est présent, la clé est protégée par le TPM ; sinon, elle l’est par logiciel. La donnée biométrique n’est utilisée sur cet appareil que pour accéder à la clé déjà provisionnée, et n’est jamais partagée entre appareils.3 Sur un appareil doté d’un TPM, la clé ne peut être copiée ailleurs, ce qui procure la propriété suivante : même si les identifiants fuient, ils restent inutilisables sur un autre appareil.

Credential Guard. C’est une fonction qui effectue le traitement du hachage des identifiants dans une zone mémoire isolée, inaccessible depuis le noyau. Cette zone isolée est initialisée et protégée pendant le processus de démarrage, et Credential Guard utilise le TPM pour protéger sa clé au moyen des valeurs mesurées. La clé n’est accessible que « pendant l’étape du processus de démarrage où la zone isolée est initialisée » et ne peut pas être utilisée depuis le noyau normal.3

Démarrage mesuré et attestation à distance. À l’aide de l’AIK, le TPM peut générer une déclaration signée cryptographiquement (un « quote ») sur l’état actuel des valeurs mesurées. En l’envoyant à distance, on peut prouver « avec quel logiciel et quelle configuration l’appareil a démarré et initialisé l’OS ».3 La mesure s’arrête à l’état initial de Windows, elle ne contient donc pas d’informations privées comme les applications utilisées.3

Attestation de l’état de santé de l’appareil. Le service d’attestation de santé de Microsoft émet des certificats AIK pour les TPM de plusieurs fabricants et analyse les informations du démarrage mesuré pour les convertir en déclarations simples : « BitLocker est-il activé ? », « le démarrage sécurisé est-il activé ? », « le DEP est-il actif ? ». Un MDM (Intune, par exemple) peut, sans analyser lui-même un quote complexe, utiliser ces déclarations pour mettre un appareil en quarantaine ou lui couper l’accès aux services cloud.13

Platform Crypto Provider. Il protège la clé privée d’un certificat avec le TPM. Un modèle de certificat peut spécifier « utiliser le Platform Crypto Provider du TPM » ; la clé privée d’un certificat configuré comme non exportable ne peut alors pas être extraite du TPM. Pour un certificat exigeant un PIN, la contre-mesure anti-dictionnaire du TPM s’applique automatiquement.3 C’est la porte d’entrée du point de vue développeur traité au chapitre 10.

Carte à puce virtuelle. Cette fonction fait se comporter le TPM comme « une carte à puce en permanence insérée », supprimant le coût d’achat et de distribution des cartes physiques et des lecteurs.3 Microsoft recommande toutefois aujourd’hui aux utilisateurs de la carte à puce virtuelle de migrer vers Windows Hello for Business ou vers des clés de sécurité FIDO2.2 Elle subsiste comme actif existant, mais ce n’est plus un choix à privilégier pour une nouvelle conception.

8. Vérifier le TPM de son propre PC

À partir d’ici, place à la pratique. Le point à retenir d’abord est que Windows 10/11 initialise automatiquement le TPM et en prend possession. Il n’est donc normalement pas nécessaire de modifier des réglages via la console de gestion du TPM (tpm.msc), et Microsoft lui-même indique que « dans la plupart des cas, il est recommandé d’éviter toute configuration via tpm.msc ». Les exceptions se limitent essentiellement aux scénarios de réinitialisation ou d’installation propre du PC.1 Notez au passage que la console de gestion du TPM n’est plus activement développée depuis Windows Server 2019 / Windows 10 version 1809.1

8.1. Consulter via l’interface graphique

  • Win + Rtpm.msc ouvre la console de gestion du TPM. Elle indique la présence du TPM, son état, la version de spécification et le fabricant. L’écran se divise entre la zone « État » (utilisable ou non) et la zone « Informations sur le fabricant du TPM » (nom du fabricant, version du fabricant, version de spécification) ; savoir si la version de spécification est bien 2.0 est le critère pour juger de la conformité aux exigences TPM de Windows 11. Sur un appareil sans TPM ou avec un TPM désactivé, l’écran indique qu’aucun TPM compatible n’a été trouvé (voir la section 8.4 pour l’ordre de vérification dans ce cas).
  • Les mêmes informations sont visibles dans Sécurité Windows, sous Sécurité de l’appareilDétails du processeur de sécurité. Cet écran mène également à Dépannage du processeur de sécuritéEffacer le TPM (traité au chapitre 9, mais à ne pas cliquer à la légère).7

8.2. Consulter via PowerShell

Pour examiner plusieurs machines, PowerShell est la méthode la plus fiable. Le module TrustedPlatformModule fournit un ensemble complet de cmdlets.14

# Vérifier globalement l'état du TPM (à exécuter avec des privilèges administrateur)
Get-Tpm

La sortie a la forme suivante.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

Voici les points de lecture essentiels.15

  • TpmPresent : le TPM est-il présent ? Si False, c’est un problème matériel ou de configuration UEFI.
  • TpmReady : Windows peut-il l’utiliser ? Si TpmPresent est True mais TpmReady est False, il y a un blocage au niveau de l’initialisation ou de la prise de possession.
  • LockedOut / LockoutCount / LockoutMax / LockoutHealTime : l’état de la contre-mesure anti-dictionnaire. Si LockedOut vaut True, l’accès est temporairement bloqué, par exemple à cause d’un PIN saisi à tort.
  • OwnerClearDisabled : si True, une réinitialisation (effacement) via l’authentification propriétaire depuis l’OS est impossible.
  • AutoProvisioning : indique si le provisionnement automatique par Windows est activé ou non.

Pour déterminer mécaniquement si la version de spécification est bien 2.0, consulter WMI est pratique.

# Récupérer la version de spécification, le fabricant et l'état d'activation
Get-CimInstance -Namespace 'root/CIMv2/Security/MicrosoftTpm' -ClassName Win32_Tpm |
    Select-Object SpecVersion, ManufacturerId, ManufacturerVersion,
                  IsEnabled_InitialValue, IsActivated_InitialValue, IsOwned_InitialValue

Attention ici à ManufacturerId. La propriété ManufacturerIdTxt renvoyée par Get-Tpm (une chaîne comme INTC) n’existe que côté Get-Tpm et n’existe pas dans la classe Win32_Tpm.16 Écrire par mégarde Select-Object ManufacturerIdTxt renverra silencieusement une colonne vide.

Win32_Tpm expose un ManufacturerId de type uint32 ; en interprétant chaque octet comme un caractère ASCII, on obtient une chaîne (exemple : 14145487360x54 0x50 0x4D 0x00TPM).16 Si vous voulez une chaîne, décodez-la vous-même comme ci-dessous, ou utilisez simplement Get-Tpm.

# Convertir ManufacturerId (uint32) en chaîne ASCII pour l'affichage
Get-CimInstance -Namespace 'root/CIMv2/Security/MicrosoftTpm' -ClassName Win32_Tpm |
    Select-Object SpecVersion, ManufacturerVersion,
        @{ Name = 'ManufacturerText'; Expression = {
            $bytes = [System.BitConverter]::GetBytes([uint32]$_.ManufacturerId)
            # Lire l'uint32 depuis l'octet de poids fort (ex. 1229870147 -> 0x49 0x4E 0x54 0x43 -> INTC)
            if ([System.BitConverter]::IsLittleEndian) { [array]::Reverse($bytes) }
            -join ($bytes | Where-Object { $_ -ne 0 } | ForEach-Object { [char]$_ })
        } }

SpecVersion est renvoyé sous la forme 2.0, 0, 1.16, c’est-à-dire « version de spécification, révision, errata ».16 Vérifier que le début vaut 2.0 permet de juger de la conformité aux exigences TPM de Windows 11 (les autres exigences — CPU, mémoire, stockage, etc. — doivent être vérifiées séparément ; voir le chapitre 11). Pour exécuter cela à distance sur plusieurs machines, voir « Introduction à PowerShell Remoting (WinRM) ».

Par ailleurs, Get-TpmEndorsementKeyInfo donne des informations sur l’EK et son certificat, et Get-TpmSupportedFeature indique la prise en charge de fonctions spécifiques. Le déblocage d’un verrouillage se fait avec Unblock-Tpm, et la réinitialisation du TPM avec Clear-Tpm.14

8.3. Consulter via les outils en ligne de commande

tpmtool est l’outil standard pour obtenir des informations sur le TPM et le diagnostiquer.17

:: Afficher les informations de base du TPM
tpmtool getdeviceinformation

:: Collecter les journaux du TPM dans le répertoire courant
tpmtool gatherlogs

Pour croiser avec l’état de BitLocker, utilisez aussi manage-bde -status ou Get-BitLockerVolume. La procédure d’investigation côté journal des événements est détaillée dans « Examiner le journal des événements en pratique avec Get-WinEvent ».

8.4. Ordre de vérification quand « le TPM 2.0 devrait être là mais ne fonctionne pas »

Une simple vérification ne fait pas avancer les choses ; enchaînons donc jusqu’à la prochaine action selon le résultat. Le point de départ du diagnostic est TpmPresent et TpmReady renvoyés par Get-Tpm.

Résultat de Get-Tpm Signification Action suivante
TpmPresent : False Windows ne voit pas de TPM Suspectez d’abord la configuration UEFI (voir ci-dessous). Si le réglage n’y change rien, il se peut qu’il n’y en ait tout simplement pas
TpmPresent : True / TpmReady : False Il existe, mais Windows ne peut pas l’utiliser Blocage au niveau de l’initialisation ou de la prise de possession. Vérifiez l’état affiché dans tpm.msc. La procédure officielle de dépannage couvre les cas où le TPM n’est pas détecté ou n’est pas prêt7
Le début de SpecVersion est 1.2 Le TPM est là mais la version est insuffisante Certains modèles peuvent être mis à jour, mais c’est en principe un problème matériel. Voir la décision du chapitre 6
LockedOut : True Bloqué par la contre-mesure anti-dictionnaire Voir la section 9.3

Voici les points à vérifier côté configuration UEFI. Sur de nombreux modèles, le TPM en firmware est désactivé par défaut, et le simple fait de l’activer résout le problème.

  • Le nom de l’option varie selon le fabricant. Sur les plateformes Intel, on trouve souvent PTT (Platform Trust Technology) ; sur AMD, fTPM (AMD fTPM, AMD CPU fTPM, etc.) ; certains modèles n’affichent même pas le mot « TPM ». Ne concluez pas « pas d’option TPM = pas de TPM ».
  • L’emplacement se trouve généralement sous Security ou Advanced. Il peut aussi être sous des rubriques comme Trusted Computing ou PCH-FW Configuration.
  • Certains modèles offrent un choix entre puce dédiée (dTPM) et TPM en firmware. Dans ce cas, cela correspond à « basculer entre plusieurs TPM fait entrer BitLocker en mode de récupération » traité en section 9.2 : une fois le choix fait, ne le changez pas.7
  • Vérifiez que le mode hérité/CSM n’est pas activé. Le TPM 2.0 ne fonctionne pas en mode CSM. Si c’est la cause, MBR2GPT est nécessaire avant de basculer vers UEFI (chapitre 6).6
  • Si vous activez le TPM côté UEFI, n’oubliez pas de suspendre BitLocker. C’est une opération qui change les valeurs mesurées attendues, à traiter comme le tableau des causes en tête du chapitre 9.

9. Incidents en pratique — écran de clé de récupération, effacement du TPM, verrouillage

Sur le terrain, le TPM devient un sujet de discussion quasiment toujours quand quelque chose ne va pas. Nous traitons ici les trois cas les plus fréquents.

Avant cela, plaçons d’emblée la réponse directe à la question posée en introduction de cet article — « pourquoi une simple mise à jour du BIOS suffit-elle à faire réclamer la clé de récupération BitLocker ? » — sous forme d’un tableau de causalité : quelle opération change quel PCR, et avec quel résultat.9117

Cette opération Ce qui change Bascule-t-elle en mode de récupération ? Résultat et conduite à tenir
Mise à jour du firmware UEFI/BIOS PCR 0 (code exécutable du firmware système central), etc. Oui, si la configuration est scellée sur PCR 0/2/4. Moins probable si scellée sur PCR 7/11 Suspendre BitLocker avant la mise à jour est la bonne pratique. Si le mode de récupération survient malgré tout, le déverrouillage avec la clé de récupération rescelle avec les nouvelles valeurs mesurées
Désactivation du démarrage sécurisé, changement des clés approuvées PCR 7 (état du démarrage sécurisé) Oui Remettre le paramètre à son état d’origine, ou déverrouiller avec la clé de récupération
Activation du mode CSM (hérité) PCR 7. De plus, le TPM 2.0 ne fonctionne pas en mode CSM (chapitre 6) Oui Revenir en arrière. Si l’objectif est de passer en UEFI, exécuter d’abord MBR2GPT (chapitre 6)
Démarrage depuis une clé USB ou un autre OS, changement d’ordre de démarrage Valeur mesurée de la configuration de démarrage, incluant le gestionnaire de démarrage (PCR 4) Oui Rétablir la configuration de démarrage et redémarrer
Un attaquant démarre son propre OS et tente de déverrouiller la clé PCR 11 (passe de 0 à 1 dès que le gestionnaire de démarrage cède le contrôle) Déverrouillage impossible (défense conforme à la conception) Comme vu au chapitre 4, c’est la preuve que la protection fonctionne
Effacement du TPM, remplacement de carte mère, déplacement du seul disque OS vers un autre PC Ce n’est pas un PCR : la clé scellée elle-même n’est plus disponible localement Oui (si BitLocker n’a pas été suspendu au préalable, la clé de récupération est le seul recours) Suspendre BitLocker au préalable permet de démarrer sans clé de récupération et de resceller (section 9.1)

L’essentiel de ce tableau est que les cinq premières lignes et la dernière relèvent de deux phénomènes totalement distincts. Les cinq premières correspondent à un état « la clé existe mais les valeurs mesurées ne correspondent plus », qui se résout en passant par la clé de récupération. La dernière ligne correspond à un état « la clé elle-même n’est plus disponible », qui ne peut se résoudre sans la clé de récupération.

Le déplacement d’un disque OS relève de la dernière ligne parce que la clé scellée se trouve dans le TPM du PC d’origine. Même en insérant le disque dans un autre PC, la clé ne suit pas. Même s’il ne s’agit en apparence que de déplacer un disque, cela équivaut en réalité à un remplacement de carte mère. Si un déplacement est prévu, suspendez BitLocker avant l’opération, ou tenez la clé de récupération à portée de main.

9.1. BitLocker a demandé la clé de récupération

C’est la consultation la plus fréquente. En réalité, le diagnostic est simple.

Mise à jour de l'UEFI/BIOSChangement du paramètre de démarrage sécuriséou activation du CSMEffacement du TPMou remplacement de la carte mèreDémarrage depuis USB avec un autre OSou changement d'ordre de démarrageAucune cause identifiéeL'écran de clé de récupération est apparu au démarrageQu'a-t-on changé juste avant ?La valeur mesurée de PCR 0 ou similaire a changéRescellement automatique la prochaine foisDéverrouiller avec la clé de récupération et continuerLa valeur mesurée de PCR 7 a changéRevenir au réglage précédent ou déverrouiller avec la cléLa clé scellée elle-même a disparuSi BitLocker n'a pas été suspendu au préalable,la clé de récupération est le seul recoursLa valeur mesurée de la configuration de démarrage a changéRevenir en arrière et redémarrerEnvisager aussi une possible attaqueCollecter les journaux puis déverrouiller avec la cléVérifier où est conservée la clé de récupérationAD DS / Entra ID / compte Microsoft

Figure 6 : le diagnostic quand BitLocker demande la clé de récupération

Une mise à jour de firmware est le déclencheur classique du mode de récupération. Microsoft recommande d’ailleurs de suspendre BitLocker avant une mise à jour de firmware lorsqu’un profil incluant PCR 0 est configuré.9 Inversement, un appareil dont le démarrage sécurisé est correctement configuré et rattaché à PCR 7 tombe moins souvent en mode de récupération lors d’une mise à jour de firmware.9 Sur les appareils compatibles Modern Standby, la mesure de PCR 7 est une exigence de certification, si bien qu’un TPM et un démarrage sécurisé correctement configurés se rattachent par défaut à PCR 7 et PCR 11.9

La conclusion opérationnelle est simple : suspendez toujours BitLocker avant une mise à jour UEFI, un changement de paramètres de démarrage sécurisé, un effacement du TPM ou un remplacement de carte mère. Et vérifiez au préalable où est conservée la clé de récupération (Active Directory Domain Services, Microsoft Entra ID, ou un compte Microsoft pour un usage personnel). En entreprise, il est possible de configurer BitLocker pour stocker la clé de récupération dans AD DS.3

Le fait d’avoir suspendu BitLocker au préalable ou non change radicalement la charge de travail qui suit. Suspendre BitLocker laisse un protecteur en texte clair sur le volume, si bien qu’effacer le TPM ou le remplacer par un nouveau permet de redémarrer sans saisir la clé de récupération (en reprenant la protection après le démarrage, elle est rescellée sur le nouveau TPM). Dans la figure 6, « la clé de récupération est le seul recours » désigne le cas où l’on a effacé ou remplacé le TPM sans avoir suspendu BitLocker au préalable. Autrement dit, une seule préparation en amont suffit à éviter cette branche.

9.2. Effacer le TPM / on l’a déjà effacé

L’effacement du TPM entraîne une perte de données. L’avertissement de la documentation officielle est sans ambiguïté : effacer le TPM détruit toutes les clés qui lui sont liées, ainsi que les données protégées par ces clés (carte à puce virtuelle, PIN de connexion, etc.). Prévoyez impérativement une sauvegarde et un moyen de récupération pour toute donnée protégée ou chiffrée via le TPM.7

De plus, trois précautions comptent en pratique.7

  • N’effacez pas le TPM d’un appareil qui ne vous appartient pas (PC d’entreprise ou d’établissement scolaire) sans instruction de l’administrateur.
  • Effectuez toujours l’effacement via une fonction de l’OS (tpm.msc ou Sécurité Windows), jamais directement depuis l’UEFI.
  • Si vous voulez seulement arrêter temporairement le fonctionnement du TPM, utilisez « désactiver le TPM » plutôt que l’effacement.

Après l’effacement, Windows réinitialise et reprend automatiquement possession du TPM.7

Un point à souligner ici : effacer le TPM n’est pas un effacement de données (sanitisation). Ce qui disparaît lors d’un effacement, ce sont les clés à l’intérieur du TPM, pas les données du disque, qui ne perdent pas un seul octet. La clé de récupération BitLocker étant généralement mise en dépôt dans AD DS, Microsoft Entra ID ou un compte Microsoft, quiconque la détient peut déchiffrer le volume même après un effacement du TPM.

Quand un appareil est remis à un tiers, la base du processus réside dans les procédures d’effacement du stockage : « réinitialiser ce PC (en supprimant aussi les données) » de Windows, un outil d’effacement dédié, l’effacement cryptographique, ou la destruction physique. L’effacement du TPM n’en est que la touche finale. La procédure complète de mise au rebut et de cession est présentée dans « Liste de contrôle pour la mise au rebut et la cession d’un PC Windows ».

Un autre piège, moins connu, mérite d’être mentionné. Certains systèmes embarquent plusieurs TPM commutables depuis l’UEFI, mais Windows ne prend pas en charge cette configuration. Basculer de TPM peut empêcher Windows de détecter correctement le nouveau, et BitLocker entre alors en mode de récupération. Si un basculement est nécessaire, il faut basculer, puis effacer, puis réinstaller Windows. Microsoft recommande fortement, sur un système à deux TPM, de choisir l’un des deux une fois pour toutes et de ne plus en changer.7

9.3. Le TPM s’est verrouillé

Des échecs répétés de saisie du PIN font verrouiller le TPM. Dans la configuration par défaut de Windows, le TPM 2.0 se verrouille après 32 échecs d’authentification et oublie un échec toutes les 10 minutes. Même verrouillé, il suffit de laisser l’appareil sous tension pendant l’intervalle de récupération pour en sortir.2 Les 10 minutes ne sont que la valeur par défaut de Windows ; vérifiez l’intervalle réel via LockoutHealTime renvoyé par Get-Tpm sur l’appareil concerné (chapitre 8). Il est parfois plus rapide de patienter que de multiplier les redémarrages dans la précipitation.

Pour un déverrouillage immédiat, on envoie une commande de réinitialisation du verrouillage. Le mot de passe propriétaire du TPM prête souvent à confusion à ce stade. Depuis Windows 10 version 1607, Windows ne conserve pas le mot de passe propriétaire lors du provisionnement du TPM (il définit une valeur aléatoire à haute entropie, puis la détruit).18 Bâtir une procédure en partant du principe que « l’administrateur dispose du mot de passe propriétaire » bloque donc l’opération sur le terrain.

C’est l’autorisation de déverrouillage (lockout authorization) qui est utilisée à la place. La valeur par défaut 5 de OSManagedAuthLevel signifie, pour le TPM 2.0, que « seule l’autorisation de déverrouillage est conservée ».18 Autrement dit, l’état par défaut est que « le mot de passe propriétaire complet est perdu, mais l’autorisation permettant de lever le verrouillage subsiste » ; la réinitialisation du délai de verrouillage dans tpm.msc ou Unblock-Tpm fonctionnent normalement grâce à cette autorisation. Il existe aussi un réglage pour conserver le mot de passe propriétaire lui-même (mettre OSManagedAuthLevel à 4 dans le registre), mais Microsoft le déconseille fortement.18

Notez que, même sans mot de passe propriétaire, la voie de la vérification de présence physique dans l’UEFI reste disponible pour des opérations d’administration comme l’activation, la désactivation ou l’effacement du TPM.18 Ce n’est toutefois pas une alternative pour lever un verrouillage immédiatement et sans perte de données : à défaut d’autorisation de déverrouillage utilisable, la base reste d’attendre le rétablissement au fil du temps (un échec oublié toutes les 10 minutes), l’effacement demeurant le dernier recours, qui fait perdre toutes les clés (section 9.2).

Notez aussi que si vous réinitialisez explicitement en saisissant une valeur d’autorisation, une tentative de réinitialisation avec une valeur incorrecte interdit toute nouvelle tentative pendant 24 heures.2 Ne multipliez donc pas les essais au hasard.

Enfin, sur TPM 2.0, certaines clés peuvent être créées sans valeur d’authentification, et celles-là restent utilisables même quand le TPM est verrouillé. La configuration BitLocker par défaut « TPM seul » permet de démarrer Windows même si le TPM est verrouillé.2

10. Le TPM vu par un développeur — Platform Crypto Provider et CNG

Quand une exigence apparaît dans votre propre application — « je veux lier une clé de licence à l’appareil », « je veux utiliser un certificat client propre à l’appareil pour la connexion au serveur », « je veux que la valeur sensible d’un fichier de configuration ne puisse être déchiffrée que sur cet appareil » — le TPM est une option de choix.

10.1. Utiliser CNG, pas TBS

Windows expose une API de bas niveau, TBS (TPM Base Services). C’est un service système qui centralise l’accès au TPM entre applications, fourni comme une API via RPC, qui ordonnance de façon coopérative l’accès au TPM selon la priorité indiquée par l’appelant.19

Mais la documentation de TBS elle-même l’écrit noir sur blanc : « le TPM peut aussi servir au stockage de clés, mais pour ces scénarios, il est recommandé aux développeurs d’utiliser une API de stockage de clés. Les API de stockage de clés fournissent des fonctions de création, de signature, de chiffrement et de persistance des clés, à un niveau plus élevé et plus facile à utiliser que TBS. »19 Autrement dit, si votre seul besoin est de protéger une clé, il n’y a aucune raison de manipuler TBS.

Ce qu’il faut utiliser, c’est le fournisseur de stockage de clés « Microsoft Platform Crypto Provider » de CNG (Cryptography API: Next Generation). CNG sépare le fournisseur cryptographique du fournisseur de stockage de clés ; Platform Crypto Provider, en tant que KSP (Key Storage Provider) exploitant le TPM, stocke la clé privée en sécurité et empêche son extraction.8

Platform Crypto Provider offre deux caractéristiques que les fournisseurs CNG purement logiciels ne peuvent pas offrir (ou pas de façon équivalente).3

  • Protection de la clé : on peut créer dans le TPM une clé assortie de restrictions d’usage. L’OS peut la charger et l’utiliser à l’intérieur du TPM sans jamais la copier en mémoire système. Elle peut être configurée comme non exportable. Une clé créée par un TPM n’existe que dans ce TPM, qui n’est jamais une source à partir de laquelle on pourrait en faire une copie.
  • Contre-mesure anti-dictionnaire : une valeur d’authentification comme un PIN peut être exigée pour une clé, et le TPM refuse toute tentative pendant un certain délai en cas de trop nombreuses suppositions.

10.2. Écriture en C#

Depuis .NET, on manipule tout cela avec les classes CNG de System.Security.Cryptography. Voici d’abord la forme minimale pour créer une clé dans le TPM et la rendre non exportable (.NET 8 / Windows) :

using System.Security.Cryptography;

var parameters = new CngKeyCreationParameters
{
    // Fournisseur de stockage de clés qui exploite le TPM
    Provider = new CngProvider("Microsoft Platform Crypto Provider"),
    // N'autoriser aucune exportation de la clé privée
    ExportPolicy = CngExportPolicies.None,
};

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

La clé privée est ainsi créée dans le TPM et n’apparaît jamais en mémoire du processus. En exploitation réelle, il faut cependant gérer « ouvrir la clé existante à partir de la deuxième fois », « clé par utilisateur ou par machine », et « conflits lors d’un démarrage simultané ». Voici du code qui intègre ces aspects.

using System;
using System.Security.Cryptography;

const string KeyName = "KomuraSoft.DeviceKey";

// NTE_EXISTS : « l'objet existe déjà » (une clé du même nom existe déjà)
const int NTE_EXISTS = unchecked((int)0x8009000F);

// Fournisseur de stockage de clés qui exploite le TPM
var provider = new CngProvider("Microsoft Platform Crypto Provider");

// Clé par utilisateur ou par machine (pour un usage depuis un service ou une tâche).
// À garder identique entre création et référence -- un écart ici produit "la clé pourtant créée est introuvable".
const bool UseMachineKey = false;
var openOptions = UseMachineKey ? CngKeyOpenOptions.MachineKey : CngKeyOpenOptions.None;
var creationOptions = UseMachineKey
    ? CngKeyCreationOptions.MachineKey   // La création nécessite des privilèges administrateur
    : CngKeyCreationOptions.None;

CngKey OpenOrCreateKey()
{
    if (CngKey.Exists(KeyName, provider, openOptions))
    {
        // À partir de la deuxième fois, ouvrir la clé existante (la clé est persistée dans le TPM)
        return CngKey.Open(KeyName, provider, openOptions);
    }

    var creationParameters = new CngKeyCreationParameters
    {
        Provider = provider,
        KeyCreationOptions = creationOptions,
        // N'autoriser aucune exportation de la clé privée -- c'est le coeur de l'intérêt du 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 un autre processus crée une clé du même nom entre Exists et Create, Create
        // échoue avec NTE_EXISTS. Dans ce seul cas, on rouvre la clé créée par le gagnant.
        // Tout autre échec (TPM indisponible, droits insuffisants, etc.) remonte tel quel à l'appelant.
        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 signature s'effectue à l'intérieur du TPM. La clé privée n'apparaît jamais en mémoire du processus
    byte[] signature = rsa.SignData(payload, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}

ExportPolicy = CngExportPolicies.None est le point clé. Laisser cette valeur par défaut risque de produire une configuration où la clé reste extractible malgré l’usage du TPM. Comme « la clé ne sort pas » est la raison d’être de l’usage du TPM, spécifiez explicitement l’interdiction d’exportation.

Un autre piège est la confusion entre clé par utilisateur et clé par machine. Les versions à deux arguments de CngKey.Exists / CngKey.Open ne recherchent que des clés par utilisateur. Si seul le côté création passe à CngKeyCreationOptions.MachineKey sans que le côté référence change, la clé machine existante reste introuvable, et le programme échoue systématiquement en essayant de « recréer une clé du même nom ». Comme dans le code ci-dessus, veillez à utiliser la même portée aux trois endroits — création, vérification d’existence et ouverture (CngKeyCreationOptions.MachineKey et CngKeyOpenOptions.MachineKey).

Il y a aussi une raison d’avoir extrait OpenOrCreateKey en fonction avec un try/catch : « vérifier l’existence avant de créer » est fragile face à la concurrence. Si deux processus, par exemple à cause d’un double lancement de l’application, voient tous les deux Exists == false avant d’appeler Create, celui qui réussit le premier l’emporte, et le perdant échoue avec « une clé du même nom existe déjà ». Cela ne se produit qu’au premier démarrage, et rarement, si bien que les tests ne le rencontrent quasiment jamais. Prévoyez dès le départ que le perdant rouvre la clé créée par le gagnant.

Cela dit, il ne faut rouvrir la clé que lorsque la cause de l’échec est bien « une clé du même nom existe déjà » (NTE_EXISTS). Faire passer par le même chemin un autre échec, comme un TPM indisponible ou des droits insuffisants, remplacerait la cause réelle par une autre exception (« clé introuvable » lors de l’Open), ce qui égare l’investigation. C’est pour cela que le code ci-dessus filtre l’exception sur son HResult.

10.3. Réalités à intégrer dès la conception

D’après la documentation officielle et la nature du TPM, plusieurs points doivent être tranchés avant l’implémentation.

  • Le TPM n’est pas rapide. C’est un microcontrôleur dédié, ou un petit processeur tournant dans le mode protégé du CPU.2 Il n’est pas rare que la génération d’une clé prenne plusieurs secondes. N’utilisez jamais directement une clé du TPM pour chiffrer un gros volume de données. Chiffrez les données avec une clé symétrique (AES, etc.), et protégez cette clé symétrique avec la clé du TPM — une structure en deux étages.
  • Ne faites pas tourner la génération de clé ou la signature sur le thread d’interface utilisateur. La lenteur mentionnée ci-dessus se traduirait directement par un gel de l’interface.
  • Un effacement du TPM fait disparaître la clé. Prévoyez qu’elle sera perdue en cas de réparation, de remplacement de carte mère ou de réinstallation de l’OS, et intégrez dans la conception un chemin de réenregistrement (une procédure côté serveur pour réenregistrer l’appareil, par exemple). Une conception du type « si la clé disparaît, c’est fini » finit toujours par causer un incident sur le terrain.
  • Décidez si la clé est par utilisateur ou par machine. Une clé par utilisateur est liée au profil. Pour un usage depuis un service ou une tâche planifiée, il faut une clé par machine (CngKeyCreationOptions.MachineKey), dont la création exige des privilèges administrateur. N’oubliez pas de passer aussi CngKeyOpenOptions.MachineKey côté référence. Pour le choix de l’emplacement de stockage des données, voir aussi « Comment choisir l’emplacement de stockage des données locales d’une application Windows ».
  • Passer en mode machine ne suffit pas à autoriser le compte de service à utiliser la clé. MachineKey ne détermine que l’emplacement du magasin de clés ; qui peut l’utiliser dépend de l’ACL (descripteur de sécurité) attaché à la clé. Un blocage classique : un administrateur crée la clé, puis un compte de service non administrateur essaie de l’ouvrir et se heurte à « Accès refusé ». Deux parades : créer la clé avec les droits du compte qui l’utilisera réellement (le compte de service), ou, à la création, autoriser explicitement le SID du service dans le descripteur de sécurité (la propriété CNG Security Descr). Dans tous les cas, vérifiez le fonctionnement avec le compte d’exécution réel.
  • La façon de traiter un environnement sans TPM doit être décidée. Faut-il rejeter l’appareil comme non conforme, ou se replier sur Microsoft Software Key Storage Provider en acceptant un niveau de protection dégradé ? En environnement mixte, il est courant, dans un modèle de certificat, de privilégier Platform Crypto Provider tout en autorisant aussi le fournisseur logiciel.3
  • Réfléchissez avec prudence à l’ajout d’un PIN sur une clé. La contre-mesure anti-dictionnaire est un avantage, mais le verrouillage du TPM est global. Gérer le nombre d’échecs clé par clé n’est techniquement pas réaliste, si bien que trop d’échecs d’authentification verrouillent tout le TPM.2 Une erreur de saisie répétée dans votre propre application peut donc entraîner dans son sillage Windows Hello sur le même appareil.
  • La gestion des identifiants eux-mêmes reste un sujet à part. La conception consistant à ne jamais les placer en clair dans un script ou un fichier de configuration est détaillée dans « Gérer les identifiants en toute sécurité avec PowerShell ».

11. Bonnes pratiques en pratique (tableau de décision)

Situation Que faire Raison / remarque
Vérifier si l’on peut passer à Windows 11 Utiliser PC Health Check ou un outil de gestion pour trancher. Pour une vérification manuelle, examiner la liste des CPU compatibles, 4 Go de mémoire, 64 Go de stockage, un GPU compatible DirectX 12+ avec pilote WDDM 2.0, un écran 720p/plus de 9 pouces/8 bpc, un firmware UEFI natif compatible démarrage sécurisé, et le TPM 2.0 Ne pas conclure « c’est possible » en ne regardant que le TPM. Le GPU et l’écran font aussi partie des exigences minimales. Le risque d’oubli étant réel, il vaut mieux en principe confier la décision à un outil4
Faire l’inventaire de la seule exigence TPM Vérifier 2.0 via Get-Tpm et le SpecVersion de Win32_Tpm C’est une vérification de l’exigence TPM, pas une décision d’éligibilité complète à Windows 11 elle-même416
Un TPM est présent mais Windows 11 n’est pas éligible Vérifier si le mode BIOS est hérité/CSM. Passer en UEFI avec MBR2GPT puis basculer Le TPM 2.0 ne fonctionne pas en mode CSM6
Pas de TPM disponible / impossible d’en embarquer sur un PC industriel ou embarqué Vérifier les exigences minimales OPTIONAL de Windows 11 IoT Enterprise. Bien distinguer cependant l’édition (IoT Enterprise ou Enterprise LTSC sans IoT) et la version (LTSC, ou pour non LTSC, 24H2 ou ultérieur) Le TPM est facultatif pour IoT Enterprise LTSC et les versions non LTSC à partir de 24H2. Il reste obligatoire pour les non LTSC 21H2 à 23H2. Enterprise LTSC sans IoT n’est pas concerné par cet assouplissement5
Mettre à jour l’UEFI/BIOS Suspendre BitLocker au préalable et vérifier où est conservée la clé de récupération Une mise à jour de firmware change la valeur mesurée des PCR9
Vouloir effacer le TPM Sécuriser d’abord une sauvegarde et un moyen de récupération. Exécuter depuis une fonction de l’OS (pas depuis l’UEFI) L’effacement fait perdre toutes les clés issues du TPM et les données associées7
L’écran de clé de récupération est apparu Identifier le changement effectué juste avant (firmware, démarrage sécurisé, ordre de démarrage, TPM) Le changement a fait bouger la valeur mesurée, ce qui est la cause911
Le TPM s’est verrouillé Laisser l’appareil sous tension pendant l’intervalle de récupération (10 minutes par défaut, à vérifier via LockoutHealTime de Get-Tpm). En cas d’urgence, réinitialiser le délai de verrouillage via tpm.msc ou Unblock-Tpm Le mot de passe propriétaire n’est plus conservé depuis 1607. Par défaut, TPM 2.0 ne conserve que l’autorisation de déverrouillage. Une réinitialisation avec une autorisation incorrecte interdit toute nouvelle tentative pendant 24 heures182
Appareil exposé à une attaque physique Configurer TPM+PIN (PIN étendu) et désactiver la veille, en fonctionnant en veille prolongée ou en coupure d’alimentation TPM seul privilégie la commodité11
Protéger une clé depuis sa propre application Microsoft Platform Crypto Provider de CNG + ExportPolicies.None Une API de stockage de clés de plus haut niveau que TBS est recommandée198
Chiffrer un gros volume de données Chiffrer avec une clé symétrique, et ne protéger que cette clé avec le TPM Le TPM est lent, il ne convient pas à un chiffrement en masse direct2
Mettre au rebut ou céder un appareil Faire de l’effacement du disque (réinitialisation Windows, outil d’effacement dédié, destruction physique) la procédure principale, l’effacement du TPM n’en étant que la touche finale Effacer le TPM ne supprime pas les données du disque. Une clé de récupération conservée ailleurs pourrait encore les déchiffrer. Attention aussi à ne pas se couper soi-même l’accès aux données par une procédure mal ordonnée7

12. Conclusion

  • Le TPM est un processeur de sécurité passif qui cumule le rôle de « coffre-fort qui laisse utiliser une clé secrète sans jamais la faire sortir de la puce » et celui de « registre qui enregistre ce qui a été chargé au démarrage ».
  • Les PCR statiques dédiés au démarrage mesuré ne peuvent avancer que via Extend, et comme la mesure a lieu avant l’exécution, aucun composant intermédiaire ne peut effacer sa propre trace. BitLocker scelle sa clé sur ces valeurs mesurées (le TPM 2.0 possède aussi des PCR réinitialisables, mais ceux utilisés pour le scellement n’en font pas partie).
  • Par défaut, en UEFI natif, le scellement porte sur PCR 0/2/4/11 ; là où le démarrage sécurisé est disponible, sur PCR 7/11. Se rattacher à PCR 7 rend le basculement en mode de récupération lors d’une mise à jour de firmware moins fréquent.
  • Il existe trois formes d’implémentation — discrète, intégrée, firmware —, et Windows les traite toutes de la même manière. Pluton, intégré au CPU, se distingue en pratique par la possibilité de mettre à jour son firmware également via Windows Update.
  • Les exigences de Windows 11 sont le TPM 2.0 et un firmware « UEFI, compatible démarrage sécurisé ». L’exigence porte sur la compatibilité, pas sur l’activation, mais activer le démarrage sécurisé apporte le bénéfice concret de rattacher BitLocker à PCR 7. Même avec un TPM, l’exigence n’est pas satisfaite en mode CSM : basculez le mode BIOS après être passé par MBR2GPT.
  • L’exception est Windows 11 IoT Enterprise, dont les exigences assouplies pour appareils dédiés rendent le TPM comme le démarrage sécurisé facultatifs. Cela ne concerne toutefois que IoT Enterprise LTSC et les versions non LTSC à partir de 24H2 ; les non LTSC 21H2 à 23H2 exigent toujours le TPM 2.0, et Windows 11 Enterprise LTSC sans IoT n’est pas concerné par cet assouplissement. Choisir de ne pas embarquer de TPM, c’est aussi renoncer à la protection de BitLocker et de Windows Hello.
  • Avant une mise à jour de firmware, un changement des paramètres de démarrage sécurisé, un effacement du TPM ou un remplacement de carte mère, suspendez systématiquement BitLocker et vérifiez où se trouve la clé de récupération.
  • Depuis sa propre application, utilisez le Microsoft Platform Crypto Provider de CNG plutôt que TBS. Spécifiez explicitement l’interdiction d’exportation, et intégrez dans la conception la lenteur du TPM et la perte de la clé en cas d’effacement.

Articles connexes

Domaines de conseil associés

合同会社小村ソフト (Komura Software LLC) prend en charge les consultations sur l’inventaire des exigences matérielles liées à la migration vers Windows 11 et la conception de l’exploitation de BitLocker, ainsi que le développement sous contrat d’applications métier Windows incluant la gestion de clés propres à l’appareil via le TPM.

Références

  1. Microsoft Learn, Trusted Platform Module Technology Overview. Sur le fait que le TPM est un processeur cryptographique sécurisé doté de plusieurs mécanismes de sécurité physique lui conférant une résistance à la falsification, sur le fait qu’un logiciel malveillant ne peut pas altérer les fonctions de sécurité du TPM, sur les trois avantages que sont la génération/le stockage/la restriction d’usage des clés, l’authentification de l’appareil et l’intégrité de la plateforme, sur la mesure et l’enregistrement du code de démarrage, sur le fait que Windows 10/11 initialise automatiquement le TPM et en prend possession, ce qui rend la configuration via tpm.msc normalement à éviter, sur le fait que la console de gestion du TPM n’est plus activement développée depuis Windows Server 2019 / Windows 10 1809, et sur le fait que l’attestation de l’état de santé de l’appareil exige le TPM 2.0 et un firmware UEFI, ne fonctionnant pas comme attendu avec un BIOS hérité même en présence d’un TPM 2.0.  2 3 4 5 6

  2. Microsoft Learn, Trusted Platform Module (TPM) fundamentals. Sur le fait que la partie secrète de la clé racine de stockage et de la clé d’approbation n’est jamais révélée à un autre composant, logiciel, processus ou utilisateur, sur le wrap/bind des clés, sur le scellement (sealing) et le déscellement (unsealing) selon les valeurs mesurées de la plateforme, sur le fait que l’EK est une paire de clés RSA dont la partie privée ne sort jamais du TPM, sur l’attestation de clé (key attestation), sur le fait que la contre-mesure anti-dictionnaire est un verrouillage global, sur le fait que Windows configure le TPM 2.0 pour se verrouiller après 32 échecs d’authentification et oublier un échec toutes les 10 minutes, sur le fait que le compteur revient à zéro après 320 minutes sans échec, sur le fait qu’on peut sortir d’un verrouillage en laissant l’appareil sous tension 10 minutes, sur la réinitialisation immédiate via le mot de passe propriétaire et l’interdiction de nouvelle tentative pendant 24 heures en cas de saisie erronée, sur le fait qu’une clé sans valeur d’authentification reste utilisable même verrouillée et que la configuration BitLocker « TPM seul » peut démarrer dans ce cas, sur le fait que le TPM tourne sur un microcontrôleur dédié ou dans le mode protégé du CPU, et sur la recommandation faite aux utilisateurs de la carte à puce virtuelle de migrer vers Windows Hello for Business ou FIDO2.  2 3 4 5 6 7 8 9 10 11 12 13 14 15

  3. Microsoft Learn, How Windows uses the TPM. Sur le fait que la protection logicielle des clés est exposée aux attaques d’ingénierie inverse, sur la protection des clés et la contre-mesure anti-dictionnaire de Platform Crypto Provider, sur la vérification de l’authenticité du TPM via le certificat EK et la protection de la confidentialité via l’AIK, sur le fait que le CRTM hache inconditionnellement le composant suivant et l’enregistre dans le TPM avant exécution, rendant impossible d’effacer la valeur mesurée (celle-ci n’étant effacée qu’au redémarrage), sur le fait que BitLocker crée dans le TPM une clé utilisable seulement quand la valeur mesurée au démarrage correspond à la valeur attendue, sur le stockage possible de la clé de récupération dans AD DS, sur le fait que le démarrage mesuré enregistre le noyau Windows, les pilotes ELAM et les pilotes de démarrage, sur le quote et l’attestation à distance via l’AIK, sur la coopération entre le service d’attestation de santé et le MDM, sur le fait que Credential Guard protège la clé de l’environnement isolé par les valeurs mesurées du TPM, sur la protection des clés de Windows Hello for Business et le fait que les données biométriques ne sont jamais partagées hors de l’appareil, sur la carte à puce virtuelle, et sur l’exploitation des modèles de certificats en environnement mixte.  2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

  4. Microsoft Learn, Windows 11 requirements. Sur les exigences minimales de Windows 11 (un CPU ou SoC 64 bits compatible d’au moins 1 GHz et 2 cœurs, au moins 4 Go de mémoire, au moins 64 Go de stockage, une carte graphique compatible DirectX 12 ou supérieur avec un pilote WDDM 2.0, un firmware système « UEFI, compatible démarrage sécurisé (Secure Boot capable) », le TPM 2.0, un écran d’au moins 720p, de plus de 9 pouces et à 8 bits par canal, une connexion Internet). Y compris le fait que l’exigence porte sur la compatibilité avec le démarrage sécurisé, et non sur son activation.  2 3 4 5

  5. Microsoft Learn, Minimum System Requirements - Windows IoT Enterprise. Sur le fait que les exigences minimales PREFERRED de Windows IoT Enterprise correspondent aux exigences des appareils grand public, et qu’une flexibilité existe pour s’en écarter sur des appareils dédiés (les exigences minimales OPTIONAL). Sur le fait que les exigences minimales OPTIONAL de Windows 11 IoT Enterprise LTSC sont : 2 Go de mémoire, 16 Go de stockage, firmware système BIOS accepté, TPM « Optional », démarrage sécurisé « Optional ». Sur le fait que, pour les versions non LTSC de Windows 11 IoT Enterprise, les exigences OPTIONAL de 21H2/22H2/23H2 requièrent le TPM 2.0 (seul le démarrage sécurisé étant Optional), le TPM ne devenant Optional qu’à partir de 24H2. Sur le fait que les exigences processeur sont définies sur une page séparée. Et sur le fait que, pour un appareil dédié où l’utilisateur final peut ajouter du logiciel, abaisser les exigences doit être examiné avec prudence, car ne pas fournir de TPM peut affecter les logiciels dont cet utilisateur final a besoin (contrairement à un changement de type de stockage, qui n’affecte que la performance de lecture/écriture). Ces exigences assouplies s’appliquent aux éditions de la famille Windows IoT Enterprise.  2 3 4 5 6 7

  6. Microsoft Learn, TPM recommendations. Sur le fait que le TPM est un composant passif qui reçoit des commandes et renvoie des réponses, sur le fait que le TPM 1.2 ne connaît que RSA et SHA-1, sur le fait que le NIST demandait dès 2014 la migration vers SHA-256 et que Microsoft et Google ont abandonné en 2017 la prise en charge des signatures et certificats basés sur SHA-1, sur l’agilité cryptographique du TPM 2.0 et sa normalisation internationale sous ISO/IEC 11889:2015, sur le fait que la politique de verrouillage du TPM 1.2 varie selon l’implémentation tandis que le TPM 2.0 est configuré par Windows pour garantir une contre-mesure anti-dictionnaire cohérente, sur les trois implémentations discrète (dTPM) / intégrée / firmware (fTPM), que Windows utilise toutes de la même manière sans que Microsoft ne prenne parti sur la méthode à privilégier, et sur le fait que le TPM 2.0 n’est pas pris en charge en BIOS hérité ni en mode CSM, nécessitant une configuration UEFI native, un OS installé en mode hérité devant passer par MBR2GPT avant tout changement de mode BIOS. Notez que cette même page cite Modern Standby comme condition préalable au chiffrement de l’appareil, mais cette condition a été supprimée avec Windows 11 version 24H2 (voir le chapitre 7 et [^bitlockerindex]).  2 3 4 5 6 7 8 9 10 11 12 13 14

  7. Microsoft Learn, Troubleshoot the TPM. Sur le fait que Windows initialise automatiquement le TPM et en prend possession, rendant inutile la création d’un mot de passe propriétaire, sur le fait que l’effacement du TPM entraîne une perte de données, faisant disparaître toutes les clés et données issues du TPM, y compris la carte à puce virtuelle et le PIN de connexion, sur le fait qu’il ne faut pas effacer un appareil qui ne vous appartient pas sans instruction de l’administrateur, sur le fait que l’effacement doit toujours passer par une fonction de l’OS (tpm.msc) et jamais directement par l’UEFI, sur l’option de désactiver le TPM pour un arrêt temporaire, sur la procédure d’effacement depuis Sécurité Windows → Sécurité de l’appareil → Détails du processeur de sécurité → Dépannage, sur le fait que Windows se réinitialise et reprend automatiquement possession après un effacement, sur le fait que Windows ne prend pas en charge le basculement entre plusieurs TPM sur un même système et qu’un tel basculement fait entrer BitLocker en mode de récupération, et sur la vérification des paramètres UEFI quand un TPM 2.0 n’est pas détecté.  2 3 4 5 6 7 8 9 10 11

  8. Microsoft Learn, CNG Key Storage Providers. Sur le fait que CNG sépare le fournisseur cryptographique du fournisseur de stockage de clés (KSP), sur le fait que Microsoft Platform Crypto Provider est un KSP exploitant le TPM qui stocke la clé privée en sécurité et empêche son extraction même par un logiciel malveillant, et sur son utilisation en passant MS_PLATFORM_CRYPTO_PROVIDER à NCryptOpenStorageProvider.  2 3

  9. Microsoft Learn, Configure BitLocker. Sur la liste des PCR 0 à 23 et l’objet mesuré de chacun dans la stratégie « Configure TPM platform validation profile for native UEFI firmware configurations », sur le fait que le profil par défaut en UEFI natif porte sur PCR 0, 2, 4, 11, sur le fait que, lorsque l’état du démarrage sécurisé (PCR 7) est pris en charge, le scellement se fait par défaut sur PCR 7 et PCR 11, sur le fait que PCR 7 indique l’état d’activation du démarrage sécurisé et les clés approuvées, et que son usage à la place du hachage réel des images de firmware et de Bootmgr (PCR 0, 2, 4) réduit le risque de basculer en mode de récupération lors d’une mise à jour de firmware ou d’image, sur le fait qu’il convient de suspendre BitLocker avant une mise à jour de firmware quand la configuration inclut PCR 0, et sur le fait que, sur un système compatible Modern Standby, la mesure de PCR 7 est une exigence de certification, et qu’un TPM et un démarrage sécurisé correctement configurés se rattachent par défaut à PCR 7 et PCR 11.  2 3 4 5 6 7 8 9 10

  10. Microsoft Learn, Secure the Windows boot process. Sur les rôles de Secure Boot, Trusted Boot, ELAM et Measured Boot, sur le fait que, dans Trusted Boot, le chargeur de démarrage vérifie la signature numérique du noyau avant de le charger, le noyau vérifiant à son tour les pilotes de démarrage, les fichiers de démarrage et l’ELAM, sur le fait que l’ELAM se charge avant les pilotes de démarrage tiers, et sur le fait que, dans Measured Boot, le firmware UEFI enregistre dans le TPM le hachage de tout ce qui est chargé avant les applications antimalware, y compris le firmware, le chargeur de démarrage et les pilotes de démarrage. 

  11. Microsoft Learn, BitLocker countermeasures. Sur le fait que, par défaut, BitLocker exploite via la mesure de PCR 7 la protection d’intégrité du démarrage sécurisé, empêchant un firmware EFI, une application de démarrage ou un chargeur de démarrage non autorisés d’obtenir la clé BitLocker, sur les quatre méthodes de déverrouillage (TPM seul / TPM+clé de démarrage / TPM+PIN / TPM+clé de démarrage+PIN) et le fait que TPM seul privilégie la commodité au détriment relatif de la sécurité, sur le basculement en mode de récupération lors d’un changement du TPM, de la configuration BIOS/UEFI, des fichiers de démarrage ou de la configuration de démarrage, sur le fait qu’un bootkit ou un rootkit est détecté par la mesure des PCR et empêche la libération de la clé, sur le fait que Windows scelle la clé avec PCR 11 à 0 et fait systématiquement passer PCR 11 à 1 quand le gestionnaire de démarrage cède le contrôle, ce qui empêche tout déverrouillage via un disque substitué, et sur la recommandation TPM+PIN étendu et désactivation de la veille face à une menace d’attaque physique.  2 3 4 5 6

  12. Microsoft Learn, Microsoft Pluton security processor. Sur le fait que Pluton est un processeur cryptographique sécurisé intégré au CPU, conçu pour fournir les fonctions du TPM tout en offrant des fonctions de sécurité dépassant la spécification TPM 2.0, sur les chipsets pris en charge (séries AMD Ryzen 6000/7000/8000/9000 et Ryzen AI, série Intel Core Ultra 200V et Core Ultra Series 3, Qualcomm Snapdragon 8cx Gen 3 et série Snapdragon X), sur le fait que le firmware est chargé au démarrage depuis la flash SPI de la carte mère et que la dernière version obtenue via Windows Update est utilisée pendant le démarrage de Windows, et sur les deux voies de mise à jour que sont la mise à jour de capsule UEFI et la mise à jour de l’OS.  2 3

  13. Microsoft Learn, BitLocker overview. Sur le fait que le chiffrement d’appareil exigeait de satisfaire les exigences de sécurité Modern Standby ou HSTI et de ne posséder aucun port externe accessible en DMA, et que ces conditions préalables (DMA et HSTI/Modern Standby) ont été supprimées à partir de Windows 11 version 24H2, rendant davantage d’appareils éligibles au chiffrement automatique et manuel. Sur le fait que le chiffrement d’appareil ne chiffre que le lecteur OS et les lecteurs fixes, sur le fait que la clé de récupération est sauvegardée vers Microsoft Entra ID, AD DS ou un compte Microsoft avant la suppression de la clé en texte clair, et sur la vérification des conditions préalables via « Prise en charge du chiffrement de l’appareil » dans msinfo32.exe.  2

  14. Microsoft Learn, TrustedPlatformModule Module. Sur les cmdlets Clear-Tpm, ConvertTo-TpmOwnerAuth, Disable-TpmAutoProvisioning, Enable-TpmAutoProvisioning, Get-Tpm, Get-TpmEndorsementKeyInfo, Get-TpmSupportedFeature, Import-TpmOwnerAuth, Initialize-Tpm, Set-TpmOwnerAuth, Unblock-Tpm et leur rôle respectif.  2

  15. Microsoft Learn, Get-Tpm (TrustedPlatformModule). Sur le fait que Get-Tpm renvoie un TpmObject, et sur le sens et des exemples de sortie des propriétés TpmPresent, TpmReady, TpmEnabled, TpmActivated, TpmOwned, ManagedAuthLevel, OwnerAuth, OwnerClearDisabled, AutoProvisioning, LockedOut, LockoutHealTime, LockoutCount, LockoutMax, SelfTest, entre autres.  2

  16. Microsoft Learn, Win32_Tpm class. Sur les propriétés de la classe Win32_Tpm (IsActivated_InitialValue, IsEnabled_InitialValue, IsOwned_InitialValue, SpecVersion, ManufacturerVersion, ManufacturerVersionInfo, ManufacturerId, PhysicalPresenceVersionInfo). Y compris le fait que ManufacturerId est un uint32 qui devient une chaîne en interprétant chaque octet comme un caractère ASCII (exemple : 1414548736 → 0x54/0x50/0x4D/0x00 → « TPM »), et que SpecVersion est une chaîne comprenant la version majeure/mineure de la spécification TCG ainsi que la révision et les errata. ManufacturerIdTxt ne fait pas partie des propriétés de cette classe.  2 3 4

  17. Microsoft Learn, tpmtool. Sur le fait que tpmtool est un utilitaire permettant d’obtenir des informations sur le TPM, sur le fait que getdeviceinformation affiche les informations de base du TPM, et sur le fait que gatherlogs collecte les journaux du TPM dans le répertoire courant. 

  18. Microsoft Learn, Change the TPM owner password. Sur le fait que, depuis Windows 10 version 1607, Windows ne conserve pas le mot de passe propriétaire lors du provisionnement du TPM, définissant une valeur aléatoire à haute entropie puis la détruisant. Sur le fait que la clé de registre HKLM\Software\Policies\Microsoft\TPM, avec OSManagedAuthLevel mis à 4, permet de le conserver, mais que Microsoft le déconseille fortement, sur le fait que la valeur par défaut à partir de Windows 10 1703 est 5, ce qui signifie pour le TPM 2.0 « conserver seulement l’autorisation de déverrouillage », et sur le fait que, même sans mot de passe propriétaire, la vérification de présence physique dans l’UEFI permet des opérations comme l’activation, la désactivation ou l’effacement.  2 3 4 5

  19. Microsoft Learn, TPM Base Services. Sur le fait que TBS est un service système qui centralise l’accès au TPM entre applications et fournit une API via RPC, sur le fait qu’il ordonnance de façon coopérative l’accès au TPM selon la priorité indiquée par l’appelant, et sur la recommandation faite aux développeurs d’utiliser, pour le stockage de clés, une API de stockage de clés de plus haut niveau et plus facile à utiliser plutôt que TBS.  2 3

Articles récents partageant les mêmes étiquettes, pour approfondir des sujets proches.

Ces pages replacent le sujet dans un contexte plus large de services et de décisions.

Cet article est directement lié aux services suivants.

Questions fréquentes

Questions souvent posées lors d’une consultation sur le sujet de cet article.

Au final, que fait vraiment le TPM ?
En un mot, c'est « un petit coffre-fort qui laisse utiliser une clé secrète sans jamais la faire sortir ». Une clé secrète créée dans le TPM ne quitte jamais la puce, selon la configuration choisie. Une application ou l'OS ne reçoit pas la clé elle-même : elle demande au TPM « signe cette donnée » ou « déchiffre avec cette clé », et ne reçoit que le résultat. À cela s'ajoute la possibilité de « sceller » : le TPM empile et enregistre, dans une zone appelée PCR, le hachage du firmware et du chargeur de démarrage chargés au démarrage, et ne permet d'extraire la clé que si cette valeur correspond à ce qui était attendu. C'est ce mécanisme qui explique que BitLocker « ne se déverrouille pas si le contenu du PC a été substitué ».
Pourquoi Windows 11 exige-t-il le TPM 2.0 ?
Parce que des fonctions comme BitLocker, Windows Hello, Credential Guard ou l'attestation de l'état de santé de l'appareil sont conçues en partant du principe d'un point d'ancrage de confiance matériel. Le TPM 1.2 ne savait utiliser que RSA et SHA-1, et le comportement de verrouillage variait d'un fabricant à l'autre ; avec le TPM 2.0, de nouveaux algorithmes sont disponibles et Windows configure lui-même, de façon cohérente, les contre-mesures contre les attaques par dictionnaire. Notez que le TPM 2.0 ne fonctionne pas en mode de compatibilité BIOS hérité (CSM) : une configuration UEFI native est donc requise. L'exception est Windows 11 IoT Enterprise : pour IoT Enterprise LTSC et pour les versions non LTSC à partir de 24H2, le TPM comme le démarrage sécurisé sont facultatifs (pour les versions non LTSC 21H2 à 23H2, le TPM 2.0 reste obligatoire ; le très proche Windows 11 Enterprise LTSC, sans IoT, n'est pas concerné par cet assouplissement).
Quelle est la différence entre dTPM, fTPM et Pluton ? Lequel choisir ?
C'est une différence de forme d'implémentation. Le dTPM (TPM discret) est une puce dédiée sur la carte mère ; le fTPM (TPM en firmware) est une implémentation logicielle qui tourne dans l'environnement d'exécution de confiance du CPU ; Pluton est un processeur de sécurité conçu par Microsoft et intégré au CPU. Du point de vue de Windows, l'usage est identique dans tous les cas, et Microsoft précise explicitement ne prendre parti pour aucune implémentation en particulier. En pratique, les différences sont les suivantes : une puce dédiée expose le bus qui la relie au CPU à une attaque physique potentielle, le fTPM dépend des mises à jour du firmware du CPU, et Pluton peut voir son firmware mis à jour via Windows Update. Quand le choix est possible à l'achat, pour un poste métier, il est réaliste de se baser sur la politique de maintenance du fabricant et sur la disponibilité des mises à jour de firmware.
J'ai mis à jour le BIOS et BitLocker m'a demandé la clé de récupération. Pourquoi ?
La clé de BitLocker est scellée sur les valeurs mesurées au démarrage (les PCR) ; si l'objet mesuré change, la clé n'est plus libérée et l'appareil entre en mode de récupération. Or une mise à jour de firmware est justement une opération qui change des valeurs mesurées comme PCR 0. Microsoft recommande d'ailleurs de suspendre BitLocker avant une mise à jour de firmware lorsque la configuration inclut PCR 0. Une fois déverrouillé avec la clé de récupération, l'appareil est rescellé avec les nouvelles valeurs mesurées, et le même problème ne se reproduit pas. Côté exploitation, suspendez toujours BitLocker avant une mise à jour UEFI, un changement des paramètres de démarrage sécurisé, un effacement du TPM ou un remplacement de carte mère, et vérifiez au préalable où est conservée la clé de récupération (Active Directory, Microsoft Entra ID, ou compte Microsoft).
Comment protéger une clé avec le TPM depuis ma propre application ?
N'appelez pas directement les commandes TPM : utilisez le fournisseur de stockage de clés CNG (Cryptography API: Next Generation) « Microsoft Platform Crypto Provider ». En .NET, il suffit de passer ce fournisseur et ExportPolicies.None à CngKey.Create pour que la clé privée soit créée dans le TPM et devienne impossible à en extraire. Le TPM Base Services (TBS) de bas niveau est également public, mais Microsoft recommande lui-même d'utiliser une API de stockage de clés de plus haut niveau pour le stockage, la signature et le chiffrement des clés. Côté implémentation, prévoyez dans votre conception que le TPM est lent, qu'un effacement du TPM fait disparaître la clé, et la façon de vous replier sur un environnement dépourvu de TPM.

Profil de l’auteur

Page de présentation de l’auteur de l’article.

Go Komura

Représentant de KomuraSoft LLC

Spécialisé dans le développement de logiciels Windows, le conseil technique et l’analyse de pannes, notamment pour les systèmes existants et les incidents difficiles à reproduire.

Retour au blog