Historia obejścia zabezpieczeń HD-DVD (AACS)

Wraz z wprowadzeniem standardów HD-DVD i Blu-Ray został wprowadzony nowy sposób zabezpieczania zawartości na krążkach. Wielkie koncerny wydały miliony dolarów na jego wdrożenie a prace nad nim trwały wiele miesięcy. Mowa o AACS (Advanced Access Content System) należący do grupy systemów DRM (Digital Rights Management).
Zgodnie z jego specyfikacją odtwarzanie danych z płyt korzystających z AACS miało być możliwe tylko przy pomocy sprzętu i oprogramowania wyprodukowanego przez producenta, który podpisał umowę licencyjna z twórcami standardu. Standard przewiduje uniemożliwienie odtwarzania nowych płyt przez urządzenia, które zostałyby skompromitowane. Daje również producentom płyty możliwość zablokowania jej odtwarzania w przypadku, gdyby była masowo klonowana.
Informacje o zablokowanych urządzeniach oraz płytach, które mimo poprawności kodów nie będą mogły być odtwarzane są rozprowadzane na nowo wydanych filmach. W praktyce oznacza to, że nawet posiadacz legalnej kopii może zostać pozbawiony możliwości jej oglądania, gdy taka będzie decyzja producenta.

Szczegóły mechanizmu AACS

AACS schemat

Mechanizm AACS opiera się w głównej mierze na szyfrowaniu symetrycznym algorytmem AES (CBC i ECB). Powyższy schemat jest w dużej mierze uproszczony, ale ułatwia zrozumienie mechanizmu. Do rozpoznawania hosta i odtwarzacza jest używany algorytm podpisu ECDSA (Elliptic Curve based Digital Signature Algorithm) oraz w jednym miejscu funkcja skrótu SHA1, ale w kontekście tego, co chcę opisać jest to mniej istotne.

Zaszyfrowana zawartość płyty (film) jest podzielona na części (do 64). Każda taka cześć jest zaszyfrowana innym kluczem. Klucze te nazywają się „Title key”, ale więcej niż jeden tytuł może się znajdować w takiej części i być zaszyfrowany tym samym kluczem. Title key (Kt) uzyskujemy z zaszyfrowanych Kt znajdujących się na płycie. Żeby uzyskać z nich Kt potrzebny jest unikalny klucz woluminu (Kvu). Klucz Kvu uzyskujemy przy pomocy jednokierunkowej funkcji AES-G (opartej na AES) wykorzystując zapisany na płycie unikalny identyfikator woluminu (Volume ID) i media key. Aby uzyskać Volume ID z napędu trzeba się wylegitymować certyfikatem podpisanym prze centrum AACS. Media key uzyskany przy użyciu processing key oraz danych zawartych w Media Key Block (MKB). Processing key uzyskujemy z kolei przy pomocy tajnych kluczy odtwarzacza. I właśnie w tym miejscu, (o czym później) jest najsłabsze ogniwo systemu.

Istotnym elementem jest drzewo dystrybucji kluczy. Każdy odtwarzacz ma przypisany zbiór kluczy. Sprowadza się do tego, że nie posiada on kluczy na ścieżce od liścia, na którym się znajduje do korzenia. Posiada natomiast pozostałe. Gdy któryś z poddrzew drzewa (lub jeden liść) zostanie skompromitowany do zaszyfrowania następnych wydanych krążków zostanie użyty również klucz z węzła odcinającego to poddrzewo. Odtwarzacz nie ma wtedy tego klucza i nie może odtworzyć zawartości. Jak wspomniałem wyżej tajne klucze odtwarzaczy służą do obliczenia processing key.

 

Pod specyfikacją (http://www.aacsla.com/specifications/) podpisały się wielkie koncerny takie jak:

  • Intel Corporation
  • International Business Machines Corporation
  • Matsushita Electric Industrial Co., Ltd.
  • Microsoft Corporation
  • Sony Corporation
  • Toshiba Corporation
  • The Walt Disney Company
  • Warner Bros.

Historia ataków.

  1. 6 grudnia 2006 muslix64 z forum doom9.org nie mógł obejrzeć filmu na nowo zakupionym odtwarzaczu HD-DVD bo jego karta wideo nie była zgodna z HDCP. Postanowił samemu rozszyfrować film – szacował, że zajmie mu to ok. 4 tygodnie.
  2. 13 grudnia znalazł title key w pamięci softwarowego odtwarzacza. Było to stosunkowo łatwe.
  3. 26 grudnia umieścił na forum post http://forum.doom9.org/showthread.php?t=119871 z napisanym w Javie programie BackupHDDVD do odszyfrowania filmów przy pomocy znalezionych w pamięci software’owego odtwarzacza title keys. Opublikował też źródła, ale w wyniku późniejszych działań AACS LA (Advanced Access Content System Licensing Administrator) trudno je teraz znalexć w internecie. Jest to freeware i skompilowaną wersję można łatwo znaleźć. Ściągnąłem ją i zdekompilowałem – jak to jest w przypadku Javy kod jest całkiem czytelny (źródła BackupHDDVD). Program jest bardzo krótki i prosty. Używa klas z pakietu javax.crypto do deszyfrowania AES.
  4. 2 stycznie 2007 muslix64 umieścił (http://forum.doom9.org/showthread.php?p=924731#post924731) na forum wersję swojego programu korzystającą z znalezionego w pamięci odtwarzacza volume key.
  5. 5 lutego użytkownik tego samego forum arnezami znalazł w pamięci WinDVD (używając winhexa) volume id i wpadł na pomysł, że można zrobić coś więcej.
  6. przy wsparciu wielu życzliwych osób udało się arnezami’emu znaleźć w pamięci najpierw media key (http://forum.doom9.org/showthread.php?p=952889#post952889) a następnie processing key (http://forum.doom9.org/showthread.php?p=952954#post952954) okazało się, że processing key może posłużyć do rozszyfrowania wszystkich wydanych do tego czasu krążków HD-DVD i Blu-Ray.
  7. na początku marca 2007 ustalili klucz Private Key odtwarzacza software’owego Cyberlink Power DVD. W ten sposób można pozyskać Volume ID danej płyty.

W tym czasię zaczęto wszędzie rozpowszechniać znaleziony processing key. Stał się „zakazaną liczbą” Digg i Wikipedia usuwały wpisy go zawierające. Spotkało się to z sprzeciwem internautów i przerodziło w swoistą wojnę o wolność słowa. Prawnicy AACS LA wysłali groźby pozwów i żądania zamknięcia stron publikujących kod (jego zapis heksadecymalny to 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0). Internauci w odpowiedzi zaczęli go umieszczać „gdzie popadnie” łącznie z koszulkami, piosenkami i teledyskami. Kod pojawił się na kanale amerykańskiej stacji telewizyjnej Current TV, gdzie wyświetlono kod oraz zaprezentowano piosenki przedstawiające 16 bajtowy ciąg. Wielu uważa sprawę za przykład cenzury internetu oraz dopuszczenie możliwości istnienia zakazanej liczby za absurd. Powstała flaga, która została nazwana flagą wolności słowa, przedstawiającą kolory odpowiadające wartościom poszczególnych liczb kodu.

flaga wolności słowa

Ukrywali też liczbę np. pytając się ile sekund ma 42 007 510.2 lat albo ile atomów jest w 4.3357393 miliardów ton złota. Serwis Digg ostatecznie zrezygnował z cenzury i sam jego założyciel opublikował kod, twierdząc, iż jest “gotów stawić czoła wszystkim konsekwencjom. Będziemy walczyć o wolność słowa, lub zginiemy walcząc.”( http://blog.digg.com/?p=74 )

W międzyczasie powstał komercyjny program do rozszyfrowywania HD-DVD AnyHDDVD, AACS LA zmieniło processing key (nie jest wymagane, żeby był tylko jeden). Zaczęła się swego rodzaju zabawa w kotka i myszkę między AACS LA a ludźmi rozszyfrowującymi HD-DVD. Kolejny processing key został wyciągnięty, opracowano także metodę uzyskiwania Volume ID z x-boxa.

Reasumując system AACS został w krótkim czasie ominięty i to bez łamania algorytmów kryptograficznych. Po prostu wykorzystano słabość odtwarzaczy softwareo’wych w których klucze nie były wystarczająco chronione. Rewelacją było również to, że producenci używali tego samego processing key do wszystkich płyt.

I tak będzie zawsze – jeśli użytkownik będzie mógł skorzystać z zakupionej zawartości to prędzej czy później znajdzie się ona w rozszyfrowanej postaci gdzieś w pamięci urządzenia.
Jedno jest pewne – widać, że nie istnieje idealny system DRM, który by pozwalał mieć coś a jednocześnie tego nie mieć. Przy zastosowaniu algorytmów symetrycznych dla odtwarzaczy softwaro’ewych jest to idea utopijna. Sam się osobiście dziwię, dlaczego wielkie koncerny zainwestowały olbrzymie pieniądze w coś, co jest z góry skazane na niepowodzenie a jedynie psuje ich wizerunek.

Zacheusz Siedlecki

Komentarze

2 komentarzy do “Historia obejścia zabezpieczeń HD-DVD (AACS)”

  1. Marek Drob on January 9th, 2008 12:32 am

    Witam Zacheusz :)

    Widze ostatnio duza aktywnosc na blogu :) Dobrze ze dodalem go do google readera. Milo sie czytalo, duzo sie dowiedzialem. Czekam na wiecej :)

    Pozdro
    :)

  2. darek on December 27th, 2011 8:57 pm

    Witam
    Czy kolega wie może jak wygląda obecnie sytuacja z tym zabezpieczeniem AACS vs Linux? Piszesz, że niby to zabezpieczenie jest złamane, klucze też, to w takim razie gdzie są jakieś tego efekty bo nigdzie nie mogę tego znaleźć. Videolan pracuje nad biblioteką libbluray, która ma odtwarzać filmy BD, ale z komercyjnie zabezpieczonymi krążkami sobie nie radzi. Czemu mimo że AACS zostało złamane nikt nie pracuje nad tym aby upakować to w jakąś biblioteką, która w połączeniu np z libbluray umożliwiała by bezproblemowe odtwarzanie zabezpieczonych krążków BD pod Linuksem?

Chcesz coś napisać?





*