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 など) でコンテンツを暗号化する場合は、プロのエンコーダー会社と連携することもできます。
暗号化ツールの使用
PlayReady では、ISO IEC 共通暗号化標準がサポートされています。 このプロセスは 、基本的な暗号化とライセンスプロセスで説明されているのと同じですが、他の DRM のヘッダーは、その DRM の SystemID によって識別される保護システム固有のヘッダー ('pssh') ボックスのペイロードとして含まれます。 これらのヘッダーはすべて、KID または最終的にコンテンツ キーにアクセスするために必要な情報を指定する独自の構文を持ちます。 また、この資産のコンテンツ キーは、すべての DRM で同じになります。

暗号化キーの使用
資産を暗号化するには、さまざまな方法があります。 最もシンプルなものから最も高度なものは、システムで設計する複雑さの程度と、サービスのニーズによって異なります。
たとえば、次の図に示すように、アダプティブ ストリーミング資産を考えてみましょう。 4 種類のビデオ品質、1 つのオーディオ トラック、1 つのサブタイトル トラックがあります。セグメント化された MP4 ファイルでエンコードされ、セグメントはそれぞれ 2.0 秒です。 これは、クライアントが再生したい内容に応じて、複数の形式で提供される 1 つの資産です。 Smooth Streaming、HLS、DASH が最も一般的なバリアントです。 再生中、クライアント (ビデオ プレーヤー) は、ネットワーク経由でアセットのセグメントを連続してダウンロードし、適切なビデオ トラックからビデオ セグメントを再生時間ごとに選択し、再生品質を可能な限り高く保つために、ネットワーク帯域幅の制約、再生速度、プレーヤー機能などのその他の限られたリソースを指定します。 このロジックはアダプティブ ストリーミング再生と呼ばれ、プレーヤーに実装されている一部のヒューリスティック ルールによって管理されます。

1 つのキーだけで資産を暗号化する
これらの資産を暗号化する最も簡単な方法は、1 つのコンテンツ キーを使用してすべてを暗号化することです (通常、サブタイトルは暗号化されません。どのルールにも違反しませんが、通常は明確に保持されます)。 1つのコンテンツキーを使用することで、ライセンスサーバーは1つのキー{KID, CK}を配信するだけで済むため、ライセンスサーバーの運用が容易になります。 通常、このキーは、再生が発生する前にクライアントによって取得されます。

注
PlayReady クライアントは、事前または事後対応的にライセンスを取得できます。 これら 2 つのモードの説明については、「 ライセンス取得 」ページを参照してください。
2 つのキーを使用して資産を暗号化し、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 には、(ライセンスローテーションではなく) スケーラブルなキーローテーションと呼ばれる高度なメカニズムがあります。 このメソッドは、埋め込みライセンス ストア (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 秒ごとにローテーションできます。
