Trzeba było uczyć się od Apple, czyli jak całodyskowe szyfrowanie Androida okazało się do niczego

Trzeba było uczyć się od Apple, czyli jak całodyskowe szyfrowanie Androida okazało się do niczego04.07.2016 20:27

Choć androidowe smartfony z procesorami Qualcomma należą donajwydajniejszych na rynku, to na pewno nie należą donajbezpieczniejszych – przynajmniej w porównaniu do nowychiPhone’ów, których sprzętowe zabezpieczenia czynią ukryte nanich dane nieosiągalnymi nawet dla amerykańskich organów ścigania.W minionym tygodniu zaprezentowano metody, za pomocą którychnapastnik może wydobyć klucze szyfrujące z zablokowanegosmartfonu, w praktyce czyniąc całodyskowe szyfrowanienieskutecznym. Problem tkwi przede wszystkim w niedoskonałejimplementacji technologii ARM TrustZone w procesorach Snapdragon, alenie tylko. Odkrywca twierdzi, że sam mechanizm całodyskowegoszyfrowania Androida nie jest najlepszy, i nie jest w swojej krytyce jedyny.

KISS, czyli Keep it simple, stupid

Na początku warto przypomnieć, jak robi to dziś Apple. Wsystemie iOS 8 wprowadzono domyślnie całodyskowe szyfrowanie, wktórym klucz szyfrujący wyprowadzany jest z hasła użytkownika.Użytkownicy mają jednak zwykle słabe hasła, szczególnie naurządzeniach mobilnych, więc siłowe złamanie hasła szybko dałobydostęp do zaszyfrowanej pamięci masowej.

Schemat działania funkcji wyprowadzającej klucz w iOS-ie
Schemat działania funkcji wyprowadzającej klucz w iOS-ie

By uniknąć takiej sytuacji, Apple powiązało wygenerowany kluczszyfrujący z procesorem iPhone’a, a dokładnie z osadzonym w nim256-bitowym kluczem, unikatowym dla każdego urządzenia. Jest onlosowo generowany i osadzany w procesorze podczas jego produkcji, także żadne oprogramowanie, nawet niskopoziomowe, nie ma do niegodostępu. Jest on dostępny tylko jako klucz dla silnika szyfrowaniaAES i wykorzystywany w połączeniu z hasłem użytkownika dowygenerowania bardzo silnego klucza szyfrującego dysk.

Dla napastnika to bardzo zła wiadomość – może próbowaćataku siłowego, ale nie na klastrze obliczeniowym. Musi robić to nasamym iPhonie, który aktywnie taki atak utrudnia, coraz bardziejwydłużając czas, który musi upłynąć pomiędzy kolejnymipróbami. Co więcej, ostatnio w iOS-ie pojawiła się funkcja, którasprawia, że po 10 nieudanych próbach odgadnięcia hasła, wszystkiedane z urządzenia zostają usunięte.

W Androidzie od wersji 5.0 też dysponujemy całodyskowymszyfrowaniem, zbudowanym na bazie linuksowego podsystemu dm-crypt. Itutaj głównym problemem jest funkcja wyprowadzania kluczaszyfrującego. W uproszczeniu można powiedzieć, że urządzeniegeneruje 128-bitowy klucz szyfrujący urządzenie (Device EncryptionKey – DEK) oraz 128-bitową sól. DEK zostaje zabezpieczony wschemacie wykorzystującym dane odblokowujące dostęp (hasło, PINlub wzór) do wygenerowania klucza szyfrującego DEK. ZaszyfrowanyDEK jest przechowywany w niezaszyfrowanej części pamięci. Aby więcodszyfrować dysk, należy dysponować danymi dostępowymi,przepuścić je przez funkcję wyprowadzającą klucz szyfrujący, anastępnie użyć go do odszyfrowania DEK-a. Mając DEK, możemyodczytać zaszyfrowane dane na dysku.

Tak samo jak w iOS-ie dysponujemy tutaj obroną przed siłowymiatakami – opóźnieniami między próbami wprowadzenia hasła iopcją skasowania wszystkich danych po określonej liczbie błędnychprób podania hasła. Co jednak w wypadku Androida chroni przedsiłowymi atakami przeprowadzanymi poza urządzeniem? Tu nie maprzecież identycznego hardware ani pełnej kontroli nad procesemprodukcji, jak to jest w przypadku Apple’a. Znaleziono jednaksposób na przywiązanie funkcji wyprowadzania klucza do sprzętu.Kluczową (sic!) rolę odgrywa tu moduł KeyMaster, kryptograficznykomponent oddzielony od Androida.

Schemat działania funkcji wyprowadzającej klucz z użyciem KeyMastera w Androidzie
Schemat działania funkcji wyprowadzającej klucz z użyciem KeyMastera w Androidzie

Jego wykorzystanie to dość skomplikowany proces. Z grubsza: wniezaszyfrowanej pamięci przechowywany jest tzw. key blob,wygenerowana przez KeyMastera binarna struktura, zawierajacazaszyfrowany przez niego prywatny klucz RSA-2048, który jestwykorzystywany do podpisania klucza DEK w dodatkowym kroku po jegowygenerowaniu. To sprawia, że ten konkretny moduł KeyMaster musibyć użyty do stworzenia pośredniczącego klucza odszyfrowującegoDEK przy każdej próbie odszyfrowania danych.

Temu towarzyszy jeszcze jedna informacja: wartość funkcjiscrypt, której argumentem jest finalny klucz pośredniczący.Wykorzystuje się go do zweryfikowania ważności hasła w razieproblemów z deszyfrowaniem, wynikających np. z uszkodzenia dysku.Dzięki temu system może odróżnić awarię od siłowego ataku.

Jak widać, schemat zabezpieczeń całodyskowego szyfrowaniaAndroida jest zmyślny, ale zarazem zależny od KeyMastera. A jakiesą zabezpieczenia KeyMastera? Tego już właściwie nie wiadomo –dla programisty to czarna skrzynka, w dokumentacji opisana jedynie marketingowym językiem. Ta czarna skrzynka, przynajmniej w wydaniu Qualcomma, może być jednak nieszczelna.

Dziurawe kieszenie klucznika

Gal Beniamini, niezależny izraelski haker, który badałdziałanie całodyskowego szyfrowania w Androidzie, przeniknąłdziałanie tego mechanizmu. Mamy otóż w procesorach Qualcommabezpieczne środowisko uruchomieniowe QSEE, w którym możnauruchamiać programiki zwane „trustletami”. Działają one nawydzielonym procesorze bezpiecznego świata TrustZone. Okazuje się, że na procesorach Qualcomma KeyMaster jest po prostu jednym z takich trustletów. Stosując opracowane wcześniej techniki odwrotnej inżynierii, izraelski haker zdołał wejrzeć w to, co się dzieje w środku. Zainteresowani szczegółami powinni dokładnie przyjrzeć się wykorzystaniu klucza HMAC. Tutaj powiemy tyle, że zamiast korzystać z podobnego do iOS-a schematu szyfrowania, w którym oprogramowanie nigdzie nie dotyka sprzętowego klucza, KeyMaster Qualcomma przeprowadza sobie operacje szyfrowania i uwierzytelnienia blobów za pomocą kluczy bezpośrednio dostępnych oprogramowaniu, z wykorzystaniem w tym procesie sprzętowego klucza (SHK). Wnioski wyciągnięte przez Gala Beniaminiego są bardzo interesujące:

  • wyprowadzanie klucza nie jest zależne od sprzętu, klucz ten jest bezpośrednio dostępny oprogramowaniu działającemu w TrustZone,
  • producenci sprzętu mogą łatwo spełnić nakaz organów ścigania i złamać szyfrowanie, po prostu tworząc obraz TrustZone, który pobiera klucze KeyMastera i flashuje je na docelowym urządzeniu. Potem zostaje już tylko siłowy atak offline z wykorzystaniem zdobytych kluczy.
  • łatanie podatności TrustZone nie chroni przed tym problemem. Nawet jeśli TrustZone zostałoby jakoś zabezpieczone, napastnik może pozyskać zaszyfrowany obraz systemowy, obniżyć wersję systemu do podatnej na atak wersji, wydobyć klucz i przejść do siłowego ataku. W ten sposób można załatwić każde androidowe urządzenie na procesorach Qualcommach, w którym można cofnąć się z wersją firmware.
  • wartość całodyskowego szyfrowania na Androidzie zależy wyłącznie od bezpieczeństwa kernela TrustZone czy modułu KeyMaster. Każda podatność w nich prowadzi do ujawnienia kluczy, pozwalając na ataki siłowe offline na zaszyfrowane dane użytkownika.

Stary exploit a może

Izraelski haker nie zadowolił się samymi wnioskami, lecz zakasał rękawy i napisał kod wykradający klucze z KeyMastera, z wykorzystaniem dwóch znanych podatności w TrustZone. Google i Qualcomm, powiadomione o odkryciu, sprawę zbagatelizowały. Dały do zrozumienia że nie ma się czym przejmować, ponieważ podatności te zostały już załatane, jedna w styczniu, druga w maju (i odkrywcy luk dostali za to nagrodę)… ale ciężko takie tłumaczenie wziąć za dobrą monetę. Otóż z badań niezależnej firmy Duo Security wynika, że obecnie około 37% smartfonów korzystających z jej aplikacji jest wciąż podatnych na atak, ponieważ jak to z Androidem bywa, od wydania łatek do ich dostarczenia końcowym użytkownikom droga daleka.

Nawet jeśli jednak smartfon zostałby zabezpieczony, to dla instytucji takich jak NSA nie byłoby to żadną przeszkodą. Jeśli urządzenie ma odblokowany bootloader (co dziś nie jest rzadkie), to można przywrócić na nim starszą, podatną na atak wersję oprogramowania. Tak jest w wypadku np. smartfonów Nexus 5 i Nexus 6.

Zdaniem ekspertów Google popełniło poważny błąd, stawiając na TrustZone. Nagle okazało się, że cały ten skomplikowany proces generowania i szyfrowania kluczy jedynie powiększa powierzchnię ataku, a użytkownika skazuje na konieczność ufania stronom trzecim – producentom urządzeń mobilnych. Oni mogą zaś w TrustZone uruchomić co im się żywnie podoba – i ani Google, ani Qualcomm ich przed tym nie powstrzymają. Niezwykle proste rozwiązanie zastosowane w iOS-ie jest tymczasem nie do złamania, bo nie ma tam miejsca na błędy w implementacji. W czipie z bezpieczną enklawą jest klucz, niedostępny jakiemukolwiek oprogramowaniu, do odczytania tylko przez sprzętowy akcelerator kryptograficzny, jak ktoś chce to złamać, musi łamać całą matematykę, albo znaleźć sposób, jak odczytać klucz za pomocą mikroskopu elektronowego (przypominamy jednak, że życie to nie serial CSI).

Najgorsze w tym wszystkim jest to, że wcale nie trzeba było tak kombinować – czipy Qualcomma też mają osadzony w krzemie klucz SHK. Gdyby został on wykorzystany bezpośrednio do całodyskowego szyfrowania, problemu by nie było. Problem za chwilę zaś będzie, i to poważny, gdyż już twórcy popularnego łamacza haseł Hashcat zapowiedzieli, że pracują nad wykorzystaniem wydobytych z KeyMastera kluczy w swoim programie.

Czy sprzęt z procesorem innym niż produkcji Qualcomma jest wolny od tych wad? Nie wiadomo. Beniamini uważa, że nie zdziwiłoby go, gdyby implementacje TrustZone u innych producentów cierpiały na podobne podatności. Możemy więc założyć, że zawartość przynajmniej jednej trzeciej smartfonów na rynku może zostać odszyfrowana za pomocą publicznie dostępnych exploitów, zaś co do reszty – zapewne wystarczy grzecznie poprosić producenta.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.