Revogação de certificado OPM

Um certificado do OPM (Gerenciador de Proteção de Saída) pode ser revogado pela Microsoft. A lista de certificados revogados é armazenada em uma GRL (lista de revogação global). O GRL tem o seguinte formato:

Seção Descrição
Cabeçalho Uma estrutura GRL_HEADER .
Núcleo Contém as seguintes listas de revogação:
  • Revogações binárias de kernel
  • Revogações binárias no modo de usuário
  • Revogações de certificado
  • Raízes confiáveis (reservadas)
Atualmente, a lista de raízes confiáveis não é usada e está reservada para uso futuro.
Entradas extensíveis Contém informações usadas por outros componentes. Esta seção não é relevante para o OPM.
Renovações: Contém GUIDs que definem identificadores Windows Update. Esta seção contém identificadores para as seguintes listas:
  • Revogações binárias de kernel
  • Revogações binárias no modo de usuário
  • Revogações de certificado
Um aplicativo pode usar esses identificadores para solicitar uma versão renovada de um binário revogado, se houver um disponível.
Assinatura: seção Core Assina as seções de cabeçalho e núcleo.
Assinatura: seção Extensível Assina o cabeçalho e as seções extensíveis.

 

O cabeçalho GRL é uma estrutura GRL_HEADER . O membro dwSequenceNumber da estrutura contém o número de versão GRL. Esse número é incrementado sempre que o GRL é atualizado e uma nova versão colocada no computador do usuário.

Os certificados OPM revogados estão listados na lista de revogações de certificado da seção Core. Cada entrada Core no GRL é uma matriz de 20 bytes que contém o hash SHA-1 da chave pública do certificado revogado.

As seções Assinatura contêm assinaturas que podem ser usadas para verificar se o GRL não foi adulterado. Cada seção Signature contém a estrutura am MF_SIGNATURE . A primeira assinatura assina o cabeçalho mais a seção Core. A segunda assinatura assina o cabeçalho mais a seção Extensible; essa assinatura não é relevante para o OPM.

Para garantir que o GRL em si não tenha sido adulterado, verifique a assinatura da seguinte maneira:

  1. Localize o início da estrutura MF_SIGNATURE . O local da estrutura MF_SIGNATURE é fornecido no membro cbSignatureCoreOffset da estrutura GRL_HEADER . O local é especificado como um deslocamento em bytes desde o início do GRL.
  2. Analise a estrutura MF_SIGNATURE como uma assinatura PKCS nº 7 com uma cadeia de certificados.
  3. Verifique se o certificado é encadeado até uma raiz confiável.
  4. Verifique se o certificado folha tem o seguinte identificador de objeto no EKU: "1.3.6.1.4.1.311.10.5.4".
  5. Compute um hash dos bytes que incluem o cabeçalho e as seções principais do GRL.
  6. Verifique se o hash corresponde à assinatura no certificado folha.

Gerenciador de Proteção de Saída

GRL_HEADER

MF_SIGNATURE