View a markdown version of this page

SPEKE API v2.1 - DASH-IF 仕様のカスタマイズと制約 - Secure Packager および Encoder Key Exchange API の仕様

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SPEKE API v2.1 - DASH-IF 仕様のカスタマイズと制約

DASH-IF ウェブサイトの DASH Industry Forum CPIX 2.4 仕様は、多くのユースケースとトポロジをサポートしています。SPEKE API v2.1 仕様では、CPIX プロファイルと CPIX 用の API の両方を定義します。これら 2 つの目標を達成するために、CPIX 仕様に従い、以下のカスタマイズと制約を行います。

CPIX プロファイル
  • SPEKE は、エンクリプタコンシューマーのワークフローに従います。

  • 暗号化されたコンテンツキーの場合、SPEKE により次の制限が適用されます。

    • SPEKE は、リクエストおよびレスポンスペイロードにデジタル署名検証 (XMLDSIG) をサポートしていません。

    • SPEKE には 2048 ビットの RSA ベースの証明書が必要です。

  • SPEKE は CPIX 機能のサブセットのみを使用します。

    • SPEKE は UpdateHistoryItemList の機能を省略します。リストがレスポンスに存在する場合、SPEKE はそれを無視します。

    • SPEKE では、ルート/リーフキー機能は省略されます。ContentKey@dependsOnKey 属性がレスポンスに存在する場合、SPEKE はそれを無視します。

    • SPEKE では、BitrateFilter 要素と VideoFilter@wcg 属性は省略されます。これらの要素または属性が CPIX ペイロードに存在する場合、SPEKE はそれを無視します。

  • SPEKE v2.1 と交換される CPIX ドキュメントでは、標準ペイロードコンポーネントページまたは暗号化契約ページで「サポートされている」として参照される要素または属性のみを使用できます。

  • すべての要素および属性は、エンクリプタが CPIX リクエストに含めている場合、キープロバイダーの CPIX レスポンスで有効な値を保持します。そうでない場合、エンクリプタは停止してエラーをスローします。

  • SPEKE は KeyPeriodFilter 要素でキーローテーションをサポートします。SPEKE は ContentKeyPeriod@indexを使用してキー期間を追跡します。SPEKE v2.1 では、エンクリプタは に加えて、キー期間がカバーする時間間隔を通知することもできます@index。ライブコンテンツの場合は、 属性ContentKeyPeriod@startと ContentKeyPeriod@end 属性 (ウォールクロックの開始時刻と終了時刻) を使用します。VOD コンテンツの場合は、 属性ContentKeyPeriod@startOffsetと ContentKeyPeriod@endOffset 属性を使用します。

  • HLS シグナリングでは、複数のDRMSystem.HLSSignalingData要素を使用する必要があります。1 つはDRMSystem.HLSSignalingData@playlist属性値が「media」で、もう 1 つはDRMSystem.HLSSignalingData@playlist属性値が「master」です。

  • キーをリクエストするとき、エンクリプタは、ContentKey 要素にオプションの @explicitIV 属性を使用することがあります。キープロバイダーは、属性がリクエストに含まれていなくても、@explicitIV を使用して IV で応答することができます。

  • エンクリプタはキー識別子 (KID) を生成しますが、これは与えられたコンテンツ ID とキー期間に対して同じです。キープロバイダーには、リクエストドキュメントに対するレスポンスとして KID が含まれます。

  • エンクリプタは CPIX@contentId 属性の値を含めます。この属性の空の値を受け取ると、キープロバイダーは「CPIX@contentId の欠落」という説明のエラーを返します。キープロバイダーはCPIX@contentId値を上書きできません。

    CPIX@id 値が null でない場合は、キープロバイダーによって無視されます。

  • エンクリプタは CPIX@version 属性の値を含めます。この属性に空の値を受け取ると、キープロバイダーは「Missing CPIX@version」(CPIX@version がありません) という説明を含むエラーを返します。サポートされていないバージョンのリクエストを受け取った場合、キープロバイダーから返されるエラーの説明は「Unsupported CPIX@version」(サポートされていない CPIX@version です) になります。

    CPIX@version 値はキープロバイダーによって上書きできません。

  • エンクリプタは、リクエストされたキーごとに ContentKey@commonEncryptionScheme 属性の値を含めます。この属性に空の値を受け取ると、キープロバイダーは「Missing ContentKey@commonEncryptionScheme for KID id」(KID id の ContentKey@commonEncryptionScheme がありません) という説明を含むエラーを返します。

    一意の CPIX ドキュメントでは、異なる ContentKey@commonEncryptionScheme 属性に複数の値を混在させることはできません。このような組み合わせを受信すると、キープロバイダーは「Non compliant ContentKey@commonEncryptionScheme combination」(非準拠の ContentKey @commonEncryptionScheme の組み合わせがあります) という説明を含むエラーを返します。

    すべての ContentKey@commonEncryptionScheme 値がすべての DRM テクノロジと互換性があるわけではありません。このような組み合わせを受信すると、キープロバイダーは「ContentKey@commonEncryptionScheme non compatible with DRMSystem id」(ContentKey@commonEncryptionScheme は DRMSystem id と互換性がありません) という説明を含むエラーを返します。

    ContentKey@commonEncryptionScheme 値はキープロバイダーによって上書きできません。

  • CPIX レスポンス本文で DRMSystem@PSSH と DRMSystem.ContentProtectionData innerXML <pssh> 要素に異なる値を受け取った場合、エンクリプタは停止してエラーをスローします。

CPIX 用の API
  • キープロバイダーは、X-Speke-User-Agent HTTP レスポンスヘッダーの値を含めます。

  • SPEKE 準拠のエンクリプタはクライアントとして機能し、POST オペレーションをキープロバイダーエンドポイントに送信します。

  • エンクリプタには、X-Speke-VersionHTTP リクエストヘッダーの値を含める必要があります。リクエストで使用される SPEKE バージョンは、SPEKE v2.1 の '2.1' のように MajorVersion.MinorVersion, として定式化されます。キープロバイダーがエンクリプタによって使用される SPEKE バージョンを現在のリクエストでサポートしていない場合、キープロバイダーは「Unsupported SPEKE version」(サポート対象外の SPEKE バージョン) という説明を含むエラーを返し、ベストエフォートベースでの CPIX ドキュメントの処理を試行しません。

    キープロバイダーは、エンクリプタによって定義された X-Speke-Version ヘッダー値をリクエストへのレスポンスで変更できません。

  • レスポンス本文でエラーを受信すると、エンクリプタはエラーをスローし、SPEKE v1.0 のバージョニングでリクエストを再試行しません。

    キープロバイダーがエラーを返さないものの、必須情報を含む CPIX ドキュメントを返さない場合、エンクリプタは停止してエラーをスローする必要があります。

次の表は、キープロバイダーがメッセージの本文で返す必要がある標準メッセージをまとめたものです。エラーの場合の HTTP レスポンスコードは 4XX または 5XX になり、200 ではありません。422 エラーコードは SPEKE/CPIX に関連するすべてのエラーに使用できます。

エラーケース エラーメッセージ

CPIX @contentId が定義されていない

Missing CPIX@contentId (CPIX@contentId がありません)

CPIX @version が定義されていない

Missing CPIX@version (CPIX@version がありません)

CPIX@version がサポートされていない

Unsupported CPIX@version (サポート対象外の CPIX@version)

ContentKey@commonEncryptionScheme が定義されていない

Missing ContentKey@commonEncryptionScheme for KID id (KID id の ContentKey@commonEncryptionScheme がありません) (ここで、id は ContentKey@kid の値と等しい)

単一の CPIX ドキュメントで複数の ContentKey@commonEncryptionScheme 値が使用されている

Non compliant ContentKey@commonEncryptionScheme combination (非準拠の ContentKey@commonEncryptionScheme の組み合わせがあります)

ContentKey@commonEncryptionScheme が DRM テクノロジーと互換性がない

ContentKey@commonEncryptionScheme non compatible with DRMSystem id (ContentKey@commonEncryptionScheme は DRMSystem id と互換性がありません) (ここで、id は DRMSystem@systemId の値と等しい)

X-Speke-Version ヘッダー値がサポートされている SPEKE バージョンではない

Unsupported SPEKE version (サポート対象外の SPEKE バージョン)

暗号化契約の形式が正しくない

Malformed encryption contract (不正な形式の暗号化契約)

暗号化契約が DRM のセキュリティレベルの制約と矛盾している

Requested CPIX encryption contract not supported (リクエストされた CPIX 暗号化契約はサポートされていません)

暗号化契約に VideoFilter または AudioFilter 要素が含まれていない

Missing CPIX encryption contract (CPIX 暗号化契約がありません)