PlayReady 信頼済みクロックは、PlayReady クライアントで PlayReady で保護されたコンテンツに設定された時間ベースの制限を適用するために使用されるクロックの一般的な用語です。 信頼できるクロックを実装するクライアントは、再生を開始日時、有効期限日時、または初回プレイ後の有効期限日時に制限するクライアントが、 PlayReady 製品の堅牢性ルールで定義されているレベルにハッキング ツールを使用して改ざんできないようにします。
Microsoft では、クライアント開発者が信頼できるクロックを使用する必要はありません。 ただし、信頼できるクロックがないクライアントでは、有効期限などの時間ベースのポリシーを使用してライセンスを管理することはできません。 このシナリオは業界で非常に一般的であるため (レンタルやサブスクリプションなど)、Microsoft では、すべてのクライアントに PlayReady Trusted Clock を実装することをお勧めします。
クライアント開発者は、デザインで 2 種類の PlayReady Trusted Clock を選択できます。 どちらも、時間ベースのポリシーを使用してライセンスを管理できます。
- PlayReady Secure Clock
- PlayReady ロールバック防止クロック
PlayReady セキュアクロック
PlayReady セキュア クロックは、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 によって提供される License Server Time 証明書とそれに対応するキー ペアを使用して、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 を運用しています。