DRM, AACS i ochrona HD-DVD

08-May-2007 01:57

Postanowiłem napisać ten wpis z powodu zamieszania, jakie od jakiegoś czasu powoduje opublikowanie w internecie klucza (09 f9 11 02 9d 74 e3 5b d8 41 56 c5 63 56 88 c0) do przetwarzania HD-DVD. Mam nadzieję, że conajmniej kilku osobom rozjaśni to pogląd na sprawę publikacji owego klucza. Ci którym nie chce się czytać, mogą przejść do wniosków.

AACS

AACS - czyli zaawansowany system dostępu do zawartości, jest systemem ochrony danych multimedialnych. Pierwszy człon Advanced pochodzi najprawdopodobniej od szerokiego zastosowania szyfru blokowego AES, który w przypadku AACS'a ma 128bitów. Poniżej staram się przybliżyć, co się dzieje, kiedy chcemy odtworzyć film z płyty chronionej tym systemem (część rzeczy pominę dla uproszczenia, bo nie jest moim zamiarem tłumaczenie specyfikacji AACS'a).

AACS Content Binding Rysunek 1. AACS - Content Binding - rysunek pochodzi ze specyfikacji AACS dostępnej na stronie aacsla.

AACS - uwierzytelnienie

Pierwszą rzeczą jaka musi nastąpić po włożeniu płyty chronionej poprzez system AACS (HD-DVD bądź Blue-Ray) jest uwierzytelnienie. W procesie uwierzytelnienia, zarówno napęd jak i komputer (a dokładniej mówiąc, odtwarzacz software'owy, który będe dalej oznaczał jako SP) sprawdzają, czy to drugie, nie jest na liście odwołanych hostów (HRL) bądź napędów (DRL) odpowiednio. (Dokładniej mówiąc, zanim to nastąpi zarówno napęd (każdy napęd, który ma obsługiwać AACS, musi posiadać pewną ilość pamięci trwałej) jak i SP, sprawdzają, czy na włożonej płycie, nie ma czasem nowszych wersji HRL i DRL odpowiednio, jeśli tak, są one uaktualniane (jeżeli podpis cyfrowy tych rekordów jest poprawny)). Ciekawostka: Uwierzytelnienie przebiega przy użyciu ECDSA, czyli tak na prawdę pewnej ustandaryzowanej wersji algorytmu Diffiego-Hellmana, ale opartej na krzywych eliptycznych.
128 bitów z uzyskanego w tym procesie punktu krzywej eliptycznej jest używana jako Bus Key - czyli klucz sesji, który jest później używany, ale na razie to dla nas nieistotne.

AACS - MKB i jego przetwarzanie

Przetwarzanie MKB - czyli bloku kluczy nośnika, to właściwie serce całego systemu. To właśnie ta część systemu jest odpowiedzialna za odwoływanie skompromitowanych (czyli tych, których DK - klucze urządzenia, zostały ujawnione) napędów.
Jest to realizowane przy użyciu algorytmu NNL. Nie będe się zagłębiał w szczegóły, gdyż tak na prawdę jest to temat na osobną notkę, jak będą chętni, napiszę. Ważne jedynie by zapamiętać, że algorytm ów uniemożliwia (fizycznie) skompromitowanym urządzeniom otrzymanie tak zwanego klucza przetwarzania (Processing Key).
To ten właśnie klucz został ujawniony, czasami jest on (błędnie) nazywany głównym kluczem (master key)

AACS - dekodowanie danych...

  • AESem z klucza przetwarzania (i z pewnej porcji danych) z otrzymywany jest klucz nośnika (Media Key).
    Ponieważ, fizycznie nie mamy dostępu do owej porcji danych, nie możemy na podstawie MK obliczyć klucza przetwarzania
  • napęd przy pomocy tak zwanego identyfikatora utworu (Volume ID) i uzyskanego dopiero co klucza nośnika generuje (AESem, użytym jako funkcja jednokierunkowa) unikatowy klucz utworu (Volume Unique Key).
    Warto w tym miejscu wspomnieć, że utwór to nie koniecznie musi być jeden film czy plik, można porównać to do utworu literackiego, czy muzycznego, które składają się z kilku części.
  • Unikatowy klucz utworu służy jako klucz do odszyfrowania klucza tytułu (Title Key)...
  • ...który jest używany do odszyfrowania zawartości. Ufff.

Wnioski:

  1. Klucz który niedawno spowodował takie zamieszanie, to klucz przetwarzania.
  2. Klucz został opublikowany 11 lutego, stąd dziwi mnie, skąd to nagłe zamieszanie.
  3. Klucz przetwarzania może być w założeniach AACS'a różny dla każdego wydanego "filmu"!
  4. Sam klucz przetwarzania nie wystarcza do rozszyfrowania zawartości, potrzebny jest identyfikator utworu (Volume ID), który (nie powinien być) przekazany napędowi, jeśli ten nie przeszedł procesu uwierzytelnienia.
  5. Okazało się jednak, że często identyfikatory utworu zamiast być 128-bitowymi ciągami losowymi były często ciągami ASCII [np: "\x40\x00FULLMETALJAC\0\0" (Full Metal Jacket)]
  6. Ponadto na szczęście 3 kwietnia, poprzez modyfikację firmware'u odtwarzacza toshiby, zwanego również XBOX 360 HD, niejakiemu Geremii, udało się uzyskać Volume ID, bez przechodzenia procesu uwierzytelnienia! (hacking.pl pisał o tym 11 kwietnia)
  7. Zakładając, że potrafimy otrzymać, unikatowy klucz utworu (czyli mamy klucz nośnika i identyfikator woluminu), żeby móc zdeszyfrować zaszyfrowaną zawartość, napęd musi przejść uwierzytelnienie! (choć być może będzie możliwe obejście tego, tak jak w przypadku identyfikatora utworu).
  8. arnezami, nie uzyskał klucza przetwarzania, tylko 'podejrzał' podsłuchując przesyłane dane (USB Snifferem). Ponieważ software (w tym wypadku to był WinDVD bodajże, zostanie spatchowany, zakładam, że w celu uniemożliwienia tego procederu :>, a każdy kto nie zmieni software'u nie będzie w stanie oglądać nowych filmów.
  9. Sam system nie został złamany, w przeciwieństwie do CSS'a, jest on dużo lepiej przemyślany.

Wątpliwości

To czy system AACS jest w użyciu czy nie, nie ma dla mnie wielkiego znaczenia, jest dla mnie jasne, że wytwórnie filmowe muszą pilnować swojej kasy. Dużo większe znaczenie ma dla mnie to, że producenci odtwarzaczy HD-DVD i BlueRay, muszą płacić AACSLA ciężką kasę, jeżeli chcą umieścić AACS na płycie (polecam poczytanie cenników na stronie AACSLA).
Najprawdopodobniej odbija się to na cenach tych napędów (w tej chwili najtańszy (nie-komputerowy!) kosztuje koło 1300 PLN). (Z drugiej strony ceny pewnie powodowane są również tym, że na polskim przynajmniej rynku, jest to nadal coś stosunkowo nowego).
Sam system nie jest czymś złym (no, może nie byłby, gdyby nie to, że nie ma i pewnie prędko nie będzie odtwarzacza na linuxa), jednakże użytkownicy nie powinni być zmuszani do używania określonego software'u (nie mówiąc, że są zmuszani, do patchowania tego software'u!), tym bardziej, skoro już zabulili kasę za sam odtwarzacz.

Exodus

Sam system jest ciut bardziej skomplikowany, nie wnikałem w pewne szczegóły (np, samo to, że są 4 rodzaje wiązania, z czego obecnie uzywany jest najsłabszy).
Tyle ode mnie.

update: Ten wpis ma kontynuację: AACS boju część druga