Planification des commandes

Planification des commandes

Les commandes peuvent être envoyées au SCT à partir de plusieurs contextes à tout moment. Toutefois, un module TPM physique ne peut traiter qu’une seule commande à la fois, et certaines commandes peuvent s’exécuter pendant une période significative. Lorsque plusieurs commandes sont en attente, le TBS décide de la commande à envoyer au TPM. Lorsqu’une commande est envoyée, une priorité est associée à chaque commande. Le SCT utilise ces priorités pour déterminer quelle commande en attente envoyer chaque fois que le module de plateforme sécurisée est gratuit. Les quatre niveaux de priorité sont bas, normal, élevé et système. Les applications doivent utiliser une priorité faible, normale ou élevée. Bien que les commandes à haute priorité soient généralement exécutées avant les commandes de faible priorité, le planificateur de commandes TBS a une stratégie vieillissante qui accorde finalement une priorité très élevée aux commandes qui ont été bloquées pendant des périodes de temps importantes.

Gestion du contexte

Lorsqu’une commande ContextSave TPM_SaveContext ou TPM2 est envoyée avec un handle virtuel à une ressource que le TBS gère, le TBS exécute la commande appropriée sur la ressource physique et retourne le résultat à l’appelant si la ressource est physiquement présente dans le TPM. Si la ressource n’est pas physiquement présente dans le module TPM, le prétraitement de la commande TPM_SaveContext ou TPM2_ContextSave entraîne le rechargement de la ressource, auquel cas le contexte est enregistré et retourné à l’appelant. Si la ressource en cours d’enregistrement est d’un type qui est normalement vidé automatiquement du module de plateforme sécurisée après l’enregistrement, le TBS invalide la ressource virtuelle à l’achèvement de cette commande. Lorsqu’une commande TPM_LoadContext ou TPM2_ContextLoad est envoyée au SCT, le SCT exécute la commande immédiatement. Si la commande se termine correctement, le TBS virtualise le handle de ressource et transmet le flux d’octets TPM résultant à l’appelant. Lorsqu’une commande TPM_FlushSpecific ou TPM2_FlushContext est envoyée avec un handle virtuel à une ressource que le SCT gère, le TBS exécute une commande TPM_FlushSpecific ou TPM2_FlushContext pour supprimer la ressource du module de plateforme sécurisée si elle est physiquement présente. Dans ce cas, le TBS invalide la ressource virtuelle et retourne le résultat de la commande flush à l’appelant. Si la ressource n’est pas physiquement présente dans le module TPM, le prétraitement de la commande TPM_FlushSpecific ou TPM2_FlushContext charge la ressource qui correspond au handle virtuel, mais elle est ensuite vidée lorsque la commande est réellement traitée. Le TBS ne prend pas en charge le TPM_KeyControlOwner bit ou la fonctionnalité keepHandle de l’opération TPM_LoadContext, de sorte qu’il ne donnera pas à une ressource le même handle qu’elle avait avant l’enregistrement du contexte.

Autres commandes

Les commandes qui ne sont pas mentionnées dans cette documentation sont traitées en remplaçant les handles de clé virtuelle par des handles de clés physiques (si nécessaire) et en les soumettant au module de plateforme sécurisée (TPM). Cette opération est effectuée après avoir effectué les opérations appropriées pour garantir que les ressources utilisées sont physiquement présentes sur le module de plateforme sécurisée. Aucun traitement spécial supplémentaire n’est effectué. Le TBS ne tente pas d’améliorer la fidélité de la virtualisation en modifiant les données transmises à partir du module de plateforme sécurisée dans le cadre d’une requête TPM_GetCapabilities ou TPM2_GetCapability. Le SCT prend également en charge les commandes de présence physique TCG. Le TBS fait office de pass-through pour les commandes de présence physique ; aucun traitement spécial n’est effectué par le SCT lui-même.

Nettoyage

Lorsqu’un contexte se ferme, toutes les ressources physiques et virtuelles qui lui sont associées sont nettoyées afin qu’elles ne consomment plus de ressources système.