Freigeben über


PlayReady-Inhaltsverschlüsselung

In diesem Thema finden Sie eine Übersicht über die Verschlüsselungsalgorithmen, die zum Schutz von Inhalten im PlayReady-Ökosystem verwendet werden.

Hinweis

Siehe Glossar für Verschlüsselungsbegriffe und Definitionen.

Verschlüsselungsgrundlagen

Symmetrische Schlüssel kryptografie ist der einfachste Verschlüsselungstyp. Bei symmetrischer Schlüsselkryptografie wird derselbe Schlüssel verwendet, um den Inhalt zu verschlüsseln und zu entschlüsseln. Symmetrische Schlüsselalgorithmen sind in der Regel klein und schnell. In der Regel wird der Großteil jeder Verschlüsselungsaufgabe von einer Form der symmetrischen Schlüsselverschlüsselung behandelt.

Die Kryptografie für öffentliche Schlüssel verwendet dagegen einen veröffentlichten öffentlichen Schlüssel zum Verschlüsseln und einen anderen, geheimen, privaten Schlüssel zum Entschlüsseln. Wenn Der Benutzer "A" dem Benutzer "B" einen öffentlichen Schlüssel gibt, kann B Inhalte für A ohne andere Informationen verschlüsseln. Unabhängig davon, wie der Inhalt übertragen wird, kann nur A sie lesen. Inhaltsabfangener fehlen dem privaten Schlüssel (geheimer Schlüssel) und können die Nachricht nicht entschlüsseln. Da der öffentliche Schlüssel offen verfügbar gemacht wird, kann jeder für A verschlüsseln, aber nur A kann entschlüsseln. Die Kryptografie für öffentliche Schlüssel erfordert rechenintensive Algorithmen.

Elliptische Kurven-Kryptografie (ECC ) ist ein Kryptografiealgorithmus, der zum Verschlüsseln und Entschlüsseln von Inhalten verwendet wird. Es handelt sich um eine rechnerisch komplexe Funktion, die eine elliptische Kurve beschreibt. Komponenten dieses Algorithmus werden als öffentlicher Schlüssel freigegeben. Andere Komponenten, die zur Entschlüsselung verwendet werden, bilden den privaten Schlüssel.

One-key Message Authentication Codes (OMAC) ist ein Nachrichtenauthentifizierungscode, der aus einer Blockchiffre erstellt wurde. Es gibt zwei OMAC-Algorithmen, OMAC1 und OMAC2.

Zertifikate werden verwendet, um die Echtheit für Entitäten sicherzustellen, die nicht vertrauenswürdig sind. Der Absender eines Zertifikats signiert seinen Namen (Gerätebezeichner) mithilfe seines privaten Schlüssels. Der Empfänger des Zertifikats überprüft dann die Signatur des Zertifikats mit dem öffentlichen Schlüssel des Absenders, um die Identität des Absenders sicherzustellen. Da der Absender der einzige Besitzer des privaten Schlüssels ist, ist es schwierig, einen privaten Schlüssel mit einem öffentlichen Schlüssel zu erstellen, und das Zertifikat wird nicht ordnungsgemäß überprüft, es sei denn, es ist mit dem privaten Schlüssel signiert; in diesem Fall wird davon ausgegangen, dass die Datenquelle korrekt ist und die zertifizierte Kommunikation sicher ist.

PlayReady-Verschlüsselungsalgorithmen

Symmetrische Algorithmen

Die folgenden AES-Verschlüsselungsmodi werden unterstützt:

  • AES 128 CTR-Modus – PlayReady-Systeme können Dateien und Datenströme schützen, in denen die Beispiele vollständig verschlüsselt sind oder wenn nur ein Muster der Beispiele verschlüsselt ist, im CTR-Modus. Dazu gehören die allgemeinen Verschlüsselungsmodi "cenc" (Common Encryption Scheme) und "cens" (Common Encryption Scheme using a pattern of unencrypted/encrypted bytes), die in ISO/IEC 23001-7 definiert sind.

  • AES 128 CBC-Modus – PlayReady-Systeme ab Version 4.0 können Dateien und Streams schützen, die entweder vollständig oder teilweise mit einem AES 128-Inhaltsschlüssel verschlüsselt sind, im CBC-Modus des Vorgangs. Dazu gehören die allgemeinen Verschlüsselungsmodi "cbc1" und "cbcs", wie in ISO/IEC 23001-7 definiert, und alle anderen Formate, die mit einem AES 128-Inhaltsschlüssel im CBC-Modus verschlüsselt sind.

Hinweis

PlayReady-Systeme mit Version 1.X, 2.X und 3.X können nur Dateien schützen, die im CTR-Modus verschlüsselt sind (allgemeiner Verschlüsselungsmodus "cenc"). "cens" wird nicht unterstützt. PlayReady-Systeme mit Version 4.0 und höher können Dateien schützen, die im CTR-Modus (allgemeine Verschlüsselungsmodi "cenc") und im CBC-Modus (Allgemeine Verschlüsselungsmodi "cbcs" verschlüsselt sind). Die anderen Modi "cens" und "cbc1" werden nicht unterstützt.

ECC-Algorithmen

Microsoft PlayReady Systeme verwenden ECC (Elliptical Curve Kryptoy) zum Verschlüsseln von Inhaltsschlüsseln und Signieren von Protokollnachrichten.

  • ECC ElGamal-Algorithmus – Wird für verschlüsselte Inhaltsschlüssel verwendet.
  • ECDSA (Elliptic Curve Digital Signature Algorithmus) – Wird für das Signieren von Nachrichten verwendet, sofern zutreffend in den PlayReady-Protokollen.
  • NIST – Microsoft PlayReady Systeme verwenden standardmäßige NIST-Algorithmen für DIE ECC-Verschlüsselung gegebenenfalls und verwenden derzeit die P-256 elliptische Kurve.

Signieren von Algorithmen

Für die Signatur von Lizenzen, vorübergehenden Schlüsseln oder Daten verwenden PlayReady-Systeme AES OMAC1, die cmAC (Cipher-basierte Nachrichtenauthentifizierungscode) entspricht und eine NIST-Empfehlung im Mai 2005 wurde. Schlüssel werden zufällig generiert, aber Daten werden mit SHA256 hashed, und dann wird der Hash mit ECC256 signiert.

Überlegungen zur Laufzeit und Leistung

Wenn die Wiedergabe von Inhalten ausgelöst wird, muss der PlayReady-Client einige Schritte ausführen, bevor die anfängliche Wiedergabe beginnen kann. Dies schließt das Suchen einer Lizenz, Bindung oder Interpretation der Lizenz ein, entschlüsselt den Inhaltsschlüssel und schließlich die Vorbereitung auf die Entschlüsselung des Inhalts. Der PlayReady-Clientstapel benötigt Zeit, um eine Lizenz an einen Inhalt zu binden, und dieser Vorgang ist erforderlich, bevor die Inhaltsentschlüsselung und das Rendering gestartet werden. Dies bedeutet, dass die Zeit zum Binden einer Lizenz die Zeit zum ersten Frame beim Starten einer Wiedergabe oder die Lücke zwischen Titeln beeinflusst. Der Cliententwickler sowie der Anwendungsentwickler sollten möglicherweise die Optimierung ihres Codes für Laufzeit- und Leistungsprobleme in Betracht ziehen, um die Zeit für den ersten Frame zu verringern und die lückenlose Wiedergabe zu ermöglichen.

Geschützte Container verwenden symmetrische Schlüsselverschlüsselung, um den Großteil der Inhalte zu verschlüsseln. Die Verschlüsselung öffentlicher Schlüssel wird jedoch innerhalb der Lizenz verwendet. Dies liegt daran, dass die Lizenz den symmetrischen Schlüssel des Inhalts enthält, und der Server verwendet den öffentlichen Schlüssel des Clients, um den symmetrischen Schlüssel des Inhalts zu verschlüsseln.

Wenn es zeit ist, den Inhalt zu entschlüsseln, wird der private Schlüssel des Clients verwendet, um den symmetrischen Schlüssel aus der Lizenz zu entschlüsseln. Nur der Client, an den die Lizenz gebunden ist, kann den symmetrischen Schlüssel extrahieren.

Die Entschlüsselung privater Schlüssel ist intensiver, als symmetrische Entschlüsselung; Daher ist die Interpretation der Lizenz rechenintensiv. Sobald die Lizenz ordnungsgemäß behandelt wurde, wird der symmetrische Schlüssel entschlüsselt, und der Inhalt kann mit kleinen und schnellen Algorithmen entschlüsselt werden.

Für Anwendungen oder Geräte, die ressourcenbeschränkt sind, erfordert das Start-Up erhebliche Zeit und Ressourcen. Sobald dies abgeschlossen ist, werden die Ressourcen jedoch freigegeben, die Entschlüsselung kann effizient fortgesetzt werden, und einige CPU-Zyklen oder Systemressourcen sind erforderlich.