Attestation TPM
Cet article décrit les concepts impliqués lors de l’approvisionnement d’appareils à l’aide de l’attestation TPM (Trusted Platform Module) dans le service Device Provisioning (DPS). Cet article concerne toutes les personnes impliquées dans la préparation d’un appareil pour le déploiement.
Un module de plateforme sécurisée (TPM) est un type de module de sécurité matériel (HSM). Cet article part du principe que vous utilisez un module TPM discret, microprogramme ou intégré. Les TPM émulés par logiciel sont bien adaptés au prototypage ou aux tests, mais ils n'offrent pas le même niveau de sécurité que les TPM discrets, micrologiciels ou intégrés. Nous vous déconseillons d’utiliser des modules TPM logiciels en production.
Cet article concerne uniquement les appareils utilisant un TPM 2.0 avec la prise en charge de clé HMAC et leurs paires de clés de type EK. TPM est une norme ISO du secteur issue de Trusted Computing Group, et vous pouvez en apprendre davantage sur TPM en lisant la spécification TPM 2.0 complète ou la spécification ISO/IEC 11889. Cet article suppose également que vous connaissez les paires de clés publiques et privées, ainsi que la façon dont elles sont utilisées pour le chiffrement.
Les Kits de développement logiciel (SDK) d’appareil du service Device Provisioning gèrent pour vous tout ce qui est décrit dans cet article. Il n’est pas nécessaire d’implémenter la prise en charge du module TPM si vous utilisez les kits SDK sur vos appareils. Cet article vous aidera à comprendre, d’un point de vue conceptuel, ce qui se passe avec votre processeur de sécurité TPM lorsque votre appareil est approvisionné et pourquoi cette opération est si sécurisée.
Vue d’ensemble
Les TPM utilisent une paire de clés de type EK en tant que clé racine sécurisée de confiance. La paire de clés de type EK est unique au TPM et sa modification transforme l’appareil en un autre appareil.
Les modules TPM ont un autre type de clé appelé clé racine de stockage (SRK). Une clé racine de stockage peut être générée par le propriétaire du TPM après qu’il a pris possession du TPM. Prendre possession du TPM revient à dire « quelqu’un définit un mot de passe sur le HSM » en langage TPM. Si un appareil TPM est vendu à un autre propriétaire, celui-ci peut prendre possession du TPM pour générer une nouvelle clé racine de stockage. L’opération de génération d’une nouvelle clé racine de stockage permet de s’assurer que le propriétaire précédent ne peut pas utiliser le TPM. Étant donné que la clé racine de stockage est unique au propriétaire du TPM, elle peut être utilisée pour sceller des données dans le TPM lui-même pour ce propriétaire. La clé de stockage racine fournit un bac à sable au propriétaire pour qu’il stocke ses clés et propose une fonctionnalité de suppression de l’accès si l’appareil ou le TPM est vendu. C’est comme si vous emménagiez dans une nouvelle maison : en devenant propriétaire, vous changez les serrures et détruisez tous les meubles laissés par les anciens propriétaires (clé racine de stockage), mais vous ne pouvez pas changer l’adresse de la maison (paire de clés de type EK).
Une fois qu’un appareil est configuré, il dispose à la fois d’un EK et d’un SRK disponible pour une utilisation.
Les étapes spécifiques impliquées dans la prise en charge d’un module de plateforme sécurisée varient selon le fabricant, l’ensemble d’outils TPM utilisés et le système d’exploitation de l’appareil.
Le service Provisionnement des appareils utilise la partie publique de la paire de clés de type EK (EK_pub) pour identifier et inscrire des appareils. Le fournisseur de l’appareil peut lire la partie EK_pub pendant la fabrication ou le test final et charger la partie EK_pub dans le service d’approvisionnement de façon que l’appareil soit reconnu lorsqu’il se connecte pour l’approvisionnement. Le service Device Provisioning ne vérifie pas la clé racine de stockage ni le propriétaire. Par conséquent, le TPM efface les données clientes mais la paire de clés de type EK (et les autres données du fournisseur) est conservée et l’appareil sera toujours reconnu par le service Device Provisioning lorsqu’il se connecte pour l’approvisionnement.
Processus d’attestation
Lorsqu'un appareil doté d'un TPM se connecte au service Device Provisioning, le service vérifie d'abord l'EK_pub fourni par rapport à l'EK_pub stocké dans la liste d'inscription. Si le EK_pubs ne correspond pas, l’appareil n’est pas autorisé à provisionner. Si les parties EK_pub correspondent, le service demande à l’appareil de prouver qu’il possède la partie privée de la paire de clés EK via une stimulation nonce, qui permet de prouver l’identité de façon sécurisée. Le service Device Provisioning génère une valeur nonce, qui est ensuite chiffrée avec la clé racine de stockage et la partie EK_pub, qui sont fournies par l’appareil lors de l’appel d’inscription initial. Le TPM conserve toujours la partie privée de la paire de clés EK sécurisée. Cela permet d’éviter les contrefaçons et de s’assurer que les jetons SAP sont approvisionnés de façon sûre pour les appareils autorisés.
Nous allons étudier en détail le processus d’attestation.
L’appareil demande une affectation IoT Hub
Tout d’abord, l’appareil se connecte au service Device Provisioning et demande à être approvisionné. Ce faisant, l’appareil fournit au service son ID d’inscription, une étendue d’ID et les parties EK_pub et SRK_pub du TPM. Le service transmet la valeur once chiffrée à l’appareil et demande à l’appareil de déchiffrer cette valeur once et de l’utiliser pour signer un jeton SAP pour se connecter une fois de plus et terminer l’approvisionnement.
Stimulation nonce
L’appareil récupère la valeur nonce et utilise les parties privées de la paire de clés de type EK et de la clé racine de stockage pour déchiffrer la valeur nonce dans le TPM ; l’ordre du chiffrement nonce délègue la confiance de la paire de clés de type EK, qui est immuable, à la clé racine de stockage, qui peut être modifiée si une nouvelle personne prend possession du TPM.
Valider la valeur nonce et recevoir des informations d’identification
L’appareil peut ensuite signer un jeton SAP à l’aide de la valeur nonce déchiffrée et rétablir une connexion au service Device Provisioning en utilisant le jeton SAP signé. Une fois la stimulation nonce terminée, le service autorise l’approvisionnement de l’appareil.