PlayReady Trusted Clocks
PlayReady 信頼済みクロックは、PlayReady クライアントで PlayReady で保護されたコンテンツに設定された時間ベースの制限を適用するために使用されるクロックの一般的な用語です。 信頼できるクロックを実装するクライアントは、再生を開始日時、有効期限日時、または最初のプレイ後の有効期限日時に制限するクライアントが、 PlayReady 製品の堅牢性ルールで定義されているレベルにハッキング ツールを使用して改ざんできないようにします。
Microsoft では、クライアント開発者が信頼できるクロックを使用する必要はありません。 ただし、信頼できるクロックがないクライアントでは、有効期限を含む時間ベースのポリシーを使用してライセンスを管理することはできません。 このシナリオは業界 (レンタルやサブスクリプションなど) で非常に一般的であるため、すべてのクライアントに PlayReady Trusted Clock を実装することをお勧めします。
クライアント開発者は、デザインで PlayReady Trusted Clock の 2 種類の中から選択できます。 どちらも、時間ベースのポリシーを使用してライセンスを管理できます。
- PlayReady Secure Clock
- PlayReady のロールバック防止クロック
PlayReady Secure Clock
PlayReady Secure Clock は、PlayReady 製品のコンプライアンスと堅牢性の規則に関する定義された用語ドキュメントで定義されているように、「堅牢性ルールで定義されたレベルで不正アクセスに抵抗するように設計されたハードウェア リアルタイム クロック」です。
PlayReady 製品のコンプライアンス規則の要件に従って、PlayReady Secure Clock では、セキュリティで保護されたクロック サービスを使用してその値を設定する必要があります。 Microsoft では、デバイスメーカーがこの目的で使用できる PlayReady Secure Clock Services をいくつか運用しています。
ライセンス サーバー時間
PlayReady 4.5 以降では、 セキュア クロック サービス はライセンス取得サーバー自体であり、PlayReady Server SDK はライセンス取得中の時間を提供します。
この機能を使用するには、次の要件を満たす必要があります。
- サーバーとクライアント (TEE と REE を含む) の両方で PlayReady 4.5 以降を使用する必要があります。
- サーバーとクライアント アプリケーションの両方で、この機能を認識する必要があります。
- クライアント (TEE と REE の両方) には、ビルド時にセキュアタイム機能を含め、 PlayReady Device Porting Kit のコード コメントに記載されている関連するOEM_TEE メソッドを実装する必要があります。
- クライアント アプリケーションは、この機能をサポートして有効にするライセンス取得サーバーとのみ通信するか、外部の Secure Clock Service と通信できる必要があります。
- サーバーには、Microsoft が提供するライセンス サーバー時間証明書が必要です。
- スケーラビリティのために複数のライセンス取得サーバー インスタンスが使用されている場合は、OS システム時間を相互に同期する必要があります。
- 機能が有効になる前に時間ベースの制限を持つ永続的なライセンスが取得された場合 (たとえば、クライアントが以前のバージョンの PlayReady から PlayReady 4.5 にアップグレードされた場合)、クライアントとサーバーは、機能の使用後にそれらのライセンスの再取得を有効にする必要があります。
サーバーは、次のようにこの機能を有効にします。
- Microsoft によって提供されるライセンス サーバー時刻証明書とそれに対応するキー ペアを使用して、LicenseServerTimeCertificate クラスのインスタンスを構築します。
- LicenseResponse クラスの LicenseServerTimeCertificate プロパティをそのインスタンスに設定します。 注: クライアントが機能をサポートしていない場合、このプロパティを設定しても効果がないため、クライアントのサポートに基づいてアプリケーション コードを分岐する必要はありません。
- (省略可能)LicenseAcquisitionChallenge クラスの LicenseServerTimeRequested 読み取り専用プロパティが true を返す場合、ライセンス応答には必要に応じてライセンスが含まれていません。
- (省略可能)PlayReadyHeader クラスの LicenseRequested 読み取り専用プロパティが false を返す場合、クライアントはライセンスが要求されていないことを示しており、サーバー アプリケーション ロジックはこの情報に基づいて動作することを選択できます。 (つまり、クライアントから送信された PlayReady ヘッダー v4.3.0.0 には、PROTECTINFO ノードの追加のオプション属性 LICENSEREQUESTED が false に設定されています)。
クライアントは、次のようにこの機能を有効にします。
- コンパイル時またはリンク時にセキュリティで保護された時刻機能を (TEE と REE の両方に) 含め、PlayReady 移植キットのコード コメントに記載されているように、関連するOEM_TEE メソッドを実装します。
- PlayReady API からDRM_E_SECURETIME_CLOCK_NOT_SETが返されたら、ライセンス取得を実行してセキュリティで保護されたクロックを設定します。
- PlayReady API がDRM_E_LICENSESERVERTIME_MUST_REACQUIRE_LICENSE返されたら、ライセンス取得を実行して、無効にされた永続的なライセンスを取得します。 これは、時間ベースの制限を持つ永続的なライセンスが機能が有効になる前に取得された場合にのみ発生します (たとえば、クライアントが以前のバージョンの PlayReady から PlayReady 4.5 にアップグレードされた場合など)。
- (省略可能)セキュリティで保護されたクロックを設定する目的でライセンス取得を純粋に実行する場合、アプリケーションは PLAYReady ヘッダー v4.3.0.0 を使用し、PROTECTINFO ノードの追加のオプション属性 LICENSEREQUESTED を false に設定して、ライセンスが不要であることを示すことができます。 詳細については、 PlayReady ヘッダー仕様を参照してください。
PlayReady のロールバック防止クロック
PlayReady のロールバック防止クロックは、PlayReady 製品のコンプライアンスと堅牢性の規則に関する定義された用語ドキュメントで定義されているように、"PlayReady Final Product によって定期的に検証されて高度であることが確認されるリアルタイム クロック" です。
PlayReady 製品のコンプライアンス規則の要件に従って、PlayReady のロールバック対策クロックでは、任意の時間ソースを使用してその値を設定できます。 クロックの信頼は、PK に組み込まれているロールバック対策メカニズムによって提供されます。 PlayReady Secure Clock Service を使用してその値を設定することもできます。 Microsoft では、デバイスメーカーがこの目的で使用できる PlayReady Secure Clock Services をいくつか運用しています。