簡單端對端系統

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

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

端對端視訊服務概觀

下圖包含端對端視訊服務的高階外觀,包括左側服務的後端,以及右側的用戶端。

Video Service Architecture

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

圖的右側是用戶端。 用戶端可以是Windows應用程式、智慧型手機應用程式或特定裝置,例如設定頂端方塊、網路接收器等等。 其中有些用戶端可能會在其播放機中隨附 PlayReady 整合式用戶端,例如 OEM 可能已在作業系統或硬體中整合 PlayReady。 其他人可能隨附整合在應用程式市集中發佈的應用程式中的用戶端。 播放機在用戶端上整合 PlayReady 有許多不同選項。

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

What PlayReady Does For The Service

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

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

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

基本加密和授權程式

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

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

Encrypting the Content File

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

  2. 金鑰和 KeyID 是在加密時設計,並儲存在金鑰管理系統中,通常是某種資料庫。 PlayReady 不提供金鑰管理系統,因此由服務或合作夥伴使用廣播者建置服務,以提供金鑰管理系統。

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

    此時,音訊和視訊將會使用 KeyID 加密,而且您將擁有已加密的內容檔案,可供傳遞至用戶端。

    Authenticating the User

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

    Content Delivery

  5. 接下來,內容會傳遞至用戶端 (例如,用戶端已開始下載構成內容) 的資料流程部分。 然後,用戶端會開始剖析此內容,並探索其已加密,並使用未知的金鑰,但包含 KeyID。

    License Acquisition

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

  7. 授權伺服器接著會與驗證服務介面,以驗證使用者。 授權伺服器執行的第一件事通常是確認用戶端/使用者具有該特定授權的權利。 同樣地,PlayReady 不會提供該配置 (驗證) ,我們只會提供授權伺服器。 然後驗證服務通常會以是或否回應,或可能是有限制 (,例如,此使用者對於此特定電影具有適當的許可權,但只有較低的視訊品質,因為使用者沒有最高品質的訂用帳戶層級, 根據使用者每月支付的數量) 。

  8. 然後,授權伺服器會根據 KeyID 從儲存金鑰的金鑰管理系統要求金鑰值,而金鑰管理系統會回應該要求。 只要重複一下,PlayReady 不會提供金鑰管理系統的元件,因此會有來自 PlayReady 授權伺服器的要求,以儲存金鑰的服務所建置的任何元件。

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

    雖然此示範顯示 PlayReady 授權伺服器只傳遞一個金鑰,但授權伺服器可能會在一個授權回應中傳遞一組授權。 如果內容受到多個金鑰保護,或服務想要事先傳遞多個金鑰,則多個授權可以包含在一筆交易中,且每個授權都會提供一個金鑰,例如,服務知道使用者即將接聽資料列中的八個曲目。

    License Store

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

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

    HDS 可以持續儲存,例如在裝置的硬碟或永續性記憶體上,也可以以非持續性的方式儲存,例如在非持續性記憶體中。 因此,當授權伺服器發出授權時,它可能會設定授權的屬性,指出授權不應該儲存在用戶端的硬碟上,或是在設定頂端方塊或手機的情況下,它不應該儲存在持續性記憶體中,因為做為服務,您不想將授權儲存在永續性記憶體中。 在此情況下,只要將 HDS 儲存在播放機應用程式的內容中,當使用者關閉播放機應用程式時,授權及其許可權就會消失。