分享方式:


內容封裝和傳遞

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

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

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

加密清除內容的套裝程式含定義一或多個加密金鑰、使用這些金鑰來加密構成內容本身的位元組,以及在內容檔案中插入 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) 。 Azure 媒體服務也提供清楚內容的封裝功能。

使用加密工具

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

Common Encryption Diagram

使用加密金鑰

有許多不同的方式可加密您的資產。 最複雜最複雜的最複雜專案取決於您想要在系統中設計的複雜度,以及服務的需求。

例如,我們採用調適型串流資產,如下圖所示。 它有四個不同的視訊品質、一個音訊播放軌和一個副標題播放軌。它會以分段 MP4 檔案編碼,每個區段 2.0 秒。 這是一個以多種格式提供的資產,視用戶端想要播放的內容而定。 Smooth Streaming、HLS 和 DASH 是最常見的變體。 在播放期間,用戶端 (視訊播放程式) 會透過網路連續下載資產的區段,並針對來自適當視訊播放軌的每個播放時間選取視訊區段,以盡可能保持播放品質,因為網路頻寬、播放速度和其他有限的資源,例如播放程式功能。 此邏輯稱為調適型串流播放,由播放機中實作的一些啟發學習法規則所控管。 

Content Assets and Playback

只使用一個金鑰加密資產

加密這些資產最簡單的方式是使用單一內容金鑰來加密所有專案, (通常不會加密子標題,而不是任何規則,但它們通常會保留在清楚的) 中。 使用一個內容金鑰可讓授權伺服器生活變得容易,因為授權伺服器必須傳遞一個金鑰 {KID, CK}。 用戶端通常會先取得此金鑰,再進行播放。

Content Assets and Encryption Keys (I)

注意

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

使用兩個金鑰加密資產,並將一個金鑰專用於最高品質

過去幾年使用每個資產的多個金鑰有一些增強功能,主要是由只允許特定最高強固性用戶端取用最高品質內容的需求所驅動。 隨著 Ultra HD (4K) 內容的抵達,以及針對較高色彩內容新增高動態範圍 (HDR) ,Studio 和服務必須只在特定用戶端上允許最高品質,這通常會內建硬體 DRM。 在此案例中,資產會使用一個內容金鑰 {ck1, ck1} 來加密所有曲目,但使用不同內容金鑰 {ck2, ck2} 加密的 4K 曲目除外。 即:

  • 只允許播放完整的 HD (而非 4K 播放軌的用戶端,) 將傳遞 PlayReady 授權,僅包含 {kid1, ck1}。 
  • 允許播放最多 4K 的用戶端將傳遞 PlayReady 授權,包括 {兒童1、ck1} 和 {ck2,ck2}。

使用此額外的複雜度,服務可確保某些用戶端無法解密 4K 追蹤,而且 4K 追蹤只能保留給服務最信任的用戶端。 

Content Assets and Encryption Keys (II)

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

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

  • 只允許播放 720p 的用戶端將傳遞 PlayReady 授權,包括 {兒童1、ck1}、{兒童2、ck2}和 {kidA、ckA}。 
  • 允許播放最多 4K 的用戶端將傳遞 PlayReady 授權,包括 {兒童1、ck1}、{兒童2、ck2}、{兒童3、ck3}、{兒童4、ck4}和 {kidA、ckA、ckA}。 
  • 在先前下載的資產 (4K 版本的用戶端,) 將傳遞 PlayReady 授權,包括 {kid4、ck4} 和 {kidA, ckA}。 

Content Assets and Encryption Keys (III)

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

在某些情況下,服務偶爾會想要變更加密金鑰,通常是在程式界限。 例如,即時線性串流具有多個期間,您可以自由存取的無線內容,後面接著一些限制為訂閱者的內容。 在程式界限變更加密金鑰可讓服務免費傳遞至無線金鑰 {KIDi1,CKi1} 給所有使用者,且只將內容金鑰 {kidi2, cki2} 傳遞給已成功登入服務的訂閱者。

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

Content Assets and Encryption Keys (IV)

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

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

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

PlayReady 可調整的金鑰輪替功能非常可調整,因為它不需要用戶端在每次變更加密金鑰時連絡授權伺服器。 它會盡可能將授權要求數量保持在最低,因為用戶端只需要每個資料流程的授權伺服器一個根授權,或追蹤。它可讓加密金鑰與每個區段一樣頻繁輪替,通常視需要每隔兩秒輪替一次。 

Content Assets and Encryption Keys (V)

另請參閱

金鑰和金鑰識別碼 (KID)