PlayReady vertrauenswürdige Uhr
Eine PlayReady Trusted Clock ist ein allgemeiner Begriff für eine Uhr, die verwendet wird, um zeitbasierte Einschränkungen auf PlayReady-geschützten Inhalten auf PlayReady-Clients zu erzwingen. Jeder Client, der eine vertrauenswürdige Uhr implementiert, stellt sicher, dass ein Client, der die Wiedergabe auf ein Anfangsdatum und eine Uhrzeit beschränkt, ein Ablaufdatum und eine Ablaufzeit nach dem ersten Spiel nicht mithilfe von Hacktools auf eine Ebene geändert 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 vertrauenswürdige Uhr dürfen jedoch keine Lizenzen mit zeitbasierten Richtlinien verwalten, einschließlich Ablauf. Da dieses Szenario in der Branche sehr häufig ist (z. B. Miet- oder Abonnement), empfiehlt Microsoft die Implementierung einer PlayReady Trusted Clock in jedem Client.
Cliententwickler können zwischen zwei Arten von PlayReady Trusted Clocks in ihrem Design auswählen. Sie ermöglichen es Ihnen, Lizenzen mit zeitbasierten Richtlinien zu verwalten:
- PlayReady Secure Clock
- PlayReady Antirollback-Uhr
Eine PlayReady Secure Clock ist "eine Hardware-Echtzeituhr, die entwickelt wurde, um nicht autorisierten Zugriff auf der Ebene zu verhindern, die in den Robustness-Regeln definiert ist", wie im Dokument "Definierte Begriffe" für die Compliance- und Robustness-Regeln für PlayReady-Produkte definiert.
Pro den Anforderungen der Complianceregeln für PlayReady-Produkte muss eine PlayReady Secure Clock einen Secure Clock-Dienst verwenden, um den Wert festzulegen. Microsoft betreibt einige PlayReady Secure Clock Services , die Gerätehersteller für diesen Zweck verwenden können.
Ab PlayReady 4.5 kann der Secure Clock Service der Lizenzerwerbsserver selbst sein, auf dem das PlayReady Server SDK die Zeit während der Lizenzkäufe bereitstellt.
Um diese Funktionalität zu verwenden, 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 sich der Funktion bewusst sein.
- Der Client (sowohl im TEE als auch im REE) muss das Secure Time-Feature zum Buildzeit enthalten und die zugeordneten OEM_TEE Methoden implementieren, wie in Codekommentaren im PlayReady Device Porting Kit dokumentiert.
- Die Clientanwendung muss entweder nur mit Lizenzerwerbsservern sprechen, die dieses Feature unterstützen und aktivieren ODER auch mit einem externen Secure Clock Service sprechen können.
- Der Server muss über ein Lizenzserverzeitzertifikat verfügen, das von Microsoft bereitgestellt wird.
- Wenn mehrere Lizenzerwerbsserverinstanzen für Skalierbarkeitszwecke verwendet werden, müssen ihre Betriebssystemsystemzeiten 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 Neuerkennung dieser Lizenzen aktivieren, nachdem das Feature verwendet wurde.
Ein Server ermöglicht diese Funktionalität wie folgt:
- Erstellen Sie eine Instanz der LicenseServerTimeCertificate-Klasse mit dem Von Microsoft bereitgestellten Lizenzserverzeitzertifikat und dem entsprechenden Schlüsselpaar.
- Legen Sie die LicenseResponse-Klasse die LicenseServerTimeCertificate-Eigenschaft auf diese Instanz fest. Hinweis: Festlegen dieser Eigenschaft hat keine Auswirkung, wenn der Client das Feature nicht unterstützt, sodass es nicht erforderlich ist, den Anwendungscode basierend auf dem Clientsupport zu bifurcaten.
- (Optional) Wenn die LizenzAcquisitionChallenge-Klasse die LicenseServerTimeRequested-Schreibgeschützte Eigenschaft "true" zurückgibt, kann die Lizenzantwort optional keine Lizenzen enthalten.
- (Optional) Wenn die LizenzRequested-Eigenschaft der PlayReadyHeader-Klasse falsch zurückgibt, hat der Client angegeben, dass keine Lizenzen angefordert werden, und die Serveranwendungslogik kann auf diese Informationen reagieren. (Dies bedeutet, dass der playReady Header v4.3.0.0 vom Client gesendete zusätzliche optionale Attribut LICENSEREQUESTED auf dem PROTECTINFO-Knoten auf "false" festgelegt ist.)
Ein Client aktiviert diese Funktionalität wie folgt:
- Schließen Sie (sowohl im TEE als auch im REE) die Secure Time-Funktion zur Kompilierung/Linkzeit ein, und implementieren Sie die zugeordneten OEM_TEE Methoden wie in Codekommentaren im PlayReady Porting Kit dokumentiert.
- Wenn jede PlayReady-API DRM_E_SECURETIME_CLOCK_NOT_SET zurückgibt, führen Sie lizenzkäufe aus, um die sichere Uhr festzulegen.
- Wenn jede PlayReady-API DRM_E_LICENSESERVERTIME_MUST_REACQUIRE_LICENSE zurückgibt, führen Sie lizenzkäufe aus, um eine persistente Lizenz zu erhalten, die ungültig wurde. Dies tritt nur auf, wenn beständige Lizenzen mit zeitbasierten Einschränkungen erworben wurden, bevor das Feature aktiviert wurde (z. B. der Client wurde von einer früheren Version von PlayReady auf PlayReady 4.5 aktualisiert).
- (Optional) Bei der Durchführung des Lizenzerwerbs ausschließlich zum Festlegen der sicheren Uhr kann die Anwendung auswählen, dass eine PlayReady Header v4.3.0.0 mit dem zusätzlichen optionalen 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.
Eine PlayReady Antirollback-Uhr ist "eine Echtzeituhr, die regelmäßig vom PlayReady-Endprodukt überprüft wird, um erweitert zu sein", wie im Dokument "Definierte Begriffe" für die Compliance- und Robustness-Regeln für PlayReady-Produkte definiert
Anhand der Anforderungen der Complianceregeln für PlayReady-Produkte kann eine PlayReady Antirollback-Uhr eine beliebige Zeitquelle verwenden, um den Wert festzulegen. Das Vertrauen in die Uhr wird durch den im PK integrierten Antirollbackmechanismus bereitgestellt. Die Verwendung eines PlayReady Secure Clock Service zum Festlegen des Werts ist ebenfalls zulässig. Microsoft betreibt einige PlayReady Secure Clock Services , die Gerätehersteller für diesen Zweck verwenden können.