PlayReady バージョン 4.5 の新機能
このページには、PlayReady バージョン 4.4 と PlayReady バージョン 4.5 の間の最も重要な変更の概要が含まれています。
PlayReady バージョン 4.5 の一般的な変更点
PlayReady Server 展開証明書を使用した暗号化のチャレンジ
以前のバージョンの PlayReady では、ライセンス取得やその他のクライアントの課題は常に、固定公開キーを使用してプライバシーで暗号化されています。 PlayReady 4.5 以降では、サポート サーバーとのみ通信するようにコーディングされたクライアントは、代わりに、Microsoft によってサーバー ライセンシーに発行された PlayReady サーバー展開証明書を使用して、プライバシー暗号化の課題を暗号化できます。 その後、PlayReady Server SDK は、固定秘密キーではなく PlayReady Server SDK アプリケーションによって渡される、対応する秘密キーでチャレンジの暗号化を解除します。
ライセンス サーバー時間
以前のバージョンの PlayReady では、セキュリティで保護された時刻機能を使用するには、通常、クライアント アプリケーションが別の Secure Time サーバーと通信して、ローカル クロックの設定に使用される時間を取得する必要があります。 PlayReady 4.5 以降では、サポート サーバーとのみ通信するようにコーディングされたクライアントは、代わりに、ライセンス取得時に PlayReady Server SDK によって提供される時間を使用できます。 詳細については、「 PlayReady Trusted Clocks」を参照してください。
キー交換
ライセンス取得プロトコルを使用して、PlayReady クライアントとサーバーは任意のキーを交換できるようになりました。このキーは、PlayReady を使用してキー自体が保護されている任意のアプリケーション提供データの暗号化、暗号化解除、署名、検証に使用できます。 クライアントが SL3000 の場合、キー自体は信頼された実行環境によって保護されます。 詳細については、「PlayReady キーのExchange」を参照してください。
透かしポリシー
PlayReady コンプライアンス 規則で定義されている透かし信号の明示的なデジタル ビデオ出力制限の使用を簡略化する機能が追加されました。
PlayReady Server SDK バージョン 4.5 の変更点
サーバーの一般的な変更
キー Exchange ライセンスを使用して、ライセンスの取得中にクライアントに任意のキーを提供できます。
クライアントによって提供される場合、サポートされている透かしテクノロジは PlayReady Server SDK アプリケーションに公開されます。 これにより、PlayReady コンプライアンス 規則で定義されている透かし信号の明示的なデジタル ビデオ出力制限の使用が簡略化されます。
サーバー API ドキュメントの変更
PlayReady Server SDK の .NET Standard バージョンの新しいサーバー API ドキュメントが作成され、発行されました。 Microsoft では、.NET Standard SDK への移行をお勧めします。
PlayReady ドキュメント パックに含まれる PlayReady.chm ファイルのサーバー API ドキュメントは、PlayReady Server SDK のレガシ .NET Framework バージョンにのみ適用されます。 このドキュメントは非推奨と見なされ、PlayReady 4.0 以降更新されておらず、今後の更新プログラムは受け取りません。
2 つの SDK のほとんどの API は同じであるため、ほとんどの目的には .NET Standard のドキュメントで十分である必要があります。 ただし、クラス、インターフェイス、メソッドが異なる場合は、いくつかの大きな違いがあります。
2 つの SDK の一般的な違いを次に示します。
.NET Standard SDK は、.NET Framework SDK がクラスを使用する多くの場所でインターフェイスを使用します。
アプリケーションによって実装される .NET Standard SDK ハンドラー インターフェイスでは、.NET Framework SDK が同期メソッドを使用する非同期メソッドが使用されます。 したがって、.Net Standard SDK ハンドラー インターフェイス API 名は"Async" という単語で終わり、単純なクラスではなく Task<クラス> を返します (クラスはハンドラー インターフェイス メソッドに固有です)。
.NET Standard SDK はトランスポートに依存しません。 そのため、HTTP コンテキストはアプリケーションに直接提供されません。 ASP.NET Coreを使用する場合は、ASP.NET Coreのドキュメント、特に IHttpContextAccessor インターフェイスを参照してください。
.NET Standard SDK では、パッケージ コンテンツ プロトコルがサポートされていません (IPackagingDataAcquisitionHandler が存在しないなど)。 この機能は PlayReady 4.6 で復元されます。
PlayReady 4.5 の具体的な相違点の完全な一覧を次に示します。 この一覧には、.NET Standard SDK にのみ存在する機能や、復元されるパッケージ クラスの一覧も含まれません。
クラスまたはインターフェイス.NET Framework | .NET Standard と同等 | 相違点 |
---|---|---|
ProtocolChallengeContext クラス | IProtocolChallengeContext インターフェイス | HttpRequest Request プロパティは、上で説明したように、.NET Framework SDK にのみ存在します。 |
ProtocolChallenge クラス | IProtocolChallenge インターフェイス | [なし] : |
IDeleteLicenseHandler インターフェイス | 同じ | ProcessDeleteLicenseDataAsync は、上で説明したように、.NET Framework SDK で同期されます。 |
DeleteLicenseDataChallenge クラス | IDeleteLicenseDataChallenge インターフェイス | [なし] : |
IDomainHandler インターフェイス | 同じ | HandleJoinDomainAsync と HandleLeaveDomainAsync は、上で説明したように、.NET Framework SDK で同期されます。 |
JoinDomainChallenge クラス | IDomainChallenge インターフェイスと IJoinDomainChallenge インターフェイス | 静的 JoinDomainChallenge.GenerateDomainKeyPair メソッドが .NET Standard SDK に存在しません。 この機能の損失は、DomainCertificateBuilder に静的メソッドとして追加することで PlayReady 4.6 で修正されるバグです。 |
LeaveDomainChallenge クラス | ILeaveDomainChallenge インターフェイス | [なし] : |
ILicenseAcknowledgementHandler インターフェイス | 同じ | HandleLicenseAcknowledgementAsync は、上で説明したように、.NET Framework SDK で同期されます。 |
LicenseAcknowledgementChallenge クラス | ILicenseAcknowledgementChallenge インターフェイス | [なし] : |
ILicenseAcquisitionHandler インターフェイス | 同じ | HandleLicenseAcquisitionAsync は、上で説明したように、.NET Framework SDK で同期されます。 |
LicenseChallenge クラス | ILicenseChallenge インターフェイス | [なし] : |
IMeteringHandler インターフェイス | 同じ | GetMeteringCertificateAsync と ProcessMeteringDataAsync は、上で説明したように、.NET Framework SDK で同期されます。 |
MeteringCertificateChallenge クラス | IMeteringCertificateChallenge インターフェイス | [なし] : |
ProcessMeteringDataChallenge クラス | IProcessMeteringDataChallenge インターフェイス | [なし] : |
ISecureStopHandler インターフェイス | 同じ | ProcessSecureStopDataAsync は、上で説明したように、.NET Framework SDK で同期されます。 |
SecureStopDataChallenge クラス | ISecureStopDataChallenge インターフェイス | ISecureStop2Handler を受け取る GetSecureStopData メソッド オーバーロードは、.NET Framework SDK にのみ存在します。 代わりに、.NET Standard SDK は他のハンドラーと同様にこのハンドラーを読み込みます。 |
ISecureStopHandler2 インターフェイス | 同じ | GetSecureStop2AESKeyAsync は、上で説明したように、.NET Framework SDK で同期されます。 |
PlayReadyServerAuthorization クラス | 同じ | クラスのメソッドは、.NET Framework SDK と .NET Standard SDK のインスタンスでは静的です。 |
サーバー API の変更
これは単なる概要です。 詳細については、 サーバー API のドキュメント を参照してください。
ライセンスが追加されていない場合、LicenseResponse.GetLicenses メソッドは null ではなく空の配列を返すようになりました。
次のクラスと列挙型が追加されました。
- AdvancedLicense クラス (抽象、License から継承) - MediaLicense の既存のプロパティとメソッドのサブセットがこのクラスに移動され、MediaLicense は AbstractLicense から継承されるようになりました。 MediaLicense を使用するためにアプリケーションを変更する必要はありません。
- KeyExchangeLicense クラス (AdvancedLicense から継承) - ライセンスの取得中にクライアントに任意のキーを提供するライセンスを作成するために使用されます。
- KeyExchangeRight クラス (Right から継承) - KeyExchange ライセンスに対するキーとその許可される使用法を指定するために使用されます。
- KeyExchangeAlgorithm 列挙型 - KeyExchange ライセンスのキーに対して許可される使用法を指定するために使用されます。
- WatermarkVendor クラス - クライアントでサポートされている透かしテクノロジをアプリケーションに公開するために使用されます。
- LicenseServerTimeCertificate クラス - ライセンス取得応答で返されたライセンス サーバー時間に署名するための証明書を格納するために使用されます。
個々のクラスに次のものが追加されました。
- PlayReadyHeader クラスは、ヘッダーがストリームごとのキーのサポートを示しているかどうか、および明示的にライセンスを要求するかどうかを公開します。
- ContentKeyType 列挙型は、KeyExchange 値を追加します。
- Certificate クラスは、証明書のダイジェストと発行者の公開キーを公開するバイト配列プロパティを追加します。
- License クラスは、ライセンスに追加された権限を返すために、ライセンスの一意の ID と IEnumerable<Right> プロパティを公開する guid プロパティを追加します。
- LicenseChallengeTeeAPIs 列挙型は、すべての新しい PK 4.5 TEE API の値を追加します。
- LicenseChallengeReeFeatures 列挙型は、LicenseServerTime と KeyExchange の値を追加します。
- LicenseChallenge クラスは、クライアントがサポートする KeyExchangeAlgorithms のリスト、クライアントがサポートする WatermarkVendors、クライアントの TEE と REE の PK バージョン (同じでもそうでない場合もあります)、およびクライアントが現在の LicenseServerTime を必要とするかどうかを追加します。
- LicenseResponse クラスは、ライセンス取得応答で返されたライセンス サーバー時間の署名に使用する証明書を設定するための LicenseServerTimeCertificate プロパティを追加します。
- ExplicitOutputRestrictionsConstants クラスは、Watermark と InternalScreenOnly の定数を追加します。 これらの guid の詳細については、PlayReady コンプライアンス規則を参照してください。
PlayReady Device Porting Kit バージョン 4.5 の変更点
デバイス 移植キットの一般的な変更
- PlayReady デバイス 移植キット全体が、Microsoft ソース コード注釈言語 (SAL) 2.0 に更新されました。
- Microsoft 内部実装でのみ使用されるサポートされていない一部のコードパスは、混乱を排除し、コンパイル時間とバイナリ サイズを減らすために削除されました。 この領域の更なる改善は、今後のリリースに含まれる予定です。
- 基になるコンパイラとマシン アーキテクチャでサポートされている場合、ネイティブの 128 ビット整数型を使用して ECC256 の既定の実装を高速化できるようになりました。
- SHA256 HMAC アルゴリズムの既定の実装が追加されました。
Device Porting Kit API の変更
これは単なる概要です。 詳細については、 PlayReady Device Porting Kit の関連するコード コメントに記載されている API ドキュメントを参照してください。
DRM_CDMI_SetServercertificateは、プライバシー暗号化ライセンスの取得やその他のクライアントの課題のために、PlayReady Server 展開証明書を使用して呼び出すようになりました。 この関数は、このシナリオではDrm_AppContext_SetPropertyに転送されます。 既存の使用状況はそのままです。
次のパブリック関数が追加されました。
- Drm_AppContext_SetProperty
- Drm_KeyExchange_Prepare
- Drm_KeyExchange_Perform
- Drm_KeyExchange_Close
次の構造体が追加されました。
- DRM_DGP_REE_FEATURE_LIST_4_5
- DRM_DGP_TEE_API_LIST_4_5
次の TEE API が追加されました。
- 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
次の OEM TEE API が追加されました。
- 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
次の OEM TEE API は、機能変更なしで名前が変更されました。
以前の名前 | 新しい名前 |
---|---|
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 |