共用方式為


授權原則的最佳做法

本節說明使用 PlayReady 技術時,程式設計授權原則的最佳做法。

搭配 EndDate 使用 BeginDate

PlayReady 支援的許多商務模型之一是內容租用,例如,內容只能在有限的期間內使用 (,內容可以在 2018 年 10 月 15 日 10 月 15 日下午 5 點之前使用) 。 這可藉由發出用戶端 PlayReady 授權,並將 EndDate 設定為到期時間和日期。

EndDate 足以建立租用授權;不過,在授權中包含 BeginDate 是較佳的做法。 BeginDate 指定無法在指定的日期之前使用相關聯的內容。 BeginDate 與 EndDate 的組合是時鐘復原攻擊的自然起點,使用者可備份和還原整個 PlayReady 資料存放區,以避免發生時鐘復原事件。

請考慮下列範例:

  • 日期為 08/01/18 — 使用者取得 Content1 的 License1。 License1 的 EndDate=08/30/18。

  • 日期為 09/01/18 — 使用者取得 Content2 的 License2。 License2 的 EndDate=09/30/18。

  • 使用者製作 PlayReady 資料存放區的複本。

  • 播放 Content1 或 Content2 之前,使用者會將時鐘設定為 08/01/18,還原 PlayReady 資料存放區的複本。 這兩個內容都可以播放。

現在請考慮相同的基本範例,但在授權中使用 BeginDates:

  • 日期為 08/01/18 — 使用者取得 Content1 的 License1。 License1 有 BeginDate=08/01/18,EndDate=08/30/18。

  • 日期為 09/01/18 — 使用者取得 Content2 的 License2。 License2 具有 BeginDate=09/01/18,EndDate=09/30/18。

  • 使用者製作 PlayReady 資料存放區的複本。

  • 播放 Content1 或 Content2 之前,使用者會將時鐘設定為 08/01/18 之前的日期,還原 PlayReady 資料存放區的複本。 只有 Content1 才會播放。

此範例示範 BeginDate 如何自然地協助減少還原資料存放區以規避授權原則的可能性。 使用者可以製作更多資料存放區複本來因應 BeginDate,但隨著內容檔案數目成長很大,處理授權原則所需的所有資料存放區管理會以比例增加,使攻擊變得較不可行。

總而言之,在 PlayReady 授權中指定 EndDate 時,最好也包含 BeginDate。

設定適用于用戶端的 BeginDate 值

將 BeginDate 新增至授權時,最好是針對 PlayReady 用戶端第 1 版或 2 版,將它設定一點點。 原因是產生此授權的伺服器與接收此授權的用戶端之間可能有次要時鐘差異,而伺服器的目的是在用戶端收到授權時立即使用授權。

針對 PlayReady Clients 3 和更新版本,用戶端會依照授權伺服器已知的時間值,將時鐘值連同授權要求一起傳送至授權伺服器,而伺服器可以設定 BeginDate 和其他時間限制,其條件是接近授權伺服器已知的時間值。

PlayReady 用戶端第 2 版的典型範例如下:

  1. 使用者在 2018 年 1 月 5 日 2018 年 1 月 5 日下午 8 點租用內容,該Android手機上執行以 PlayReady 2.5 建置的應用程式。

  2. Android應用程式會起始授權伺服器授權要求。 電話時鐘表示下午 7:56,授權伺服器時鐘在下午 8:00。

  3. 授權伺服器會收到授權要求、偵測用戶端為第 2 版,並使用下列專案產生授權:

    • 向右播放

    • 開始時間 = 本機伺服器時間減去 5 分鐘 = 2018 年 1 月 5 日下午 7:55

    • 到期時間、第一次播放後到期、輸出保護等其他正確限制

    1. 授權伺服器會將授權傳回用戶端。

    2. 用戶端會開始播放。 電話時鐘仍是下午 7:56,且超過授權的 BeginDate,也就是下午 7:55,因此播放實際上可以立即啟動。

PlayReady 用戶端第 3 版的典型範例如下:

  1. 使用者在執行 UWP 應用程式的Windows 10電腦上,于 2018 年 1 月 5 日下午 8 點租用內容。

  2. UWP 應用程式會起始授權伺服器授權要求。 電腦時鐘表示下午 7:56,授權伺服器時鐘在下午 8:00。

  3. 授權伺服器會收到授權要求、偵測 PlayReady 用戶端是第 3 版,並檢查用戶端時鐘的值:

    • 如果用戶端時鐘值不超過授權伺服器時鐘值 1 小時,請繼續並產生授權。

    • 如果沒有,請拒絕授權要求,並將訊息傳送給用戶端應用程式,要求時鐘設定為正確的值。

  4. 授權伺服器會使用下列專案產生授權:

    • 向右播放

    • 開始時間 = 授權要求中包含的用戶端時間 = 2018 年 1 月 5 日下午 7:56

    • 到期時間、第一次播放後到期、輸出保護等其他正確限制

    1. 授權伺服器會將授權傳回用戶端。

    2. 用戶端會開始播放。 電腦時鐘仍然為 7:56PM,且等於或超過授權的 BeginDate,也就是下午 7:56,因此播放實際上可以立即啟動。

訂用帳戶授權中的時間限制

PlayReady 支援訂用帳戶商務模型,讓使用者以每月費用來支付服務所提供之大型內容目錄的存取權。

在此案例中,PlayReady 授權伺服器會為每個內容檔案發出分葉授權,以及單一根授權。 為了讓 PlayReady 存取內容,需要其分葉授權和根授權 (授權鏈結) 。 這兩個授權都必須包含正在內容 (上執行的動作,例如播放) ,而且這兩個授權都必須有效 (未過期,依此類) 。

因為只有一個根授權,而且任何特定內容目錄可能有數百或數千個分葉授權,所以如果有任何) 限制,則分葉授權應該包含非常少的 (,而根授權應該包含時間限制,並定期重新整理 (,例如每月) 。 當訂閱即將過期時,授權伺服器只需要發行一個授權,且所有內容都會以新的有效到期日更新。 如果分葉授權中的原則包含以時間為基礎的原則,則必須重新發出所有分葉授權,以防止內容過期,這將會是伺服器的大型效能需求。

總而言之,如果內容應該使用授權鏈結過期,則只有根授權應該包含以時間為基礎的原則。