Schlüssel- und Schlüssel-IDs (KIDs)

Jede von PlayReady geschützte Mediendatei verfügt über ein PlayReady-Objekt (PRO), das mehrere Informationen enthält, die PlayReady benötigt. Dies befindet sich in der Inhaltskopfzeile der Datei, die z. B. Metadaten für die Video- und Audiospuren enthalten kann.

In jedem PRO handelt es sich um einen PlayReady-Header, der einem Client die informationen bietet, die benötigt werden, um eine Lizenz für den Inhalt zu finden oder zu erwerben, in dem er gespeichert ist. Der PlayReady-Header sieht 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 mindestens ein <KID> Element enthält. Eine KID (Key ID) enthält einen global eindeutigen Bezeichner (GUID), den der Client zum Anfordern des Servers für einen entsprechenden Schlüssel und eine ALGID verwendet, die dann zum Entschlüsseln der Datei verwendet wird. Das KID ist öffentlich, da es 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. Das folgende Bild zeigt, wie ein Schlüssel generiert wird und dann zum Verschlüsseln von Inhalten verwendet wird.

 

PlayReady content encryption flow

 

Es gibt zwei Möglichkeiten, ein KID und einen Schlüssel zu generieren, einschließlich:

  • Mithilfe eines Schlüsselverwaltungssystems (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.
  • Verwenden des PlayReady Key Seed-Mechanismus . Mit diesem Mechanismus bestimmt der Dienst einen Konstantenwert namens Schlüsselsamenwert (ein 30-Byte-Zufallswert), und für jedes Inhaltsteil, das einen Schlüssel erfordert, generiert ein zufälliges 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 es dem richtigen KID entspricht und dann den Inhalt verschlüsselt.

Bereitstellen einer Lizenz für den Inhalt

Wenn ein Client eine Lizenzanforderung erstellt, sendet er den PlayReady-Header des Inhalts an den Lizenzaussteller. Der Lizenzaussteller extrahiert das KID und bestimmt den entsprechenden Schlüsselwert, wobei eine der oben beschriebenen Methoden verwendet wird – wenn er den Schlüsselsamenmechanismus verwendet, wird der Schlüssel nur basierend auf dem KID- und Schlüsselsamen regeneriert. Anschließend wird eine Lizenz generiert, einschließlich dieses Schlüssels, den er in einer Lizenzantwort an den Client sendet.

Angenommen, Sie haben eine Videodatei. Der Paketgeber für diesen Inhalt generiert ein zufälliges KID 123, das er in die PlayReady-Kopfzeile der Datei einfügt. Der Paketgeber generiert auch einen zufälligen SchlüsselwertABC, der dem KID 123entspricht, und speichert sie beide im KMS. Der Paketgeber fordert die KMS auf, die Datei mit dem richtigen Schlüssel zu verschlüsseln und die Datei mit dem Schlüssel ABCzu verschlüsseln. Wenn der Kunde versucht, die Datei zu spielen, fragt der Client den Lizenzaussteller für eine Lizenz, die dem KID 123entspricht. Der Lizenzaussteller sucht das KID im KMS nach, und reagiert mit einer Lizenz, einschließlich des SchlüsselsABC, mit dem der Client die Datei entsperren kann, und der Kunde kann es beobachten.

Hinweis

Die von dem Lizenzaussteller an den Client gesendete Lizenz (in unserem Beispiel die Lizenz, die den Schlüssel ABCenthält), 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 Inhaltspaketgeber und der Lizenzaussteller sowohl in der Lage sein, den genauen Schlüssel für eine angegebene Mediendatei abzurufen oder zu generieren. Wenn Sie dazu einen Schlüsselsamen zum Generieren von Schlüsseln verwenden, müssen Sie sie zwischen dem Inhaltspaketgeber und dem Lizenzaussteller freigeben.

Freigeben von Schlüsseln zwischen Dateien oder Titeln

Ebenso wie ein echter Schlüssel mehrere Türen entsperren kann, ist es technisch möglich, einen PlayReady-Schlüssel zum Entsperren mehrerer Titel in einer Datei oder sogar mehrere Dateien in einer Sammlung von Ressourcen zu verwenden. Während des Verpackungsprozesses kann der Inhaltspaketer denselben Schlüsselbezeichner für mehrere Titel oder mehrere Mediendateien angeben, und der gleiche Schlüssel wird für sie verwendet.

Mit einem mehrstufigen Videoobjekt mit 4K-, HD- und SD-Videotiteln und mehreren Audiotiteln hat der Verschlüsselungsgeber beispielsweise die Flexibilität, einen Schlüssel pro Titel oder einen Schlüssel für alle Titel zu definieren.

Clients benötigen eine Lizenz für jede der Schlüssel, die sie für die Entschlüsselung haben. Beachten Sie, dass die Bereitstellung mehrerer Lizenzen durch einen Lizenzserver in einer einzigen Lizenzantwort erfolgen kann.

In einem einzelnen Objekt mit mehreren Titeln wird die Entscheidung zwischen einem Schlüssel für alle Titel oder einem Schlüssel für jeden Track durch den Dienst, der den Inhalt verwaltet, und basierend auf den folgenden Kriterien durchgeführt:

  • Weitere Schlüssel bringen mehr Komplexität, ermöglicht es Ihnen jedoch, bei der Lizenzübermittlung anzugeben, was den Dienst verfolgt, damit ein bestimmter Client entschlüsselt werden kann.
  • Weniger Schlüssel sind weniger komplex, können aber nicht zur Lizenzübermittlung angeben, was den Dienst verfolgt, damit ein bestimmter Client entschlüsselt werden kann.
  • Einige Clients verfügen möglicherweise über die Einschränkung, dass sie mehrere Schlüssel für ein einzelnes Objekt nicht unterstützen.

Hinweis

Während PlayReady-Schlüssel mehr als eine digitale Mediendatei entsperren können, ist Microsoft stark gegen dies. Die Verwendung eindeutiger Schlüssel in allen Dateien bietet mehr Sicherheit als den Schutz von Dateien mit demselben Schlüssel.

Stapellizenzen in einer Lizenzantwort

Eine einzelne Lizenzantwort kann auch mehrere Lizenzen tragen und somit mehrere Schlüssel zum Entsperren mehrerer Dateien oder Titel in einer Transaktion. Dies ist effizienter als das Erstellen mehrerer Antworten für mehrere Lizenzen, da es nur eine Transaktion umfasst. Dies kann für verschiedene Szenarien nützlich sein:

  • Eine Mediendatei wird mithilfe mehrerer Schlüssel verschlüsselt. Beispielsweise wird die Videospur mithilfe von Key1 verschlüsselt, und die Audiospur wird mithilfe von Key2 verschlüsselt. Wenn ein Client eine Lizenz für KID1 anfordert, stellt der Lizenzserver eine Lizenzantwort aus, einschließlich Lizenzen für KID1 und KID2, 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 Lieds beginnt, stellt der Lizenzserver eine Lizenzantwort aus, einschließlich einer Lizenz für jeden Song auf dem Album, sodass der Client alle Schlüssel hat, die zum nahtlosen Wiedergeben des gesamten Albums erforderlich sind.
  • Der Schlüssel für einen Kanal im Live-TV wird voraussichtlich alle 24 Stunden ändern. Beim Starten der Wiedergabe 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 beim Ändern des Schlüssels bereits den nächsten Schlüssel hat und die Änderung nahtlos erfolgt.

Weitere Informationen

PlayReady-Headerspezifikation

Verpackungsinhalt