在 PlayReady 3.0 版本中引入的 PlayReady Secure Stop 是一項功能,允許 PlayReady 裝置向媒體串流服務自信地宣告,任何指定內容的播放已停止。 這項功能可確保您的媒體串流服務針對指定帳戶在不同裝置上提供正確的強制和報告使用限制。
安全停止概觀
當媒體播放停止時,無論是因為媒體結束還是因使用者在中途停止播放,用戶端會向安全停止伺服器報告安全停止事件。 報告安全停止事件時,且在記錄 Secure Stop 事件時,PlayReady 用戶端可確保內容密鑰會從記憶體中清除。 當前一個會話意外結束時(例如,因系統或應用程式當機),也會報告安全停止。
備註
安全停止僅適用於非持續性授權。
傳送 Secure Stop 挑戰有兩個主要情境:
- 當媒體播放在結尾停止時,或因為使用者停止了中間某個位置的媒體簡報。
- 當上一個會話意外結束時(例如,因為系統或應用程式當機)。 應用程式必須在啟動時或關機查詢任何未完成的安全停止會話,並將挑戰與任何其他媒體播放分開傳送。
如需 UWP 應用程式中安全停止的資訊,請參閱 PlayReady DRM 一文中的新增安全停止一節。
安全停止 2
從 PlayReady 4.2 版開始, PlayReady Secure Stop 2 會在安全性層級 3000 的受信任執行環境 (TEE) 用戶端上強制執行 Secure Stop 功能,以提供更多安全性。
服務可以使用 SecureStop 功能,強制在屬於相同用戶帳戶的多個客戶端之間強制執行播放。 根據該用戶帳戶中特定用戶端的組態,服務將會收到與用戶端稍有不同的訊息。
下表顯示不同用戶端安全性層級和安全停止版本的伺服器應用程式邏輯。
| 用戶端版本 | SecureStop 伺服器邏輯 | 魯棒性 (穩定性或強韌性) |
|---|---|---|
| PlayReady 2.0+ SL2000 版 | 伺服器不會從用戶端接收任何 SecureStop 訊息。 使用應用程式邏輯來執行此動作。 | 低 |
| PlayReady 3.0+ SL3000 版(範例:Windows 10 應用程式) | 伺服器會從用戶端接收 SecureStop1 訊息。 此訊息針對攻擊的健全性高於簡單的應用程式邏輯。 | 中等 |
| PlayReady 4.2+ SL3000 版 | 伺服器會從用戶端接收 SecureStop2 訊息。 來自該客戶端的惡意的 SecureStop2 訊息需要攻擊用戶端中的信任執行環境(TEE)。 此訊息針對攻擊的健全性高於 SecureStop1。 | 高 |
若要利用安全停止 2 功能,伺服器應用程式必須啟用此功能,如下所示:
- 使用 Secure Stop 發行授權時,在 MediaLicense 類別上設定 SecureStop2AESKey 屬性。 (無論用戶端是否支援安全停止 2,都可以這麼做。
- 建立類別,這個類別會實作 ISecureStop2Handler 介面(類似於任何其他處理程式),如此一來,針對任何指定的 KID,它會傳回在 MediaLicense 上設定 SecureStop2AESKey 屬性時所使用的相同密鑰。
- 呼叫 GetSecureStopData 之後,請在 SecureStopDataChallenge 類別上查詢 SecureStop2VerifiedSession 屬性。 如果設定為 Guid.Empty,則用戶端會傳送 SecureStop1 訊息。 如果設定為任何其他 Guid,則用戶端會傳送 SecureStop2 訊息。 傳回的 Guid 是 SecureStop2 挑戰中單一工作階段的作業階段識別碼,可以驗證為非惡意(假設用戶端的信任執行環境 (TEE) 未成功攻擊)。