OPM-Zertifikatsperrung

Ein OPM-Zertifikat (Output Protection Manager) kann von Microsoft widerrufen werden. Die Liste der widerrufenen Zertifikate wird in einer globalen Sperrliste (GRL) gespeichert. Die GRL hat das folgende Format:

`Section` BESCHREIBUNG
Header Eine GRL_HEADER-Struktur .
Core Enthält die folgenden Sperrlisten:
  • Binäre Kernelsperrungen
  • Binäre Sperrungen im Benutzermodus
  • Zertifikatsperrungen
  • Vertrauenswürdige Wurzeln (reserviert)
Die Liste der vertrauenswürdigen Stammstämme wird derzeit nicht verwendet und ist für die zukünftige Verwendung reserviert.
Erweiterbare Einträge Enthält informationen, die von anderen Komponenten verwendet werden. Dieser Abschnitt ist für OPM nicht relevant.
Erneuerungen: Enthält GUIDs, die Windows Update Bezeichner definieren. Dieser Abschnitt enthält Bezeichner für die folgenden Listen:
  • Binäre Kernelsperrungen
  • Binäre Sperrungen im Benutzermodus
  • Zertifikatsperrungen
Eine Anwendung kann diese Bezeichner verwenden, um eine erneuerte Version einer widerrufenen Binärdatei anzufordern, sofern eine verfügbar ist.
Signatur: Core-Abschnitt Signiert die Header- und Kernabschnitte.
Signatur: Erweiterbarer Abschnitt Signiert den Header und die erweiterbaren Abschnitte.

 

Der GRL-Header ist eine GRL_HEADER-Struktur . Der dwSequenceNumber-Member der -Struktur enthält die GRL-Versionsnummer. Diese Zahl wird erhöht, wenn die GRL aktualisiert wird und eine neue Version auf dem Computer des Benutzers platziert wird.

Widerrufene OPM-Zertifikate sind in der Zertifikatsperrliste des Abschnitts Core aufgeführt. Jeder Core-Eintrag in der GRL ist ein 20-Byte-Array, das den SHA-1-Hash des öffentlichen Schlüssels des widerrufenen Zertifikats enthält.

Die Abschnitte Signatur enthalten Signaturen, die verwendet werden können, um zu überprüfen, ob die GRL nicht manipuliert wurde. Jeder Signaturabschnitt enthält die Struktur am MF_SIGNATURE . Die erste Signatur signiert den Header plus den Abschnitt Core. Die zweite Signatur signiert den Header und den Abschnitt Extensible; diese Signatur ist für OPM nicht relevant.

Um sicherzustellen, dass die GRL selbst nicht manipuliert wurde, überprüfen Sie die Signatur wie folgt:

  1. Suchen Sie den Anfang der MF_SIGNATURE-Struktur . Die Position der MF_SIGNATURE-Struktur wird im cbSignatureCoreOffset-Element der GRL_HEADER-Struktur angegeben. Der Speicherort wird als Offset in Bytes ab dem Anfang der GRL angegeben.
  2. Analysieren Sie die MF_SIGNATURE-Struktur als PKCS #7-Signatur mit einer Zertifikatkette.
  3. Überprüfen Sie die Zertifikatkette bis zu einem vertrauenswürdigen Stamm.
  4. Stellen Sie sicher, dass das Blattzertifikat in der EKU über den folgenden Objektbezeichner verfügt: "1.3.6.1.4.1.311.10.5.4".
  5. Berechnen Sie einen Hash der Bytes, die den Header und die Kernabschnitte der GRL enthalten.
  6. Stellen Sie sicher, dass der Hash mit der Signatur im Blattzertifikat übereinstimmt.

Ausgabeschutz-Manager

GRL_HEADER

MF_SIGNATURE