

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

# SPEKE API v2 - 暗号化契約
<a name="encryption-contract-v2"></a>

暗号化契約は、トラックの特性に基づいて、どのコンテンツキーが特定のストリームセット内のどのトラックを保護しているかを定義します。

ストリームセット内の異なるトラックに複数のコンテンツキーを使用することが、必須ではないものの、業界のベストプラクティスとして推奨されています。少なくとも 2 つの異なるコンテンツキー (オーディオトラック用に 1 つとビデオトラック用に 1 つ) を使用するようにしてください。単一のコンテンツキーを使用して複数のトラックを暗号化することは可能ですが、エンクリプタからキープロバイダーに送信される CPIX ドキュメントで明示的に通知する必要があります。一般的に、エンクリプタは、必要なコンテンツキーの数と、それらがさまざまなメディアトラックの暗号化にどのように活用されるかを常に正確に記述します。

**原則**  
暗号化契約は、CPIX ドキュメントの `<cpix:ContentKeyUsageRuleList>` セクションにあります。このセクションでは、`<cpix:ContentKeyList>` セクションで定義された各コンテンツキーは、特定の `<cpix:ContentKeyUsageRule>` 要素に対応します。これには以下が含まれます。
+ 1 つ以上のサブコンポーネントを参照できる `ContentKeyUsageRule@intendedTrackType` 属性。複数のサブコンポーネントが使用されている場合は、「\$1」記号で区切られます。`ContentKeyUsageRule@intendedTrackType` の値は暗号化契約では一意であり、複数の `ContentKeyUsageRule` 要素で使用することはできません。
+ 1 つまたは複数の `<cpix:AudioFilter>` または `<cpix:VideoFilter>` 子要素 (`ContentKeyUsageRule@intendedTrackType` 属性の値に応じます)。

この関係を規定するルールは次のとおりです。
+ ストリームセットのすべてのオーディオトラックとビデオトラックを一意のコンテンツキーで保護する必要がある場合は、文字列 `'ALL'` を `ContentKeyUsageRule@intendedTrackType` 属性値として使用する必要があります。例 1 は、このようなユースケースを示しています。この状況では、属性を持たない `<cpix:AudioFilter />` 子属性と `<cpix:VideoFilter />` 子属性の両方を含める必要があります。`<cpix:AudioFilter>` 要素や `<cpix:VideoFilter>` 要素のその他の組み合わせは、この特定のコンテキストでは無効です。
+ それ以外のすべてのユースケースでは、`ContentKeyUsageRule@intendedTrackType` 属性の値は自由に定義でき、`<cpix:AudioFilter />` 子要素と `<cpix:VideoFilter />` 子要素の数は、「\$1」記号で集計されたサブコンポーネントの数に対応する必要があります。例 2/3/4/5/6/7/9/10 は、`ContentKeyUsageRule@intendedTrackType` 属性の値に単一のサブコンポーネントが存在する場合のこの要件を示しています。例 8 は、複数のサブコンポーネントが使用される場合を示しています。ここで、`ContentKeyUsageRule@intendedTrackType="SD+HD"` は異なる属性値を持つ 2 つの別個の `<cpix:VideoFilter>` 子要素によって記述され、`ContentKeyUsageRule@intendedTrackType="HDR+HFR+UHD"` は異なる属性値を持つ 3 つの別個の `<cpix:VideoFilter>` 子要素によって記述されています。

**フィルター**  
CPIX は複数のフィルタリング要素と属性を定義しますが、SPEKE はそのサブセットのみをサポートしています。次の表では、これらの違いを要約しています。


| CPIX フィルターのタイプ | SPEKE の全体的なサポート | SPEKE でサポートされるフィルター属性 | SPEKE でサポートされないフィルター属性 | 
| --- | --- | --- | --- | 
|  <cpix:VideoFilter>  |  はい  |  minPixels、maxPixels、hdr、minFps、maxFps (オプションの属性)  |  wcg  | 
|  <cpix:AudioFilter>  |  はい  |  minChannels、 maxChannels (オプションの属性)  |  | 
|  <cpix:KeyPeriodFilter>  |  はい  |  periodId (必須属性)  |  | 
|  <cpix:BitrateFilter>  |  不可  |  該当なし  |  該当なし  | 
|  <cpix:LabelFilter>  |  不可  |  該当なし  |  該当なし  | 

VideoFilter の CPIX 仕様に従って、[minPixels, maxPixels] は両方のディメンションのすべての包含範囲であり、(minFps, maxFps] は maxFps ディメンションの場合のみの包含範囲です。AudioFilter の場合、[minChannels, maxChannels] は両方のディメンションの包含範囲です。

**問題のある状況**  
暗号化契約で提供される情報が、部分的、あいまい、または誤りである状況があります。このような場合、エンクリプタとキープロバイダーが適切に動作し、コンテンツが適切に保護されていることを保証することが重要です。次の表に、このような状況での推奨される動作を示します。


| 状況 | エンクリプタの動作 | キープロバイダーの動作 | 
| --- | --- | --- | 
|  ストリームセット内の 1 つまたは複数のトラックにルールが適用されない (以下の例 3 を参照)  |  エンクリプタは、(CPIX ペイロードの外部の) 設定を確認し、関係するトラックが暗号化を必要としないことを確認する必要があります。想定と異なる場合、エンクリプタはエラーをスローして、処理を停止する必要があります。  |   *該当なし: キープロバイダーはストリームセット構造を把握していません。*  | 
|  複数のルールが重複し、特定のトラックを暗号化するために複数のコンテンツキーが提案される  |  エンクリプタは、ドキュメントの順番で正常に評価された最後の ContentKeyUsageRule を適用する必要があります。  |   *該当なし: キープロバイダーはストリームセット構造を把握していません。*  | 
|  暗号化契約が単一の SPEKE リクエスト/レスポンスサイクルで変更される  |  キープロバイダーは暗号化契約を定義する役割を負わないため、エンクリプタは例外を発生させ、処理を停止します。  |  この状況がそもそも発生しないようにするために、キープロバイダーが SPEKE 要求の CPIX ペイロードで受信した暗号化契約を変更しないようにする必要があります。  | 
|  不正な形式の暗号化契約: intendedTrackType/filters カーディナリティ制約例外、サポートされていないフィルターまたは属性  |  この場合、誤ったコンテンツ保護が行われたり、一部のトラックが保護されないままになったりする可能性が非常に高いため、エンクリプタは例外を発生させて処理を停止し、SPEKE リクエストをキープロバイダーに送信しません。  |  キープロバイダーは例外を発生させ、「Malformed encryption contract」(不正な形式の暗号化契約) エラーを返します。  | 
|  暗号化契約の形式は正しいが、DRM のセキュリティレベルの制約に違反している。例えば、オーディオトラックと UHD ビデオトラックの両方を保護するために、単一のコンテンツキーが要求されている  |  この場合、誤ったコンテンツ保護が行われる可能性が非常に高いため、エンクリプタが DRM セキュリティレベルの制約を把握している場合には、例外を発生させて処理を停止し、SPEKE リクエストをキープロバイダーに送信しません。  |  キープロバイダーは例外を発生させ、「Requested CPIX encryption contract not supported」(リクエストされた CPIX 暗号化契約はサポートされていません) エラーを返します。  | 
|  暗号化契約がない  |  エンクリプタは、VideoFilter 要素または AudioFilter 要素を含まない CPIX ドキュメントを送信しません。  |  キープロバイダーは例外を発生させ、「Missing CPIX encryption contract」(CPIX 暗号化契約がありません) エラーを返します。  | 

**暗号化契約の例**  
 *例 1: すべてのオーディオトラックとビデオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="ALL">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
		<cpix:VideoFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 *例 2: すべてのビデオトラックに 1 つのコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
    <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
        <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
        <cpix:VideoFilter />
    </cpix:ContentKeyUsageRule>
    <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
        <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
        <cpix:AudioFilter />
    </cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 *例 3: すべてのオーディオトラックと暗号化されていないビデオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 *例 4: 異なるビデオトラック (SD/HD) に複数のコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for SD video tracks (up to 1024x576) -->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter maxPixels="589824" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for HD video tracks (more than 1024x576) -->
	<cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="589825" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for all audio tracks -->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 *例 5: 異なるビデオトラック (SD/HD/UHD) に複数のコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for SD video tracks (up to 1024x576) -->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter maxPixels="589824" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for HD video tracks (more than 1024x576, up to 1920x1080) -->
	<cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="589825" maxPixels="2073600" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for UHD video tracks (more than 1920x1080) -->
	<cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="2073601" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for all audio tracks -->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 *例 6: 異なるビデオトラック (SD/HD/UHD1/UHD2) に複数のコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for SD video tracks (up to 1024x576) -->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter maxPixels="589824" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for HD video tracks (more than 1024x576, up to 1920x1080) -->
	<cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="589825" maxPixels="2073600" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for UHD1 video tracks (more than 1920x1080, up to 4096x2160) -->
	<cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD1">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="2073601" maxPixels="8847360" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for UHD2 video tracks (more than 4096x2160) -->
	<cpix:ContentKeyUsageRule kid="63d2ec36-6b7c-9f34-4546-97d01f36f7c5" intendedTrackType="UHD2">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="8847361" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for all audio tracks -->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 例 7: 異なるビデオトラック (SD/HD1/HD2/UHD1/UHD2) に複数のコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for SD video tracks (up to 1024x576) -->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter maxPixels="589824" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for HD1 video tracks (more than 1024x576, up to 1280x720) -->
	<cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD1">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="589825" maxPixels="921600" />
	</cpix:ContentKeyUsageRule>
        <!-- Rule for HD2 video tracks (more than 1280x720, up to 1920x1080) -->
          <cpix:ContentKeyUsageRule kid="cda406d8-9d87-4f76-92da-31110e756176" intendedTrackType="HD2">
            <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
            <cpix:VideoFilter minPixels="921601" maxPixels="2073600" />
          </cpix:ContentKeyUsageRule>
	<!-- Rule for UHD1 video tracks (more than 1920x1080, up to 4096x2160) -->
	<cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD1">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="2073601" maxPixels="8847360" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for UHD2 video tracks (more than 4096x2160) -->
	<cpix:ContentKeyUsageRule kid="63d2ec36-6b7c-9f34-4546-97d01f36f7c5" intendedTrackType="UHD2">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="8847361" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for all audio tracks -->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 例 8: 異なるビデオトラック (複数の属性タイプに基づく) に複数のコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for SD and HD video tracks-->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD+HD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter maxPixels="442368" maxFps="30" hdr="false"/>
		<cpix:VideoFilter minPixels="442369" maxPixels="2073600" maxFps="30" hdr="false"/>
	</cpix:ContentKeyUsageRule>
	<!-- Rule for HDR, HFR and UHD video tracks-->
	<cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HDR+HFR+UHD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter hdr="true" />
		<cpix:VideoFilter minFps="30" />
		<cpix:VideoFilter minPixels="20736001" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for all audio tracks-->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 例 9: すべてのビデオトラックに 1 つのコンテンツキー、ステレオおよびマルチチャネルオーディオトラックに複数のコンテンツキー 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for video tracks-->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for stereo audio tracks-->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="STEREO_AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter maxChannels="2"/>
	</cpix:ContentKeyUsageRule>
	<!-- Rule for multichannel audio tracks-->
	<cpix:ContentKeyUsageRule kid="7ae8e96f-309e-42c3-a510-24023d923373" intendedTrackType="MULTICHANNEL_AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<AudioFilter minChannels="3"/>
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 例 10: すべてのビデオトラックに 1 つのコンテンツキー、ステレオおよび 2 つの種類のマルチチャネルオーディオトラックに複数のコンテンツキー 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for video tracks-->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for stereo audio tracks-->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="STEREO_AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter maxChannels="2"/>
	</cpix:ContentKeyUsageRule>
	<!-- Rule for multichannel audio tracks (3 to 6 channels)-->
	<cpix:ContentKeyUsageRule kid="7ae8e96f-309e-42c3-a510-24023d923373" intendedTrackType="MULTICHANNEL_AUDIO_3_6">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter minChannels="3" maxChannels="6"/>
	</cpix:ContentKeyUsageRule>
  <!-- Rule for multichannel audio tracks (7 channels and more)-->
	<cpix:ContentKeyUsageRule kid="81eb3761-55ff-4d22-a31d-94f01bbfd8ba" intendedTrackType="MULTICHANNEL_AUDIO_7">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter minChannels="7"/>
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```