分享方式:


PlayReady 內容加密

本主題提供用來保護 PlayReady 生態系統中內容的加密演算法概觀。

注意

請參閱加密詞彙和定義的 詞彙

加密基本概念

對稱金鑰密碼編譯 是最簡單的加密類型。 使用對稱金鑰密碼編譯時,會使用相同的金鑰來加密內容並將其解密。 對稱金鑰演算法通常很小且快速。 一般而言,大部分的加密工作都是由某種形式的對稱金鑰加密來處理。

相反地,公開金鑰密碼編譯會使用已發佈的公開金鑰來加密,以及不同的秘密、私密金鑰來解密。 因此,如果使用者 「A」 提供使用者 「B」 公開金鑰,B 可以加密 A 的內容,而不需要任何其他資訊。 無論內容傳輸方式為何,只有 A 能夠讀取它。 內容攔截器缺少私密金鑰 (秘密金鑰) ,而且無法解密訊息。 因為公開金鑰可供開放使用,任何人都可以為 A 加密,但只能解密 A。 公開金鑰密碼編譯需要計算複雜的演算法。

橢圓曲線密碼編譯 (ECC) 是用來加密和解密內容的公開金鑰密碼編譯演算法。 這是描述橢圓曲線的計算複雜函式。 此演算法的元件會以公開金鑰的形式共用。 用於解密的其他元件會形成私密金鑰。

OMAC) (單鍵訊息驗證碼 是從區塊加密建構的訊息驗證碼。 OMAC1 和 OMAC2 有兩種 OMAC 演算法。

憑證 是用來確保不受信任實體的真確性。 憑證的傳送者會使用其私密金鑰 (裝置識別碼) 簽署其名稱。 憑證的收件者接著會使用寄件者的公開金鑰來驗證憑證的簽章,以確保寄件者的身分識別。 因為傳送者是唯一的私密金鑰擁有者,所以很難建立具有公開金鑰的私密金鑰,而且除非使用私密金鑰簽署憑證,否則憑證將無法正確驗證;在此情況下,會假設資料來源正確無誤,且認證通訊安全。

PlayReady 加密演算法

對稱演算法

支援下列 AES 加密模式:

  • AES 128 CTR 模式 - PlayReady 系統可以在作業的 CTR 模式中,保護完整加密樣本的檔案和串流,或只加密樣本模式的資料流程。 其中包括一般加密模式 'cenc' (Common Encryption Scheme) 和 'cens' (Common Encryption Scheme,其使用 ISO/IEC 23001-7 中定義的未加密/加密位元組模式) 。

  • AES 128 CBC 模式 - 從 4.0 版開始的 PlayReady 系統,可以在 CBC 模式中,使用 AES 128 內容金鑰完全或部分加密的檔案和資料流程。 其中包括通用加密模式 'cbc1' 和 'cbcs',如 ISO/IEC 23001-7 中所定義,以及以 CBC 模式 AES 128 內容金鑰加密的任何其他格式。

注意

具有 1.X、2.X 和 3.X 版的 PlayReady 系統只能保護以 CTR 模式加密的檔案, (通用加密模式 'cenc') 。 不支援 'cens'。 具有 4.0 版和更新版本的 PlayReady 系統可以保護以 CTR 模式加密的檔案, (通用加密模式 'cenc') 和 CBC 模式 (常見加密模式 'cbcs') 。 不支援其他模式 'cens' 和 'cbc1'。

ECC 演算法

Microsoft PlayReady系統會使用 ECC (橢圓曲線密碼編譯) 來加密內容金鑰和簽署通訊協定訊息。

  • ECC ElGamal 演算法 - 用於加密的內容金鑰。
  • ECDSA (橢圓曲線數位簽章演算法) — 用於在 PlayReady 通訊協定中適用的地方簽署訊息。
  • NIST - Microsoft PlayReady系統會在適用且目前使用 P-256 橢圓曲線的 ECC 加密中使用標準 NIST 演算法。

簽署演算法

對於簽署授權、暫時性金鑰或資料,PlayReady 系統會使用 AES OMAC1,這相當於 CMAC (加密型訊息驗證碼) ,並成為 2005 年 5 月 的 NIST 建議。 金鑰會隨機產生,但資料會以 SHA256 雜湊,然後使用 ECC256 簽署雜湊。

執行時間和效能考慮

觸發內容播放時,PlayReady 用戶端必須先執行一些步驟,才能開始初始播放。 這包括尋找授權、系結或解譯授權、解密內容金鑰,最後準備解密內容。 PlayReady 用戶端堆疊需要一些時間才能將授權系結至內容片段,而且在開始內容解密和轉譯之前,必須先執行此作業。 這表示系結授權的時間會影響開始播放時到第一個畫面的時間,或播放軌之間的間距。 用戶端開發人員和應用程式開發人員可能想要考慮將其程式碼優化以用於執行時間和效能問題,以減少第一個畫面的時間,並允許無間距播放。

受保護的容器會使用對稱金鑰加密來加密大量內容。 不過,公開金鑰加密會在授權內使用。 這是因為授權包含內容的對稱金鑰,而伺服器會使用用戶端的公開金鑰來加密內容的對稱金鑰。

在解密內容時,會使用用戶端的私密金鑰從授權解密對稱金鑰。 只有授權所系結的用戶端才能擷取對稱金鑰。

私密金鑰解密比對稱解密更密集的計算方式;因此,解譯授權需要大量運算。 正確處理授權之後,對稱金鑰就會解密,而且內容可以使用小型且快速的演算法解密。

對於資源受限的應用程式或裝置,啟動需要大量時間和資源。 不過,完成之後,資源就會釋出,解密可能會有效率地繼續,而且需要少數 CPU 週期或系統資源。