Panoramica del COPP

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Ecco i passaggi di base che un'applicazione deve eseguire per l'uso del protocollo COPP (Certified Output Protection Protocol).

Ottenere la catena di certificati del driver

  1. Creare un grafico di riproduzione DirectShow che esegue il rendering del video usando il renderer di mix video (VMR-7 o VMR-9) o il filtro EVR ( Enhanced Video Renderer ).
  2. Eseguire una query su VMR per l'interfaccia IAMCertifiedOutputProtection .
  3. Chiamare IAMCertifiedOutputProtection::KeyExchange. Questo metodo restituisce un numero casuale a 128 bit dal driver, insieme a una catena di certificati contenente la chiave pubblica RSA a 2048 bit del driver.

Convalidare la catena di certificati

  1. Convalidare la catena di certificati. Se la catena di certificati non è valida, arrestare.
  2. Controllare l'elenco di revoche di certificati (CRL). Se uno dei certificati nella catena di certificati viene visualizzato nell'elenco di revoche, arrestarsi.
  3. Ottenere la chiave pubblica RSA dalla catena di certificati.

Inizializzare la sessione COPP

  1. Generare una chiave di sessione AES a 128 bit. Questa chiave viene usata per firmare i dati e per verificare che i dati firmati non siano stati manomessi.
  2. Generare due numeri casuali a 32 bit sicuri in modo crittografico. Il primo è un numero di sequenza di stato e il secondo è un numero di sequenza di comando. Ogni volta che l'applicazione invia un comando o una richiesta di stato, incrementa il numero di sequenza corrispondente e include questo numero nel comando o nei dati della richiesta COPP.
  3. Concatenare il numero casuale a 128 bit dal driver grafico, la chiave di sessione AES, il numero di sequenza di stato e il numero di sequenza di comando. Crittografare questa matrice di byte usando la chiave pubblica del driver e passare il risultato a IAMCertifiedOutputProtection::SessionSequenceStart.

Inviare comandi e richieste di stato COPP

  1. Eseguire una query per i tipi di protezione disponibili e altre informazioni chiamando IAMCertifiedOutputProtection::P rotectionStatus.
  2. Impostare i livelli di protezione desiderati chiamando IAMCertifiedOutputProtection::P rotectionCommand.
  3. Eseguire periodicamente una query per il livello di protezione locale corrente. Arrestare la riproduzione se il livello di protezione locale cambia in modo imprevisto o se viene rilevato un problema.

Uso del protocollo COPP (Certified Output Protection Protocol)