Utilisation des Trusted Platform Modules (TPM) dans NI Linux Real-Time

Aperçu

La dernière mise à jour NI Linux Real-Time inclut la prise en charge des Trusted Platform Modules (TPM). Cet article définit un Trusted Platform Module (TPM), explique les conditions d’utilisation pour un TPM et fournit des informations sur la façon de l’utiliser.

Contenu

Qu'est-ce qu'un TPM ?

Un Trusted Platform Module (TPM) est un composant matériel utilisé comme racine de confiance, conçu pour générer, stocker et utiliser en toute sécurité des clés cryptographiques. Les TPM sont un emplacement sécurisé pour stocker des secrets, des informations que vous ne souhaitez pas que d’autres obtiennent. Les TPM offrent plusieurs avantages pour stocker des informations sensibles telles que des clés cryptographiques.

  • Les informations privées dans les TPM ne quittent jamais le TPM en texte brut, uniquement en texte chiffré, elles doivent donc être décryptées avant que les humains ou les logiciels puissent les lire.
  • Les clés TPM peuvent être liées à un état du système. Lier une clé à un état signifie que le TPM associe une clé à Configuration système spécifique, de sorte qu'elle n'est libérée que lorsque le système revient à cet état. En conséquence, si le Firmware d'un ordinateur est modifié, le TPM refusera de libérer la clé permettant de déverrouiller les données du disque dur.
  • Les clés privées protégées par TPM ne sont pas directement accessibles au système d'exploitation ou aux applications en texte brut. Les opérations cryptographiques utilisant ces clés sont effectuées dans le TPM, et tout matériel de clé stocké ou transféré en dehors du TPM reste protégé cryptographiquement.

Ces fonctionnalités font d’un TPM un complément précieux à un système de test fonctionnant avec des données sensibles ou dans un environnement sensible où les données doivent être protégées.

À quoi servent les TPM ?

Les TPM sont couramment utilisés pour le cryptage sur disque, l'identité et l'authentification du périphérique, la vérification de l'authenticité des composants du Firmware (démarrage sécurisé) et la protection des secrets d'application. Pour une application de test et de mesure, cela signifie que les systèmes peuvent utiliser un TPM pour l’un des exemples suivants :

  • Pour s'assurer qu'un système n'a pas été modifié entre deux opérations de démarrage, notamment la suppression ou l'ajout de mémoire, le changement de Firmware pour modifier le comportement du système ou le changement du logiciel en cours d'exécution.
  • Protéger les clés utilisées pour crypter ou décrypter les informations envoyées par le système de test à une station centrale. Lorsque ces clés sont stockées dans des fichiers ou des scripts, elles sont vulnérables à la copie ou à la réutilisation. Dans un TPM, ces clés sont cryptées et liées au matériel. Ils ne peuvent pas être extraits et réutilisés sur un autre système et ne sont accessibles que par un logiciel autorisé.
  • Pour protéger le matériel VPN ou de certificat pour un accès à distance.
  • Pour écrire des données sur des disques amovibles cryptés et protéger ces données jusqu'à ce qu'elles soient correctement décryptées par quelqu'un avec les bonnes clés. 

Quelles versions de TPM sont disponibles ?

TPM 1.2 a été publié en 2003 et prend en charge la cryptographie RSA et SHA-1. TPM 2.0 est une refonte majeure de 2014 de la norme TPM et inclut des algorithmes modernes tels que ECC, SHA-256, etc. TPM 2.0 est la norme moderne et est requis par Windows 11 et est utilisé par certains matériels NI.

Utilisation d'un TPM dans NI Linux Real-Time

L'accès et l'utilisation d'un TPM dans NI Linux Real-Time se font via une session SSH sur le périphérique et nécessitent une connaissance de Linux, NI Linux Real-Time et des concepts de sécurité. Les informations sont fournies ici comme point de départ pour les développeurs évaluant NI Linux Real-Time pour des applications sécurisées. Pour obtenir des informations détaillées, reportez-vous à la toute dernière documentation NI Linux Real-Time et à la documentation publique de chacune des bibliothèques mentionnées ici.

Ces instructions s'appliquent uniquement aux périphériques NI Linux Real-Time dotés d'un TPM. Les TPM sont disponibles sur certains contrôleurs PXI et certains contrôleurs CompactRIO. Reportez-vous à Support du module Trusted Platform (TPM) pour les contrôleurs NI pour obtenir une liste des contrôleurs PXI avec TPM. Notez que les TPM ne sont pas inclus dans la plupart des systèmes CompactRIO mais peuvent être commandés avec le NI cRIO-9048. Pour ce document, nous avons utilisé un NI cRIO-9048 avec l’option TPM. 

 

Étape 0 : Mettez à niveau votre Firmware NI Linux Real-Time et System Image vers la dernière version.

Une meilleure prise en charge des interactions TPM par les utilisateurs et les applications a été introduite par la version NILRT 11.5 (2026Q2). Ce document suppose que votre système a été mis à niveau vers au moins cette version. La mise à niveau vers la dernière version disponible est la meilleure pratique pour les systèmes sécurisés.

Connectez-vous à votre cible à l'aide du Gestionnaire de matériel NI et utilisez les boîtes de dialogue latérales Update Firmware et Manage Software pour mettre à niveau les composants du système d'exploitation.

 

Étape 1 : SSH dans le périphérique NI Linux Real-Time.

Utilisez un client SSH pour établir une connexion shell avec le périphérique cible. Dans la fenêtre de commande, ouvrez une session SSH :

Entrez le nom d'utilisateur et le mot de passe configurés dans NI MAX ou le Gestionnaire de matériel NI. Le nom d'utilisateur par défaut est admin, et le mot de passe par défaut est vide.

 

Étape 2 : Vérifiez la présence de TPM dans le périphérique.

Si le périphérique a un TPM, il créera un ou deux fichiers au démarrage : tpm0 et tpmrm0. S'il a un périphérique, la commande suivante :

réinitialisera les informations suivantes :


Si le périphérique n'a pas de TPM, la réponse sera

 

Étape 3 : Installez les bibliothèques de support TPM.

À partir de la version 2026 Q1 de NI Linux Real-Time, un installeur de méta paquets est inclus pour installer toutes les bibliothèques pour supporter les TPM.

Cette commande installera un certain nombre de paquets TPM. Les outils que vous pourriez utiliser comprennent :

  • cryptsetup — Outil d'espace utilisateur utilisé pour configurer et gérer le stockage crypté. Cela peut créer des volumes chiffrés, verrouiller et déverrouiller des volumes chiffrés, et gérer les clés de chiffrement et les phrases de passe.
  • tpm2-tools — Toolset spatial utilisateur pour TPM 2.0 qui fournit une interaction avec le TPM. Ces outils permettent aux utilisateurs de créer et de gérer des clés protégées par TPM, de crypter, décrypter ou signer des données à l’aide de clés stockées dans le TPM, de lier des secrets à un état de plate-forme, de lire des informations sur l’état du TPM et de fournir ou d’effacer des informations sur l’état du TPM.
  • clevis — Utilitaire pour déverrouiller le stockage crypté, généralement avec des clés de décryptage Linux Unified Key Setup (LUKS, le format Linux standard pour le cryptage sur disque).
  • Libtss2-tcti-device0 — Permet aux applications d'envoyer des commandes TPM 2.0 directement au matériel TPM via l'interface du périphérique Linux. Cela rend le périphérique TPM accessible aux utilisateurs. 

 

Étape 4 : Lire les registres TPM.

tpm2-tools comprend plus d'une centaine de fonctions pour interagir avec le TPM. Une commande utile est « tpm2_pcrread » :

Cela renverra le contenu des registres TPM dans une liste.

Ces registres sont appelés registres de configuration de plate-forme (PCR). Les huit premières PCR (0–7) sont écrites par le BIOS . Ces valeurs de hachage ne peuvent pas être écrites directement ; les valeurs ne sont mises à jour que lorsque les mesures du système changent.

PCR 7 contient l'état de démarrage sécurisé, y compris si le démarrage sécurisé est activé, quelles clés du fournisseur sont utilisées, etc. Ce registre est généralement utilisé pour prendre des décisions de déverrouillage : si la valeur stockée correspond à la mesure actuelle du système, le système est le même et peut être approuvé.

Les PCR 8 et 9 sont contrôlés par le chargeur de démarrage du système d'exploitation (GRUB). PCR 8 contient les mesures effectuées par le chargeur de démarrage de la configuration de démarrage. Cela peut contenir des composants du chargeur de démarrage du système d'exploitation, des images de noyau et des mesures spécifiques au système d'exploitation qui se produisent après le chargeur de démarrage mais avant l'exécution complète du système d'exploitation.

PCR 9 contient des données de configuration du système d'exploitation telles que les paramètres de ligne de commande du noyau, les valeurs de configuration du système d'exploitation qui affectent le comportement à l'exécution et les paramètres du système d'exploitation pertinents pour la politique mesurée au démarrage. Ensemble, PCR 8 et 9 mesurent quel système d’exploitation a été chargé et comment il a été configuré.

Les registres restants, PCR 10-23, sont des PCR contrôlés par le système d'exploitation et l'application utilisés pour mesurer le logiciel, l'état d'exécution et les événements dynamiques qui se produisent après le démarrage. Les TPM permettent aux applications logicielles de décider comment utiliser ces PCR. L'utilisation typique comprend des clés scellées TPM pour crypter le stockage ou la transmission des données, le stockage des clés d'authentification à distance, la détection de l'altération à l'exécution et d'autres transactions sécurisées.

Pour voir le journal où toutes les mesures sont effectuées pendant un démarrage, utilisez tpm2_eventlog pour lire le contenu du fichier binary_bios_measurements du périphérique tpm0 dans le système de fichiers securityfs. 

Cette commande analyse le fichier journal pour afficher les mesures de PCR que le TPM devait effectuer au démarrage. Vous pouvez utiliser ce journal pour avoir une compréhension complète des événements susceptibles de modifier l'état du système. 

 

Étape 5 : Utilisez la fonctionnalité TPM.

Une fois que vous pouvez accéder aux PCR TPM, vous pouvez lire et écrire par programmation dans le TPM et utiliser la fonctionnalité TPM. Bien que l’utilisation détaillée des fonctions TPM dépasse le cadre de cet article, voici quelques exemples d’actions que vous pouvez entreprendre.

Cryptsetup

Cryptsetup fournit un cryptage sur disque pour les données au repos. Avec cryptsetup, vous pouvez créer des volumes chiffrés, déverrouiller des volumes chiffrés pour qu’ils puissent être montés, verrouiller des volumes chiffrés, gérer les emplacements de clé LUKS et intégrer des clés scellées TPM. Cryptsetup définit comment les disques sont cryptés, tandis que clevis définit comment les clés sont fournies et accessibles.

Par exemple, utilisez cryptsetup pour crypter une partition de disque dans un fichier sur disque en suivant ces étapes.

 

            1.Créez un fichier binaire pour contenir l'image disque.

                              

            2.Créez une partition cryptée LUKS dans le fichier image du disque.

              

            3.Ouvrez la partition cryptée en utilisant la phrase de passe que vous avez fournie et créez un périphérique de bloc virtuel sous /dev/mapper représentant la vue décryptée de la partition.

             

            4.Créez un système de fichiers sur le périphérique de bloc mappé.

               

            5.Montez la partition cryptée.

               

 

Après avoir monté la partition cryptée, vous pouvez l'utiliser comme tout autre système de fichiers.

Une approche similaire peut être utilisée pour crypter un disque de stockage amovible de votre choix. Vous pouvez le faire en dirigeant la commande luksFormat à l’étape 2 vers le chemin du périphérique de votre lecteur dans le système d’exploitation.

Pour obtenir des options de cryptage ou des configurations supplémentaires utilisant cryptsetup, reportez-vous à la Documentation Cryptsetup . Veuillez noter que le cryptage des partitions du système d'exploitation LinuxRT n'est pas supporté pour le moment.

 

Clevis

Clevis vous permet de lier un emplacement de clé de déchiffrement en volume Linux Unified Key Setup (LUKS) à l'état TPM PCR. La commande suivante crée un nouvel emplacement de clé pour la partition LUKS à /dev/sdx, lié aux mesures de courant du TPM pour les PCR 7, 8 et 9.

Dans ce cas, la clé de déchiffrement LUKS peut être lue lors d'un démarrage ultérieur, uniquement si le Secure Boot et le Firmware OS sont inchangés.

La chaîne de stratégie passée à clevis déterminera quelles conditions sont nécessaires pour libérer la clé de déchiffrement.

Déverrouillerait si le noyau change, mais le Firmware doit être le même. Cela permet de mettre à jour le système d'exploitation. 

 

Ne se déverrouillerait que si le système d'exploitation est inchangé et qu'une valeur de mesure contrôlée par l'application stockée dans PCR 11 est également inchangée.

Vous pouvez créer plusieurs emplacements de clé pour un volume LUKS afin de pouvoir fournir plusieurs méthodes de déverrouillage. Un emplacement peut permettre le déverrouillage automatique si les PCR TPM correspondent. Un autre emplacement peut permettre à une phrase de passe de déverrouiller le volume si elle correspond à la valeur stockée dans une PCR TPM. Un autre peut permettre d'entrer une clé de récupération stockée hors ligne.

Note de bonnes pratiques : Même si vous utilisez l'état TPM pour déverrouiller un périphérique crypté, il est recommandé de conserver la phase de passage de décryptage LUKS d'origine que vous avez configurée avec cryptsetup comme méthode de sauvegarde pour déverrouiller vos données.

Pour afficher les clés de périphérique qui déverrouillent un périphérique LUKS, utilisez la liste clevis luks :

Pour une liste complète des commandes clevis, appelez la fonction help (-h) 

 

Étape 6 : Mise au point

Le journal d'événements est utile pour mettre au point les problèmes en comprenant ce qui se passe pendant une séquence de démarrage. Accédez à ce journal dans le dossier /sys/kernel/security. Si un TPM existe, cette commande :

affichera qu'un dossier tpm0/ est créé :

Dans le répertoire “tpm0/”, le BIOS enregistre les informations de la séquence de démarrage dans un fichier appelé “binary_bios_measurements”. Lisez ce fichier pour étudier les problèmes de démarrage. 

Résumé

En utilisant un périphérique compatible TPM exécutant NI Linux Real-Time, vous pouvez implémenter des bibliothèques Linux standard qui utilisent les fonctionnalités d'un TPM pour stocker des clés. Ces clés peuvent être utilisées pour des fonctions de sécurité, notamment le cryptage sur disque, le démarrage sécurisé, le cryptage des données, l'authentification du périphérique et d'autres fonctions que vous programmez dans votre application. Les clés créées et stockées dans un périphérique TPM sont protégées et ne sont jamais accessibles par le processeur ou la mémoire du périphérique. Les TPM sont la norme de l'industrie pour fournir ce niveau de protection et sont requis dans Windows 11, et sont maintenant disponibles dans les périphériques NI Linux Real-Time. 

La marque déposée Linux® est utilisée selon les termes d’une sous-licence de LMI, le détenteur exclusif de la licence de Linus Torvalds, propriétaire de la marque au niveau mondial.

Microsoft et Windows sont des marques déposées du groupe de sociétés Microsoft.

 

Was this information helpful?

Yes

No