Sistemul de amestecare a conținutului
CSS , Content Scramble System este un sistem pentru protejarea conținutului media digital de pe DVD . Sistemul este extrem de instabil la hacking. Din cauza restricțiilor privind exportul de tehnologii criptografice din Statele Unite, lungimea cheii de criptare este limitată la 40 de biți, ceea ce este extrem de mic. Mai mult, din cauza vulnerabilității găsite, lungimea efectivă a cheii este de aproximativ 16 biți - adică toate opțiunile posibile pot fi rezolvate pe un computer modern în doar câteva secunde, ceea ce se datorează unei metode de protecție primitive. [1]
În 2005, CSS a fost înlocuit cu AACS mai robust .
Istoricul creației
Specificația DVD a fost gata în decembrie 1995 . Producătorii de DVD playere și unități DVD trebuiau să aibă o cantitate semnificativă de filme și muzică pe DVD. Cu toate acestea, studiourile de film au observat că DVD-urile ar fi o sursă ideală pentru copierea filmelor: informațiile digitale nu își vor pierde calitatea atunci când sunt reînregistrate (casetele video nu permiteau acest lucru datorită protecției APS la ieșire analogică ). Consorțiul DVD a fost solicitat să asigure o protecție adecvată împotriva copierii. Ca urmare, Consorțiul DVD a creat Grupul de lucru tehnic pentru protecția copiei (CPTWG ) . La 29 octombrie 1996, CPTWG a anunțat înființarea CSS, care a fost dezvoltat în principal de Toshiba și Matsushita Electric Industrial . O organizație non-profit, DVD Copy Control Association (DVD CCA ) a fost creată pentru a licenția utilizarea CSS . [2]
Istoria hackurilor
Primul crawler CSS a apărut pe Internet în noiembrie 1997 sub numele softDVDcrack. Acest program nu a spart de fapt CSS, ci playerul Zoran. Zoran a remediat în curând erorile din versiunea piratată a playerului, dar copiile versiunii vechi au rămas online. Procesul de hacking a fost destul de complicat, așa că programul nu a primit distribuție în masă. După aceea, au existat multe alte aplicații similare. Cu toate acestea, prăbușirea CSS este asociată cu apariția programului DeCSS în noiembrie 1999 . A fost scris de un școlar norvegian Jon Johansen pe baza ingineriei inverse a codului jucătorului Xing de către o echipă de programatori germani MoRE (Maeștri în Inginerie inversă). Xing nu pare să fi codificat o cheie pentru a debloca DVD-urile protejate. DeCSS diferă de toate programele anterioare prin faptul că decriptează CSS mai degrabă decât să intercepteze fluxul video de la un player licențiat. În plus, orice computer care poate reda un film pe DVD va putea sparge CSS destul de ușor folosind DeCSS . Prin urmare, DeCSS s-a răspândit rapid în întreaga lume, chiar dacă este ilegal în unele state să postați codul DeCSS pe site-uri web. [3]
Algoritm CSS
Există mai multe componente implicate în algoritmul CSS: DVD-ul, unitatea DVD, playerul și gazda. Cu toate acestea, toate trebuie să fie licențiate de DVD Copy Control Association (DVD CCA) pentru a utiliza CSS. Algoritmul CSS este format din două părți: autentificare și criptare.
Autentificare
- Unitatea DVD solicită gazdei un ID de acordare de autentificare pe 2 biți . Această valoare este folosită pentru a denumi sesiunea de autentificare.
- Autentificarea reciprocă are loc între unitatea DVD și gazdă. Gazda generează o secvență aleatorie de 40 de biți și o trimite pe unitatea DVD. Unitatea DVD criptează această secvență folosind funcția hash CSS , primește o valoare de 80 de biți, așa-numita cheie de provocare și o trimite gazdei . Gazda însăși decriptează răspunsul și îl compară cu secvența generată. Dacă valorile se potrivesc, gazda are încredere în unitatea DVD, deoarece numai dispozitivele și programele cu licență sunt considerate a cunoaște funcția secretă hash CSS. Se efectuează operația inversă (rolurile sunt inversate între gazdă și unitatea DVD), după care unitatea DVD are încredere sau nu în gazdă, în funcție de rezultatul comparației.
- Este generată o cheie de magistrală . Gazda și unitatea DVD combină secvențele aleatorii utilizate pentru autentificare, iar folosind funcția hash CSS, fiecare obține o cheie de magistrală. Această cheie criptează alte transferuri de chei între gazdă și unitatea DVD. Această cheie nu este niciodată transmisă prin autobuz.
- Playerul și DVD-ul sunt autentificate. Fiecare jucător licențiat are una sau mai multe chei de jucător dintr -o listă de 409 chei. Pe un disc protejat, într-o zonă invizibilă, o cheie de disc ( eng. Disk Key ), criptată de fiecare dintre cele 409 chei, și o cheie de autentificare ( eng. Authentication Key ), adică cheia de disc criptată de la sine, sunt stocate. Aceste chei formează un bloc de 2048 de octeți. Blocul este trimis jucătorului. Jucătorul știe în ce zonă se află cheia discului, criptată cu cheia sa și decriptează valoarea din această zonă. Apoi, pentru a verifica autenticitatea cheii, decriptează cheia de autentificare folosind cheia de disc găsită și compară rezultatul cu cheia de disc. Dacă cheile se potrivesc, autentificarea este considerată reușită. În caz contrar, jucătorul efectuează toate operațiunile cu următoarea cheie de jucător cunoscută și așa mai departe. Cheia de disc este folosită mai târziu. [3]
Decriptare
Datele DVD sunt criptate pe sector. Informațiile despre dacă un sector este criptat sau nu sunt stocate în antetul sectorului. Numai sectoarele care transportă informații de streaming (video, imagine, sunet) sunt criptate, restul, de exemplu, cei responsabili de navigare, nu sunt criptate. Criptarea datelor se bazează pe adăugarea bit-cu-bit cu o secvență de biți pseudo-aleatorie și substituție de octeți de tabel unu-la-unu. Pentru a implementa o secvență pseudo-aleatorie, sunt utilizați registre de deplasare cu feedback liniar ( Registrul de deplasare cu feedback linear în engleză , LFSR )
- Playerul solicită cheia de titlu de pe unitatea DVD . Apoi decriptează datele primite folosind cheia de disc pentru a obține cheia de denumire.
- Registrele de deplasare CSS sunt populate cu octeți de cheie de nume. Algoritmul CSS utilizează două registre de deplasare cu feedback linear: 17 biți și 25 de biți. Înainte de completare, cheia de nume este adăugată pe biți la cheia sectorului ( Cheia sectorului ) . Cheia de sector este conținută în octeții de la 80 la 84 ai sectorului. După adăugare, primul și al doilea octet al cheii de nume umple un registru de 17 biți, iar restul un registru de 25 de biți. Unul logic este inserat în al patrulea bit al fiecărui registru de deplasare pentru a preveni bucla zero.
- Registrele de deplasare trec prin opt cicluri și fiecare produce un octet de ieșire . Funcția XOR este utilizată ca feedback în registrele de deplasare. În cazul unui registru de 17 biți, intrarea acestuia este biții 1 și 15, iar ieșirea este bitul 17 și este ieșirea registrului de deplasare. În cazul unui registru de 25 de biți, intrarea în funcție este biții 1, 4, 5 și 15, iar ieșirea este bitul 25 și ieșirea registrului. [patru]
- Ieșirile registrelor sunt adunate într-un anumit mod. Înainte de adăugare, ieșirea registrului de 17 biți este inversată în funcție de biți. Octeții de ieșire din registru sunt adăugați prin adăugarea obișnuită de opt biți, iar bitul de overflow din adăugarea anterioară este adăugat la ei, iar bitul de overflow rezultat (al nouălea bit al sumei) merge la intrarea următoarei adăugări. Rezultatul formează ieșirea comună a registrelor de deplasare. În general, ieșirea fiecărui registru de deplasare poate fi fie inversată, fie nu. Rezultă că registrele de deplasare pot funcționa în patru moduri. Modul de criptare a datelor este utilizat pentru a cripta datele.
- Octetul de date criptat trece printr-o substituție unu-la-unu a tabelului și este adăugat la ieșirea totală a registrelor de deplasare. Rezultatul poate fi reprodus. [patru]
Registre de deplasare CSS
CSS utilizează două registre lineare de schimbare a feedback -ului . Schimbarea registrelor are loc de la stânga la dreapta. Bitul de ieșire este valoarea funcției de feedback. Al patrulea bit al fiecărui registru este setat la unul logic atunci când registrul de deplasare este inițial umplut. [patru]
Moduri de criptare
CSS are patru moduri de criptare. Modul este selectat în funcție de informațiile criptate. Modul afectează dacă ieșirea unui anumit registru de deplasare este inversată sau nu.
Modul de criptare
|
LSFR-17
|
LSFR-25
|
Autentificare
|
inversat
|
neinversată
|
Criptare cheie autobuz
|
neinversată
|
neinversată
|
Criptare cheie de nume
|
neinversată
|
inversat
|
Criptarea datelor
|
inversat
|
neinversată
|
[patru]
Funcția de distorsiune CSS
La criptarea cheii de disc și a cheii de nume, pe lângă registrele de deplasare, este utilizată funcția de distorsiune ( Funcția de deformare în engleză ) .
Octeții A1-A5 sunt intrarea funcției de distorsiune, ei sunt înlocuiți cu octeții cheii care este criptată. Octeții C1-C5 sunt ieșirea funcției. Octeții B1-B5 sunt valori intermediare. Octeții k1-k5 sunt octeți ai ieșirii generale a registrelor de deplasare în modul corespunzător. Registrele de deplasare sunt inițial umplute cu cheia folosită pentru criptare. Simbolul F indică o înlocuire unu-la-unu a unui octet în tabel. Plus reprezintă adăugarea pe biți a octeților. Ieșirea funcției de distorsiune este cheia criptată. [unu]
Tipuri de chei
Sistemul avea următoarele tipuri de taste [5] :
- Tastele playerului DVD . _ Fiecare producător și-a licențiat propria cheie (una dintre cele 409 disponibile) pentru utilizarea în playerele sale DVD de la DVD Copy Control Association , o organizație fondată de DVD Forum .
- Chei de disc criptate cu chei de player DVD . Fiecare DVD player a decriptat cheia discului folosind propria sa cheie de player.
- Cheile de titlu sunt chei criptate folosind cheia de disc și necesare pentru a decripta fragmente de date individuale .
Cheile de disc și de titlu au fost scrise în zona de intrare a discului pentru a face imposibilă copierea lor directă [6] .
Vulnerabilitatea sistemului și posibilele atacuri
- Secretul algoritmului . În criptografie, se obișnuiește să se considere cifrurile cu un algoritm de criptare secret ca fiind mai slabe decât cifrurile cu un algoritm deschis. Un cifr deschis este mai probabil să descopere vulnerabilități în stadiul de dezvoltare și să le repare. Atunci când algoritmul secret este făcut public, sistemul pierde puterea criptografică oferită de secretul algoritmului și este problematică corectarea algoritmului după utilizarea pe scară largă a acestuia. Acordul de confidențialitate pentru structura internă a CSS, încheiat la primirea licenței, nu exclude posibilitatea dezvăluirii. Utilizarea CSS într-un număr mare de programe și dispozitive a crescut riscul declasificării algoritmului prin inginerie inversă .
- Lungimea cheii . Cheile de disc în CSS au o lungime de 40 de biți. O cheie de această lungime poate fi preluată de un computer personal modern în aproximativ o zi. Cu toate acestea, dezvoltatorii CSS au pornit de la presupunerea că un astfel de atac ar fi suficient de costisitor pentru a fi utilizat în copierea în bloc a discurilor; nu au exclus cazuri izolate de hacking.
- Atac (dificultate 2 40 ): Bust.
- Ieșirea registrelor de deplasare liniară . Cu câțiva octeți cunoscuți ai ieșirii totale a registrelor de deplasare, puteți afla starea inițială a registrelor de deplasare și, prin urmare, cheia cu care au fost umplute registrele.
- Atacul 1 (dificultate 2 16 ): Pentru a efectua atacul, trebuie să cunoașteți 6 octeți din totalul de ieșire a registrelor de deplasare.
- Să presupunem starea inițială a registrului LFSR-17
- Obțineți 4 octeți de ieșire de la LSFR-17
- Cunoscând ieșirea lui LSFR-17, folosind adăugarea pe biți cu 4 octeți din ieșirea totală (care sunt cunoscute) obțineți ieșirea lui LSFR-25
- Pe baza rezultatelor, aflați starea inițială a LSFR-25 „derulând” cu 4 octeți înapoi
- Ieșiți încă 2 octeți și comparați cu cei 2 octeți cunoscuți rămași din rezultatul total
- Dacă nu se potrivește, începe din nou.
- Atacul 2 (dificultate 2 17 ): Pentru a efectua atacul, trebuie să cunoașteți 5 octeți din ieșirea totală a registrelor de deplasare. Acest atac este mai practic decât cel anterior, deoarece puteți afla 5 octeți din ieșirea registrelor de deplasare din atacul asupra funcției de distorsiune.
- Să presupunem starea inițială a registrului LFSR-17
- Obțineți 3 octeți de ieșire de la LSFR-17
- Primiți 3 octeți de ieșire LSFR-25 (în același mod ca în Atacul 1). Pentru a afla starea inițială a LSFR-25, este necesară cunoașterea unui alt bit
- Ghiciți valoarea bitului lipsă
- Selectați valoarea bitului care corespunde stării inițiale cu o unitate logică în al patrulea bit (semnul stării inițiale)
- Dacă ambele valori se potrivesc, atunci verificați ambele.
- Mai scoateți doi octeți și comparați-i cu octeții de ieșire cunoscuți
- Dacă nu se potrivește, începe din nou.
- Funcția de distorsiune
Din intrarea și ieșirea cunoscută a funcției de distorsiune ( A și C ) puteți afla 5 octeți de ieșire a registrelor de deplasare ( k )
- Atacul (dificultate 2 8 ): Pentru implementare, este necesar să se cunoască intrarea A și ieșirea C a funcției de distorsiune. De asemenea, se presupune că regula de substituție unu-la-unu F este de asemenea cunoscută
- Ghiciți valoarea lui k5
- Aflați toate valorile necunoscute ale lui k și B una câte una
- Comparați valoarea cunoscută a lui C1 și valoarea obținută din k1 și B1 găsite
- Repetați toți pașii dacă nu se potrivește [4]
- Cheie de autentificare
O cheie de autentificare este o cheie de disc criptată cu o cheie de disc. Aceste informații facilitează găsirea cheii de disc din cheia de autentificare.
- Atacul (dificultate 2 25 ) Se presupune că cheia de autentificare, adică intrarea funcției de distorsiune A , este cunoscută. Valorile C găsite vor fi cheia de disc. Acest atac este unul de dicționar , deci este necesar să construiți mai multe tabele:
1) Potrivirea fiecărei perechi de B1 și k2 (cu A1 și A2 cunoscute) cu C2 corespunzătoare
2) Potrivirea fiecărei stări inițiale a LSFR-25 cu prima, al doilea și al cincilea din cei 5 octeți ai ieșirii sale
- Se presupune valoarea B2 și starea inițială a registrului LSFR-17
- Găsiți k1 și k5 ( C1 și C2 sunt cunoscute, LSFR-17 este completat cu ele)
- Găsiți toate k2 posibile pentru B1 și C2 selectate (nu sunt mai mult de opt)
- Găsiți primul, al doilea și al cincilea octet al ieșirii registrului LSFR-25 (ieșirea LSFR-17 poate fi obținută, ieșirea totală este k și este cunoscută)
- Restabiliți starea inițială a registrului LSFR-25 din al doilea tabel și obțineți astfel valoarea C3 , C4 și C5 .
- Prin analogie cu atacul funcției de distorsiune, găsiți B2 și verificați dacă o astfel de valoare este posibilă având în vedere A1 , A2 și k2
- În caz de nepotrivire, porniți algoritmul din nou [1]
Vezi și
Note
- ↑ 1 2 3 Frank A. Stevenson. Criptanaliză a conținutului sistem de codificare . Consultat la 16 noiembrie 2009. Arhivat din original pe 2 iunie 2012. (nedefinit)
- ↑ Copie arhivată (link nu este disponibil) . Consultat la 26 noiembrie 2009. Arhivat din original la 1 iulie 2013. (nedefinit) Opinie tehnică privind CSS
- ↑ 1 2 Taylor J. DVD Demystified . Preluat la 2 octombrie 2017. Arhivat din original la 25 aprilie 2018. (nedefinit)
- ↑ 1 2 3 4 5 Sisteme de operare: proiectare și implementare. Lector: Gregory Kesden . Consultat la 19 noiembrie 2009. Arhivat din original pe 8 ianuarie 2019. (nedefinit)
- ↑ Criptografia în Home Entertainment - O privire asupra amestecării conținutului pe DVD-uri . Consultat la 16 noiembrie 2009. Arhivat din original pe 2 iunie 2012. (nedefinit)
- ↑ Scott Mueller. Actualizarea și repararea computerelor, p. 744 Arhivat 14 aprilie 2018 la Wayback Machine .
disc optic |
---|
informatii generale |
| |
---|
Tipuri de discuri optice |
- Laserdisc / Laserdisc
- Compact disc / Compact disc (CD): CD audio , 5.1 disc muzical , Super Audio CD , Photo CD , CD-R , CD-ROM , CD-RW , CD Video (CDV), Video CD (VCD), Super Video CD , CD+G , CD-Text , CD-ROM XA , CD-Extra , CD-i Bridge , CD-i
- MiniDisc / MiniDisc : Hi-MD
- DVD : DVD-Audio , DVD-R , DVD+R , DVD-R DL , DVD+R DL , DVD-RW , DVD+RW , DVD-RW DL , DVD+RW DL , DVD-RAM , DVD-D , DVD ENAV
- Disc Blu-ray (BD): BD-R , BD-RE , BD-ROM
- HD DVD
- CH DVD
- HD VMD
- TU FACI
- UMD
- Memorie holografică : HVD
- Stocarea datelor optice 3D
|
---|
Formate |
|
---|
Tehnologii de protecție |
|
---|