Condividi tramite


Novità di PlayReady versione 4.5

Questa pagina contiene una panoramica delle modifiche più significative tra PlayReady versione 4.4 e PlayReady versione 4.5.

Modifiche generali in PlayReady versione 4.5

Sfidare la crittografia con il certificato di distribuzione del server PlayReady

Nelle versioni precedenti di PlayReady, l'acquisizione delle licenze e altre sfide client sono sempre crittografate con una chiave pubblica fissa. A partire da PlayReady 4.5, un client codificato per comunicare solo a un server di supporto potrebbe invece risolvere i problemi relativi alla privacy con il certificato di distribuzione del server PlayReady rilasciato al licenziatario del server da Microsoft. PlayReady Server SDK decrittografa quindi la sfida con la chiave privata corrispondente, passata all'applicazione PlayReady Server SDK anziché una chiave privata fissa.

Ora del server licenze

Nelle versioni precedenti di PlayReady, l'uso della funzionalità Secure Time richiede in genere all'applicazione client di comunicare con un server di tempo sicuro separato per ottenere l'ora usata per impostare il proprio orologio locale. A partire da PlayReady 4.5, un client codificato per comunicare solo a un server di supporto può invece usare un tempo fornito dall'SDK del server PlayReady durante l'acquisizione della licenza. Per altre informazioni, vedere Orologio attendibile PlayReady.

Exchange chiave

Usando il protocollo di acquisizione delle licenze, un client PlayReady e un server possono ora scambiare chiavi arbitrarie che possono essere usate per crittografare, decrittografare, firmare e verificare i dati forniti dall'applicazione arbitraria in cui le chiavi stesse sono protette tramite PlayReady. Quando il client è SL3000, le chiavi stesse sono protette dall'ambiente di esecuzione attendibile. Per altre informazioni, vedere PlayReady Key Exchange.

Criteri di filigrana

La funzionalità è stata aggiunta per semplificare l'uso della restrizione esplicita dell'output video digitale esplicito come definito dalle regole di conformità PlayReady.

Modifiche in PlayReady Server SDK versione 4.5

Modifiche generali del server

Le licenze chiave Exchange possono essere usate per fornire chiavi arbitrarie a un client durante l'acquisizione della licenza.

Se fornito dal client, le tecnologie di filigrana supportate vengono esposte all'applicazione PlayReady Server SDK. In questo modo viene semplificato l'uso della restrizione di output video digitale esplicito di segnalazione esplicita, come definito dalle regole di conformità PlayReady.

Modifiche alla documentazione dell'API server

La nuova documentazione dell'API server per la versione .NET Standard di PlayReady Server SDK è stata creata e pubblicata. Microsoft consiglia di eseguire la migrazione a .NET Standard SDK.

La documentazione dell'API server nel file PlayReady.chm incluso nel Pacchetto di documentazione PlayReady si applica solo alla versione legacy di .NET Framework dell'SDK del server PlayReady. Questa documentazione è ora considerata deprecata, non è stata aggiornata da PlayReady 4.0 e non riceverà aggiornamenti futuri.

La maggior parte delle API nei due SDK è identica, pertanto la documentazione di .NET Standard deve essere sufficiente per la maggior parte dei fini. Esistono tuttavia alcune differenze significative in cui le classi, le interfacce e i metodi differiscono.

Ecco le differenze generali tra i due SDK.

  1. .NET Standard SDK usa interfacce in molte posizioni in cui .NET Framework SDK usa classi.

  2. Le interfacce del gestore sdk .NET Standard implementate dall'applicazione usano metodi asincroni in cui .NET Framework SDK usa metodi sincroni. Pertanto, i nomi API dell'interfaccia dell'SDK .Net Standard terminano con la parola "Async" e restituiscono una classe Task<anziché una classe semplicemente (dove la classe> è specifica del metodo dell'interfaccia del gestore).

  3. .NET Standard SDK è agnostico. Di conseguenza, nessun contesto HTTP viene fornito direttamente all'applicazione. Quando si usa ASP.NET Core, vedere la documentazione di ASP.NET Core, in particolare l'interfaccia IHttpContextAccessor.

  4. .NET Standard SDK non supporta il protocollo di contenuto per la creazione di pacchetti, ad esempio IPackagingDataAcquisitionHandler non esiste. Questa funzionalità verrà ripristinata in PlayReady 4.6.

Ecco un elenco completo delle differenze specifiche a partire da PlayReady 4.5. Questo elenco non include funzionalità esistenti solo nell'SDK .NET Standard né elenca tutte le classi di creazione di pacchetti rimosse che verranno ripristinate.

 

Classe o interfaccia di .NET Framework Equivalente di .NET Standard Differenze
Classe ProtocolChallengeContext Interfaccia IProtocolChallengeContext La proprietà HttpRequest Request esiste solo in .NET Framework SDK, come illustrato in precedenza.
Classe ProtocolChallenge Interfaccia IProtocolChallenge Nessuno.
Interfaccia IDeleteLicenseHandler Uguale ProcessDeleteLicenseDataAsync è sincrono in .NET Framework SDK, come illustrato in precedenza.
Classe DeleteLicenseDataChallenge Interfaccia IDeleteLicenseDataChallenge Nessuno.
Interfaccia IDomainHandler Uguale HandleJoinDomainAsync e HandleLeaveDomainAsync sono sincroni in .NET Framework SDK, come illustrato in precedenza.
Classe JoinDomainChallenge Interfacce IDomainChallenge e IJoinDomainChallenge Il metodo static JoinDomainChallenge.GenerateDomainKeyPair non esiste nell'SDK .NET Standard. La perdita di questa funzionalità è un bug che verrà risolto in PlayReady 4.6 aggiungendolo come metodo statico a DomainCertificateBuilder.
Classe LeaveDomainChallenge Interfaccia ILeaveDomainChallenge Nessuno.
Interfaccia ILicenseAcknowledgementHandler Uguale HandleLicenseAcknowledgementAsync è sincrono in .NET Framework SDK, come illustrato in precedenza.
Classe LicenseAcknowledgementChallenge Interfaccia ILicenseAcknowledgementChallenge Nessuno.
Interfaccia ILicenseAcquisitionHandler Uguale HandleLicenseAcquisitionAsync è sincrono nell'SDK di .NET Framework come illustrato in precedenza.
Classe LicenseChallenge Interfaccia ILicenseChallenge Nessuno.
Interfaccia IMeteringHandler Uguale GetMeteringCertificateAsync e ProcessMeteringDataAsync sono sincroni in .NET Framework SDK, come illustrato in precedenza.
Classe MeteringCertificateChallenge Interfaccia IMeteringCertificateChallenge Nessuno.
Classe ProcessMeteringDataChallenge Interfaccia IProcessMeteringDataChallenge Nessuno.
Interfaccia ISecureStopHandler Uguale ProcessSecureStopDataAsync è sincrono in .NET Framework SDK, come illustrato in precedenza.
Classe SecureStopDataChallenge Interfaccia ISecureStopDataChallenge L'overload del metodo GetSecureStopData che accetta un gestore ISecureStop2Handler esiste solo in .NET Framework SDK. .NET Standard SDK carica invece questo gestore come qualsiasi altro.
Interfaccia ISecureStopHandler2 Uguale GetSecureStop2AESKeyAsync è sincrono in .NET Framework SDK, come illustrato in precedenza.
Classe PlayReadyServerAuthorization Uguale I metodi della classe sono statici nell'SDK di .NET Framework e nell'istanza di .NET Standard SDK.

Modifiche all'API server

Si tratta semplicemente di una panoramica. Per altre informazioni, vedere la documentazione dell'API server .

Il metodo LicenseResponse.GetLicenses restituisce ora una matrice vuota anziché null quando non sono state aggiunte licenze.

Sono state aggiunte le classi e le enumerazioni seguenti.

  • Classe AdvancedLicense (astratta, eredita da License): un subset di proprietà e metodi esistenti di MediaLicense è stato spostato in questa classe e MediaLicense eredita ora da AbstractLicense. Non sono necessarie modifiche all'applicazione per l'uso di MediaLicense.
  • Classe KeyExchangeLicense (eredita da AdvancedLicense): usata per creare licenze che forniscono chiavi arbitrarie a un client durante l'acquisizione della licenza.
  • Classe KeyExchangeRight (eredita da Right): utilizzata per specificare la chiave e il relativo utilizzo consentito a una licenza KeyExchange.
  • Enumerazione keyExchangeAlgorithm: utilizzata per specificare l'utilizzo consentito per una chiave in una licenza keyExchange.
  • Classe WatermarkVendor: utilizzata per esporre le tecnologie di filigrana supportate del client all'applicazione.
  • Classe LicenseServerTimeCertificate: utilizzata per contenere il certificato per firmare il tempo del server di licenza restituito nella risposta di acquisizione delle licenze.

I seguenti sono stati aggiunti a singole classi.

  • La classe PlayReadyHeader espone se l'intestazione indica il supporto per le chiavi per flusso e se richiede in modo esplicito una licenza o meno.
  • L'enumerazione ContentKeyType aggiunge il valore KeyExchange.
  • La classe Certificate aggiunge proprietà della matrice di byte che esponeno la chiave pubblica del digest e dell'autorità di certificazione del certificato.
  • La classe License aggiunge una proprietà guid che espone l'ID univoco della licenza e una proprietà IEnumerable<Right> per restituire i diritti aggiunti alla licenza.
  • L'enumerazione LicenseChallengeTeeAPIs aggiunge valori per tutte le nuove API PK 4.5 TEE.
  • L'enumerazione LicenseChallengeReeFeatures aggiunge valori per LicenseServerTime e KeyExchange.
  • La classe LicenseChallenge aggiunge l'elenco di KeyExchangeAlgorithms supportato dal client, il client WatermarkVendors supporta, le versioni PK del TEE del client e REE (che potrebbero o meno essere uguali) e se il client richiede l'oggetto LicenseServerTime corrente.
  • La classe LicenseResponse aggiunge una proprietà LicenseServerTimeCertificate per impostare il certificato usato per firmare l'ora del server di licenza restituita nella risposta di acquisizione delle licenze.
  • La classe ExplicitOutputRestrictionsConstants aggiunge costanti per Watermark e InternalScreenOnly. Per altre informazioni su questi guid, vedere le regole di conformità PlayReady.

Modifiche apportate a PlayReady Device Porting Kit versione 4.5

Modifiche generali del Kit di conversione dei dispositivi

  • L'intero Kit di conversione del dispositivo PlayReady è stato aggiornato a Microsoft Source Code Annotation Language (SAL) 2.0.
  • Alcuni percorsi di codice non supportati vengono rimossi solo nelle implementazioni interne di Microsoft per eliminare confusione e ridurre i tempi di compilazione e le dimensioni binarie. Altri miglioramenti in questa area dovrebbero essere inclusi nelle versioni future.
  • Se supportato dal compilatore sottostante e dall'architettura del computer, è ora possibile usare tipi integer a 128 bit nativi per accelerare l'implementazione predefinita di ECC256.
  • È stata aggiunta un'implementazione predefinita dell'algoritmo HMAC SHA256.

Modifiche all'API Device Porting Kit

Si tratta semplicemente di una panoramica. Per altre informazioni, vedere la documentazione dell'API fornita nei commenti di codice associati in PlayReady Device Porting Kit .

DRM_CDMI_SetServercertificate è ora consentito chiamare con un certificato di distribuzione del server PlayReady per l'acquisizione delle licenze di crittografia della privacy e altre sfide client. La funzione inoltra a Drm_AppContext_SetProperty in questo scenario. L'utilizzo esistente rimane così come è.

Sono state aggiunte le funzioni pubbliche seguenti:

  • Drm_AppContext_SetProperty
  • Drm_KeyExchange_Prepare
  • Drm_KeyExchange_Perform
  • Drm_KeyExchange_Close

Sono state aggiunte le strutture seguenti:

  • DRM_DGP_REE_FEATURE_LIST_4_5
  • DRM_DGP_TEE_API_LIST_4_5

Sono state aggiunte le API TEE seguenti:

  • DRM_TEE_BASE_GetSystemTime2
  • DRM_TEE_LICPREP_PackageKey2
  • DRM_TEE_LICENSESERVERTIME_ProcessResponseData
  • DRM_TEE_DECRYPT_PrepareToDecrypt2
  • DRM_TEE_LICGEN_CompleteLicense2
  • DRM_TEE_KEYEXCHANGE_Prepare
  • DRM_TEE_KEYEXCHANGE_Perform

Sono state aggiunte le API TEE OEM seguenti:

  • OEM_TEE_BASE_ECC256_SetKey
  • OEM_TEE_CRYPTO_SHA256_HMAC_VerifyMAC
  • OEM_TEE_CRYPTO_SHA256_HMAC_CreateMAC
  • OEM_TEE_PERSISTENTSTORAGE_Read
  • OEM_TEE_PERSISTENTSTORAGE_Write
  • OEM_TEE_GetSupportedWatermarkVendors

Le API TEE OEM seguenti sono state rinominate senza modifiche funzionali:

Nome precedente Nuovo nome
OEM_TEE_DECRYPT_UnshuffleScalableContentKeys OEM_TEE_BASE_UnshuffleScalableContentKeys
OEM_TEE_DECRYPT_CalculateContentKeyPrimeWithAES128Key OEM_TEE_BASE_CalculateContentKeyPrimeWithAES128Key
OEM_TEE_DECRYPT_DeriveScalableKeyWithAES128Key OEM_TEE_BASE_DeriveScalableKeyWithAES128Key
OEM_TEE_DECRYPT_InitUplinkXKey OEM_TEE_BASE_InitUplinkXKey
OEM_TEE_DECRYPT_UpdateUplinkXKey OEM_TEE_BASE_UpdateUplinkXKey
OEM_TEE_DECRYPT_DecryptContentKeysWithDerivedKeys OEM_TEE_BASE_DecryptContentKeysWithDerivedKeys
OEM_TEE_DECRYPT_EnforcePolicy OEM_TEE_POLICY_Enforce