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.
Jede durch PlayReady geschützte Mediendatei verfügt über ein PlayReady-Objekt (PRO), das mehrere Informationen enthält, die PlayReady benötigt. Dies befindet sich im Inhaltsheader der Datei, die z. B. auch Metadaten für die Video- und Audiospuren enthalten kann.
Innerhalb jedes PRO ist ein PlayReady-Header, der einem Client die benötigten Informationen gibt, um eine Lizenz für den Teil des Inhalts zu finden oder zu erwerben, in dem er gespeichert ist. Die PlayReady-Kopfzeile sieht ungefähr wie folgt aus:
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.2.0.0">
<DATA>
<PROTECTINFO>
<KIDS>
<KID ALGID="AESCTR" CHECKSUM="xNvWVxoWk04=" VALUE="0IbHou/5s0yzM80yOkKEpQ=="></KID>
<KID ALGID="AESCTR" CHECKSUM="GnKaQIRacPU=" VALUE="/qgG2xbs4k2SKCxx6bhWqw=="></KID>
</KIDS>
</PROTECTINFO>
<LA_URL>https://test.playready.microsoft.com/service/rightsmanager.asmx</LA_URL>
</DATA>
</WRMHEADER>
Der Teil, der uns interessiert, ist das <KIDS>
Element, das ein oder mehrere <KID>
Elemente enthält. Eine KID (Key ID) enthält eine GUID (Globally Unique Identifier), die der Client verwendet, um den Server nach einem entsprechenden Schlüssel zu fragen, und eine ALGID, die dann zum Entschlüsseln der Datei verwendet wird. Das KID ist öffentlich, da er im PRO enthalten ist, aber der Schlüssel selbst ist ein Geheimschlüssel für den Dienst, und die Beziehung zwischen Schlüssel und KID ist nur für den Dienst bekannt.
Generieren eines Schlüssels und Verschlüsseln des Inhalts
Inhaltsverschlüsselungsschlüssel in PlayReady-Systemen sind AES-128 CTR und AES-128 CBC-Schlüssel. Der Dienst, der den Inhalt verschlüsselt, generiert ein neues KID und einen neuen Inhaltsschlüssel. Das KID wird in das PRO eingefügt, und die Video- und Audioframes des Inhalts werden mit dem Inhaltsschlüssel verschlüsselt. Die folgende Abbildung zeigt, wie ein Schlüssel generiert und dann zum Verschlüsseln von Inhalten verwendet wird.
Es gibt zwei Möglichkeiten, ein KID und einen Schlüssel zu generieren, darunter:
- Verwenden eines Schlüsselverwaltungssystems (Key Management System , KMS), bei dem der Dienst zufällig jeden KID- und Schlüsselwert generiert und speichert, und kann einfach den Schlüsselwert nachschlagen, der dem vom Client bereitgestellten KID entspricht.
- Verwendung des PlayReady Key Seed Mechanismus. Mit diesem Mechanismus bestimmt der Dienst einen konstanten Wert, der als Schlüsselsamenwert (ein zufälliger 30-Byte-Wert) bezeichnet wird, und generiert für jeden Inhalt, der einen Schlüssel erfordert, eine zufällige KID. Mithilfe des Server-SDK können Sie einen Schlüssel generieren, indem Sie die 128 Bit des Schlüssels oder den Schlüsselsamen und die KID bereitstellen. Der Schlüssel wird von einem hier angegebenen PlayReady-Algorithmus abgeleitet.
Unabhängig davon, wie Sie den Schlüssel generieren, müssen Sie überprüfen können, ob er der richtigen KID entspricht, und dann den Inhalt verschlüsseln.
Eine Lizenz für den Inhalt ausstellen
Wenn ein Client eine Lizenzanforderung sendet, sendet er den PlayReady-Header des Inhalts an den Lizenzherausgeber. Der Lizenzaussteller extrahiert das KID und bestimmt den entsprechenden Schlüsselwert unter Verwendung einer der oben beschriebenen Methoden – wenn er den Schlüsselsamenmechanismus verwendet, wird der Schlüssel basierend auf dem KID und dem Schlüsselsamen neu generiert. Anschließend wird eine Lizenz einschließlich dieses Schlüssels generiert, die er in einer Lizenzantwort an den Client zurücksendet.
Angenommen, Sie haben eine Videodatei. Der Packager für diesen Inhalt generiert ein zufälliges KID 123
, das er in den PlayReady-Header der Datei einfügt. Der Packager generiert auch einen Zufallsschlüsselwert ABC
, der dem KID 123
entspricht, und speichert sie beide im KMS. Der Packager fordert den KMS auf, die Datei mit dem richtigen Schlüssel zu verschlüsseln und die Datei mit dem Schlüssel ABC
zu verschlüsseln. Wenn der Kunde versucht, die Datei wiederzugeben, fragt der Client den Lizenzaussteller nach einer Lizenz, die der KID 123
entspricht. Der Lizenzaussteller sucht das KID im KMS und antwortet mit einer Lizenz, einschließlich des Schlüssels ABC
, mit dem der Client die Datei entsperren kann, und der Kunde kann sie ansehen.
Hinweis
Die vom Lizenzherausgeber an den Client gesendete Lizenz (in unserem Beispiel die Lizenz mit dem Schlüssel ABC
) wird verschlüsselt. Ein Angreifer kann den Schlüsselwert nicht abfangen.
Der Schlüssel, der zum Schutz der Mediendatei und des Schlüssels in der Lizenz verwendet wird, sind identisch. Daher muss der Content Packager und der Lizenzherausgeber in der Lage sein, den genauen Schlüssel für eine angegebene Mediendatei abzurufen oder zu generieren. Um dies zu erreichen, müssen Sie den Key-Seed zwischen dem Inhaltspaketgeber und dem Lizenzherausgeber teilen, wenn Sie ihn zum Generieren von Schlüsseln verwenden.
Gemeinsame Nutzung von Schlüsseln zwischen Dateien oder Tracks
Ebenso wie ein echter Schlüssel mehrere Türen entsperren kann, ist es technisch möglich, einen PlayReady-Schlüssel zu verwenden, um mehrere Titel in einer Datei oder sogar mehrere Dateien in einer Sammlung von Objekten zu entsperren. Während des Verpackungsvorgangs kann der Inhaltspaketierer denselben Schlüsselbezeichner für mehrere Spuren oder Mediendateien angeben, wobei derselbe Schlüssel für alle verwendet wird.
Bei einer Videoressource mit mehreren Qualitätsstufen bestehend aus 4K-, HD- und SD-Videospuren sowie mehreren Audiospuren hat der Verschlüssler die Flexibilität, entweder einen Schlüssel pro Spur oder einen einzigen Schlüssel für alle Spuren zu definieren.
Clients benötigen eine Lizenz für jeden Schlüssel, den sie zu entschlüsseln berechtigt sind. Beachten Sie, dass die Bereitstellung mehrerer Lizenzen von einem Lizenzserver in einer einzigen Lizenzantwort erfolgen kann.
In einem einzelnen Objekt mit mehreren Titeln erfolgt die Entscheidung zwischen einem Schlüssel für alle Titel oder einem Schlüssel für jeden Titel durch den Dienst, der die Inhalte verwaltet, und basierend auf den folgenden Kriterien:
- Mit mehr Schlüsseln kommt mehr Komplexität, erlaubt es Ihnen jedoch, bei der Lizenzübermittlung zu bestimmen, welche Tracks der Dienst einem bestimmten Client entschlüsseln lassen möchte.
- Weniger Schlüssel machen das System weniger komplex, erlauben es jedoch nicht, zum Zeitpunkt der Lizenzübermittlung festzulegen, welche Tracks vom Dienst einem bestimmten Client zur Entschlüsselung freigegeben werden sollen.
- Einige Clients haben möglicherweise die Einschränkung, dass sie nicht mehrere Schlüssel für ein einzelnes Objekt unterstützen.
Hinweis
Während PlayReady-Schlüssel mehr als eine digitale Mediendatei entsperren können, ist Microsoft dagegen stark. Die Verwendung eindeutiger Schlüssel für alle Dateien bietet eine höhere Sicherheit als das Schützen von Dateien mit demselben Schlüssel.
Stacking von Lizenzen in einer Lizenzantwort
Eine einzelne Lizenzantwort kann auch mehrere Lizenzen und damit mehrere Schlüssel enthalten, um mehrere Dateien oder Tracks in einer Transaktion freizuschalten. Dies ist effizienter als das Erstellen mehrerer Antworten für mehrere Lizenzen, da nur eine Transaktion erforderlich ist. Dies kann für verschiedene Szenarien nützlich sein:
- Eine Mediendatei wird mit mehreren Schlüsseln verschlüsselt. Beispielsweise wird die Videospur mit Key1 verschlüsselt, und die Audiospur wird mit Key2 verschlüsselt. Wenn ein Client eine Lizenz für KID1 anfordert, gibt der Lizenzserver eine Lizenzantwort einschließlich Lizenzen für KID1 und KID2 aus, sodass der Client alle Schlüssel zum Entschlüsseln der Video- und Audiospuren der Datei hat.
- Jeder Song auf einem Album wird mit einem anderen Schlüssel verschlüsselt, aber ein Kunde hat die Rechte für alle erworben. Wenn der Kunde mit der Wiedergabe des ersten Songs beginnt, gibt der Lizenzserver eine Lizenzantwort aus, einschließlich einer Lizenz für jeden Song auf dem Album, sodass der Client alle Schlüssel hat, die für die nahtlose Wiedergabe des gesamten Albums erforderlich sind.
- Der Schlüssel für einen Kanal im Live-TV wird voraussichtlich alle 24 Stunden geändert. Wenn die Wiedergabe gestartet wird, sendet der Server eine Lizenzantwort einschließlich der Lizenz für den aktuellen Schlüssel, aber auch eine Lizenz mit dem nächsten Schlüssel, sodass der Client bereits über den nächsten Schlüssel verfügt und die Änderung nahtlos erfolgt.