Teil 7 CSS und DeCSS

Document Sample
Teil 7 CSS und DeCSS Powered By Docstoc
					                 Netzsicherheit

             Teil 7: CSS und DeCSS

                  Prof. Dr. Jörg Schwenk
           Lehrstuhl für Netz- und Datensicherheit




DVD-Kopierschutz
1. DVD-Aufbau und Kopierschutz (ohne CSS)
2. CSS und DeCSS
     Überblick
     Die Schieberegister LFSR1 und LFSR2
     Angriffe auf die Datenverschlüsselung
     Key Management
     Angriffe auf das Key Management
     Wo kommt die Information her?




                               Jörg Schwenk                 2
                  Lehrstuhl für Netz- und Datensicherheit




                                                                1
Region Code
One other detail:
   Each DVD contains a region code that indicates the region of the world in which
   it is intended to be viewed.
   Each player knows the region in which it was to be sold.
   If the region code of the player doesn’t match the region code on the DVD, the
   player won’t deliver the data.
   This is to help the MPAA ensure that DVDs don’t leak out into parts of the world
   ahead of the “first showing”, &c.




                                        Jörg Schwenk                              3
                           Lehrstuhl für Netz- und Datensicherheit




Macrovision




                                        Jörg Schwenk                              4
                           Lehrstuhl für Netz- und Datensicherheit




                                                                                      2
Copy Generation Management System
   Kopier-Regeln
      beliebiges kopieren
      nie kopieren
      einmal kopieren
      nicht mehr kopieren
   Implementierung
      Bit-Paar im Header eine MPEG Streams
   Nachteile
      CGMS-Bits überleben die Umwandlung Digital -> Analog
      nicht
      leichte Entfernung der CGMS-Bits möglich



                                 Jörg Schwenk                 5
                    Lehrstuhl für Netz- und Datensicherheit




DVD-Dateisystem
ISO 9660 Dateisystem
  Einsatz schon bei CD´s
  Nachteile:
       geringe Verzeichnisstruktur (8)
       nur 8 Zeichen für Dateiname
       Nur 3 Zeichen für Datei-Endung

UDF Dateisystem
  basiert auf ISO 13346-Norm
  Standard für DVD
  einfach und mehrfach beschreibbare Medien
  Plattformunabhängig



                                 Jörg Schwenk                 6
                    Lehrstuhl für Netz- und Datensicherheit




                                                                  3
DVD-Dateisystem
Einsatz bei DVD-ROM/Video
  jede DVD hat UDF, aber meistens im ISO 9660
  „Mantel“ <=> UDF-Bridge
  (M-UDF + ISO 9660)




                              Jörg Schwenk                 7
                 Lehrstuhl für Netz- und Datensicherheit




DVD-Dateisystem
  prinzipiell wie DVD-ROM
  feste Verzeichnisstruktur
  Erkennung als DVD-
  Video anhand des
  „VIDEO_TS“-
  Verzeichnisses




                              Jörg Schwenk                 8
                 Lehrstuhl für Netz- und Datensicherheit




                                                               4
DVD-Dateisystem
Formatierung der Nutzdaten




                                  Jörg Schwenk                 9
                     Lehrstuhl für Netz- und Datensicherheit




DVD-Dateisystem
Was wird verschlüsselt?
  Datenframe besteht aus 2064 Byte
       4 Byte, ID-Feld
       6 Byte, Fehlererkennung
       6 Byte, Copyright-Informationen
       2048 Byte Nutzdaten
       Inhalt ID-Feld:




                                  Jörg Schwenk                 10
                     Lehrstuhl für Netz- und Datensicherheit




                                                                    5
DVD-Dateisystem
                                                             128 Byte unverschlüsselt
Was wird verschlüsselt?
  Datenframe (Sector) besteht aus 2064 Byte




                                Jörg Schwenk                             11
                   Lehrstuhl für Netz- und Datensicherheit




DVD-Kopierschutz
1. DVD-Aufbau und Kopierschutz (ohne CSS)
2. CSS und DeCSS
      Überblick
      Die Schieberegister LFSR1 und LFSR2
      Angriffe auf die Datenverschlüsselung
      Key Management
      Angriffe auf das Key Management
      Wo kommt die Information her?




                                Jörg Schwenk                             12
                   Lehrstuhl für Netz- und Datensicherheit




                                                                                        6
Systemüberblick
                   DVD Player                                              Computer/Host

                                                                           “Secret Key”
                           Player Keys
    DVD
                           “Secret” Key
Hidden Area                                            Bus           Bus
                           Region Code                 Key                 Bus Key
                           &c



                    Per title Title Key

            Table of Encrypted Disk Keys
            Disk Key Hash
            Region Code

                                        Jörg Schwenk                                      13
                           Lehrstuhl für Netz- und Datensicherheit




Die Schlüssel von CSS
  Authentication Key
      Dieser geheime Schlüssel (nur einer weltweit?) muss im DVD-Laufwerk und in der DVD
      Player-Software enthalten sein.
  Session Key (Bus Key)
      Dieser Schlüssel wird mit Hilfe der beiden beim Challenge-and-Response-
      Authentisierungsverfahren ausgetauschten Nonces berechnet
  Player Key Kpi
      Jeder DVD-Player kann einen oder mehrere der 409 Player Keys Kpi (i = 1, …, 409)
      enthalten.
  Disk Key Kd
      Dieser Schlüssel wird für jeden DVD-Titel neu erzeugt, mit allen 409 Player Keys und mit
      sich selbst verschlüsselt und auf der DVD abgelegt (hash, dk1, dk2, ..., dk409).
  Title Key Kt
      Dieser Schlüssel ist im Header der einzelnen Files auf der DVD, mit Kd verschlüsselt,
      abgelegt. XOR-verknüpft mit dem Sector Key dient er zur Entschlüsselung eines Sektors der
      Datei.
  Sector Key
      Jeder Sektor enthält einen 128-byte Plaintext Header. Die Bytes 80 - 84 des Headers jedes
      Sektors bilden den Sector Key (im Klartext).

                                        Jörg Schwenk                                      14
                           Lehrstuhl für Netz- und Datensicherheit




                                                                                                  7
Überblick über den Ablauf
 Step 1: Gegenseitige Authentisierung
    Challenge-and-Response-Protokoll. Dabei wird der Session Key/Bus
    Key berechnet. (Einsatzgebiet unklar, spielt für die Sicherheit keine
    Rolle.)
 Step 2: Berechnung des Disk Key Kd
    repeat
        wähle den nächsten im DVD-Player gespeicherten Player Key Kpi
        Kd = DA(dki , Kpi)
    until Kd = DA (hash, Kd)
 Step 3:
    Ein Sektor wird von der DVD gelesen.
 Step 4:
    Der Title key für diesen Sektor wird mit dem Disk key entschlüsselt.
 Step 5:
    Der Sektor wird mit dem XOR von Title key und Sector key
    entschlüsselt.

                                    Jörg Schwenk                               15
                       Lehrstuhl für Netz- und Datensicherheit




Linear Feedback Shift Register (LFSR)
 Pseudozufälliger Bitstrom
    Der zufällige Bitstrom im One-Time-Pad wird in der Praxis durch einen
    pseudozufälligen Bitstrom ersetzt.
 Linear Feedback Shift Register (LFSR)
    Linear rückgekoppelte Schieberegister sind eine effiziente Methode, um
    Pseudozufallsfolgen zu erzeugen.
    Rückkopplung erfolgt über eine lineare (d.h. als Matrix darstellbare)
    Funktion, i.d.R. das XOR bestimmter Bits.
    Vorteil 1: Als Geheimnis wird nur ein kurzer Startwert (“Seed”) benötigt.
    Vorteil 2: Sie produzieren lange, statistisch gute Bitfolgen.
    Nachteil: Sie sind kryptographisch nicht so stark, der Seed kann aus relativ
    wenigen bekannten Ausgabebits berechnet werden.
 (Nonlinear) Feedback Shift Registers
    Die Rückkopplung ist nichtlinear, um die kryptographischen Eigenschaften
    zu verbessern.



                                    Jörg Schwenk                               16
                       Lehrstuhl für Netz- und Datensicherheit




                                                                                    8
Generisches FSR
                                                                          output




                                                                 taps
 Feedback
                       Feedback-Funktion

 Das Register wird mit einem geheimen Initialwert (Seed) geladen.
 In jedem takt wird die Feedback-Funktion ausgewertet; Input sind dabei die
 Bits des Registers, die durch “Taps” mit der Funktion verbunden sind.
 Das Ergebnisbit der Funktion wird in das erste (linke) Bit des Registers
 geschoben; alle anderen Bitwerte werden um eine Position nach rechts
 verschoben. Das letzte (rechte) Bit ist das Ausgabe-Bit.

                                   Jörg Schwenk                               17
                      Lehrstuhl für Netz- und Datensicherheit




CSS: LFSR-17
                                                                garbage

               17                                    4

         Feedback     15                                         taps
                                                         1



                     Exclusive Or (XOR)

          output

Bit 4 wird mit dem Wert 1 vorbelegt (Vermeidung von Nullzyklen).
Die restlichen 16 Bit werden mit 2 Byte des CSS-Schlüssels belegt.
Im Gegensatz zum Standardfall wird die Ausgabe der Feedback-Funktion auch
als Ausgabe des Registers verwendet; dies ist kryptographisch gleichwertig.

                                   Jörg Schwenk                               18
                      Lehrstuhl für Netz- und Datensicherheit




                                                                                   9
 CSS: LFSR-25

                                                                              garbage

           25

      Feedback
                                         15                 5       4   1      taps


                                         Exclusive Or (XOR)
      output

  Bit 4 wird mit dem Wert 1 vorbelegt (Vermeidung von Nullzyklen).
  Die restlichen 24 Bit werden mit 3 Byte des CSS-Schlüssels belegt.
  Auch hier wird, im Gegensatz zum Standardfall, die Ausgabe der Feedback-
  Funktion auch als Ausgabe des Registers verwendet.

                                       Jörg Schwenk                                   19
                          Lehrstuhl für Netz- und Datensicherheit




 CSS: LFSR Addition
key
                 1 byte
      LFSR-17
       8 ticks
                 Optional bit-wise inverter
                                                                            Output byte
                                                          + 8-bit add
key

                 1 byte
      LFSR-25                                                                carry-out
       8 ticks
                    Optional bit-wise inverter
       carry-out
       from prior
       addition

                                       Jörg Schwenk                                   20
                          Lehrstuhl für Netz- und Datensicherheit




                                                                                           10
 LFSR Output Inversion


                       Bit-wise Invert Output Of LFSR
                                  LFSR-17                    LFSR-25
            Authentication        Yes                        Yes
            Disk key              No                         No
            Title Key             No                         Yes
            Data                  Yes                        No




                                       Jörg Schwenk                              21
                          Lehrstuhl für Netz- und Datensicherheit




 CSS: Data Decryption
                                                 byte
   NOT(LFSR 17) +
 LFSR25 + carry-out
                                                                       Output data byte
                                          Exclusive Or (XOR)

                        Table-based              byte
 Input data byte        substitution

LFSR-17 wird initialisiert mit den Bytes 0 und 1 des Title key, XORed mit den
Bytes 80 und 81 des Sektor-Headers.
LFSR-25 wird initialisiert mit den Bytes 2, 3 und 4 des Title key, XORed mit den
Bytes 82, 83 und 84 des Sektor-Headers.
Jedes Output-Byte von LFSR-17 wird bitweise invertiert, bevor es mit einem
Output-Byte von LFSR-25 addiert wird.
Input-Daten von Ver- und Entschlüsselung werden Tabellen-basiert substituiert.
                                       Jörg Schwenk                              22
                          Lehrstuhl für Netz- und Datensicherheit




                                                                                          11
O(216)-Attacke mit 6 bekannten
Outputbytes
        XOR                                               carry

    8       5   13                                            Output
                                          + 8-bit add
        XOR

8       8       5      13


            8          8                8                8        8    8


                                 Jörg Schwenk                          23
                    Lehrstuhl für Netz- und Datensicherheit




O(216)-Attacke mit 5 bekannten
Outputbytes
        XOR                                               carry

    8       5   13                                            Output
                                          + 8-bit add
        XOR

8       8       5      13


            8          8                8                8        8


                                 Jörg Schwenk                          24
                    Lehrstuhl für Netz- und Datensicherheit




                                                                            12
  CSS: Key Decryption
                                              5 Bytes
  LFSR 17 + LFSR25
     + carry-out

                                           Mangling Function                        Disk Key


                                              5 Bytes
             Encrypted Disk Key


  LFSR-17 wird initialisiert mit den Bytes 0 und 1 des Device key.
  LFSR-25 wird initialisiert mit den Bytes 2, 3 und 4 des Device key.
  Die ersten 5 Bytes des Outputs der beiden LFSR fließen in die Mangling-Funktion
  (nächste Folie) ein.
  Die 5 Bytes des verschlüsselten Disk key fließen ebenfalls ein.
  (Title key wird analog entschlüsselt; LFSRs werden mit Disk Key initialisiert,
  LFSR25 wird invertiert)
                                           Jörg Schwenk                                    25
                              Lehrstuhl für Netz- und Datensicherheit




  CSS: Key Decryption
Bytes of                                             A(3)
                  A(1)           A(2)                                   A(4)        A(5)
Ciphertext

                   F                F                   F                F           F


                   +     K1         +       K2          +       K3       +     K4    +     K5

                  B(1)            B(2)                B(3)              B(4)        B(5)

                   F                F                   F                F           F


                   +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
                  C(1)            C(2)                C(3)              C(4)        C(5)
                                           Jörg Schwenk                                    26
                              Lehrstuhl für Netz- und Datensicherheit




                                                                                                13
  CSS: Key Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    27
                         Lehrstuhl für Netz- und Datensicherheit




  CSS: Key Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    28
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           14
  CSS: Key Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    29
                         Lehrstuhl für Netz- und Datensicherheit




  CSS: Key Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    30
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           15
  CSS: Key Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    31
                         Lehrstuhl für Netz- und Datensicherheit




  CSS: Key Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    32
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           16
  CSS: Key Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    33
                         Lehrstuhl für Netz- und Datensicherheit




  CSS: Key Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    34
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           17
  CSS: Key Decryption
Bytes of                                          A(3)
               A(1)           A(2)                                   A(4)        A(5)
Ciphertext

                 F               F                   F                F           F


                 +    K1         +       K2          +       K3       +     K4    +     K5

               B(1)            B(2)                B(3)              B(4)        B(5)

                 F               F                   F                F           F


                 +    K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
               C(1)            C(2)                C(3)              C(4)        C(5)
                                        Jörg Schwenk                                    35
                           Lehrstuhl für Netz- und Datensicherheit




   CSS: Hash Decryption
   Ziel: Löse die Fixpunktgleichung
                    Kd = DA( hash, Kd )
        mit Komplexität < O(240).

   Vorberechnung (Komplexität 16*216):
   for (K2=0x0, K2<=0xFF, K2++){
      B(2)=A(1)^F(A(2))^K2;
      for (B(1)=0x0, B(1)<=0xFF, B(1)++{
          C(2)=B(1)^F(B(2))^K2;
          speichere (K2,B(1),C(2));
      }
   }
   Sortiere die Liste nach (C(2), B(1));

                                        Jörg Schwenk                                    36
                           Lehrstuhl für Netz- und Datensicherheit




                                                                                             18
   CSS: Hash Decryption
   1. Rate den Startwert (C(1), C(2)) von LFSR1 und
      berechne die ersten 5 Output-Bytes O1(1), O1(2),
      O1(3), O1(4), O1(5) (Komplexität O(216)).
   2. Rate B(1) und führe die Berechnungen auf den
      nachfolgenden Folien durch (Komplexität O(28)).




                                      Jörg Schwenk                                    37
                         Lehrstuhl für Netz- und Datensicherheit




  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    38
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           19
  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    39
                         Lehrstuhl für Netz- und Datensicherheit




  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    40
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           20
  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    41
                         Lehrstuhl für Netz- und Datensicherheit




   CSS: Hash Decryption
   3. Verwende die Tabelle, um für die jetzt berechneten
      Werte von B(1) und C(2) zulässige Werte für K2 zu
      finden; im Schnitt gibt es davon einen Wert (also
      keine Erhöhung der Gesamtkomplexität des
      Algorithmus).




                                      Jörg Schwenk                                    42
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           21
  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    43
                         Lehrstuhl für Netz- und Datensicherheit




   CSS: Hash Decryption
      Jetzt könnte B(2) berechnet werden; das bringt aber
      nichts
   4. Für die zulässigen Werte für K2 berechne aus [O1(1)
      und K1], [O1(2) und K2], [O1(5) und K3] die Werte
      O2(1), O2(2) und die zwei möglichen Werte für O2(5).
   5. Durch Erzeugen und Sortieren einer (nur einmal
      anzulegenden) Tabelle der Größe 224, die für jeden
      Startwert von LFSR2 die zugehörigen Werte O2(1),
      O2(2) und O2(5) enthält, kann man nun auch den
      Startwert von LFSR2 und damit C(3), C(4), C(5)
      erhalten.


                                      Jörg Schwenk                                    44
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           22
  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    45
                         Lehrstuhl für Netz- und Datensicherheit




  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    46
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           23
  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    47
                         Lehrstuhl für Netz- und Datensicherheit




  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    48
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           24
  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    49
                         Lehrstuhl für Netz- und Datensicherheit




  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    50
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           25
  CSS: Hash Decryption
Bytes of                                        A(3)
             A(1)           A(2)                                   A(4)        A(5)
Ciphertext

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5

             B(1)            B(2)                B(3)              B(4)        B(5)

              F                F                   F                F           F


              +     K1         +       K2          +       K3       +     K4    +     K5
Bytes of
Plaintext
             C(1)            C(2)                C(3)              C(4)        C(5)
                                      Jörg Schwenk                                    51
                         Lehrstuhl für Netz- und Datensicherheit




   CSS: Hash Decryption
   6. Wir testen, ob wir C(1), C(2), B(1), {K2} und die
      richtige Variante von O2(5) geraten haben, indem
      wir den berechneten Wert von K2 mit dem
      geratenen vergleichen.
   7. Die verbleibenden Werte testen wir mit der
      Gleichung
                 Kd = DA( hash, Kd ).
   8. Die verbleibenden (in der Praxis wenigen)
      Möglichkeiten können durch probeweise
      Entschlüsselung der Videodaten verifiziert werden.



                                      Jörg Schwenk                                    52
                         Lehrstuhl für Netz- und Datensicherheit




                                                                                           26
Woher kommt die Information?
c-anonymous.c
void CSSdescramble(unsigned char *sec,unsigned char *key)
{
      unsigned int t1,t2,t3,t4,t5,t6;
      unsigned char *end=sec+0x800;

     t1=key[0]^sec[0x54]|0x100;
     t2=key[1]^sec[0x55];
     t3=(*((unsigned int *)(key+2)))^(*((unsigned int *)(sec+0x56)));
     t4=t3&7;
     t3=t3*2+8-t4;
     sec+=0x80;
     t5=0;
     while(sec!=end)
     {
          t4=CSStab2[t2]^CSStab3[t1];
          t2=t1>>1;
          t1=((t1&1)<<8)^t4;
          t4=CSStab5[t4];
          t6=(((((((t3>>3)^t3)>>1)^t3)>>8)^t3)>>5)&0xff;
          t3=(t3<<8)|t6;
          t6=CSStab4[t6];
          t5+=t6+t4;
          *sec++=CSStab1[*sec]^(t5&0xff);
          t5>>=8;
     }
}
                                       Jörg Schwenk                     53
                          Lehrstuhl für Netz- und Datensicherheit




Quellen für DeCSS
    Anonymes Posting “c-anonymous.c”
    Axboe, Jens, dvd-2.2.13-5 Linux patch, 1999.
    Fawcus, D. and Roberts, Mark, css-auth package, December, 1999.
    Schneider, Bruce, Applied Cryptography, 2ed, Wiley, 1996, p. 372-379.
    Stevenson, Frank A., “Cryptanalysis of Content Scrambling System”, 8
    Nov. 1999, as updated 13 Nov. 1999, http://www-
    2.cs.cmu.edu/~dst/DeCSS/FrankStevenson/analysis.html
    Gallery of CSS Descramblers, http://www-
    2.cs.cmu.edu/~dst/DeCSS/Gallery/
    DeCSS Central, http://www.lemuria.org/DeCSS/
    Gregory Kesden, Carnegie Mellon University, 15-412 / Fall 2000.
    http://www-2.cs.cmu.edu/~dst/DeCSS/Kesden/




                                       Jörg Schwenk                     54
                          Lehrstuhl für Netz- und Datensicherheit




                                                                             27