共用方式為


內容封裝和傳遞

PlayReady 的基本功能是保護內容不受未經授權的使用。 若要這樣做,必須先加密您的內容,並將相關聯的 PlayReady 標頭插入內容中。 執行此作業的系統是封裝器,也稱為加密程式,有時會與編碼器整合。

本主題說明使用 PlayReady 加密和傳遞內容的各種方式。

封裝 PlayReady 內容 - 加密和插入DRM標頭

加密明文內容的過程包含定義一或多個加密金鑰、使用這些金鑰來加密構成內容本身的位元組,以及在內容中插入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。 

您的加密內容可以包含多個DRM標頭,包括 PlayReady 標頭和第三方DRM標頭。 如需其運作方式的詳細資訊,請參閱 使用加密工具

內容類型

PlayReady 可用來保護音訊和視訊內容。 與 PlayReady 搭配使用的最常見編碼類型是 MPEG-4 AVC (H.264)、高效視訊編碼 (HEVC) H.265 標準,以及 AV1 標準。 PlayReady 不限於這些標準,而且可與用戶端裝置上支援的任何音訊和視訊格式搭配使用。

PlayReady 第 1 版和 2 版可讓您建立受保護的套件,其中包含不限於音訊或視訊承載的內容。 這些套件稱為信封,可以包含檔案,例如數據檔和可執行檔的集合(例如應用程式市集所散發的應用程式)、圖片(例如螢幕背景圖案)或電子書。 此內容是將檔案封裝成信封檔案,可透過類似解密音訊/視訊內容的方式進行解密。

PlayReady 3.0 和更新版本中不再支持這些非音訊/視訊內容類型。 

加密工具

Microsoft不將封裝器納入 PlayReady 產品的一部分。 PlayReady 會根據編碼器使用的常見加密標準來提供規格。 因此,加密格式不是 PlayReady 特定的,而是檔案格式的函式。 現今最廣泛使用的加密格式是通用加密 ISO 標準格式 ISO/IEC 23001-7

基本上,您可以建立自己的封裝器,也可以使用任何類型的開放原始碼加密程式(例如ffmpeg)。 此外,如果您想要使用 PlayReady 來加密內容,您可以與專業編碼器公司合作(例如和和、Elemental、Ericsson、Wowza、Allegro)。

使用加密工具

PlayReady 支援 ISO IEC 一般加密標準。 此過程與基本加密和授權過程所述相同,但其他DRM的標頭將被包含——每個標頭作為保護系統特定標頭 ('pssh') 方塊的承載,由該DRM的 SystemID 所識別。 所有這些標頭都會有自己的語法,可指定 KID 或最終存取內容密鑰所需的資訊。 而且對於所有DRM而言,此資產的內容密鑰將會相同。

一般加密圖表

使用加密金鑰

加密資產的方式有很多種。 從最簡單的到最複雜的設計取決於您在系統中所需的設計複雜度及服務的需求。

例如,讓我們採用調適型串流資產,如下圖所示。 它有四種不同的視訊質量、一個音軌和一個字幕軌。它會以分段 MP4 檔案編碼,每段長度為 2.0 秒。 這是一種媒體資產,根據用戶端的偏好,可以提供多種格式來播放。 Smooth Streaming、HLS 和 DASH 是最常見的變體。 在播放期間,客戶端(播放器)將會透過網絡連續下載資產的片段,從合適的視訊軌道中選擇每個播放時間的片段,以便在網路頻寬、播放速度以及播放器性能等有限資源的限制下,盡可能提高播放品質。 此邏輯稱為調適性串流播放,由播放機中實作的一些啟發學習法規則所控管。 

內容資產和播放

僅使用一個金鑰加密資產

加密這些內容最簡單的方式是使用單一內容密鑰來加密所有內容(通常不會加密字幕—這並不違反任何規則,但通常字幕會保持未加密狀態)。 使用一個內容密鑰可讓授權伺服器的生活變得容易,因為授權伺服器必須傳遞一個密鑰 {KID, CK}。 在播放發生之前,用戶端通常會取得此金鑰。

內容資產與加密金鑰 (I)

備註

PlayReady 用戶端可以主動或被動地取得授權。 如需這兩種模式的描述,請參閱 授權取得 頁面。

使用兩個金鑰加密資產,其中一個專用於最高品質的加密

過去幾年中,出於只允許具最高韌性的用戶端取用最高質量內容的需求,對於每個資產使用多個密鑰的改進有所增加。 隨著 Ultra HD (4K) 內容的到來,加上高動態範圍 (HDR) 以提升色彩內容,工作室和服務必須只允許特定用戶端的最高品質,這些用戶端通常內建硬體DRM。 在此情境中,資產會針對所有軌道使用一個內容密鑰 {kid1, ck1} 進行加密,唯獨用不同內容密鑰 {kid2, ck2} 加密的 4K 軌道除外。 那是:

  • 只允許播放全高清(而非 4K 曲目)的客戶端,將只提供 PlayReady 授權,包括 {kid1, ck1}。 
  • 允許最多 4K 播放的客戶端將會提供 PlayReady 授權,包括 {kid1、ck1} 和 {kid2、ck2}。

使用此額外的複雜性,服務可以確保某些用戶無法解密 4K 音軌,而 4K 音軌只能保留給服務最信任的用戶。 

內容資產與加密金鑰 (II)

使用每個追蹤一個金鑰加密資產

服務可能需要更複雜的權利地圖來執行。 有些客戶端會根據其螢幕大小、其健全性、輸出和位置,只允許存取某些視訊播放軌、某些視訊品質,以及某些音訊播放軌。 為了確保服務在未來強制執行任意限制時具有完整的彈性,它可能會使用每個追蹤特定的內容密鑰來加密資產。例如:

  • 只允許播放 720p 的用戶端將交付 PlayReady 授權,包括 {kid1、ck1}、{kid2、ck2}和 {kidA、ckA}。 
  • 被允許播放 4K 的用戶端將交付 PlayReady 授權,包括 {kid1、ck1}、{kid2、ck2}、{kid3、ck3}、{kid4、ck4} 和 {kidA、ckA}。 
  • 以離線方式播放資產的 4K 版本(先前已下載)的用戶端將會提供 PlayReady 授權,包括 {kid4、ck4} 和 {kidA, ckA}。 

內容資產與加密金鑰 (III)

定期變更加密金鑰 (多期間資產)— 授權輪替

在某些情況下,服務會偶爾想要變更加密密鑰,通常是在程式界限。 例如,直播的線性串流包括多個時段,這些時段內有免費播放的內容,您希望所有人都能存取,隨後還有一些僅限訂閱者存取的內容。 變更於程式邊界處的加密密鑰允許服務無限制地將免費傳輸的密鑰 {KIDi1, CKi1} 提供給所有使用者,並僅將內容密鑰 {KIDi2, CKi2} 傳遞給已成功登入服務的訂閱者。

請注意,此授權輪替並非非常可調整:每次加密密鑰變更時,所有客戶端都會使用自己的授權要求要求要求新的加密密鑰。 這可能會導致系統中具有大量客戶端的授權要求尖峰。 

內容資產與加密金鑰 (IV)

經常變更加密金鑰 — 可調整的金鑰輪替

PlayReady 中有一個進階機制,稱為可調整密鑰輪替(而不是授權輪替)。 此方法會將內嵌授權存放區 (ELS) 儲存在實際內容的數據流中。 在此機制中,用來加密 A2 區段本身的金鑰稱為分葉密鑰 {kidA2, ckA2},並在區段 A2 的 ELS 中傳遞,本身會以與追蹤 A 的所有區段相同的個別密鑰加密,稱為根密鑰 {kidRA, ckRA}。 如果您熟悉 MPEG-2 TS 和 Control Word 加密,這是一個類似的機制,只是加密更強,而且更加靈活。

假設此資產是即時線性電視。 當用戶端嘗試播放時,它會在串流描述檔的 PlayReady 標頭中找到 kidRA,並請求 kidRA 的授權。 授權伺服器會傳回根密鑰 {kidRA, ckRA} 的根授權。 然後,用戶端會剖析區段 A1,並探索區段標頭中的 ELS。 在剖析此 ELS 時,它會在這個 ELS 中找到葉節許可 {kidA1,ckA1}。 使用根密鑰 {kidRA、ckRA} 和分葉授權 {kidA1, ckA1},它可以取得 ckA1 的值,並解密並轉譯區段 A1。 

PlayReady 可調整密鑰輪替功能非常可調整,因為它不需要用戶端在每次變更加密密鑰時連絡授權伺服器。 它會將授權請求的數量減至最低,因為用戶端每個數據流或音軌只需要一個來自授權伺服器的根授權。它允許加密金鑰在每個區段頻繁輪替,通常每兩秒輪替一次。 

內容資產與加密金鑰 (V)

另請參閱

金鑰和金鑰識別碼 (KID)