共用方式為


簡單的端對端系統

在一般使用中,Microsoft PlayReady 提供媒體檔案的授權來保護內容。 不需要隱藏檔案、使其無法存取,或在檔案從系統傳輸至系統時放置特殊保護。 換句話說,不需要作系統需求或高度安全性的檔案傳輸機制。 不過,如果檔案受到 PlayReady 保護,複製檔案並將其提供給朋友,將無法讓該朋友使用該檔案。 若要使用媒體檔案,使用者需要授權。 此授權是行使內容控制權的主要手段(媒體檔案)。 授權會授與單一用戶端(例如媒體播放機)或網域。 授權無法在其他用戶端或其他網域上運作。

每個授權都包含許可權和限制,定義內容的使用方式,以及根據哪些條件。 例如,音樂檔案授權可能會啟用「播放許可權」,但限制可以播放內容之應用程式的安全性層級。 授權可能在 2017 年 10 月 1 日至 2017 年 11 月 1 日期間有效。 單一檔案可能會有多個授權。 只要其中一個授權授與適當的許可權,且限制不會防止存取,用戶就能夠存取及使用其內容。

端對端影片服務概觀

下圖中顯示了一個端對端視訊服務的高階概念圖,包括左側的服務後端和右側的用戶端。

影片服務架構

在圖例左側,您可以看到服務有一些伺服器可串流影片(內容發佈網路)。 還有一些伺服器可讓使用者瀏覽內容,並選擇他們想要播放的內容(使用者介面)。 此外,還有一些伺服器可讓使用者登入並經過驗證,以及支付內容費用(驗證、付費)。 此外,還有 PlayReady 授權伺服器。

此圖右側是客戶。 用戶端可以是 Windows 應用程式、智慧型手機應用程式或特定裝置,例如設上箱、網路接收器等等。 其中有些客戶端可能在其播放機中內建整合的 PlayReady 客戶端,例如 OEM 可能已在操作系統或硬體中整合 PlayReady。 其他人可能會有隨應用程式一同發佈於應用程式商店中的整合用戶端。 玩家在用戶端整合 PlayReady 有許多不同選項。

本主題將著重於 PlayReady 對服務的用途,如下圖所示。

PlayReady 對服務的用途

PlayReady 提供的方法可讓用戶端向伺服器要求授權,然後透過開放網路傳遞保護受保護表單中內容的密鑰。 PlayReady 執行的第二件事是將許可權和正確限制傳遞給用戶端。 使用 PlayReady 時,服務能夠提供內容播放的密鑰,但例如,只允許用戶端在租用案例中使用該密鑰兩天。 因此 PlayReady 提供一種方式,以密鑰宣告許可權和許可權限制。

PlayReady 也提供一種方式,以更安全的方式將內容密鑰儲存在用戶端上,讓客戶端能夠使用該用戶端密鑰解密內容以進行轉譯,但不允許將內容儲存在清楚且與其他用戶共用。

為了確保 PlayReady 用戶端的行為正確,PlayReady 需要硬體和軟體實作,才能遵循合規性和健全性規則。 這些規則會控管用戶端解密或處理 PlayReady 內容時必須如何運作。  它們也需要客戶端正確處理授權中找到的限制。  因此,如果用戶端收到指示,以使用內容密鑰不超過 48 小時,客戶端必須遵循這些指示。 這些規則是由 合規性和健全性規則中的Microsoft所提供,由客戶端開發人員在用戶端中強制執行這些規則。

基本加密和授權流程

下列步驟說明內容的端對端加密和授權程式,以及 PlayReady 如何參與此程式。

下圖包含一個資產 -- 音訊/視訊檔案 - 尚未加密。 用來加密內容的方法完全由內容提供者決定,而且不會在 PlayReady 中提供。

加密內容檔

  1. 若要加密此檔案,服務必須在其內容加密器中使用金鑰產生器,以產生將用來加密內容的新內容密鑰。 此內容金鑰稍後會從 PlayReady 授權伺服器傳遞至用戶端,以允許使用者解密內容和轉譯。 除了內容金鑰,這是私用值,加密服務也會將金鑰標識碼 (KeyID) 與內容金鑰產生關聯。 KeyID 是公用值。

  2. 密鑰和 KeyID 在加密時刻被設計,並儲存在通常作為某種資料庫的金鑰管理系統中。 PlayReady 不提供金鑰管理系統,因此由服務提供商或合作夥伴與廣播公司合作來提供金鑰管理系統。

  3. 除了將密鑰和 KeyID 儲存在金鑰管理系統之外,您還需要將 KeyID 放入封裝器,然後產生標頭。 此標頭會根據 PlayReady 標頭規格,由服務或合作夥伴進行格式化,然後清楚地嵌入內容檔案的標頭中。

    此時,音訊和視訊將會使用 KeyID 進行加密,而且您將有已準備好傳遞至用戶端的加密內容檔案。

    驗證使用者

  4. 現在,用戶端可以開始取用內容。 用戶端可能要做的第一件事是向服務驗證使用者,通常是藉由提供登入名稱和密碼,但驗證使用者和裝置的任何其他機制都沒問題。 一般而言,一旦驗證用戶之後,會話令牌會傳回給用戶端。 請注意,任何用於使用者驗證的機制,完全由使用者驗證的方式決定;PlayReady 不提供這項技術。

    內容傳遞

  5. 接下來,內容會傳遞至用戶端(例如,用戶端已開始下載構成內容的數據流部分)。 然後,客戶端開始解析此內容,並發現其已加密且使用了一個未知的密鑰,但其中包含一個 KeyID。

    授權取得

  6. 此時,用戶端會將授權取得要求傳送至授權伺服器。

  7. 授權伺服器接著會與驗證服務介面,以驗證使用者。 授權伺服器所做的第一件事通常是確認用戶端/使用者具有該特定授權的權利。 同樣地,PlayReady 不提供該版面配置(驗證),我們只是提供授權伺服器。 然後,驗證服務通常會回應「是」或「否」,有時也可能是有條件的「是」(例如,該用戶對此特定影片具有觀看權限,但僅限於較低的視頻品質,因為他們的訂閱層級不夠高——這取決於使用者每月支付的訂閱費用)。

  8. 然後,授權伺服器會根據 KeyID 從儲存金鑰的金鑰管理系統要求金鑰值,而金鑰管理系統會響應該要求。 只是重申一下,PlayReady 不提供密鑰管理系統相關的元件,因此 PlayReady 授權伺服器會向服務要求,請服務的任何元件來儲存密鑰。

  9. 授權伺服器會收到金鑰,而授權伺服器可以傳遞授權。 受保護的 PlayReady 授權回應包含金鑰的值,以及客戶端強制執行的許可權和許可權限制清單。

    雖然此示範顯示 PlayReady 授權伺服器只傳遞一個金鑰,但授權伺服器可以在一個授權回應中傳遞一堆授權。 多個授權可以包含在一筆交易中,如果內容受到多個密鑰保護,或服務想要事先傳遞多個密鑰,則每個授權都會提供一個密鑰,因為服務知道用戶會連續接聽八個曲目。

    授權存放區

  10. PlayReady 提供的另一項技術是將密鑰和許可權儲存在用戶端中的方法,稱為授權存放區。

    授權存放區通常稱為 HDS,因為授權存放區的結構是 哈希數據存放區。 裝置上可以有多個類型的授權存放區, 一個應用程式可以包含自己的 HDS,只是為了確保某家公司的 HDS 不在與另一家公司 HDS 相同的檔案中。 完全由客戶端開發人員來做出此設計選擇。 例如,在 Windows 上使用 PlayReady,Microsoft 選擇讓 Internet Explorer 和 Microsoft Edge 每個網站都有一個 HDS,以及每個 Windows 通用應用程式的一個 HDS。

    HDS 可以以持久的方式儲存,例如在裝置的硬碟或持久性記憶體中,或以非持久的方式儲存,例如在非持久性記憶體中。 因此,當授權伺服器發出授權時,它可以設定授權的屬性,指出授權不應儲存在用戶端的硬碟上,或在設定頂端方塊或手機的情況下,它不應該儲存在持續性記憶體中,因為作為服務,您不想將授權儲存在永續性記憶體中。 在這種情況下,只需將 HDS 暫存在播放機應用程式的記憶體中,這樣一旦使用者關閉播放機應用程式,授權權利就會消失。