Condividi tramite


Crittografia contenuto PlayReady

Questo argomento offre una panoramica degli algoritmi di crittografia usati per proteggere il contenuto nell'ecosistema PlayReady.

Nota

Vedere Glossario per i termini e le definizioni di crittografia.

Nozioni di base sulla crittografia

La crittografia della chiave simmetrica è il tipo più semplice di crittografia. Con la crittografia della chiave simmetrica, la stessa chiave viene usata per crittografare il contenuto e decrittografarlo. Gli algoritmi chiave simmetrica sono in genere piccoli e veloci. In genere, la maggior parte di qualsiasi attività di crittografia viene gestita da una forma di crittografia della chiave simmetrica.

La crittografia della chiave pubblica, al contrario, usa una chiave pubblica pubblicata per crittografare e una chiave privata diversa e privata per decrittografare. Pertanto, se l'utente "A" fornisce all'utente "B" una chiave pubblica, B può crittografare il contenuto per A senza altre informazioni. Indipendentemente dal modo in cui il contenuto viene trasmesso, solo A sarà in grado di leggerlo. Gli intercettori di contenuto non dispongono della chiave privata (chiave privata) e non sono in grado di decrittografare il messaggio. Poiché la chiave pubblica è resa apertamente disponibile, chiunque può crittografare per A, ma solo A può decrittografare. La crittografia della chiave pubblica richiede algoritmi complessi per il calcolo.

La crittografia della curva ellittica (ECC) è un algoritmo di crittografia della chiave pubblica usato per crittografare e decrittografare il contenuto. È una funzione complessa di calcolo che descrive una curva ellittica. I componenti di questo algoritmo vengono condivisi come chiave pubblica. Altri componenti, usati per la decrittografia, formano la chiave privata.

Codici di autenticazione a una chiave (OMAC) è un codice di autenticazione dei messaggi costruito da una crittografia a blocchi. Esistono due algoritmi OMAC, OMAC1 e OMAC2.

I certificati vengono usati per garantire l'autenticità per le entità che non sono attendibili. Il mittente di un certificato firma il nome (identificatore del dispositivo) usando la chiave privata. Il destinatario del certificato verifica quindi la firma del certificato con la chiave pubblica del mittente per garantire l'identità del mittente. Poiché il mittente è l'unico proprietario della chiave privata, è difficile creare una chiave privata data una chiave pubblica e il certificato non verrà verificato correttamente a meno che non sia firmato con la chiave privata; in questo caso, si presuppone che l'origine dati sia corretta e la comunicazione certificata sia sicura.

Algoritmi di crittografia PlayReady

Algoritmi simmetrici

Sono supportate le modalità di crittografia AES seguenti:

  • Modalità CTR AES 128 : i sistemi PlayReady possono proteggere i file e i flussi in cui gli esempi vengono crittografati in modo completo o in cui vengono crittografati solo un modello degli esempi, in modalità CTR dell'operazione. Queste includono le modalità di crittografia comuni "cenc" (Common Encryption Scheme) e 'cens' (Common Encryption Scheme usando un modello di byte non crittografati/crittografati), definite in ISO/IEC 23001-7.

  • Modalità AES 128 CBC : i sistemi PlayReady a partire dalla versione 4.0 possono proteggere i file e i flussi completamente o parzialmente crittografati con una chiave di contenuto AES 128, in modalità CBC dell'operazione. Queste includono le modalità di crittografia comuni "cbc1" e "cbcs" come definito in ISO/IEC 23001-7 e qualsiasi altro formato crittografato con una chiave di contenuto AES 128 in modalità CBC.

Nota

I sistemi PlayReady con la versione 1.X, 2.X e 3.X possono proteggere solo i file crittografati in modalità CTR (modalità di crittografia comune 'cenc'). 'cens' non è supportato. I sistemi PlayReady con la versione 4.0 e versioni successive possono proteggere i file crittografati in modalità CTR (modalità di crittografia comuni 'cenc') e in modalità CBC (modalità di crittografia comuni 'cbcs'). Le altre modalità 'cens' e 'cbc1' non sono supportate.

Algoritmi ECC

Microsoft PlayReady sistemi usano la crittografia ecc (crittografia curva ellittica) per crittografare le chiavi di contenuto e firmare i messaggi del protocollo.

  • Algoritmo ECC ElGamal : usato per le chiavi di contenuto crittografate.
  • ECDSA (algoritmo di firma digitale curva elliptica): usato per firmare i messaggi ovunque applicabile nei protocolli PlayReady.
  • NIST : Microsoft PlayReady sistemi usano algoritmi NIST standard per la crittografia ECC, se applicabile ed è attualmente in uso la curva ellitica P-256.

Algoritmi di firma

Per le licenze di firma, le chiavi temporanee o i dati, i sistemi PlayReady usano AES OMAC1, equivalente a CMAC (Codice di autenticazione dei messaggi basati sulla crittografia) e diventano una raccomandazione NIST nel maggio 2005. Le chiavi vengono generate in modo casuale, ma i dati vengono hashati con SHA256 e quindi l'hash viene firmato con ECC256.

Considerazioni sul runtime e sulle prestazioni

Quando viene attivata la riproduzione del contenuto, il client PlayReady deve eseguire alcuni passaggi prima che la riproduzione iniziale possa iniziare. Ciò include la ricerca di una licenza, un'associazione o l'interpretazione della licenza, la decrittografia della chiave di contenuto e infine la preparazione per decrittografare il contenuto. Lo stack di client PlayReady richiede tempo per associare una licenza a una parte di contenuto e questa operazione è necessaria prima di avviare la decrittografia e il rendering del contenuto. Ciò significa che il tempo di associazione di una licenza influisce sul tempo per il primo fotogramma quando si avvia una riproduzione o il divario tra le tracce. Lo sviluppatore client e lo sviluppatore di applicazioni potrebbe voler considerare l'ottimizzazione del codice per i problemi di runtime e prestazioni, per ridurre il tempo al primo frame e consentire la riproduzione senza lacune.

I contenitori protetti usano la crittografia della chiave simmetrica per crittografare la maggior parte del contenuto. Tuttavia, la crittografia della chiave pubblica viene usata all'interno della licenza. Questa operazione è dovuta al fatto che la licenza contiene la chiave simmetrica del contenuto e il server usa la chiave pubblica del client per crittografare la chiave simmetrica del contenuto.

Quando è il momento di decrittografare il contenuto, la chiave privata del client viene usata per decrittografare la chiave simmetrica dalla licenza. Solo il client a cui è associata la licenza può estrarre la chiave simmetrica.

La decrittografia della chiave privata è più intensamente computazionale, rispetto alla decrittografia simmetrica; pertanto, interpretare la licenza è intensivo di calcolo. Dopo aver gestito correttamente la licenza, la chiave simmetrica viene decrittografata e il contenuto può essere decrittografato usando algoritmi piccoli e veloci.

Per le applicazioni o i dispositivi vincolati alle risorse, l'avvio richiede tempo e risorse significative. Al termine, tuttavia, le risorse vengono liberate, la decrittografia può procedere in modo efficiente e sono necessari alcuni cicli di CPU o risorse di sistema.