受保護的媒體路徑

本主題討論三個相互關聯的主題:受保護的環境、媒體互通性閘道,以及撤銷和更新。

  • 受保護的環境 (PE) 是一組技術,可讓受保護的內容以受保護的方式從 Windows Vista 流向和流經 Windows Vista。 受保護環境內的所有元件都受到信任,而且程式會受到保護,以防止竄改。
  • 受保護的媒體路徑 (PMP) 是在受保護的環境中執行的可執行檔。
  • 如果 PE 中的受信任元件遭到入侵,則會在因應程式之後遭到撤銷。 不過,當元件可供使用時,Microsoft 會提供更新機制來安裝較新的受信任元件版本。

如需程式碼簽署受保護媒體元件的相關資訊,請參閱 Windows Vista 中受保護媒體元件的程式碼簽署白皮書。

本主題包含下列幾節:

受保護的環境

內容保護包含多個技術,每個技術都會嘗試確保內容無法以與內容擁有者或提供者意圖不一致的方式使用內容。 這些技術包括禁止複製、連結保護、條件式存取和數位版權管理 (DRM) 。 每個專案的基礎都是信任:只有遵守指派給該內容之使用規定的軟體元件才能存取內容。

為了將受保護內容的威脅降到最低,Windows Vista 和 Media Foundation Software 可讓受信任的程式碼在受保護的環境中執行。 PE 是一組元件、指導方針和工具,其設計目的是為了防止內容異常而增加保護。

在更仔細地檢查 PE 之前,請務必瞭解其設計為最小化的威脅。 假設您是在使用者模式進程中執行媒體應用程式。 應用程式會連結至各種動態連結程式庫, (DLL) 包含媒體外掛程式,例如解碼器。 其他進程也會在使用者模式中執行,而且會在核心中載入各種驅動程式。 如果沒有任何信任機制存在,則存在下列威脅:

  • 應用程式可以直接存取受保護的媒體,或入侵進程記憶體。
  • 外掛程式可以直接存取內容,或入侵進程記憶體。
  • 其他進程可以直接或插入程式碼來入侵媒體進程記憶體。
  • 核心驅動程式可以入侵媒體進程記憶體。
  • 內容可能會透過未受保護的媒體在系統外部傳送。 (Link 保護的設計目的是為了減輕此威脅。)

受保護環境的設計

受保護的環境會在與媒體應用程式不同的受保護進程中執行。 Windows Vista 的受保護進程功能會停止其他進程存取受保護的進程。

建立受保護的進程時,核心核心元件會識別不受信任的元件和外掛程式,讓受保護的環境可以拒絕載入它們。 受信任的元件是由 Microsoft 適當簽署的元件。 如果載入不受信任的模組,核心也會追蹤載入它的模組,讓受保護的環境在載入未受信任的模組時停止播放受保護的內容。 載入核心元件之前,核心會檢查它是否受信任。 如果不是,PE 中已信任的元件會拒絕處理受保護的內容。 若要啟用此功能,PE 元件會定期執行與核心的密碼編譯保護交握。 如果存在不受信任的核心模式元件,交握會失敗,並向 PE 指出未受信任的元件存在。

如果信任的元件遭到入侵,可以在因應程式之後撤銷。 Microsoft 提供更新機制,可在可用時安裝較新的受信任版本。

受保護的媒體路徑

PMP) 的受保護媒體路徑 (是媒體基礎的主要 PE 可執行檔。 PMP 是可延伸的,因此可以支援協力廠商內容保護機制。

PMP 會使用任何內容保護系統,接受來自任何媒體基礎來源的受保護內容和相關原則,包括協力廠商所提供的內容。 只要接收符合來源所指定的原則,它就會將內容傳送至任何 Media Foundation 接收。 它也支援來源與接收之間的轉換,包括協力廠商轉換,只要受信任即可。

PMP 會在與媒體應用程式隔離的受保護進程中執行。 應用程式只能與 PMP 交換命令和控制訊息,但無法存取傳遞至 PMP 之後的內容。 下圖說明此程序。

受保護媒體路徑的圖表

陰影方塊代表協力廠商可能提供的元件。 在受保護進程內建立的所有元件都必須經過簽署和信任。

應用程式會在受保護的進程內建立媒體會話的實例,並接收 Proxy 媒體會話的指標,以封送處理跨進程界限的介面指標。

媒體來源可以在應用程式進程內建立,如這裡所示,或在受保護的進程內建立。 如果在應用程式進程內建立媒體來源,來源就會在受保護的進程中自行建立 Proxy。

所有其他管線元件,例如解碼器和媒體接收,都會在受保護的進程中建立。 如果這些物件公開應用程式的任何自訂介面,則必須提供 DCOM Proxy/Stub 來封送處理介面。

為了在受保護的內容流經管線時強制執行原則,PMP 會使用三種類型的元件:輸入信任授權單位 (ITA) 、輸出信任授權單位 (OTA) 和原則物件。 這些元件會共同合作來授與或限制使用內容的許可權,以及指定播放內容時必須採用的連結保護,例如高頻寬數位內容保護 (HDCP) 。

輸入信任授權單位

ITA 是由受信任的媒體來源所建立,並執行數個函式:

  • 指定使用內容的許可權。 許可權可以包含播放內容、將其傳輸至裝置等許可權。 它會定義已核准輸出保護系統的已排序清單,以及每個系統的對應輸出原則。 ITA 會將此資訊儲存在原則物件中。
  • 提供解密內容所需的解密程式。
  • 在受保護的環境中建立與核心模組的信任,以確保 ITA 正在信任的環境中執行。

ITA 與包含受保護內容的個別資料流程相關聯。 資料流程只能有一個 ITA,而 ITA 的實例只能與一個資料流程相關聯。

輸出信任授權單位

OTA 與受信任的輸出相關聯。 OTA 會公開信任輸出可以在內容上執行的動作,例如播放或複製。 其角色是強制執行 ITA 所需的一或多個輸出保護系統。 OTA 會查詢 ITA 所提供的原則物件,以判斷它必須強制執行的保護系統。

原則物件

原則物件會封裝 ITA 的內容保護需求。 原則引擎會使用它來與 OTA 交涉內容保護支援。 OTA 會查詢原則物件,以判斷它們必須在目前內容的每個輸出上強制執行哪些保護系統。

在 PMP 中建立物件

若要在受保護的媒體路徑中建立物件, (PMP) , IMFMediaSource 會呼叫 IMFPMPHostApp::ActivateClassById,並以下列方式格式化指定的輸入 IStream

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 中處理受保護的內容之前,必須先符合三個基本需求。 首先,受保護的內容只能傳送至受信任的輸出。 其次,只允許的動作必須套用至資料流程。 第三,只有已核准的輸出保護系統才能用來播放資料流程。 原則引擎會協調 ITA 與 OTA 之間的協調,以確保符合這些需求。

瞭解程式最簡單的方式是逐步解說簡化的範例,以識別在 Windows Media Digital Rights Management (WMDRM) 保護的進階系統格式 (ASF) 內容所需的步驟。

當使用者啟動播放程式應用程式並開啟具有受保護音訊串流和受保護視訊串流的 ASF 檔案時,必須執行下列步驟:

  1. 應用程式會建立 ASF 媒體來源和受保護的媒體路徑, (PMP) 會話。 媒體基礎會建立 PMP 程式。
  2. 應用程式會建立部分拓撲,其中包含連接到音訊轉譯器的音訊來源節點,以及連接到增強式視訊轉譯器 (EVR) 的視訊來源節點。 對於轉譯器,應用程式不會直接建立轉譯器。 相反地,應用程式會在未受保護的進程中建立稱為 啟用物件的物件。 PMP 會使用啟用物件在受保護的進程中建立轉譯器。 (如需啟用物件的詳細資訊,請參閱 Activation Objects.)
  3. 應用程式會在 PMP 會話上設定部分拓撲。
  4. PMP 會話會序列化拓撲,並在受保護的進程中將其傳遞至 PMP 主機。 PMP 主機會將拓撲傳送至原則引擎。
  5. 拓撲載入器會在 ITA 上呼叫 IMFInputTrustAuthority::GetDecrypter ,並將解密程式插入拓撲中,緊接在對應來源節點的下游。
  6. 拓撲載入器會插入解密程式節點下游的音訊和視訊解碼器。
  7. 原則引擎會掃描插入的節點,以判斷是否有任何實作 IMFTrustedOutput 介面。 EVR 和音訊轉譯器都實作 IMFTrustedOutput,因為它們會在 PMP 外部傳送資料。
  8. 每個 ITA 都會透過使用受保護的環境核心模組執行密碼編譯交握,以確認它正在受保護的進程中執行。
  9. 針對每個資料流程,原則引擎會藉由從 ITA 取得原則物件,並將其傳遞至 OTA 來交涉原則。 OTA 提供其支援的保護系統清單,而原則物件會指出必須套用哪些保護系統,以及正確的設定。 然後,OTA 會套用這些設定。 如果無法這麼做,則會封鎖內容。

撤銷和續約

如果信任的元件遭到入侵或發現違反最初信任的授權合約,則可以撤銷信任的元件。 更新機制存在,可安裝較新且更受信任的元件版本。

受信任的元件是使用密碼編譯憑證簽署。 Microsoft 會發佈全域撤銷清單 (GRL) ,以識別已撤銷的元件。 GRL 會以數位方式簽署,以確保其真實性。 內容擁有者可以透過原則機制確保目前版本的 GRL 存在於使用者的電腦上。

當檢視進階視訊內容時,解密、未壓縮的畫面會跨實體連接器傳送到顯示裝置。 內容提供者此時可能需要保護視訊畫面,因為它們在實體連接器之間移動。 有各種保護機制可用於此用途,包括 High-Bandwidth Digital Content Protection (HDCP) 和 DisplayPort Content Protection (DPCP) 。 影片 OTA 會使用 輸出保護管理員 (OPM) 來強制執行這些保護。 Output Protection Manager 會將命令傳送至圖形驅動程式,而圖形驅動程式會強制執行原則所需的任何連結保護機制。

顯示視訊 ota 與 opm 之間關聯性的圖表。

關於媒體基礎

媒體基礎架構

GPU 型內容保護

Output Protection Manager

PMP 媒體會話