Révocation de certificats OPM

Un certificat OPM (Output Protection Manager) peut être révoqué par Microsoft. La liste des certificats révoqués est stockée dans une liste de révocation globale (GRL). Le GRL a le format suivant :

Section Description
En-tête Structure GRL_HEADER .
Core Contient les listes de révocation suivantes :
  • Révocations binaires du noyau
  • Révocations binaires en mode utilisateur
  • Révocations de certificats
  • Racines approuvées (réservées)
La liste des racines approuvées n’est actuellement pas utilisée et est réservée à une utilisation ultérieure.
Entrées extensibles Contient des informations utilisées par d’autres composants. Cette section n’est pas pertinente pour OPM.
Renouvellements: Contient des GUID qui définissent Windows Update identificateurs. Cette section contient les identificateurs des listes suivantes :
  • Révocations binaires du noyau
  • Révocations binaires en mode utilisateur
  • Révocations de certificats
Une application peut utiliser ces identificateurs pour demander une version renouvelée d’un fichier binaire révoqué, le cas échéant.
Signature : section Principale Signe les sections d’en-tête et de base.
Signature : section Extensible Signe l’en-tête et les sections extensibles.

 

L’en-tête GRL est une structure GRL_HEADER . Le membre dwSequenceNumber de la structure contient le numéro de version GRL. Ce nombre est incrémenté chaque fois que le GRL est mis à jour et qu’une nouvelle version est placée sur l’ordinateur de l’utilisateur.

Les certificats OPM révoqués sont répertoriés dans la liste des révocations de certificats de la section Core. Chaque entrée Core dans le GRL est un tableau de 20 octets qui contient le hachage SHA-1 de la clé publique du certificat révoqué.

Les sections Signature contiennent des signatures qui peuvent être utilisées pour vérifier que le GRL n’a pas été falsifié. Chaque section Signature contient am MF_SIGNATURE structure. La première signature signe l’en-tête plus la section Core. La deuxième signature signe l’en-tête plus la section Extensible ; cette signature n’est pas pertinente pour OPM.

Pour vous assurer que le GRL lui-même n’a pas été falsifié, vérifiez la signature comme suit :

  1. Recherchez le début de la structure MF_SIGNATURE . L’emplacement de la structure MF_SIGNATURE est indiqué dans le membre cbSignatureCoreOffset de la structure GRL_HEADER . L’emplacement est spécifié sous la forme d’un décalage en octets à partir du début du GRL.
  2. Analysez la structure MF_SIGNATURE en tant que signature PKCS #7 avec une chaîne de certificats.
  3. Vérifiez la chaîne de certificats jusqu’à une racine approuvée.
  4. Vérifiez que le certificat feuille possède l’identificateur d’objet suivant dans la référence EKU : « 1.3.6.1.4.1.311.10.5.4 ».
  5. Calculez un hachage des octets qui incluent l’en-tête et les sections principales du GRL.
  6. Vérifiez que le hachage correspond à la signature dans le certificat feuille.

Gestionnaire de protection de sortie

GRL_HEADER

MF_SIGNATURE