保護されたメディア パス

このトピックでは、保護された環境、メディア相互運用性ゲートウェイ、失効と更新の 3 つの関連トピックについて説明します。

  • 保護された環境 (PE) は、保護されたコンテンツを保護された方法で Windows Vista との間でフローできるようにする一連のテクノロジです。 保護された環境内のすべてのコンポーネントは信頼され、プロセスは改ざんから保護されます。
  • 保護されたメディア パス (PMP) は、保護された環境で実行される実行可能ファイルです。
  • PE 内の信頼されたコンポーネントが侵害された場合、期限切れプロセス後に取り消されます。 ただし、Microsoft では、コンポーネントが使用可能になったときに、新しい信頼されたバージョンのコンポーネントをインストールするための更新メカニズムを提供しています。

保護されたメディア コンポーネントのコード署名の詳細については、 Windows Vista の保護されたメディア コンポーネントのコード署名に関するホワイト ペーパーを参照してください。

このトピックは、次のセクションで構成されています。

保護された環境

コンテンツ保護には複数のテクノロジが含まれており、それぞれがコンテンツ所有者またはプロバイダーの意図と矛盾する方法でコンテンツを使用できないようにします。 これらのテクノロジには、コピー保護、リンク保護、条件付きアクセス、デジタル著作権管理 (DRM) が含まれます。 それぞれの基盤は信頼です。コンテンツへのアクセスは、そのコンテンツに割り当てられた使用条件に従うソフトウェア コンポーネントにのみ付与されます。

保護されたコンテンツに対する脅威を最小限に抑えるために、Windows Vista および Media Foundation Software を使用すると、信頼されたコードを保護された環境で実行できます。 PE は、コンテンツの著作権侵害に対する保護を強化するために設計された一連のコンポーネント、ガイドライン、およびツールです。

PE をより詳しく調べる前に、最小限に抑えるように設計されている脅威を理解することが重要です。 ユーザー モード プロセスでメディア アプリケーションを実行するとします。 アプリケーションは、デコーダーなどのメディア プラグインを含むさまざまなダイナミック リンク ライブラリ (DLL) にリンクされます。 他のプロセスもユーザー モードで実行されており、さまざまなドライバーがカーネルに読み込まれます。 信頼メカニズムが設定されていない場合は、次の脅威が存在します。

  • アプリケーションは、保護されたメディアに直接アクセスしたり、プロセス メモリをハッキングしたりできます。
  • プラグインは、コンテンツに直接アクセスしたり、プロセス メモリをハッキングしたりできます。
  • 他のプロセスでは、メディア プロセスのメモリを直接またはコードを挿入することによってハッキングできます。
  • カーネル ドライバーは、メディア プロセス メモリをハッキングできます。
  • コンテンツは、保護されていないメディア経由でシステムの外部に送信される可能性があります。 (リンク保護は、この脅威を軽減するように設計されています。

保護された環境の設計

保護された環境は、メディア アプリケーションとは別の保護されたプロセスで実行されます。 Windows Vista の保護されたプロセス機能により、他のプロセスが保護されたプロセスにアクセスできなくなります。

保護されたプロセスが作成されると、コア カーネル コンポーネントは、信頼されていないコンポーネントとプラグインを識別して、保護された環境で読み込みを拒否できるようにします。 信頼されたコンポーネントは、Microsoft によって適切に署名されたコンポーネントです。 カーネルはそれに読み込まれるモジュールも追跡し、信頼されていないモジュールが読み込まれた場合に保護された環境で保護されたコンテンツの再生を停止できるようにします。 カーネル コンポーネントが読み込まれる前に、カーネルは信頼されているかどうかを確認します。 そうでない場合、PE に既に存在する信頼されたコンポーネントは、保護されたコンテンツの処理を拒否します。 これを有効にするために、PE コンポーネントは、カーネルとの暗号で保護されたハンドシェイクを定期的に実行します。 信頼されていないカーネル モード コンポーネントが存在する場合、ハンドシェイクは失敗し、信頼されていないコンポーネントが存在することを PE に示します。

信頼されたコンポーネントが侵害された場合、期限切れプロセス後に取り消すことができます。 Microsoft は、使用可能な場合に新しい信頼されたバージョンをインストールするための更新メカニズムを提供します。

保護されたメディア パス

保護されたメディア パス (PMP) は、Media Foundation のプライマリ PE 実行可能ファイルです。 PMP は拡張可能であるため、サードパーティのコンテンツ保護メカニズムをサポートできます。

PMP は、第三者が提供するものを含め、あらゆるコンテンツ保護システムを使用して、Media Foundation ソースから保護されたコンテンツおよび関連ポリシーを受け入れます。 シンクがソースで指定されたポリシーに準拠している限り、Media Foundation シンクにコンテンツを送信します。 また、信頼されている限り、サード パーティの変換を含め、ソースとシンクの間の変換もサポートされます。

PMP は、メディア アプリケーションから分離された保護されたプロセスで実行されます。 アプリケーションには、PMP を使用してコマンドと制御メッセージを交換する機能しかありませんが、PMP に渡された後にコンテンツにアクセスすることはできません。 このプロセスを説明する図を次に示します。

保護されたメディア パスの図

網かけのボックスは、サード パーティによって提供される可能性のあるコンポーネントを表します。 保護されたプロセス内で作成されたすべてのコンポーネントは、署名され、信頼されている必要があります。

アプリケーションは、保護されたプロセス内にメディア セッションのインスタンスを作成し、プロセス境界を越えてインターフェイス ポインターをマーシャリングするプロキシ メディア セッションへのポインターを受け取ります。

メディア ソースは、次に示すように、アプリケーション プロセス内、または保護されたプロセス内で作成できます。 メディア ソースがアプリケーション プロセス内に作成された場合、ソースは保護されたプロセスでそれ自体のプロキシを作成します。

デコーダーやメディア シンクなどの他のすべてのパイプライン コンポーネントは、保護されたプロセスで作成されます。 これらのオブジェクトがアプリケーションのカスタム インターフェイスを公開する場合は、インターフェイスをマーシャリングするための DCOM プロキシ/スタブを提供する必要があります。

PMP は、パイプラインを通過する場合に保護されたコンテンツにポリシーを適用するために、入力信頼機関 (ITA)、出力信頼機関 (OTA)、およびポリシー オブジェクトの 3 種類のコンポーネントを使用します。 これらのコンポーネントは連携して、コンテンツを使用する権限を付与または制限し、高帯域幅デジタル コンテンツ保護 (HDCP) などのコンテンツの再生時に使用する必要があるリンク保護を指定します。

入力信頼機関

ITA は信頼できるメディア ソースによって作成され、いくつかの機能を実行します。

  • コンテンツを使用する権限を指定します。 権利には、コンテンツの再生、デバイスへの転送などの権利が含まれます。 承認された出力保護システムの順序付きリストと、各システムの対応する出力ポリシーを定義します。 ITA は、この情報をポリシー オブジェクトに格納します。
  • コンテンツの暗号化を解除するために必要な復号化機能を提供します。
  • ITA が信頼された環境内で確実に実行されるように、保護された環境でカーネル モジュールとの信頼を確立します。

ITA は、保護されたコンテンツを含む個々のストリームに関連付けられます。 1 つのストリームに含めることができる ITA は 1 つだけであり、ITA のインスタンスは 1 つのストリームにのみ関連付けることができます。

出力信頼機関

OTA は信頼された出力に関連付けられています。 OTA は、信頼された出力がコンテンツに対して実行できるアクション (再生やコピーなど) を公開します。 その役割は、ITA に必要な 1 つ以上の出力保護システムを適用することです。 OTA は、ITA によって提供されるポリシー オブジェクトに対してクエリを実行して、適用する必要がある保護システムを決定します。

ポリシー オブジェクト

ポリシー オブジェクトは、ITA のコンテンツ保護要件をカプセル化します。 ポリシー エンジンは、コンテンツ保護のサポートを OTA とネゴシエートするために使用されます。 OTA クエリ ポリシー オブジェクトを使用して、現在のコンテンツの各出力に適用する必要がある保護システムを決定します。

PMP でのオブジェクトの作成

保護されたメディア パス (PMP) にオブジェクトを作成するために、IMFMediaSource は、指定された入力 IStream が次のように書式設定された IMFPMPHostApp::ActivateClassById を呼び出します。

Format: (All DWORD values are serialized in little-endian order)
[GUID (content protection system guid, obtained from Windows.Media.Protection.MediaProtectionSystemId)]
[DWORD (track count, use the actual track count even if all tracks are encrypted using the same data, note that zero is invalid)]
[DWORD (next track ID, use -1 if all remaining tracks are encrypted using the same data)]
[DWORD (next track's binary data size)]
[BYTE* (next track's binary data)]
{ Repeat from "next track ID" above for each stream }

ポリシー ネゴシエーションの概要

保護されたコンテンツを PMP で処理するには、3 つの基本的な要件を満たす必要があります。 最初に、保護されたコンテンツは信頼できる出力にのみ送信する必要があります。 次に、許可されたアクションのみをストリームに適用する必要があります。 3 つ目は、承認された出力保護システムのみを使用してストリームを再生する必要があります。 ポリシー エンジンは、これらの要件が満たされるように、ITA と OTA の間で調整します。

プロセスを理解する最も簡単な方法は、Windows Media Digital Rights Management (WMDRM) によって保護された Advanced System Format (ASF) コンテンツを再生するために必要な手順を識別する簡略化された例を確認することです。

ユーザーがプレーヤー アプリケーションを起動し、保護されたオーディオ ストリームと保護されたビデオ ストリームを含む ASF ファイルを開く場合は、次の手順を実行する必要があります。

  1. アプリケーションは、ASF メディア ソースと保護メディア パス (PMP) セッションを作成します。 Media Foundation によって PMP プロセスが作成されます。
  2. アプリケーションは、オーディオ レンダラーに接続されたオーディオ ソース ノードと、拡張ビデオ レンダラー (EVR) に接続されたビデオ ソース ノードを含む部分トポロジを作成します。 レンダラーの場合、アプリケーションはレンダラーを直接作成しません。 代わりに、アプリケーションは保護されていないプロセスで 、アクティブ化オブジェクトと呼ばれるオブジェクトを作成します。 PMP は、アクティブ化オブジェクトを使用して、保護されたプロセスでレンダラーを作成します。 (アクティブ化オブジェクトの詳細については、「アクティブ オブジェクト」を参照してください)。
  3. アプリケーションは、PMP セッションで部分トポロジを設定します。
  4. PMP セッションはトポロジをシリアル化し、保護されたプロセスで PMP ホストに渡します。 PMP ホストは、ポリシー エンジンにトポロジを送信します。
  5. トポロジ ローダーは、ITA で IMFInputTrustAuthority::GetDecrypter を呼び出し、対応するソース ノードの直下のトポロジに復号化ツールを挿入します。
  6. トポロジ ローダーは、オーディオデコーダーとビデオ デコーダーを復号化ノードのダウンストリームに挿入します。
  7. ポリシー エンジンは、挿入されたノードをスキャンして、 IMFTrustedOutput インターフェイスを実装するかどうかを判断します。 EVR とオーディオ レンダラーはどちらも、PMP の外部にデータを送信するため、 IMFTrustedOutput を実装します。
  8. 各 ITA は、保護された環境カーネル モジュールを使用して暗号化ハンドシェイクを実行することで、保護されたプロセス内で実行されていることを確認します。
  9. 各ストリームについて、ポリシー エンジンは、ITA からポリシー オブジェクトを取得し、OTA に渡すことによってポリシーをネゴシエートします。 OTA は、サポートする保護システムの一覧を提供し、ポリシー オブジェクトは、適切な設定と共に、適用する必要がある保護システムを示します。 その後、OTA によってこれらの設定が適用されます。 それができない場合、コンテンツはブロックされます。

失効と更新

信頼されたコンポーネントは、侵害された場合、または最初に信頼されていたライセンス契約に違反していることが検出された場合に取り消すことができます。 新しい、より信頼できるバージョンのコンポーネントをインストールするための更新メカニズムが存在します。

信頼されたコンポーネントは、暗号化証明書を使用して署名されます。 Microsoft は、取り消されたコンポーネントを識別するグローバル失効リスト (GRL) を公開します。 GRLは信頼性を確保するためにデジタル署名されています。 コンテンツ所有者は、ポリシー メカニズムを使用して、GRL の現在のバージョンがユーザーのコンピューターに存在することを確認できます。

Premium ビデオ コンテンツを表示すると、復号化された非圧縮フレームは、物理コネクタを介してディスプレイ デバイスに移動します。 コンテンツ プロバイダーは、物理コネクタを越えて移動するため、この時点でビデオ フレームを保護する必要がある場合があります。 この目的のために、High-Bandwidth Digital Content Protection (HDCP) や DisplayPort Content Protection (DPCP) など、さまざまな保護メカニズムが存在します。 ビデオ OTA では、 Output Protection Manager (OPM) を使用してこれらの保護が適用されます。 Output Protection Manager はグラフィックス ドライバーにコマンドを送信し、グラフィックス ドライバーはポリシーで必要なリンク保護メカニズムを適用します。

ビデオ ota と opm の関係を示す図。

メディア ファンデーションに関するページ

メディア ファンデーションのアーキテクチャ

GPU ベースのコンテンツ保護

Output Protection Manager

PMP メディア セッション