Partager via


Accès au dTPM sur Azure IoT Edge pour Linux sur Windows

S’applique à :Coche IoT Edge 1.5 IoT Edge 1.5 Coche IoT Edge 1.4 IoT Edge 1.4

Important

IoT Edge 1.5 LTS et IoT Edge 1.4 LTS sont des versions prises en charge. IoT Edge 1.4 LTS sera en fin de vie le 12 novembre 2024. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.

Une Module de plateforme sécurisée (TPM) est un processeur de chiffrement sécurisé conçu pour effectuer des opérations de chiffrement. Cette technologie est conçue pour fournir des fonctions de sécurité basées sur le matériel. La machine virtuelle Azure IoT Edge pour Linux sur Windows (EFLOW) n’a pas de TPM virtuel attaché. Toutefois, l’utilisateur peut activer ou désactiver la fonctionnalité de passthrough TPM, qui permet à la machine virtuelle EFLOW d’utiliser le module TPM du système d’exploitation hôte Windows. La fonctionnalité de passthrough TPM active deux scénarios principaux :

  • Utilisation de la technologie TPM pour l’approvisionnement d’appareils IoT Edge à l’aide du service Device Provisioning (DPS)
  • Accès en lecture seule aux clés de chiffrement stockées dans le module TPM.

Cet article explique comment développer un exemple de code en C# pour lire les clés de chiffrement stockées à l’intérieur du TPM de l’appareil.

Important

L’accès aux clés TPM est limité à l’accès en lecture seule. Si vous souhaitez écrire des clés dans le TPM, vous devez le faire à partir du système d’exploitation hôte Windows.

Prérequis

  • Système d’exploitation hôte Windows avec un TPM ou un vTPM (si vous utilisez une machine virtuelle avec un système d’exploitation hôte Windows).

  • Machine virtuelle EFLOW avec le passthrough TPM activé. À l’aide d’une session PowerShell avec élévation de privilèges, utilisez Set-EflowVmFeature -feature "DpsTpm" -enable pour activer le passthrough TPM. Pour plus d’informations, consultez Set-EflowVmFeature pour activer le passthrough TPM

  • Vérifiez que l’index NV (index par défaut=3001) est initialisé avec 8 octets de données. La valeur authValue par défaut utilisée par l’échantillon est {1,2,3,4,5,6,7,8} ce qui correspond à l’échantillon NV (Windows) dans les bibliothèques TSS.MSR lors de l’écriture dans le TPM. Toutes les initialisations d’index doivent intervenir sur l’hôte Windows avant de lire à partir de la machine virtuelle EFLOW. Pour plus d’informations sur les échantillons TPM, consultez TSS.MSR.

    Avertissement

    L’activation d’un passthrough TPM vers la machine virtuelle peut augmenter les risques de sécurité.

Créer l’exécutable dTPM

Les étapes suivantes montrent comment créer un échantillon d’exécutable pour accéder à un index TPM à partir de la machine virtuelle EFLOW. Pour plus d’informations sur le passthrough TPM EFLOW, consultez Sécurité d’Azure IoT Edge pour Linux sur Windows.

  1. Ouvrez Visual Studio 2019 ou 2022.

  2. Cliquez sur Créer un projet.

  3. Choisissez Application console dans la liste des modèles, puis sélectionnez Suivant.

    Visual Studio, Créer une solution

  4. Renseignez les champs Nom du projet, Emplacement et Nom de la solution, puis sélectionnez Suivant.

  5. Choisissez un framework cible. La dernière version, .NET 6.0 LTS, est préférée. Après avoir choisi un framework cible, sélectionnez Créer. Visual Studio crée une solution d’application console.

  6. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet, puis sélectionnez Gérer les packages NuGet.

  7. Sélectionnez Parcourir, puis recherchez Microsoft.TSS. Pour plus d’informations sur ce package, consultez Microsoft.TSS.

  8. Choisissez le package Microsoft.TSS dans la liste, puis sélectionnez Installer.

    Capture d’écran montrant Visual Studio ajouter des packages NuGet.

  9. Modifiez le fichier Program.cs et remplacez le contenu par l’exemple de code TPM EFLOW - Program.cs.

  10. Sélectionnez Générer>Générer la solution pour générer le projet. Vérifiez que la génération a réussi.

  11. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis sélectionnez Publier.

  12. Dans l’Assistant Publication, choisissez Dossier>Dossier. Sélectionnez Parcourir et choisissez un emplacement de sortie pour le fichier exécutable à générer. Sélectionnez Terminer. Une fois le profil de publication créé, sélectionnez Fermer.

  13. Sous l’onglet Publier, sélectionnez le lien Afficher tous les paramètres. Modifiez les configurations suivantes, puis sélectionnez Enregistrer.

    • Runtime cible : linux-x64.
    • Mode de déploiement : autonome.

    Capture d’écran montrant les options de publication.

  14. Sélectionnez Publier, puis attendez que l’exécutable soit créé.

Si la publication réussit, vous devriez voir les nouveaux fichiers créés dans votre dossier de sortie.

Copier et exécuter l’exécutable

Une fois le fichier exécutable et les fichiers de dépendance créés, vous devez copier le dossier sur la machine virtuelle EFLOW. Les étapes suivantes montrent comment copier tous les fichiers nécessaires et exécuter l’exécutable à l’intérieur de la machine virtuelle EFLOW.

  1. Démarrez une session PowerShell avec élévation de privilèges à l’aide de la commande Exécuter en tant qu’administrateur.

  2. Passez au dossier parent contenant les fichiers publiés. Par exemple, si vos fichiers publiés se trouvent sous le dossier TPM dans le répertoire C:\Users\User. Vous pouvez utiliser la commande suivante pour passer au dossier parent.

    cd "C:\Users\User"
    
  3. Créez un fichier tar avec tous les fichiers créés aux étapes précédentes. Par exemple, si vous avez tous vos fichiers sous le dossier TPM, vous pouvez utiliser la commande suivante pour créer le fichier TPM.tar.

     tar -cvzf TPM.tar ".\TPM"
    
  4. Une fois le fichier TPM.tar créé, utilisez la cmdlet Copy-EflowVmFile pour copier le fichier tar créé sur la machine virtuelle EFLOW. Par exemple, si vous avez le nom de fichier tarTPM.tar dans le répertoire C:\Users\User, vous pouvez utiliser la commande suivante pour le copier vers la machine virtuelle EFLOW.

    Copy-EflowVmFile -fromFile "C:\Users\User\TPM.tar" -toFile "/home/iotedge-user/" -pushFile
    
  5. Connectez-vous à la machine virtuelle EFLOW.

    Connect-EflowVm
    
  6. Passez au dossier dans lequel vous avez copié le fichier tar et vérifiez que le fichier est disponible. Si vous avez utilisé l’exemple ci-dessus, lorsque vous êtes connecté à la machine virtuelle EFLOW, vous êtes déjà dans le dossier racine iotedge-user. Exécutez la commande ls pour répertorier les fichiers et dossiers.

  7. Exécutez la commande suivante pour extraire tout le contenu du fichier tar.

    tar -xvzf TPM.tar
    
  8. Après l’extraction, vous devriez voir un nouveau dossier avec tous les fichiers TPM.

  9. Passez au dossier TPM.

    cd TPM
    
  10. Ajoutez l’autorisation d’exécutable au fichier exécutable principal. Par exemple, si le nom de votre projet était TPMRead, votre exécutable principal est nommé TPMRead. Exécutez la commande suivante pour le rendre exécutable.

    chmod +x TPMRead
    
  11. Pour résoudre un problème de globalisation ICU, exécutez la commande suivante. Par exemple, si le nom de votre projet est TPMTest, exécutez :

     sed -i '/"configProperties": /a \\t"System.Globalization.Invariant\": true,' TPMTest.runtimeconfig.json
    
  12. La dernière étape consiste à exécuter le fichier exécutable. Par exemple, si le nom de votre projet est TPMTest, exécutez la commande suivante :

    ./TPMTest
    

    Le résultat ressemble à ce qui suit.

    Capture d’écran montrant la sortie EFLOW dTPM.

Étapes suivantes