コンテンツのパッケージ化と配信
PlayReady の基本的な機能は、承認されていない使用からコンテンツを保護することです。 これを行うには、まずコンテンツを暗号化し、関連する PlayReady ヘッダーをコンテンツに挿入する必要があります。 この操作を行うシステムは、暗号化機能とも呼ばれるパッケージャーであり、エンコーダーと統合される場合があります。
このトピックでは、PlayReady を使用してコンテンツを暗号化して配信するさまざまな方法について説明します。
PlayReady コンテンツのパッケージ化 - DRM ヘッダーの暗号化と挿入
クリア コンテンツを暗号化するプロセスは、1 つまたは複数の暗号化キーを定義し、これらのキーを使用してコンテンツ自体を構成するバイトを暗号化し、コンテンツ (コンテンツのファイル内、またはコンテンツに 1 つがある場合はマニフェスト内) に DRM ヘッダーを挿入します。
PlayReady によって保護されるすべての暗号化されたコンテンツには、暗号化されたファイルに PlayReady ヘッダーが挿入されている必要があります。 この PlayReady ヘッダーは、PlayReady クライアントがその特定のコンテンツのライセンスを検索または取得するために使用されます。 PlayReady ヘッダーは、UTF-16 でエンコードされた XML で構成されます。 これには、コンテンツの暗号化に使用されるキー識別子 (KID)、クライアントが他に指定されていない場合のライセンス取得に使用する既定の URL、およびカスタム属性が含まれます。
クリア コンテンツをパッケージ化するすべてのパッケージャーは、PlayReady ヘッダー ジェネレーターを実装してヘッダーをビルドし、暗号化されたコンテンツに埋め込む必要があります。 PlayReady ヘッダーは、 PlayReady ヘッダー仕様に従って実装する必要があります。 パッケージャーで PlayReady ヘッダー ジェネレーターを作成するには、複数の方法があります。
- PlayReady ヘッダー仕様に基づいて自分で開発します。
- PlayReady ヘッダーを生成する PlayReady Server SDK API を使用します。
- PlayReady ヘッダーを生成するWindows 10 API を使用します。
暗号化されたコンテンツには、PlayReady ヘッダーやサードパーティの DRM ヘッダーなど、複数の DRM ヘッダーを含めることができます。 このしくみについて詳しくは、「 暗号化ツールの使用」をご覧ください。
コンテンツの種類
PlayReady は、オーディオとビデオのコンテンツを保護するために使用できます。 PlayReady で使用されるエンコードの最も一般的な種類は、MPEG-4 AVC (H.264)、高効率ビデオ コーディング (HEVC) H.265 標準、AV1 標準です。 PlayReady はこれらの標準に限定されず、クライアント デバイスでサポートされている任意のオーディオおよびビデオ形式で使用できます。
PlayReady バージョン 1 と 2 を使用すると、オーディオまたはビデオのペイロードに限定されないコンテンツを含む保護されたパッケージを作成できます。 これらのパッケージは、封筒と呼ばれ、データ ファイルや実行可能ファイルのコレクション (アプリケーション ストアによって配布されるアプリケーションなど)、画像 (画面の壁紙など)、電子ブックなどのファイルを含めることができます。 このコンテンツは、ファイルをエンベロープ ファイルにカプセル化することによってパッケージ化されます。これは、オーディオ/ビデオ コンテンツと同様の方法で復号化できます。
これらの非オーディオ/ビデオ コンテンツ タイプは、PlayReady 3.0 以降ではサポートされなくなりました。
暗号化ツール
Microsoft は、PlayReady 成果物の一部としてパッケージャーを含んでいません。 代わりに、PlayReady では、エンコーダーで使用される一般的な暗号化標準に基づく仕様が提供されます。 したがって、暗号化形式は PlayReady 固有ではなく、ファイル形式の関数です。 現在最も広く使用されている暗号化形式は、Common Encryption ISO Standard 形式 、ISO/IEC 23001-7 です。
基本的には、独自のパッケージャーを作成することも、任意の種類のオープンソース暗号化機能 (ffmpeg など) を操作することもできます。 さらに、PlayReady (ハーモニック、エレメンタル、エリクソン、Wowza、Allegro など) でコンテンツを暗号化する場合は、プロのエンコーダー会社と連携することもできます。 Azure Media Servicesには、明確なコンテンツのパッケージ化機能も用意されています。
暗号化ツールの使用
PlayReady では、ISO IEC 共通暗号化標準がサポートされています。 このプロセスは 、基本的な暗号化とライセンスプロセスで説明されているのと同じですが、ヘッダーは他の DRM に含まれます。各 DRM は、その DRM の SystemID によって識別される保護システム固有ヘッダー ('pssh') ボックスのペイロードとして含まれます。 これらのヘッダーはすべて、最終的にコンテンツ キーにアクセスするために必要な KID または情報を指定する独自の構文を持ちます。 また、この資産のコンテンツ キーはすべての DRM で同じになります。
暗号化キーの使用
資産を暗号化するには、さまざまな方法があります。 最もシンプルなものから最も高度なものは、システムで設計する複雑さと、サービスのニーズによって異なります。
たとえば、次の図に示すように、アダプティブ ストリーミング資産を考えてみましょう。 4 つの異なるビデオ品質、1 つのオーディオ トラック、1 つのサブタイトル トラックがあります。セグメント化された MP4 ファイルでエンコードされ、セグメントはそれぞれ 2.0 秒です。 これは、クライアントが再生したい内容に応じて、複数の形式で提供される 1 つの資産です。 スムーズ ストリーミング、HLS、DASH が最も一般的なバリエーションです。 再生中、クライアント (ビデオ プレーヤー) は、ネットワーク経由でアセットのセグメントを連続してダウンロードし、適切なビデオ トラックからビデオ セグメントを再生するたびに選択します。再生品質を可能な限り高く保つために、ネットワーク帯域幅、再生速度、およびプレーヤーの機能などのその他の限られたリソースの制約を受けます。 このロジックはアダプティブ ストリーミング再生と呼ばれ、プレイヤーに実装されている一部のヒューリスティック ルールによって管理されます。
1 つのキーだけで資産を暗号化する
これらの資産を暗号化する最も簡単な方法は、1 つのコンテンツ キーを使用してすべてを暗号化することです (通常、サブタイトルは暗号化されません。どのルールにも反しませんが、通常は明確に保持されます)。 1 つのコンテンツ キーを使用すると、ライセンス サーバーが 1 つのキー {KID, CK} を配信する必要があるため、ライセンス サーバーの操作が簡単になります。 通常、このキーは、再生が発生する前にクライアントによって取得されます。
注意
PlayReady クライアントは、プロアクティブまたはリアクティブにライセンスを取得できます。 これら 2 つのモードの説明については、「 ライセンス取得 」ページを参照してください。
2 つのキーを使用して資産を暗号化し、1 つを最高品質に専用にする
過去 1 年間に、資産ごとに複数のキーを使用するようにいくつかの機能強化が行われています。主に、特定の最高の堅牢性を持つクライアントのみが最高品質のコンテンツを使用できるようにするという要件に基づきます。 Ultra HD (4K) コンテンツが到着し、より高いカラー コンテンツ用の高ダイナミック レンジ (HDR) が追加されたことで、スタジオとサービスは、一般的にハードウェア DRM が組み込まれている特定のクライアントでのみ最高品質を実現する必要がありました。 このシナリオでは、資産は、異なるコンテンツ キー {kid2, ck2} を使用して暗号化された 4K トラックを除き、すべてのトラックに対して 1 つのコンテンツ キー {kid1, ck1} を使用して暗号化されます。 つまり、
- (4K トラックではなく) フル HD までしか再生できないクライアントには、{kid1, ck1} のみを含む PlayReady ライセンスが配信されます。
- 最大 4K のプレイが許可されているクライアントには、{kid1、ck1}、{kid2、ck2} を含む PlayReady ライセンスが配信されます。
この追加の複雑さを使用して、サービスは、一部のクライアントが 4K トラックの暗号化を解除できないことと、サービスが最も信頼するクライアントのみに 4K トラックを予約できることを保証できます。
トラックごとに 1 つのキーを使用して資産を暗号化する
サービスには、適用する権限のより複雑なマップが含まれている場合があります。 一部のクライアントは、画面サイズ、堅牢性、出力、場所に応じて、一部のビデオ トラック、一部のビデオ品質、一部のオーディオ トラックにのみアクセスできる場合があります。 サービスが将来、任意の制限のセットを適用する際に十分な柔軟性を持っていることを確認するために、各トラックに固有のコンテンツ キーを使用して資産を暗号化する場合があります。例えば:
- 720p のみをプレイできるクライアントには、{kid1、ck1}、{kid2、ck2}、{kidA、ckA} を含む PlayReady ライセンスが配信されます。
- 最大 4K のプレイが許可されているクライアントには、{kid1、ck1}、{kid2、ck2}、{kid3、ck3}、{kid4、ck4}、{kidA、ckA} などの PlayReady ライセンスが配信されます。
- 4K バージョンの資産 (以前にダウンロードした) をオフラインでプレイしているクライアントには、{kid4、ck4} および {kidA, ckA} を含む PlayReady ライセンスが配信されます。
暗号化キーを定期的に変更する (複数期間の資産) - ライセンスローテーション
一部のシナリオでは、通常はプログラムの境界で暗号化キーを変更することが必要な場合があります。 たとえば、ライブ リニア ストリームには複数の期間があり、すべてのユーザーにアクセスできるようにする空きコンテンツと、サブスクライバーに制限された一部のコンテンツが含まれます。 プログラムの境界で暗号化キーを変更すると、サービスは、制限なしに空きキー {KIDi1、CKi1} をすべてのユーザーに配信し、サービスに正常にログインしたサブスクライバーにのみコンテンツ キー {kidi2, cki2} を配信できます。
このライセンスローテーションはあまりスケーラブルではないことに注意してください。暗号化キーが変更されるたびに、すべてのクライアントが独自のライセンス要求を使用して新しい暗号化キーを要求します。 これにより、多数のクライアントを持つシステムでライセンス要求のピークが高くなる可能性があります。
暗号化キーを頻繁に変更する -スケーラブルなキーローテーション
PlayReady には、(ライセンスローテーションではなく) スケーラブルなキーローテーションと呼ばれる高度なメカニズムがあります。 このメソッドは、実際のコンテンツのストリームに埋め込みライセンス Microsoft Store (ELS) を格納します。 このメカニズムでは、A2 セグメント自体の暗号化に使用されるキーはリーフ キー {kidA2, ckA2} と呼ばれ、セグメント A2 の ELS で配信され、ルート キー {kidRA, ckRA} と呼ばれるトラック A のすべてのセグメントで同じ別のキーで暗号化されます。 MPEG-2 TS と Control Word の暗号化に慣れている場合は、暗号化がはるかに強力であり、柔軟性も高い以外は同様のメカニズムです。
たとえば、この資産がライブ リニア テレビであるとします。 クライアントは、再生を試みると、ストリーム マニフェストの PlayReady ヘッダーで kidRA を見つけ、kidRA のライセンスを要求します。 ライセンス サーバーは、ルート キー {kidRA, ckRA} のルート ライセンスを返します。 次に、クライアントはセグメント A1 を解析し、セグメントのヘッダー内の ELS を検出します。 この ELS を解析すると、この ELS でリーフ ライセンス {kidA1, ckA1} が見つかります。 ルート キー {kidRA,ckRA} とリーフ ライセンス {kidA1, ckA1} を使用して、ckA1 の値を取得し、セグメント A1 を復号化してレンダリングできます。
PlayReady のスケーラブルなキーローテーション機能は、暗号化キーが変更されるたびにクライアントがライセンス サーバーに接続する必要がないため、非常にスケーラブルです。 クライアントは、ストリームまたは追跡ごとにライセンス サーバーからのルート ライセンスを 1 つだけ必要とするため、ライセンス要求の量は可能な限り最小限に維持されます。これにより、暗号化キーは、すべてのセグメントと同じ頻度で、通常は必要に応じて 2 秒ごとにローテーションできます。