Revoca dei certificati OPM

Un certificato OPM (Output Protection Manager) può essere revocato da Microsoft. L'elenco dei certificati revocati viene archiviato in un elenco di revoche globale (GRL). GrL ha il formato seguente:

Sezione Descrizione
Intestazione Struttura GRL_HEADER .
Core Contiene gli elenchi di revoche seguenti:
  • Revoche binarie del kernel
  • Revoche binarie in modalità utente
  • Revoche di certificati
  • Radici attendibili (riservate)
L'elenco delle radici attendibili attualmente non viene usato ed è riservato per l'uso futuro.
Voci estendibili Contiene informazioni usate da altri componenti. Questa sezione non è pertinente a OPM.
Rinnovi: Contiene GUID che definiscono identificatori di Windows Update. Questa sezione contiene identificatori per gli elenchi seguenti:
  • Revoche binarie del kernel
  • Revoche binarie in modalità utente
  • Revoche di certificati
Un'applicazione può usare questi identificatori per richiedere una versione rinnovata di un binario revocato, se disponibile.
Firma: sezione Core Firma le sezioni intestazione e core.
Firma: sezione Estendibile Firma l'intestazione e le sezioni estendibili.

 

L'intestazione GRL è una struttura GRL_HEADER . Il membro dwSequenceNumber della struttura contiene il numero di versione GRL. Questo numero viene incrementato ogni volta che il grL viene aggiornato e una nuova versione inserita nel computer dell'utente.

I certificati OPM revocati sono elencati nell'elenco delle revoche di certificati della sezione Core. Ogni voce Core nel grL è una matrice a 20 byte che contiene l'hash SHA-1 della chiave pubblica del certificato revocato.

Le sezioni Firma contengono firme che possono essere usate per verificare che il grL non sia stato manomesso. Ogni sezione Firma contiene MF_SIGNATURE struttura. La prima firma firma firma l'intestazione più la sezione Core. La seconda firma firma firma l'intestazione più la sezione Estendibile; questa firma non è rilevante per OPM.

Per assicurarsi che il grL stesso non sia stato manomesso, verificare la firma come indicato di seguito:

  1. Trovare l'inizio della struttura MF_SIGNATURE . La posizione della struttura MF_SIGNATURE viene specificata nel membro cbSignatureCoreOffset della struttura GRL_HEADER . Il percorso viene specificato come offset in byte dall'inizio della grL.
  2. Analizzare la struttura MF_SIGNATURE come firma PKCS #7 con una catena di certificati.
  3. Verificare la catena di certificati fino a una radice attendibile.
  4. Verificare che il certificato foglia abbia l'identificatore di oggetto seguente nell'EKU: "1.3.6.1.4.1.311.10.5.4".
  5. Calcolare un hash dei byte che includono l'intestazione e le sezioni principali del grL.
  6. Verificare che l'hash corrisponda alla firma nel certificato foglia.

Output Protection Manager

GRL_HEADER

MF_SIGNATURE