

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

# でのコンテンツ暗号化と DRM AWS Elemental MediaPackage
<a name="using-encryption"></a>

コンテンツ暗号化とデジタル著作権管理 (DRM) を通じてコンテンツを不正使用から保護します。 は、[AWS Secure Packager and Encoder Key Exchange (SPEKE) API](https://aws.amazon.com/media/tech/speke-basics-secure-packager-encoder-key-exchange-api/) AWS Elemental MediaPackage を使用して、DRM プロバイダーによるコンテンツの暗号化と復号を容易にします。SPEKE を使用する DRM プロバイダーは、SPEKE API を通じて MediaPackage に暗号化キーを提供します。同時に DRM プロバイダーは、サポートしているメディアプレイヤー用に復号化のためのライセンスも提供します。クラウドで実行されているサービスや機能での SPEKE の使用については、*Secure Packager and Encoder Key Exchange API Specification guide* の「[AWS cloud-based architecture](https://docs.aws.amazon.com/speke/latest/documentation/what-is-speke.html#services-architecture)」を参照してください。

## 制限事項と要件
<a name="encryption-requirements"></a>

のコンテンツ暗号化を実装する場合は AWS Elemental MediaPackage、以下の制限と要件を参照してください。
+  AWS Secure Packager and Encoder Key Exchange (SPEKE) API を使用して、デジタル著作権管理 (DRM) プロバイダーとの統合を容易にします。SPEKE の詳細については、「[What is Secure Packager and Encoder Key Exchange?](https://docs.aws.amazon.com/speke/latest/documentation/what-is-speke.html)」を参照してください。
+ 使用する DRM プロバイダーで、SPEKE がサポートされている必要があります。SPEKE をサポートしている DRM プロバイダの一覧については、*MediaPackage ユーザーガイド*のトピック「[Get on board with a DRM platform provider](https://docs.aws.amazon.com/speke/latest/documentation/customer-onboarding.html#choose-drm-provider)」を参照してください。DRM ソリューションプロバイダーは、MediaPackage で DRM 暗号化を使用するためのセットアップを支援します。
+ MediaPackage を使用して、ライブおよびビデオオンデマンド (VOD) のコンテンツを暗号化します。MediaPackage VOD サービスを介して配信する必要があるアセットは、暗号化されていない HLS ライブエンドポイントから収集される必要があります。DRM または暗号化で保護されている HLS および DASH のエンドポイントから live-to-VOD アセットを収集できます。しかし、これらのアセットは暗号化された (明確ではない) コンテンツであるため、MediaPackage VOD サービスはこれらのアセットを取り込むことができません。この種類のワークフローの詳細については、「[を使用した live-to-VOD アセットの作成 AWS Elemental MediaPackage](ltov.md)」を参照してください。

次のセクションでは、MediaPackage 向けの SPEKE を使用するコンテンツの暗号化を、選択および実装する方法について説明します。

**Topics**
+ [制限事項と要件](#encryption-requirements)
+ [適切な SPEKE バージョンを選択する](encryption-choosing-speke-version.md)
+ [SPEKE のデプロイ](encryption-deploying-speke.md)
+ [コンテンツキーで使用する証明書の準備と管理](drm-content-key-encryption.md)
+ [キーローテーションの動作について](drm-content-key-rotation.md)
+ [SPEKE バージョン 2.0 のプリセット](drm-content-speke-v2-presets.md)
+ [から親マニフェストからタグを削除する AWS Elemental MediaPackage](drm-query-param.md)

# 適切な SPEKE バージョンを選択する
<a name="encryption-choosing-speke-version"></a>

[SPEKE バージョン 1](https://docs.aws.amazon.com/speke/latest/documentation/the-speke-api.html) は、[CPIX バージョン 2.0](https://dashif.org/docs/DASH-IF-CPIX-v2-0.pdf) を使用して、すべてのオーディオトラックと動画トラックでの単一の暗号化キーの使用をサポートします。[SPEKE バージョン 2.0](https://docs.aws.amazon.com/speke/latest/documentation/the-speke-api-v2.html) は、[CPIX バージョン 2.3](https://dashif.org/docs/CPIX2.3/Cpix.html) を使用して、オーディオトラックと動画トラックでの複数の異なる暗号化キーの使用をサポートします。SPEKE バージョン 2.0 の暗号化設定の詳細については、「[SPEKE バージョン 2.0 のプリセット](drm-content-speke-v2-presets.md)」を参照してください。

複数のキー暗号化または Content Protection Information Exchange (CPIX) バージョン 2.3 の使用がコンテンツ配信の必須要件である場合は、SPEKE バージョン 2.0 の使用をお勧めします。ただし、SPEKE バージョン 2.0 のサポートのロールアウトは、MediaPackage のエンドポイントタイプ全体で現在進行中です。そのため、キーローテーションなど、一部のライブオプションはまだ利用できません。SPEKE の統合戦略を計画する際には、これらの制約事項を考慮してください。MediaPackage の SPEKE バージョン 2.0 ロードマップの詳細については、 AWS アカウント チームにお問い合わせください。

**サポートされているプロトコルと DRM プラットフォーム**

以下の表に、SPEKE バージョン 1.0 および SPEKE バージョン 2.0 でサポートされる各種のプロトコルとデジタル著作権管理 (DRM) プラットフォームを示します。

**注記**  
Irdeto のコンテンツ保護は SPEKE バージョン 1.0 との組み合わせではサポートされていません。


|  |  |  |  |  | 
| --- |--- |--- |--- |--- |
| SPEKE バージョン 1.0 – プロトコルと DRM システムのサポート一覧表 | Microsoft PlayReady | Google Widevine | Apple FairPlay | AES-128 | 
| ライブ | 
| Apple HLS | Not supported | Not supported |  √ キーローテーションあり  |  √  キーローテーションあり  | 
| CMAF Apple HLS | Not supported |  √ キーローテーションあり cbcs 暗号化のみをサポート  |  √ キーローテーションあり cbcs 暗号化のみをサポート  | Not supported | 
| DASH |  √  キーローテーションあり  |  √ キーローテーションあり  | Not supported | Not supported | 
| Microsoft Smooth | √ | Not supported | Not supported | Not supported | 
| VOD | 
| Apple HLS | Not supported | Not supported | √ | √ | 
| CMAF Apple HLS | Not supported |  √ cbcs 暗号化のみをサポート  |  √ cbcs 暗号化のみをサポート  | Not supported | 
| DASH | √ | √ | Not supported | Not supported | 
| Microsoft Smooth | √ | Not supported | Not supported | Not supported | 


|  |  |  |  |  | 
| --- |--- |--- |--- |--- |
| SPEKE バージョン 2.0 – プロトコルと DRM システムのサポート一覧表 | Microsoft PlayReady | Google Widevine | Apple FairPlay | Irdeto のコンテンツ保護 | 
| ライブ | 
| CMAF Apple HLS |  √ cbcs 暗号化と cenc 暗号化をサポート  |  √ cbcs 暗号化と cenc 暗号化をサポート  |  √ cbcs 暗号化をサポート  | Not supported | 
| DASH | √ | √ | Not supported | √ | 
| VOD | 
| CMAF Apple HLS |  √ cbcs 暗号化のみをサポート  |  √ cbcs 暗号化のみをサポート  |  √ cbcs 暗号化のみをサポート  | Not supported | 
| DASH | √ | √ | Not supported | √ | 

# SPEKE のデプロイ
<a name="encryption-deploying-speke"></a>

デジタル著作権管理 (DRM) ソリューションプロバイダーは、MediaPackage で DRM 暗号化を使用するためのセットアップを支援します。通常、プロバイダーは MediaPackage が実行されている AWS リージョン のと同じ AWS アカウント の にデプロイする SPEKE ゲートウェイを提供します。ユーザーは、オリジンエンドポイントを適切な暗号化設定で構成すると同時に、[キープロバイダーのイベント](https://docs.aws.amazon.com/mediapackage/latest/ug/cloudwatch-events-example.html#key-provider-state-events)用に (MediaPackage が CloudWatch イベントとして生成する) [イベント通知の設定](https://docs.aws.amazon.com/mediapackage/latest/ug/cloudwatch-events-notification.html)を行う必要があります。エンドポイントに暗号化を設定する方法については、プロトコルに対応したセクションを参照してください: [HLS 暗号化フィールド](https://docs.aws.amazon.com/mediapackage/latest/ug/endpoints-hls-encryption.html)、[MSS 暗号化フィールド](https://docs.aws.amazon.com/mediapackage/latest/ug/endpoints-smooth-encryption.html)、[CMAF 暗号化フィールド](https://docs.aws.amazon.com/mediapackage/latest/ug/endpoints-cmaf-encryption.html)、[DASH 暗号化フィールド](https://docs.aws.amazon.com/mediapackage/latest/ug/endpoints-dash-encryption.html)。

MediaPackage をキーサービスに接続するために独自の API Gateway を構築する必要がある場合は、その開始点として、GitHub から提供されている [SPEKE リファレンスサーバー](https://github.com/awslabs/speke-reference-server) を利用できます。

# コンテンツキーで使用する証明書の準備と管理
<a name="drm-content-key-encryption"></a>

AWS Elemental MediaPackage は Content Protection Information Exchange (CPIX) ドキュメントを使用して、コンテンツの暗号化に使用されるコンテンツキーについて SPEKE と通信します。最も安全なデジタル著作権管理 (DRM) 暗号化ソリューションでは、CPIX ドキュメントで暗号化されたコンテンツキーを使用します。

暗号化されたコンテンツキーを使用するには、次の要件を満たす必要があります。
+ 暗号化されたコンテンツはライブである必要があります。ビデオオンデマンド (VOD) ワークフローおよび Live-to-VOD ワークフローでは、CPIX ドキュメント内の暗号化されたコンテンツキーはサポートされません。
+ DRM キープロバイダーは、暗号化されたコンテンツキーをサポートする必要があります。コンテンツキーの暗号化を扱えないキープロバイダーに対してこの機能を有効にした場合、再生は失敗します。
+ MediaPackage を実行するのと同じリージョンの AWS Certificate Manager (ACM) に適切な証明書をインポートする必要があります。ACM の詳細については、「[AWS Certificate Manager ユーザーガイド](https://docs.aws.amazon.com/acm/latest/userguide/)」を参照してください。

  次の手順では、証明書を準備および管理する方法について説明します。

**DRM コンテンツキー暗号化の証明書を準備するには**

1. 2048 RSA、SHA-512 署名証明書を取得します。

1. ACM コンソール ([https://console.aws.amazon.com/acm/](https://console.aws.amazon.com/acm/)) を開きます。

1. 「[AWS Certificate Manager に証明書をインポートする。](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)」の手順に従って、証明書を ACM にインポートします。後で必要になるので、その結果の証明書 ARN を書き留めておきます。

   DRM 暗号化で使用する証明書では、ACM でのステータスが **[Issued]** (発行済み) となっている必要があります

**で証明書を使用するには AWS Elemental MediaPackage**

エンドポイント設定で DRM 暗号化を使用する場合、暗号化パラメータで証明書 ARN を提供します。これにより、コンテンツキーを暗号化します。複数のイベントに対して同じ証明書 ARN を使用できます。詳細については、[でのエンドポイントの使用 AWS Elemental MediaPackage](endpoints.md) で暗号化設定情報を参照してください。

**証明書を更新するには**

使用している証明書を更新するには AWS Elemental MediaPackage、ACM に再インポートします。証明書の更新は、MediaPackage での使用を中断することなく実行されます。

**証明書を削除するには**

ACM から証明書を削除するには、その他のサービスと関連付けられていない状態である必要があります。使用しているエンドポイント設定から証明書 ARN を削除してから、ACM から削除します。

**注記**  
アクティブなエンドポイントから証明書 ARN を削除した場合、エンドポイントは実行され続けますが、コンテンツキーの暗号化の使用は停止されます。

# キーローテーションの動作について
<a name="drm-content-key-rotation"></a>

HLS、CMAF、および DASH のエンドポイントからライブコンテンツのキーローテーションを有効にすると、 AWS Elemental MediaPackage はライブコンテンツの開始前にコンテンツキーを取得します。「[パッケージの暗号化フィールド](endpoints-hls-encryption.md)」で説明されているように、MediaPackage は、コンテンツの進行に応じ、エンドポイントで設定した間隔で新しいキーを取得します。

MediaPackage は、コンテンツキーを取得できない場合、以下のアクションを実行します。
+ MediaPackage が以前にこのエンドポイントのコンテンツキーを正常に取得している場合には、最後に取得したキーを使用します。これにより、以前に動作したエンドポイントが引き続き動作します。
+ 以前にこのエンドポイントのコンテンツキーを正常に取得*していない*場合、MediaPackage は、エラー 404 で再生リクエストに応答します。

いずれの場合も、MediaPackage がコンテンツキーを取得できない場合は、「[キープロバイダーの通知イベント](cloudwatch-events-example.md#key-provider-state-events)」で説明されているように、CloudWatch イベントが生成されます 。

# SPEKE バージョン 2.0 のプリセット
<a name="drm-content-speke-v2-presets"></a>

SPEKE バージョン 2.0 は、オーディオトラックと動画トラックでの複数の異なる暗号化キーの使用をサポートします。MediaPackage では**プリセット**を使用して暗号化を設定します。MediaPackage API はこれらのプリセットを定義します。プリセットは、MediaPackage コンソールの **[パッケージの暗号化] エンドポイント設定**セクションの **[動画暗号化プリセット]** メニューと **[オーディオ暗号化プリセット]** メニューに表示されます。プリセットは、オーディオトラックのチャネル数と動画トラックの動画解像度に基づいて、暗号化キーを特定のオーディオトラックまたは動画トラックにマッピングします。MediaPackage は、オーディオと動画の暗号化プリセットの特定の組み合わせを使用して、次の 3 つの異なる暗号化シナリオをサポートします。
+ [シナリオ 1: 暗号化されないトラックと暗号化されるトラック](#drm-content-speke-v2-presets-unencrypted-and-encrypted-tracks)
+ [シナリオ 2: すべてのオーディオトラックと動画トラックでの単一の暗号化キー](#drm-content-speke-v2-presets-single-encryption-key-for-all-tracks)
+ [シナリオ 3: オーディオトラックと動画トラックでの複数の暗号化キー](#drm-content-speke-v2-presets-multiple-encryption-keys-for-audio-and-video-tracks)

## シナリオ 1: 暗号化されないトラックと暗号化されるトラック
<a name="drm-content-speke-v2-presets-unencrypted-and-encrypted-tracks"></a>

**[動画暗号プリセット]** または **[オーディオ暗号プリセット]** メニューで**[UNENCRYPTED]** プリセットを選択すると、オーディオトラックまたは動画トラックを暗号化しないようにできます。オーディオと動画のプリセットの両方に **[UNENCRYPTED]** を選択することはできません。どのトラックも暗号化するつもりはないということになるためです。また、**[SHARED]** は特別なプリセットであるため、オーディオおよび動画に **[UNENCRYPTED]** プリセットと **[SHARED]** プリセットを組み合わせることはできません。詳細については、「[シナリオ 2: すべてのオーディオトラックと動画トラックでの単一の暗号化キー](#drm-content-speke-v2-presets-single-encryption-key-for-all-tracks)」を参照してください。

**[UNENCRYPTED]** プリセットの有効な組み合わせを以下に示します。
+ オーディオトラックでの **[UNENCRYPTED]** と名前が `PRESET-VIDEO-` で始まる動画プリセット
+ 動画トラックでの **[UNENCRYPTED]** と名前が `PRESET-AUDIO-` で始まるオーディオプリセット

## シナリオ 2: すべてのオーディオトラックと動画トラックでの単一の暗号化キー
<a name="drm-content-speke-v2-presets-single-encryption-key-for-all-tracks"></a>

SPEKE バージョン 2.0 の **[SHARED]** プリセットは、SPEKE バージョン 1.0 と同様に、すべてのオーディオおよび動画トラックに 1 つの暗号化キーを使用します。**[SHARED]** プリセットを選択する場合は、オーディオと動画の両方の暗号化に使用するように選択します。

## シナリオ 3: オーディオトラックと動画トラックでの複数の暗号化キー
<a name="drm-content-speke-v2-presets-multiple-encryption-keys-for-audio-and-video-tracks"></a>

`PRESET-VIDEO-` または `PRESET-AUDIO-` で始まる名前のプリセットを使用すると、MediaPackage は特定のプリセットで定義されている暗号化キーの数でオーディオトラックと動画トラックを暗号化します。次の表は、MediaPackage がキーサーバーから要求するキーの数と、それらのキーがトラックにどのようにマッピングされるかを示しています。特定のキーの条件に一致するトラックがない場合、MediaPackage はそのキーを使用してトラックを暗号化しません。

MediaPackage は、I フレームのみのトリックプレイトラックをその解像度に対応するキーで暗号化します。

次の表の**キー名**の値は、MediaPackage が CPIX ドキュメントで使用する `ContentKeyUsageRule@IntendedTrackType` 属性の値です。この値は、特定のコンテンツキーの SPEKE サーバーに送信されます。


**動画暗号化のプリセット**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/mediapackage/latest/ug/drm-content-speke-v2-presets.html)

次の表の**キー名**の値は、MediaPackage が CPIX ドキュメントで使用する `ContentKeyUsageRule@IntendedTrackType` 属性の値です。この値は、特定のコンテンツキーの SPEKE サーバーに送信されます。


**オーディオ暗号化プリセット**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/mediapackage/latest/ug/drm-content-speke-v2-presets.html)

これで、暗号化されないトラックと暗号化されるトラックに対する SPEKE バージョン 2.0 のプリセットが MediaPackage でどのようにサポートされるかがわかりました。これらのプリセットを使用すると、すべてのオーディオトラックと動画トラックで単一の暗号化キーを使用したり、オーディオトラックと動画トラックで複数の暗号化キーを使用したりできます。

# から親マニフェストからタグを削除する AWS Elemental MediaPackage
<a name="drm-query-param"></a>

親の MediaPackage シグナルは、HLS または CMAF エンドポイントのすべてのトラックタイプの`#EXT-X-SESSION-KEY`タグをマニフェストします。このタグにより、キーが複数のストリーム間で共有されるときに、再生デバイスがキーをプリフェッチできるようになります。トラックのサブセットのみを使用していて、親マニフェストで参照されるすべてのキーを必要としない場合など、このオプションのタグが不要な場合があります。SPEKE v2 では、親マニフェストからすべての`#EXT-X-SESSION-KEY `タグを削除するクエリパラメータをマニフェストリクエストに追加できます。各子マニフェストには復号キーを取得するための独自の`#EXT-X-KEY`タグがあるため、 `#EXT-X-SESSION-KEY `はしばしば過剰です。

MediaPackage マニフェストレスポンスから`#EXT-X-SESSION-KEY`タグを削除するには、次のクエリパラメータを使用します。 `aws.drmsettings=excludesessionkeys`

次のセクションでは、クエリパラメータの使用について詳しく説明します。

## クエリ構文
<a name="drm-params-syntax"></a>

`#EXT-X-SESSION-KEY` タグを削除するための基本クエリパラメータは で`aws.drmsettings`、オプションのパラメータ名と値のペアが続きます。クエリを作成するには、MediaPackage エンドポイント URL の末尾`?aws.drmsettings=`に を追加し、その後にパラメータ名と値を追加します。

Apple HLS フィルタクエリは次のようになります。

`https://example-mediapackage-endpoint.mediapackage.us-west-2.amazonaws.com/out/v1/examplemediapackage/index.m3u8?aws.drmsettings=excludesessionkeys`

次の表に、クエリ構文が表示されます。

**注記**  
Amazon CloudFront を CDN として使用する場合は、追加の設定が必要になる場合があります。詳細については、[「すべてのエンドポイントのキャッシュ動作を設定する](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/live-streaming.html#live-streaming-with-mediapackage-create-cache-behavior)」を参照してください。


| クエリ文字列のコンポーネント | 説明 | 
| --- | --- | 
| ? | クエリの先頭を示す制限された文字。 | 
| aws.drmsettings= | 名前と値のペアで構成されたパラメータが続くベースクエリ。 | 
| : | パラメータ名と値を関連付けるために使用されます。例えば、parameter\$1name:value などです。 | 
| ; | 複数のパラメータを含むクエリのパラメータを区切ります。例えば、parameter1\$1name:value;parameter2\$1name:minValue-maxValue。同じクエリのパラメータのリストで使用する場合、 ANDオペレーションを意味します。 | 

## エラー状態
<a name="error-conditions-and-handling-drm"></a>

一部の再生デバイスは、マニフェストまたはセグメントに無効なクエリパラメータまたは不明なクエリパラメータが含まれている場合、エラーを返します。MediaPackage が処理できるクエリパラメータは次のとおりです。
+ `m`
+ `start`
+ `end`
+ `aws.manifestfilter`
+ `aws.drmsettings`

リストされている以外のクエリパラメータがある場合は、Amazon CloudFront などの CDN を使用して不要なパラメータを削除します。詳細については、*Amazon CloudFront デベロッパーガイド*」の[「クエリ文字列パラメータに基づくコンテンツのキャッシュ](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/QueryStringParameters.html)」を参照してください。

次の表に、その他の一般的なエラー条件を示します。


****  

| エラー状態 | 例 | HTTP ステータスコード | 
| --- | --- | --- | 
| リストパラメータが見つからず、限定されたリストの一部でもない | ?aws.manifestfilter=audio\$1language:dahlia | 200 | 
| 字幕ストリームのみがストリームに存在している | ?aws.manifestfilter=audio\$1sample\$1rate:0-1;video\$1bitrate=0-1 | 200 | 
| フィルタパラメータが重複している | ?aws.manifestfilter=audio\$1sample\$1rate:0-48000;aws.manifestfilter=audio\$1sample\$1rate:0-48000 | 400 | 
| 無効なパラメータ | ?aws.manifestfilter=donut\$1type:rhododendron | 400 | 
| 無効な範囲パラメータ | ?aws.manifestfilter=audio\$1sample\$1rate:300-0 | 400 | 
| 無効な範囲値 (INT\$1MAX 以上) | ?aws.manifestfilter=audio\$1sample\$1rate:0-2147483648 | 400 | 
| 正しい形式でないクエリ文字列 | ?aws.manifestfilter=audio\$1sample\$1rate:is:0-44100 | 400 | 
| パラメータ文字列が 1024 文字を超えている | ?aws.manifestfilter=audio\$1language:abcdef.... | 400 | 
| HLS または CMAF ビットレートマニフェストのクエリパラメータ | index\$11.m3u8?aws.manifestfilter=video\$1codec:h264 | 400 | 
| セグメントリクエストのクエリパラメータ | ...\$11.[ts\$1mp4\$1vtt..]?aws.manifestfilter=video\$1codec:h264 | 400 | 
| 繰り返しクエリパラメータ | ?aws.manifestfilter=audio\$1sample\$1rate:0-48000;aws.manifestfilter=video\$1bitrate:0-1 | 400 | 
| フィルタを適用すると、空のマニフェストになる (コンテンツには、クエリ文字列で定義された条件を満たすストリームがない)。 | ?aws.manifestfilter=audio\$1sample\$1rate:0-1;video\$1bitrate=0-1 | 400 | 