Introduzione  

Il Contents Scrambling System (CSS), sviluppato nel 1996 da Matsushita, è un sistema che consente di prevenire copie illegali dei DVD. Il sistema CSS comprende tre entità: 

Il lettore DVD è collegato all'Host tramite un bus.

Tale sistema include:

  1. Un protocollo di autenticazione e di accordo su una chiave di bus BusKey tra lettore DVD e Host.

  2. Un algoritmo di cifratura denotato con CSSX. L'equazione C = CSSX(D, Key) sta ad indicare che l'algoritmo viene applicato ad un blocco di dati in chiaro D per ottenere un blocco di dati cifrati C, dove Key è una chiave di 40 bit (la lunghezza di 40 bit è imposta dalle normative americane sull'esportazione di cifrari) e X indica una delle 3 modalità di cifratura che descriveremo in seguito. 

Schema dell'algoritmo CSS

  1. Un algoritmo di decifratura denotato con CSS-1X. L'equazione D = CSS-1X(C, Key) sta ad indicare che l'algoritmo viene applicato ad un blocco di dati cifrato C per ottenere un blocco di dati in chiaro D, dove Key è una chiave di 40 bit e X indica una delle 3 modalità di decifratura che descriveremo in seguito. 

Schema dell'algoritmo CSS-1

  1. Un algoritmo utilizzato durante il protocollo di autenticazione denotato con CSSAuth.  L'equazione Key' = CSSAuth(Challenge, Case, Key) è una quarta modalità di esecuzione, dove  Challenge è un numero casuale di 80 bit, Case è un numero casuale compreso tra 0 e 31, Key è una chiave di 40 bit. Questo algoritmo genera come output una chiave Key' di 40 bit.

Schema dell'algoritmo CSSAuth

Gli algoritmi di cifratura citati al punto 2, a differenza degli algoritmi citati al punto 3 ed al punto 4, non saranno descritti in questa pubblicazione.   

Le industrie interessate a produrre dispositivi conformi al CSS devono sottoscrivere un accordo di licenza con la DVD Copy Control Association (DVD CCA).  La DVD CCA rilascia alle industrie associate che fabbricano lettori DVD:

  1. Un attestato di licenza.

  2. Un numero di licenza progressivo che indichiamo con i.

  3. Le specifiche tecniche per la costruzione di circuiti integrati che implementano il sistema.  

  4. Un insieme di M chiavi lettore indicato con SetKeyi dove i è il numero di licenza progressivo (supponiamo che le industrie con licenza siano N quindi 1i N). Tali chiavi, indicate con PlayerKeyj, dove 1 ≤ j ≤ M, devono essere memorizzate all'interno di un registro ROM di ogni lettore DVD prodotto. Ogni chiave lettore è lunga 5 byte, ovvero 40 bit.

  5. Una chiave segreta, indicata con SecretKey, di 5 byte. Questa chiave va memorizzata in un registro ROM di ogni lettore DVD prodotto e viene utilizzata dai device driver (gestore di dispositivo, software di basso livello associato ad un dispositivo di I/O preposto a gestirne la parte dipendente dall'hardware, definizione presente su "I moderni sistemi operativi" di Andrew S. Tanembaum) che vengono eseguiti sull'Host.   

La DVD CCA rilascia alle industrie che producono DVD:

  1. Un attestato di licenza.  

  2. Le specifiche tecniche del sistema (algoritmi di cifratura, come produrre i DVD protetti etc). 

  3. Tutte le chiavi lettore, ovvero N x M chiavi lettore: PlayerKeyj appartenente a SetKeyi per ogni 1 ≤ j ≤ M e per ogni 1i N.

A settembre 2003 le industrie licenziate ammontano a 409. Supponiamo, per esempio, che un'industria sottoscriva la licenza CSS. A questo punto la DVD CCA rilascia a tale industria oltre l'attestato, le chiavi e le specifiche tecniche anche il numero di licenza 410.   

Di seguito riportiamo lo scenario del sistema.

Scenario del sistema CSS

Le industrie che producono DVD protetti dal sistema CSS associano ad ogni DVD prodotto una chiave del disco DiskKey. DiskKey è una chiave casuale di 40 bit ed è presente sul DVD in forma cifrata indicata con DiskKeyc.  

Ogni DVD protetto con il sistema CSS contiene:

  1. I dati audio/video cifrati.

  2. Un'area nascosta detta Hidden Area.

La successiva figura illustra il contenuto della Hidden Area.

Hidden Area di un DVD (full size)

Tale area contiene:

  1. N chiavi disco cifrate, indicate con dki, dove 1i N. Ogni dki è di 40 bit. dki = CSSA(DiskKey, PlayerKeyj) dove DiskKey è la chiave del DVD e PlayerKeyj è una delle M chiave lettore appartenente a SetKeyi.

  2. Una chiave disco crifrata indicata con DiskKeyc. Dove DiskKeyc=CSSA(DiskKey, DiskKey) e DiskKey è la chiave disco in chiaro.

Un DVD contiene una serie di chiavi titolo legate ognuna ad un file VOB di dati audio/video. Lo scenario viene illustrato nella successiva figura:

 

Struttura dei file contenuti in un DVD (Full size)

Poiché la dimensione di ogni file VOB non può superare la dimensione di un gigabyte (Filesystem dei DVD), i contenuti audio/video presenti su un DVD vengono spesso divisi in una sequenza di file VOB. Le industrie che producono DVD associano ad ogni file VOB una chiave titolo TitleKeyTitleKey è una chiave casuale di 40 bit. La chiave titolo Titlekey è presente sul DVD nel file VOB in forma cifrata indicata con TitleKeyc. TitleKeyc = CSSB(TitleKey, DiskKey).  Esiste, dunque, una chiave titolo per ogni file VOB presente sul DVD.

Ogni file VOB, inoltre, è suddiviso in settori. Ogni settore ha una dimensione di 2048 byte di dati audio/video. I primi 128 byte di dati sono in chiaro, mentre i successivi byte sono cifrati. La chiave settore SectorKey è determinata mediante un'operazione di XOR tra la chiave titolo TitleKey e 5 byte di dati in chiaro prelevati dall'intestazione del settore di 128 byte. La chiave settore SectorKey è di 5 byte.