Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Thema enthält 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üsselkryptografie 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. Inhaltsabgreifer haben keinen Zugriff auf den privaten Schlüssel (Geheimschlü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üsselt werden. Kryptografie mit öffentlichem Schlüssel erfordert rechenkomplexe Algorithmen.
Elliptische Kurvenkryptografie (ECC ) ist ein Kryptografiealgorithmus für öffentliche Schlüssel, der zum Verschlüsseln und Entschlüsseln von Inhalten verwendet wird. Es handelt sich um eine rechenkomplexe Funktion, die eine elliptische Kurve beschreibt. Komponenten dieses Algorithmus werden als öffentlicher Schlüssel freigegeben. Andere Komponenten, die für die Entschlüsselung verwendet werden, bilden den privaten Schlüssel.
Ein One-Key-Nachrichtenauthentifizierungscode (OMAC) ist ein Nachrichtenauthentifizierungscode, der aus einer Blockchiffre erstellt wurde. Es gibt zwei OMAC-Algorithmen, OMAC1 und OMAC2.
Zertifikate werden verwendet, um die Authentizität für Nicht vertrauenswürdige Entitäten sicherzustellen. 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 wird, im CTR-Modus. Dazu gehören die allgemeinen Verschlüsselungsmodi "cenc" (Common Encryption Scheme) und "cens" (Common Encryption Scheme, das ein Muster von unverschlüsselten/verschlüsselten Bytes verwendet), 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. 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 wurden. Die anderen Modi "cens" und "cbc1" werden nicht unterstützt.
ECC-Algorithmen
Microsoft PlayReady-Systeme verwenden ECC (Elliptical Curve Cryptography) 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 Algorithm) – Wird für das Signieren von Nachrichten verwendet, sofern zutreffend in den PlayReady-Protokollen.
- NIST – Microsoft PlayReady-Systeme verwenden NIST-Standardalgorithmen für die ECC-Verschlüsselung, sofern zutreffend und derzeit die P-256 elliptische Kurve verwendet.
Algorithmen zum Signieren
Für das Signieren von Lizenzen, vorübergehenden Schlüsseln oder Daten verwenden PlayReady-Systeme AES OMAC1, das cmAC (Verschlüsselungsbasierter Nachrichtenauthentifizierungscode) entspricht und im Mai 2005 zu einer NIST-Empfehlung wurde. Schlüssel werden zufällig generiert, daten werden jedoch mit SHA256 hashed und dann 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. Dazu gehört das Auffinden einer Lizenz, Bindung oder Interpretation der Lizenz, das Entschlüsseln des Inhaltsschlüssels und schließlich die Vorbereitung auf die Entschlüsselung des Inhalts. Der PlayReady-Clientstapel benötigt Zeit, um eine Lizenz an einen Teil des Inhalts zu binden, und dieser Vorgang ist vor dem Starten der Inhaltsentschlüsselung und des Renderings erforderlich. Dies bedeutet, dass sich die Zeit zum Binden einer Lizenz auf die Zeit bis zum ersten Frame beim Starten einer Wiedergabe oder auf die Pause zwischen den Titeln auswirkt. Der Cliententwickler und der Anwendungsentwickler möchten möglicherweise die Optimierung ihres Codes für Laufzeit- und Leistungsprobleme in Betracht ziehen, um die Zeit für den ersten Frame zu reduzieren und eine lückenlose Wiedergabe zu ermöglichen.
Geschützte Container verwenden die symmetrische Schlüsselverschlüsselung, um den Großteil von Inhalten 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 an der 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 rechenintensiver als die symmetrische Entschlüsselung; Daher ist die Interpretation der Lizenz rechenintensiv. Sobald die Lizenz ordnungsgemäß verarbeitet 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 ressourceneinschränkt sind, erfordert start-up erhebliche Zeit und Ressourcen. Sobald dies abgeschlossen ist, werden die Ressourcen jedoch freigegeben, kann die Entschlüsselung effizient fortgesetzt werden, und nur wenige CPU-Zyklen oder Systemressourcen sind erforderlich.