Freigeben über


Vertrauenswürdige PlayReady-Uhren

Eine playReady Trusted Clock ist ein allgemeiner Begriff für eine Uhr, die verwendet wird, um zeitbasierte Einschränkungen zu erzwingen, die auf PlayReady-geschützten Inhalten auf PlayReady-Clients festgelegt sind. Jeder Client, der eine vertrauenswürdige Uhr implementiert, stellt sicher, dass ein Client, der die Wiedergabe auf ein Anfangs- und Uhrzeitdatum, ein Ablaufdatum und eine Uhrzeit nach dem ersten Spiel beschränkt, nicht mit Hacking-Tools auf eine Ebene manipuliert werden kann, die in den Robustness-Regeln für PlayReady-Produkte definiert ist.

Microsoft erfordert nicht, dass Cliententwickler eine vertrauenswürdige Uhr verwenden. Clients ohne Trusted Clock bieten jedoch nicht die Möglichkeit, Lizenzen mit zeitbasierten Richtlinien zu verwalten, einschließlich des Ablaufs. Da dieses Szenario in der Branche (z. B. Vermietung oder Abonnement) sehr üblich ist, empfiehlt Microsoft die Implementierung einer vertrauenswürdigen PlayReady-Uhr in jedem Client.

Cliententwickler können zwischen zwei Arten von PlayReady Trusted Clocks in ihrem Design wählen. Beide ermöglichen es Ihnen, Lizenzen mit zeitbasierten Richtlinien zu verwalten:

  • PlayReady Secure Clock
  • PlayReady Anti-Rollback-Uhr

PlayReady Secure Clock (sichere Uhrzeitverwaltung)

Eine PlayReady Secure Clock ist "eine Hardware-Echtzeituhr, die darauf ausgelegt wurde, nicht-autorisierten Zugriff auf der Ebene zu widerstehen, die in den Robustness-Regeln definiert ist", wie es im Dokument "Definierte Bedingungen" für die Compliance- und Robustness-Regeln für PlayReady-Produkte definiert ist.

Gemäß den Anforderungen der Complianceregeln für PlayReady-Produkte muss eine PlayReady Secure Clock einen Secure Clock Service verwenden, um seinen Wert festzulegen. Microsoft betreibt einige PlayReady Secure Clock Services , die Gerätehersteller für diesen Zweck verwenden können.

PlayReady Secure Clock

Lizenzserverzeit

Ab PlayReady 4.5 kann der Secure Clock Service selbst der Lizenzserver sein, bei dem das PlayReady Server SDK während des Lizenzerwerbs die Zeit bereitstellt.

Um diese Funktionalität verwenden zu können, müssen die folgenden Anforderungen erfüllt sein:

  • Sowohl der Server als auch der Client (einschließlich TEE und REE) müssen PlayReady 4.5 oder höher verwenden.
  • Sowohl der Server als auch die Clientanwendungen müssen das Feature kennen.
  • Der Client (sowohl im TEE als auch im REE) muss die Funktion Secure Time zum Zeitpunkt der Erstellung enthalten und die zugehörigen OEM_TEE-Methoden implementieren, wie in den Code-Kommentaren im PlayReady Device Porting Kit dokumentiert.
  • Die Clientanwendung muss entweder nur mit Lizenzerwerbsservern sprechen, die dieses Feature unterstützen und aktivieren ODER auch in der Lage sein müssen, mit einem externen Secure Clock Service zu sprechen.
  • Der Server muss über ein Lizenzserverzeitzertifikat verfügen, das von Microsoft bereitgestellt wird.
  • Wenn mehrere Lizenzerwerbsserverinstanzen für Skalierbarkeitszwecke verwendet werden, müssen die Systemzeiten des Betriebssystems miteinander synchronisiert werden.
  • Wenn beständige Lizenzen mit zeitbasierten Einschränkungen erworben wurden, bevor das Feature aktiviert wurde (z. B. wird der Client von einer früheren Version von PlayReady auf PlayReady 4.5 aktualisiert), muss der Client und der Server die ErneuteAkquisition dieser Lizenzen aktivieren, nachdem das Feature verwendet wurde.

Ein Server aktiviert diese Funktionalität wie folgt:

  • Erstellen Sie eine Instanz der LicenseServerTimeCertificate-Klasse mit dem Von Microsoft bereitgestellten License Server Time-Zertifikat und dem entsprechenden Schlüsselpaar.
  • Legen Sie die LicenseServerTimeCertificate-Eigenschaft der LicenseResponse-Klasse auf diese Instanz fest. Hinweis: Das Festlegen dieser Eigenschaft hat keine Auswirkung, wenn der Client die Funktion nicht unterstützt. Daher muss der Anwendungscode nicht basierend auf der Unterstützung des Clients unterteilt werden.
  • (Optional) Wenn die schreibgeschützte Eigenschaft LicenseServerTimeRequested der Klasse LicenseAcquisitionChallenge den Wert true liefert, kann die Lizenzantwort optional keine Lizenzen enthalten.
  • (Optional) Wenn die schreibgeschützte Eigenschaft LicenseRequested der Klasse PlayReadyHeader den Wert false zurückgibt, hat der Client angegeben, dass keine Lizenzen angefordert werden, und die Logik der Server-Anwendung kann auf diese Information reagieren. (Das bedeutet, dass im vom Client gesendeten PlayReady Header v4.3.0.0 das zusätzliche optionale Attribut LICENSEREQUESTED im Knoten PROTECTINFO auf false festgelegt ist.)

Ein Client aktiviert diese Funktionalität wie folgt:

  • Schließen Sie (sowohl im TEE als auch im REE) zur Kompilierungs-/Linkzeit das Feature "Sichere Zeit" ein, und implementieren Sie die zugeordneten OEM_TEE Methoden, wie in Codekommentaren im PlayReady Porting Kit dokumentiert.
  • Wenn eine PlayReady-API DRM_E_SECURETIME_CLOCK_NOT_SET zurückgibt, führen Sie den Lizenzerwerb aus, um die sichere Uhr festzulegen.
  • Wenn eine PlayReady-API DRM_E_LICENSESERVERTIME_MUST_REACQUIRE_LICENSE zurückgibt, führen Sie den Lizenzerwerb aus, um eine persistente Lizenz erneut zu erhalten, die ungültig wurde. Dies tritt nur auf, wenn dauerhafte Lizenzen mit zeitbasierten Einschränkungen erworben wurden, bevor das Feature aktiviert wurde (z. B. wurde der Client von einer früheren Version von PlayReady auf PlayReady 4.5 aktualisiert).
  • (Optional) Wenn Sie die Lizenzerfassung ausschließlich zum Festlegen der sicheren Uhr durchführen, kann die Anwendung einen PlayReady Header v4.3.0.0 verwenden, wobei das zusätzliche optionale Attribut LICENSEREQUESTED auf dem PROTECTINFO-Knoten auf "false" festgelegt ist, um anzugeben, dass keine Lizenz erforderlich ist. Weitere Informationen finden Sie in der PlayReady-Headerspezifikation.

PlayReady Anti-Rollback-Uhr

Eine PlayReady Anti-Rollbackuhr ist "eine Echtzeituhr, die regelmäßig vom PlayReady-Endprodukt überprüft wird, um sicherzustellen, dass sie fortgeschritten ist", wie im Dokument "Definierte Begriffe" für die Compliance- und Robustheitsregeln für PlayReady-Produkte definiert.

Gemäß den Anforderungen der Complianceregeln für PlayReady-Produkte kann eine PlayReady Anti-Rollback-Uhr eine beliebige Zeitquelle verwenden, um ihren Wert festzulegen. Das Vertrauen in die Uhr wird durch den in der PK integrierten Anti-Rollback-Mechanismus gewährleistet. Die Verwendung eines PlayReady Secure Clock Service zum Festlegen seines Werts ist ebenfalls zulässig. Microsoft betreibt einige PlayReady Secure Clock Services , die Gerätehersteller für diesen Zweck verwenden können.

PlayReady Anti-Rollback-Uhr