

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

# SPEKE API v1
<a name="the-speke-api"></a>

これは、Secure Packager and Encoder Key Exchange (SPEKE) v1 用の REST API です。この仕様を使用して、暗号化を使用するお客様に DRM 著作権保護を提供します。SPEKE に準拠するには、DRM キープロバイダーがこの仕様で説明されている REST API を公開する必要があります。エンクリプタはキープロバイダーへ API コールを行います。

**注記**  
この仕様のコード例は、あくまでも説明用です。これらの例は完全な SPEKE 実装の一部ではないため、実行できません。

SPEKE は、DASH Industry Forum Content Protection Information Exchange Format (DASH-IF-CPIX) データ構造定義をキー交換に使用しますが、いくつかの制限があります。DASH-IF-CPIX は、DRM プラットフォームからエンクリプタへの拡張可能なマルチ DRM 交換を提供するスキーマを定義します これにより、コンテンツの圧縮およびパッケージング時に、すべての適応ビットレートパッケージング形式のコンテンツ暗号化が可能になります。適応ビットレートパッケージ形式には、HLS、DASH、および MSS があります。

交換形式の詳細については、https://dashif.org/docs/DASH-IF-CPIX-v2-0.pdf で DASH Industry Forum CPIX 仕様を参照してください。

**Topics**
+ [SPEKE API v1 - DASH-IF 仕様のカスタマイズと制約](speke-constraints.md)
+ [SPEKE API v1 - 標準ペイロードコンポーネント](standard-payload-components.md)
+ [SPEKE API v1 - ライブワークフローメソッド呼び出しの例](live-workflow-methods.md)
+ [SPEKE API v1 - VOD ワークフローメソッド呼び出しの例](vod-workflow-methods.md)
+ [SPEKE API v1 - コンテンツキーの暗号化](content-key-encryption.md)
+ [SPEKE API v1 - ハートビート](heartbeat.md)
+ [SPEKE API v1 - キー識別子のオーバーライド](kid-override.md)

# SPEKE API v1 - DASH-IF 仕様のカスタマイズと制約
<a name="speke-constraints"></a>

DASH-IF CPIX 仕様 (https://dashif.org/docs/DASH-IF-CPIX-v2-0.pdf) は、多くのユースケースとトポロジをサポートしています。SPEKE API 仕様は、次のカスタマイズと制約を伴う CPIX 仕様に準拠しています。
+ SPEKE は、エンクリプタコンシューマーのワークフローに従います。
+ 暗号化されたコンテンツキーの場合、SPEKE により次の制限が適用されます。
  + SPEKE は、リクエストおよびレスポンスペイロードにデジタル署名検証 (XMLDSIG) をサポートしていません。
  + SPEKE には 2048 ビットの RSA ベースの証明書が必要です。
+ キーのローテーションワークフローの場合、SPEKE では `ContentKeyUsageRule` フィルター `KeyPeriodFilter` が必要です。SPEKE は他の `ContentKeyUsageRule` 設定をすべて無視します。
+ SPEKE は `UpdateHistoryItemList` の機能を省略します。リストがレスポンスに存在する場合、SPEKE はそれを無視します。
+ SPEKE はキーのローテーションをサポートします。SPEKE は `ContentKeyPeriod@index のみを使用してキー期間を追跡します。
+ MSS PlayReadyをサポートするために、SPEKE は `DRMSystem` タグでカスタムパラメータ `SPEKE:ProtectionHeader` を使用します。
+ HLS パッケージングの場合、`URIExtXKey` がレスポンスに存在する場合、HLS プレイリストの `EXT-X-KEY` タグの URI パラメータに追加するフルデータを含める必要があります。それ以上のシグナリング要件はありません。
+ HLS プレイリストの場合、`DRMSystem` タグで、SPEKE は `EXT-X-KEY` タグの `KEYFORMAT` と `KEYFORMATVERSIONS` パラメータの値に対してオプションのカスタムパラメータ `speke:KeyFormat` と `speke:KeyFormatVersions` を提供します。

  HLS 初期化ベクトル (IV) は、オペレータが明示的に指定しない限り、セグメント番号の後に常に続きます。
+ キーをリクエストするとき、エンクリプタは、`ContentKey` 要素にオプションの `@explicitIV` 属性を使用することがあります。キープロバイダーは、属性がリクエストに含まれていなくても、`@explicitIV` を使用して IV で応答することができます。
+ エンクリプタはキー識別子 (`KID`) を生成しますが、これは与えられたコンテンツ ID とキー期間に対して同じです。キープロバイダーには、リクエストドキュメントに対するレスポンスとして `KID` が含まれます。
+ キープロバイダーには、デバッグ目的のために自身を識別する、`Speke-User-Agent` レスポンスヘッダーの値を含めることができます。
+ SPEKE は現在、コンテンツごとに複数のトラックやキーをサポートしていません。

  SPEKE 準拠のエンクリプタはクライアントとして機能し、`POST` オペレーションをキープロバイダーエンドポイントに送信します。エンクリプタは定期的に `heartbeat` リクエストを送信して、エンクリプタとキープロバイダーエンドポイントとの間の接続が正常であることを確認する場合があります。

# SPEKE API v1 - 標準ペイロードコンポーネント
<a name="standard-payload-components"></a>

任意の SPEKE リクエストでは、1 つ以上の DRM システムのレスポンスをリクエストできます。エンクリプタは、リクエストペイロードの `<cpix:DRMSystemList>` で DRM システムを指定します。各システム仕様には、キーが含まれており、返されるレスポンスのタイプを示します。

次の例は、単一の DRM システム仕様を持つ DRM システムリストを示しています。

![\[RequestIntroSimple\]](http://docs.aws.amazon.com/ja_jp/speke/latest/documentation/images/RequestIntroSimple.png)


次の表は、各 `<cpix:DRMSystem>` の 主要コンポーネントを示しています。


| 識別子 | 説明 | 
| --- | --- | 
|   `systemId` または `schemeId`   |  DASH IF 組織に登録されている DRM システムタイプの一意の識別子。リストについては、「[DASH-IF システム ID](https://dashif.org/identifiers/content_protection/)」を参照してください。  | 
|   `kid`   |  キー ID。これは実際のキーではなく、ハッシュテーブルのキーを指す識別子です。  | 
|   `<cpix:UriExtXKey>`   |  標準の暗号化されていないキーをリクエストします。キーレスポンスタイプはこれか、`PSSH` レスポンスのいずれかである必要があります。  | 
|   `<cpix:PSSH>`   |  保護システム固有ヘッダー (PSSH) をリクエストします。このタイプのヘッダーには、共通暗号化 (CENC) の一部として、DRM ベンダーの `kid`、`systemID`、およびカスタムデータへの参照が含まれています。キーレスポンスタイプはこれか、`UriExtXKey` レスポンスのいずれかである必要があります。  | 

\$1スタンダードキーと PSSH リクエストの例\$1

次の例は、エンクリプタから DRM キープロバイダーへのサンプルリクエストの一部を示しており、主要コンポーネントが強調表示されています。最初のリクエストはスタンダードキーに対するもので、2 番目のリクエストは PSSH レスポンスに対するものです。

![\[RequestIntro1\]](http://docs.aws.amazon.com/ja_jp/speke/latest/documentation/images/RequestIntro1.png)


\$1スタンダードキーと PSSH のリクエストの例\$1

次の例は、DRM キープロバイダーからエンクリプタへの対応する応答を示しています。

![\[ResponseIntro1\]](http://docs.aws.amazon.com/ja_jp/speke/latest/documentation/images/ResponseIntro1.png)


# SPEKE API v1 - ライブワークフローメソッド呼び出しの例
<a name="live-workflow-methods"></a>

 *リクエストの構文例* 

次の URL は例であり、固定形式ではありません。

```
POST https://speke-compatible-server/speke/v1.0/copyProtection
```

 *リクエストボディ* 

CPIX 要素。

 *リクエストヘッダー* 


| 名前 | 型 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `AWS Authorization`   |  文字列  |  1..1  |  [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) を参照   | 
|   `X-Amz-Security-Token`   |  String  |  1..1  |  [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) を参照   | 
|   `X-Amz-Date`   |  String  |  1..1  |  [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) を参照   | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 

 *レスポンスヘッダー* 


| 名前 | 型 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `Speke-User-Agent`   |  文字列  |  1..1  |  キープロバイダーを識別する文字列  | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 

 *レスポンスのリクエスト* 


| HTTP コード | ペイロード名 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  CPIX  |  1..1  |  DASH-CPIX ペイロードレスポンス  | 
|   `4XX (Client error)`   |  クライアントエラーメッセージ'  |  1..1  |  クライアントエラーの説明  | 
|   `5XX (Server error)`   |  サーバーエラーメッセージ  |  1..1  |  サーバーエラーの説明  | 

**注記**  
このセクションの例には、コンテンツキーの暗号化は含まれていません。コンテンツキーの暗号化を追加する方法については、[コンテンツキーの暗号化](content-key-encryption.md)を参照してください。

 *クリアでキーを含むリクエストペイロードのライブ例* 

次の例は、エンクリプタから DRM キープロバイダーへの一般的なライブリクエストペイロードを示しています。

```
<cpix:CPIX id="abc123" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
	<cpix:ContentKeyList>
		<cpix:ContentKey kid="98ee5596-cd3e-a20d-163a-e382420c6eff" explicitIV="OFj2IjCsPJFfMAxmQxLGPw=="></cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- HLS AES-128 (systemId is implementation specific)-->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="81376844-f976-481e-a84e-cc25d39b0b33">
			<cpix:URIExtXKey></cpix:URIExtXKey>
			<speke:KeyFormat></speke:KeyFormat>
			<speke:KeyFormatVersions></speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- HLS SAMPLE-AES -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:URIExtXKey></cpix:URIExtXKey>
			<speke:KeyFormat></speke:KeyFormat>
			<speke:KeyFormatVersions></speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- Common encryption (Widevine)-->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>

		<!-- Common encryption / MSS (Playready) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<speke:ProtectionHeader></speke:ProtectionHeader>
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
	<cpix:ContentKeyPeriodList>
		<cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
	</cpix:ContentKeyPeriodList>
	<cpix:ContentKeyUsageRuleList>
		<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff">
			<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" />
		</cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>
```

 *クリアでキーを含むレスポンスペイロードのライブ例* 

次の例は、DRM キープロバイダーからの一般的なレスポンスペイロードを示しています。

```
<cpix:CPIX xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke" id="abc123">
	<cpix:ContentKeyList>
		<cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff">
			<cpix:Data>
				<pskc:Secret>
					<pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue>
				</pskc:Secret>
			</cpix:Data>
		</cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- HLS AES-128 (systemId is implementation specific) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="81376844-f976-481e-a84e-cc25d39b0b33">
			<cpix:URIExtXKey>aHR0cHM6Ly83azR5dHV4cTVkLmV4ZWN1dGUtYXBpLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL0VrZVN0YWdlL2NsaWVudC9hYmMxMjMvOThlZTU1OTYtY2QzZS1hMjBkLTE2M2EtZTM4MjQyMGM2ZWZm</cpix:URIExtXKey>
			<speke:KeyFormat>aWRlbnRpdHk=</speke:KeyFormat>
			<speke:KeyFormatVersions>MQ==</speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- HLS SAMPLE-AES -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:URIExtXKey>aHR0cHM6Ly83azR5dHV4cTVkLmV4ZWN1dGUtYXBpLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL0VrZVN0YWdlL2NsaWVudC9hYmMxMjMvOThlZTU1OTYtY2QzZS1hMjBkLTE2M2EtZTM4MjQyMGM2ZWZm</cpix:URIExtXKey>
			<speke:KeyFormat>Y29tLmFwcGxlLnN0cmVhbWluZ2tleWRlbGl2ZXJ5</speke:KeyFormat>
			<speke:KeyFormatVersions>MQ==</speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- Common encryption (Widevine) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:PSSH>AAAAanBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEoIARIQeSIcblaNbb7Dji6sAtKZzRoNd2lkZXZpbmVfdGVzdCIfa2V5LWlkOmVTSWNibGFOYmI3RGppNnNBdEtaelE9PSoCU0QyAA==</cpix:PSSH>
		</cpix:DRMSystem>

		<!-- Common encryption / MSS (Playready) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<speke:ProtectionHeader>CgMAAAEAAQAAAzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4ATwBXAGoAaAB0AHIAMwB1ADkAawArAHIAZABvADEASQBMAFkAMAByAGEAdwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBCADMAQQA2AEEAMwB4AG0AdABkAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcABsAGEAeQByAGUAYQBkAHkALgBkAGkAcgBlAGMAdAB0AGEAcABzAC4AbgBlAHQALwBwAHIALwBzAHYAYwAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AUABsAGEAeQBSAGkAZwBoAHQAPQAxACYAYQBtAHAAOwBhAG0AcAA7AGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</speke:ProtectionHeader>
			<cpix:PSSH>AAADMHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAxAQAwAAAQABAAYDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBiAGgAdwBpAGUAWQAxAFcAdgBtADMARABqAGkANgBzAEEAdABLAFoAegBRAD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AGEAVABtAFAASgBWAEMAVgBaADYAcwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAHAAcgBsAHMALgBhAHQAdgAtAHAAcwAuAGEAbQBhAHoAbwBuAC4AYwBvAG0ALwBjAGQAcAA8AC8ATABBAF8AVQBSAEwAPgA8AEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AEkASQBTAF8ARABSAE0AXwBWAEUAUgBTAEkATwBOAD4ANwAuADEALgAxADQAMwA5AC4AMAA8AC8ASQBJAFMAXwBEAFIATQBfAFYARQBSAFMASQBPAE4APgA8AC8AQwBVAFMAVABPAE0AQQBUAFQAUgBJAEIAVQBUAEUAUwA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</cpix:PSSH>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
	<cpix:ContentKeyPeriodList>
		<cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
	</cpix:ContentKeyPeriodList>
	<cpix:ContentKeyUsageRuleList>
		<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff">
			<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" />
		</cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>
```

# SPEKE API v1 - VOD ワークフローメソッド呼び出しの例
<a name="vod-workflow-methods"></a>

 *リクエストの構文例* 

次の URL は例であり、固定形式ではありません。

```
POST https://speke-compatible-server/speke/v1.0/copyProtection
```

 *リクエストボディ* 

CPIX 要素。

 *レスポンスヘッダー* 


| 名前 | 型 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `Speke-User-Agent`   |  文字列  |  1..1  |  キープロバイダーを識別する文字列  | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 

 *レスポンスのリクエスト* 


| HTTP コード | ペイロード名 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  CPIX  |  1..1  |  DASH-CPIX ペイロードレスポンス  | 
|   `4XX (Client error)`   |  クライアントエラーメッセージ'  |  1..1  |  クライアントエラーの説明  | 
|   `5XX (Server error)`   |  サーバーエラーメッセージ  |  1..1  |  サーバーエラーの説明  | 

**注記**  
このセクションの例には、コンテンツキーの暗号化は含まれていません。コンテンツキーの暗号化を追加する方法については、[コンテンツキーの暗号化](content-key-encryption.md)を参照してください。

 *クリアでキーを含むリクエストペイロードの VOD 例* 

次の例は、エンクリプタから DRM キープロバイダーへの基本的な VOD リクエストペイロードを示しています。

```
<cpix:CPIX id="abc123" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
	<cpix:ContentKeyList>
		<cpix:ContentKey kid="98ee5596-cd3e-a20d-163a-e382420c6eff" explicitIV="OFj2IjCsPJFfMAxmQxLGPw=="></cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- HLS AES-128 (systemId is implementation specific)-->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="81376844-f976-481e-a84e-cc25d39b0b33">
			<cpix:URIExtXKey></cpix:URIExtXKey>
			<speke:KeyFormat></speke:KeyFormat>
			<speke:KeyFormatVersions></speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- HLS SAMPLE-AES -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:URIExtXKey></cpix:URIExtXKey>
			<speke:KeyFormat></speke:KeyFormat>
			<speke:KeyFormatVersions></speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- Common encryption (Widevine)-->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>

		<!-- Common encryption / MSS (Playready) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<speke:ProtectionHeader></speke:ProtectionHeader>
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
    </cpix:CPIX>
```

 *クリアでキーを含むレスポンスペイロードの VOD 例* 

次の例は、DRM キープロバイダーからの基本的な VOD レスポンスペイロードを示しています。

```
<cpix:CPIX xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke" id="abc123">
	<cpix:ContentKeyList>
		<cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff">
			<cpix:Data>
				<pskc:Secret>
					<pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue>
				</pskc:Secret>
			</cpix:Data>
		</cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- HLS AES-128 (systemId is implementation specific) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="81376844-f976-481e-a84e-cc25d39b0b33">
			<cpix:URIExtXKey>aHR0cHM6Ly83azR5dHV4cTVkLmV4ZWN1dGUtYXBpLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL0VrZVN0YWdlL2NsaWVudC9hYmMxMjMvOThlZTU1OTYtY2QzZS1hMjBkLTE2M2EtZTM4MjQyMGM2ZWZm</cpix:URIExtXKey>
			<speke:KeyFormat>aWRlbnRpdHk=</speke:KeyFormat>
			<speke:KeyFormatVersions>MQ==</speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- HLS SAMPLE-AES -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:URIExtXKey>aHR0cHM6Ly83azR5dHV4cTVkLmV4ZWN1dGUtYXBpLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL0VrZVN0YWdlL2NsaWVudC9hYmMxMjMvOThlZTU1OTYtY2QzZS1hMjBkLTE2M2EtZTM4MjQyMGM2ZWZm</cpix:URIExtXKey>
			<speke:KeyFormat>Y29tLmFwcGxlLnN0cmVhbWluZ2tleWRlbGl2ZXJ5</speke:KeyFormat>
			<speke:KeyFormatVersions>MQ==</speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- Common encryption (Widevine) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:PSSH>AAAAanBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEoIARIQeSIcblaNbb7Dji6sAtKZzRoNd2lkZXZpbmVfdGVzdCIfa2V5LWlkOmVTSWNibGFOYmI3RGppNnNBdEtaelE9PSoCU0QyAA==</cpix:PSSH>
		</cpix:DRMSystem>

		<!-- Common encryption / MSS (Playready) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<speke:ProtectionHeader>CgMAAAEAAQAAAzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4ATwBXAGoAaAB0AHIAMwB1ADkAawArAHIAZABvADEASQBMAFkAMAByAGEAdwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBCADMAQQA2AEEAMwB4AG0AdABkAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcABsAGEAeQByAGUAYQBkAHkALgBkAGkAcgBlAGMAdAB0AGEAcABzAC4AbgBlAHQALwBwAHIALwBzAHYAYwAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AUABsAGEAeQBSAGkAZwBoAHQAPQAxACYAYQBtAHAAOwBhAG0AcAA7AGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</speke:ProtectionHeader>
			<cpix:PSSH>AAADMHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAxAQAwAAAQABAAYDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBiAGgAdwBpAGUAWQAxAFcAdgBtADMARABqAGkANgBzAEEAdABLAFoAegBRAD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AGEAVABtAFAASgBWAEMAVgBaADYAcwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAHAAcgBsAHMALgBhAHQAdgAtAHAAcwAuAGEAbQBhAHoAbwBuAC4AYwBvAG0ALwBjAGQAcAA8AC8ATABBAF8AVQBSAEwAPgA8AEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AEkASQBTAF8ARABSAE0AXwBWAEUAUgBTAEkATwBOAD4ANwAuADEALgAxADQAMwA5AC4AMAA8AC8ASQBJAFMAXwBEAFIATQBfAFYARQBSAFMASQBPAE4APgA8AC8AQwBVAFMAVABPAE0AQQBUAFQAUgBJAEIAVQBUAEUAUwA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</cpix:PSSH>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
</cpix:CPIX>
```

# SPEKE API v1 - コンテンツキーの暗号化
<a name="content-key-encryption"></a>

必要に応じて SPEKE 実装にコンテンツキーの暗号化を追加できます。コンテンツキーの暗号化は、コンテンツ自体の暗号化に加えて、転送用のコンテンツキーを暗号化することにより、エンドツーエンドの完全な保護を保証します。キープロバイダーにこれを実装していない場合は、トランスポートレイヤーの暗号化と強力な認証をセキュリティに使用することになります。

AWS クラウドで動作するエンクリプタにコンテンツキー暗号化を使用するには、お客様は証明書を AWS Certificate Manager にインポートし、暗号化アクティビティにその結果の証明書 ARN を使用します。エンクリプタは、証明書 ARN と ACM サービスを使用して、暗号化されたコンテンツキーを DRM キープロバイダーに提供します。

**制限事項**  
SPEKE は、DASH-IF CPIX 仕様で指定されているコンテンツキー暗号化をサポートします。ただし、次の制限があります。
+ SPEKE は、リクエストおよびレスポンスペイロードにデジタル署名検証 (XMLDSIG) をサポートしていません。
+ SPEKE には 2048 ビットの RSA ベースの証明書が必要です。

これらの制限は、[DASH-IF 仕様のカスタマイズと制約](speke-constraints.md)にも記載されています。

**コンテンツキーの暗号化の実装**  
コンテンツの暗号化キーを提供するには、DRM キープロバイダーの実装に次の項目を含めます。
+ リクエストペイロードとレスポンスペイロードで要素 `<cpix:DeliveryDataList>` を処理します。
+ レスポンスペイロードの `<cpix:ContentKeyList>` に暗号化された値を入力します。

これらの要素の詳細については、「[DASH-IF CPIX 2.0 仕様](https://dashif.org/docs/DASH-IF-CPIX-v2-0.pdf)」を参照してください。

 *レスポンスペイロードのコンテンツキー暗号化要素の例 ` <cpix:DeliveryDataList> `* 

次の例は、追加された `<cpix:DeliveryDataList>` 要素を太字で示しています。

```
<?xml version="1.0" encoding="UTF-8"?>
<cpix:CPIX id="example-test-doc-encryption"
    xmlns:cpix="urn:dashif:org:cpix"
    xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc"
    xmlns:speke="urn:aws:amazon:com:speke">
    <cpix:DeliveryDataList>
        <cpix:DeliveryData id="<ORIGIN SERVER ID>">
            <cpix:DeliveryKey>
                <ds:X509Data>
                    <ds:X509Certificate><X.509 CERTIFICATE, BASE-64 ENCODED></ds:X509Certificate>
                </ds:X509Data>
            </cpix:DeliveryKey>
        </cpix:DeliveryData>
    </cpix:DeliveryDataList>
    <cpix:ContentKeyList>
     ...
    </cpix:ContentKeyList>
</cpix:CPIX>
```

 *レスポンスペイロードのコンテンツキー暗号化要素の例` <cpix:DeliveryDataList> `* 

次の例は、追加された `<cpix:DeliveryDataList>` 要素を太字で示しています。

```
<cpix:CPIX xmlns:cpix="urn:dashif:org:cpix"
    xmlns:enc="http://www.w3.org/2001/04/xmlenc#"
    xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc"
    xmlns:speke="urn:aws:amazon:com:speke" id="hls_test_001">
    <cpix:DeliveryDataList>
        <cpix:DeliveryData id="<ORIGIN SERVER ID>">
            <cpix:DeliveryKey>
                <ds:X509Data>
                    <ds:X509Certificate><X.509 CERTIFICATE, BASE-64 ENCODED></ds:X509Certificate>
                </ds:X509Data>
            </cpix:DeliveryKey>
            <cpix:DocumentKey Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc">
                <cpix:Data>
                    <pskc:Secret>
                        <pskc:EncryptedValue>
                            <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" />
                            <enc:CipherData>
                                <enc:CipherValue><RSA CIPHER VALUE></enc:CipherValue>
                            </enc:CipherData>
                        </pskc:EncryptedValue>
                        <pskc:ValueMAC>qnei/5TsfUwDu+8bhsZrLjDRDngvmnUZD2eva7SfXWw=</pskc:ValueMAC>
                    </pskc:Secret>
                </cpix:Data>
            </cpix:DocumentKey>
            <cpix:MACMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512">
                <cpix:Key>
                    <pskc:EncryptedValue>
                        <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" />
                        <enc:CipherData>
                            <enc:CipherValue><RSA CIPHER VALUE></enc:CipherValue>
                        </enc:CipherData>
                    </pskc:EncryptedValue>
                    <pskc:ValueMAC>DGqdpHUfFKxdsO9+EWrPjtdTCVfjPLwwtzEcFC/j0xY=</pskc:ValueMAC>
                </cpix:Key>
            </cpix:MACMethod>
        </cpix:DeliveryData>
    </cpix:DeliveryDataList>
    <cpix:ContentKeyList>
     ...
    </cpix:ContentKeyList>
</cpix:CPIX>
```

 *レスポンスペイロードのコンテンツキー暗号化要素の例` <cpix:ContentKeyList> `* 

次の例は、レスポンスペイロードの `<cpix:ContentKeyList>` 要素で暗号化されたコンテンツキーの処理を示しています。これは `<pskc:EncryptedValue>` 要素を使用します。

```
   <cpix:ContentKeyList>
        <cpix:ContentKey kid="682681c8-69fa-4434-9f9f-1a7f5389ec02">
            <cpix:Data>
                <pskc:Secret>
                    <pskc:EncryptedValue>
                        <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
                        <enc:CipherData>
                            <enc:CipherValue>NJYebfvJ2TdMm3k6v+rLNVYb0NoTJoTLBBdbpe8nmilEfp82SKa7MkqTn2lmQBPB</enc:CipherValue>
                        </enc:CipherData>
                    </pskc:EncryptedValue>
                    <pskc:ValueMAC>t9lW4WCebfS1GP+dh0IicMs+2+jnrAmfDa4WU6VGHc4=</pskc:ValueMAC>
                </pskc:Secret>
            </cpix:Data>
        </cpix:ContentKey>
    </cpix:ContentKeyList>
```

これに対して、以下の例は、クリアキーとして暗号化されていないコンテンツキーを持つ同様のレスポンスペイロードを示しています。これは `<pskc:PlainValue>` 要素を使用します。

```
    <cpix:ContentKeyList>
        <cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="682681c8-69fa-4434-9f9f-1a7f5389ec02">
            <cpix:Data>
                <pskc:Secret>
                    <pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue>
                </pskc:Secret>
            </cpix:Data>
        </cpix:ContentKey>
    </cpix:ContentKeyList>
```

# SPEKE API v1 - ハートビート
<a name="heartbeat"></a>

 *リクエストの構文例* 

次の URL は例であり、固定形式ではありません。

```
GET https://speke-compatible-server/speke/v1.0/heartbeat
```

 *レスポンスのリクエスト* 


| HTTP コード | ペイロード名 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  statusMessage  |  1..1  |  ステータスを説明するメッセージ  | 

# SPEKE API v1 - キー識別子のオーバーライド
<a name="kid-override"></a>

エンクリプタは、キーを回すたびに新しいキー識別子 (KID) を作成します。リクエストで KID を DRM キープロバイダーに渡します。ほとんどの場合、キープロバイダーは同じ KID を使用して応答しますが、レスポンスの KID には異なる値を提供できます。

以下は、KID `11111111-1111-1111-1111-111111111111` のリクエスト例です。

```
    <cpix:CPIX id="abc123" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
      <cpix:ContentKeyList>
       <cpix:ContentKey kid="11111111-1111-1111-1111-111111111111"></cpix:ContentKey>
      </cpix:ContentKeyList>
      <cpix:DRMSystemList>
       <!-- Common encryption (Widevine)-->
       <cpix:DRMSystem kid="11111111-1111-1111-1111-111111111111" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
        <cpix:PSSH />
       </cpix:DRMSystem>
      </cpix:DRMSystemList>
      <cpix:ContentKeyPeriodList>
       <cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
      </cpix:ContentKeyPeriodList>
      <cpix:ContentKeyUsageRuleList>
       <cpix:ContentKeyUsageRule kid="11111111-1111-1111-1111-111111111111">
        <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" />
       </cpix:ContentKeyUsageRule>
      </cpix:ContentKeyUsageRuleList>
     </cpix:CPIX>
```

次のレスポンスは、KID を `22222222-2222-2222-2222-222222222222` にオーバーライドします。

```
     <cpix:CPIX xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke" id="abc123">
      <cpix:ContentKeyList>
       <cpix:ContentKey explicitIV="ASgwx9pQ2/2lnDzJsUxWcQ==" kid="22222222-2222-2222-2222-222222222222">
        <cpix:Data>
         <pskc:Secret>
          <pskc:PlainValue>p3dWaHARtL97MpT7TE916w==</pskc:PlainValue>
         </pskc:Secret>
        </cpix:Data>
       </cpix:ContentKey>
      </cpix:ContentKeyList>
      <cpix:DRMSystemList>
       <cpix:DRMSystem kid="22222222-2222-2222-2222-222222222222" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
        <cpix:PSSH>AAAAanBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEoIARIQeSIcblaNbb7Dji6sAtKZzRoNd2lkZXZpbmVfdGVzdCIfa2V5LWlkOmVTSWNibGFOYmI3RGppNnNBdEtaelE9PSoCU0QyAA==</cpix:PSSH>
       </cpix:DRMSystem>
      </cpix:DRMSystemList>
      <cpix:ContentKeyPeriodList>
       <cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
      </cpix:ContentKeyPeriodList>
      <cpix:ContentKeyUsageRuleList>
       <cpix:ContentKeyUsageRule kid="22222222-2222-2222-2222-222222222222">
        <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" />
       </cpix:ContentKeyUsageRule>
      </cpix:ContentKeyUsageRuleList>
     </cpix:CPIX>
```