Freigeben über


Hardwarebasiertes DRM

Dieses Thema enthält eine Übersicht darüber, wie Sie Ihrer Universelle Windows-Plattform-App (UWP) hardwarebasierte digitale Rechteverwaltung (Digital Rights Management, DRM) von PlayReady hinzufügen.

Hinweis

Hardwarebasiertes PlayReady DRM wird auf einer Vielzahl von Geräten unterstützt, einschließlich Windows- und Nicht-Windows-Geräten wie TV-Geräte, Smartphones und Tablets. Damit ein Windows-Gerät PlayReady Hardware DRM unterstützt, muss es Windows 10 ausführen und über eine unterstützte Hardwarekonfiguration verfügen.

Inhaltsanbieter bewegen sich zunehmend auf hardwarebasierte Schutzmaßnahmen, um die Berechtigung zum Wiedergeben von hochwertigen Inhalten in Apps zu gewähren. Die robuste Unterstützung für eine Hardwareimplementierung des kryptografischen Kerns wurde PlayReady hinzugefügt, um diesen Bedarf zu erfüllen. Diese Unterstützung ermöglicht die sichere Wiedergabe von High Definition -Inhalten (1080p) und Ultra-High-Definition (UHD) auf mehreren Geräteplattformen. Schlüsselmaterial (einschließlich privater Schlüssel, Inhaltsschlüssel und jedes andere Schlüsselmaterial, das zum Ableiten oder Entsperren dieser Schlüssel verwendet wird) und entschlüsselte komprimierte und nicht komprimierte Videobeispiele werden durch Die Verwendung der Hardwaresicherheit geschützt.

Windows TEE-Implementierung

Dieses Thema enthält eine kurze Übersicht darüber, wie Windows 10 die vertrauenswürdige Ausführungsumgebung (TEE) implementiert.

Die Details der Windows TEE-Implementierung sind für dieses Dokument außerhalb des Umfangs. Eine kurze Erläuterung des Unterschieds zwischen dem Standardmäßigen Portierungskit-TEE-Port und dem Windows-Port ist jedoch von Vorteil. Windows implementiert die OEM-Proxyschicht und überträgt die serialisierten PRITEE-Funktionen an einen Benutzermodustreiber im Windows Media Foundation-Subsystem. Dies wird schließlich an den Windows TrEE (Trusted Execution Environment)-Treiber oder den Grafiktreiber des OEM weitergeleitet. Die Details einer dieser Ansätze sind für dieses Dokument nicht vorgesehen. Das folgende Diagramm zeigt die allgemeine Komponenteninteraktion für den Windows-Port. Wenn Sie eine Windows PlayReady TEE-Implementierung entwickeln möchten, können Sie kontaktieren WMLA@Microsoft.com.

Diagramm der Windows-Teekomponente

Überlegungen zur Verwendung des Hardware-DRM

Dieses Thema enthält eine kurze Liste der Elemente, die beim Entwickeln von Apps für die Verwendung von Hardware-DRM berücksichtigt werden sollten. Wie in PlayReady DRM erläutert, werden mit PlayReady HWDRM für Windows 10 alle Ausgabeschutzmechanismen innerhalb der Windows TEE-Implementierung erzwungen, die einige Auswirkungen auf das Verhalten des Ausgabeschutzes hat:

  • Unterstützung für Ausgabeschutzebene (OUTPUT Protection Level, OPL) für nicht komprimiertes digitales Video 270: PlayReady HWDRM für Windows 10 unterstützt keine Abwärtsauflösung und erzwingt, dass HDCP eingebunden ist. Es wird empfohlen, dass hd-Inhalte für HWDRM einen OPL-Wert aufweisen, der größer als 270 ist (obwohl er nicht erforderlich ist). Darüber hinaus wird empfohlen, die HDCP-Typeinschränkung in der Lizenz (HDCP Version 2.2 unter Windows 10) festzulegen.
  • Im Gegensatz zum Software-DRM (SWDRM) werden Ausgabeschutze auf allen Monitoren basierend auf dem am wenigsten fähigen Monitor erzwungen. Wenn der Benutzer beispielsweise zwei Monitore angeschlossen hat, an denen einer der Monitore HDCP unterstützt und das andere nicht, schlägt die Wiedergabe fehl, wenn die Lizenz HDCP erfordert, auch wenn der Inhalt nur auf dem Monitor gerendert wird, der HDCP unterstützt. Im Software-DRM würde der Inhalt wiedergegeben, solange er nur auf dem Monitor gerendert wird, der HDCP unterstützt.
  • HWDRM wird nicht garantiert vom Client verwendet und sicher, es sei denn, die folgenden Bedingungen werden von den Inhaltsschlüsseln und Lizenzen erfüllt :
    • Die für den Videoinhaltsschlüssel verwendete Lizenz muss über eine Mindestsicherheitsstufe von 3000 verfügen.
    • Audio muss mit einem anderen Inhaltsschlüssel als Video verschlüsselt werden, und die für das Audio verwendete Lizenz muss eine Mindestsicherheitsstufe von 2000 aufweisen. Alternativ können Audiodaten im Klaren bleiben.

Darüber hinaus sollten Sie bei verwendung von HWDRM die folgenden Elemente berücksichtigen:

  • Der geschützte Medienprozess (Protected Media Process, PMP) wird nicht unterstützt.
  • Windows Media Video (auch bekannt als VC-1) wird nicht unterstützt (siehe Außerkraftsetzen des Hardware-DRM).
  • Mehrere Grafikverarbeitungseinheiten (GPUs) werden für persistente Lizenzen nicht unterstützt.

Um persistente Lizenzen auf Computern mit mehreren GPUs zu behandeln, sollten Sie folgendes Szenario in Betracht ziehen:

  1. Ein Kunde kauft einen neuen Computer mit einer integrierten Grafikkarte.
  2. Der Kunde verwendet eine App, die persistente Lizenzen erwirbt, während das Hardware-DRM verwendet wird.
  3. Die persistente Lizenz ist jetzt an die Hardwareschlüssel der Grafikkarte gebunden.
  4. Der Kunde installiert dann eine neue Grafikkarte.
  5. Alle Lizenzen im Hashdatenspeicher (Hashed Data Store, HDS) sind an die integrierte Grafikkarte gebunden, aber der Kunde möchte jetzt geschützte Inhalte mithilfe der neu installierten Grafikkarte wiedergeben.

Um zu verhindern, dass die Wiedergabe fehlschlägt, da die Lizenzen nicht von der Hardware entschlüsselt werden können, verwendet PlayReady für jede Grafikkarte, auf die sie trifft, eine separate HDS. Dies führt dazu, dass PlayReady den Lizenzerwerb für einen Teil des Inhalts versucht, bei dem PlayReady normalerweise bereits über eine Lizenz verfügt (d. h. im Software-DRM-Fall oder in jedem Fall ohne Hardwareänderung, PlayReady müsste keine Lizenz erneut anfordern). Wenn die App beim Verwenden des Hardware-DRM eine persistente Lizenz erwirbt, muss Ihre App daher in der Lage sein, den Fall zu behandeln, in dem diese Lizenz effektiv verloren geht, wenn der Endbenutzer eine Grafikkarte installiert (oder deinstalliert). Da dies kein gängiges Szenario ist, können Sie sich entscheiden, die Supportaufrufe zu behandeln, wenn der Inhalt nach einer Hardwareänderung nicht mehr wiedergegeben wird, anstatt herauszufinden, wie sie mit einer Hardwareänderung im Client-/Servercode umgehen können.

Außerkraftsetzen des Hardware-DRM

In diesem Abschnitt wird beschrieben, wie Sie das Hardware-DRM (HWDRM) außer Kraft setzen, wenn der zu wiedergebende Inhalt das Hardware-DRM nicht unterstützt.

Standardmäßig wird Hardware-DRM verwendet, wenn das System es unterstützt. Einige Inhalte werden jedoch im Hardware-DRM nicht unterstützt. Ein Beispiel hierfür ist Cocktail-Inhalt. Ein weiteres Beispiel ist jeder Inhalt, der einen anderen Videocodec als H.264 und HEVC verwendet. Ein weiteres Beispiel ist HEVC-Inhalt, da einige Hardware-DRM HEVC unterstützen und einige nicht. Wenn Sie also einen Teil von Inhalten wiedergeben möchten und hardwarebasiertes DRM es auf dem betreffenden System nicht unterstützt, sollten Sie das Hardware-DRM deaktivieren.

Das folgende Beispiel zeigt, wie Sie das Hardware-DRM deaktivieren. Sie müssen dies nur tun, bevor Sie wechseln. Stellen Sie außerdem sicher, dass kein PlayReady-Objekt im Arbeitsspeicher vorhanden ist, andernfalls ist das Verhalten nicht definiert.

var applicationData = Windows.Storage.ApplicationData.current;
var localSettings = applicationData.localSettings.createContainer("PlayReady", Windows.Storage.ApplicationDataCreateDisposition.always);
localSettings.values["SoftwareOverride"] = 1;

Um zurück zum Hardware-DRM zu wechseln, legen Sie den SoftwareOverride-Wert auf 0 fest.

Für jede Medienwiedergabe müssen Sie MediaProtectionManager auf Folgendes festlegen:

mediaProtectionManager.properties["Windows.Media.Protection.UseSoftwareProtectionLayer"] = true;

Die beste Möglichkeit, um zu ermitteln, ob Sie sich im Hardware-DRM oder software-DRM befinden, ist die Suche nach C:\Users\<username>\AppData\Local\Packages\<application name>\LocalCache\PlayReady\*

  • Wenn es eine Datei "mspr.hds" gibt, befinden Sie sich im Software-DRM.
  • Wenn Sie über eine andere *.hds-Datei verfügen, befinden Sie sich im Hardware-DRM.
  • Sie können auch den gesamten PlayReady-Ordner löschen und den Test wiederholen.

Ermitteln des Hardware-DRM-Typs

In diesem Abschnitt wird beschrieben, wie Sie ermitteln, welche Art von Hardware-DRM auf dem System unterstützt wird.

Mit der PlayReadyStatics.CheckSupportedHardware-Methode können Sie ermitteln, ob das System ein bestimmtes Hardware-DRM-Feature unterstützt. Zum Beispiel:

bool isFeatureSupported = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.HEVC);

Die PlayReadyHardwareDRMFeatures-Aufzählung enthält die gültige Liste der Hardware-DRM-Featurewerte, die abgefragt werden können. Um festzustellen, ob Hardware-DRM unterstützt wird, verwenden Sie das HardwareDRM-Element in der Abfrage. Um festzustellen, ob die Hardware den HEVC(High Efficiency Video Coding)/H.265-Codec unterstützt, verwenden Sie das HEVC-Element in der Abfrage.

Sie können auch die PlayReadyStatics.PlayReadyCertificateSecurityLevel-Eigenschaft verwenden, um die Sicherheitsstufe des Clientzertifikats abzurufen, um festzustellen, ob Hardware-DRM unterstützt wird. Sofern die zurückgegebene Zertifikatsicherheitsstufe nicht größer oder gleich 3000 ist, wird entweder der Client nicht individualisiert oder bereitgestellt (in diesem Fall gibt diese Eigenschaft 0 zurück) oder hardwarebasiertes DRM nicht verwendet wird (in diesem Fall gibt diese Eigenschaft einen Wert zurück, der kleiner als 3000 ist).

Erkennen der Unterstützung für AES128CBC Hardware-DRM

Ab Windows 10, Version 1709, können Sie unterstützung für AES128CBC Hardwareverschlüsselung auf einem Gerät erkennen, indem Sie PlayReadyStatics.CheckSupportedHardware aufrufen und den Enumerationswert PlayReadyHardwareDRMFeatures.Aes128Cbc angeben. In früheren Versionen von Windows 10 führt die Angabe dieses Werts dazu, dass eine Ausnahme ausgelöst wird. Aus diesem Grund sollten Sie überprüfen, ob der Enumerationswert vorhanden ist, indem Sie ApiInformation.IsApiContractPresent aufrufen und die Hauptvertragsversion 5 angeben, bevor Sie CheckSupportedHardware aufrufen.

bool supportsAes128Cbc = ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5);

if (supportsAes128Cbc)
{
    supportsAes128Cbc = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.Aes128Cbc);
}

Weitere Informationen