Freigeben über


Übersicht über COPP

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Hier sind die grundlegenden Schritte, die eine Anwendung ausführen muss, um das Certified Output Protection Protocol (COPP) zu verwenden.

Abrufen der Zertifikatkette des Treibers

  1. Erstellen Sie ein DirectShow-Wiedergabediagramm, das Videos mit dem Videomischrenderer (VMR-7 oder VMR-9) oder dem Erweiterten Videorenderer-Filter (EVR) rendert.
  2. Fragen Sie den VMR für die IAMCertifiedOutputProtection-Schnittstelle ab.
  3. Rufen Sie IAMCertifiedOutputProtection::KeyExchange auf. Diese Methode gibt eine 128-Bit-Zufallszahl vom Treiber zusammen mit einer Zertifikatkette zurück, die den öffentlichen 2048-Bit-RSA-Schlüssel des Treibers enthält.

Überprüfen der Zertifikatkette

  1. Überprüfen Sie die Zertifikatkette. Wenn die Zertifikatkette ungültig ist, beenden Sie.
  2. Überprüfen Sie die Zertifikatsperrliste (Certificate Revocation List, CRL). Wenn eines der Zertifikate in der Zertifikatkette in der Sperrliste angezeigt wird, beenden Sie.
  3. Rufen Sie den öffentlichen RSA-Schlüssel aus der Zertifikatkette ab.

Initialisieren der COPP-Sitzung

  1. Generieren Sie einen 128-Bit-AES-Sitzungsschlüssel. Dieser Schlüssel wird verwendet, um Daten zu signieren und zu überprüfen, ob signierte Daten nicht manipuliert wurden.
  2. Generieren Sie zwei kryptografisch sichere 32-Bit-Zufallszahlen. Die erste ist eine status Sequenznummer, und die zweite ist eine Befehlssequenznummer. Jedes Mal, wenn die Anwendung einen Befehl oder status Anforderung sendet, erhöht sie die entsprechende Sequenznummer und schließt diese Zahl in den COPP-Befehl oder die Anforderungsdaten ein.
  3. Verketten Sie die 128-Bit-Zufallszahl aus dem Grafiktreiber, den AES-Sitzungsschlüssel, die status Sequenznummer und die Befehlssequenznummer. Verschlüsseln Sie dieses Bytearray mithilfe des öffentlichen Schlüssels des Treibers, und übergeben Sie das Ergebnis an IAMCertifiedOutputProtection::SessionSequenceStart.

Senden von COPP-Befehlen und Statusanforderungen

  1. Fragen Sie die verfügbaren Schutztypen und andere Informationen ab, indem Sie IAMCertifiedOutputProtection::P rotectionStatus aufrufen.
  2. Legen Sie die gewünschten Schutzstufen fest, indem Sie IAMCertifiedOutputProtection::P rotectionCommand aufrufen.
  3. Fragen Sie in regelmäßigen Abständen nach der aktuellen lokalen Schutzebene ab. Beenden Sie die Wiedergabe, wenn sich die lokale Schutzebene unerwartet ändert oder ein Problem erkannt wird.

Verwenden des Certified Output Protection Protocol (COPP)