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
- 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 ).
- Eseguire una query su VMR per l'interfaccia IAMCertifiedOutputProtection .
- 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
- Convalidare la catena di certificati. Se la catena di certificati non è valida, arrestare.
- Controllare l'elenco di revoche di certificati (CRL). Se uno dei certificati nella catena di certificati viene visualizzato nell'elenco di revoche, arrestarsi.
- Ottenere la chiave pubblica RSA dalla catena di certificati.
Inizializzare la sessione COPP
- 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.
- 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.
- 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
- Eseguire una query per i tipi di protezione disponibili e altre informazioni chiamando IAMCertifiedOutputProtection::P rotectionStatus.
- Impostare i livelli di protezione desiderati chiamando IAMCertifiedOutputProtection::P rotectionCommand.
- 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.
Argomenti correlati