Dlaczego nie powinniście nigdy ufać dyskom szyfrowanym sprzętowo

dodał 20 października 2015 o 22:12 w kategorii Prywatność, Wpadki  z tagami:
Dlaczego nie powinniście nigdy ufać dyskom szyfrowanym sprzętowo

(źródło: takacsi75)

Dyski z wbudowanym szyfrowaniem kuszą wygodą i pozornym bezpieczeństwem. Nie ulegajcie tej pokusie – badania pokazują, że często zabezpieczenia są na katastrofalnym poziomie – jak w przypadku produktów Western Digital.

Trzech badaczy opublikowało wyniki analizy bezpieczeństwa wielu modeli dysków Western Digital z wbudowanym szyfrowaniem sprzętowym. Efekty są porażające. Koszmarne błędy w generowaniu kluczy, klucze do odzyskania w kilka minut i wiele innych błędów odstrasza od stosowania tych produktów.

Nielosowy generator losowych kluczy

Badacze ustalili, że WD My Passport korzystają z wielu modeli kontrolerów, różnych producentów i opartych o różne architektury. W każdej z nich znaleźli kompromitujące błędy. Cała publikacja opisuje wiele ciekawych problemów, my jednak skupimy się na najbardziej bulwersujących. Na początek słowo wstępu i opis architektury rozwiązania szyfrowania sprzętowego.

Dyski przyjeżdżają z fabryki z zakodowanym kluczem AES (128 lub 256 bitów) zwanym DEK (data encryption key). Służy on do szyfrowania całej zawartości dysku. Domyślnie dyski nie mają oczywiście skonfigurowanego hasła użytkownika, służącego do stworzenia klucza szyfrującego klucz (KEK, key encryption key). Gdy użytkownik skonfiguruje swoje hasło, na jego podstawie tworzony jest klucz KEK, którym szyfrowany jest klucz DEK. Teoretycznie bez znajomości hasła użytkownika odszyfrowanie danych nie powinno być możliwe. Teoretycznie…

Badacze szczególna uwagę poświęcili kluczowi DEK. Jego znajomość pozwala na odszyfrowanie danych bez względu na znajomość hasła użytkownika. Po odszyfrowaniu jego treści z nowego dysku badacze znaleźli także sekwencję bajtów generatora liczb losowych, która została użyta do jego stworzenia. Zaciekawiło ich to, że źródłowym materiałem losowym było 8 wartości 31-bitowych, sugerujących, że generatorem losowości była funkcja rand(). Na podstawie eksperymentów udało się także ustalić wartość zalążka (seed) funkcji generatora. Był nim wynik funkcji time() z momentu produkcji dysku. Zamiast zatem użyć przynajmniej losowego zalążka, producent dysku ograniczył jego dystrybucję nie tylko do wartości jakie może przyjmować funkcja czasu, ale także zawęził je do kilku dni poprzedzających datę produkcji nadrukowaną na etykiecie.

To powoduje, że wykonalne stało się stworzenie tablicy zawierającej wszystkie możliwe klucze DEK dla dysków WD opartych o układ JMS538S. Badacze wygenerowali tablicę zawierającą wszystkie wersje zaszyfrowanych bloków składających się z 16 bajtów pełnych zer (nietrudno takie znaleźć na początku dysku). 1,2 TB danych nikogo nie rzuca w dzisiejszych czasach na kolanach, a taki zestaw informacji umożliwia odnalezienie klucza i odszyfrowanie dysku w ciągu kilku sekund.

Czy może być gorzej?

Gdy już wypłaczecie wszystkie łzy nad osiągnięciami inżynierów Western Digital pewnie pomyślicie, że przecież użytkownik może zresetować fabryczny klucz AES i wygenerować własny. To prawda, jednak niestety nie rozwiązuje problemu. W generowaniu nowego klucza używane są dwa źródła losowości. Pierwsze, pochodzące z komputera, ma 32 bajty. Brzmi dobrze – dopóki nie zorientujecie się, że tak naprawdę to 8 powtórzeń 4-bajtowej wartości funkcji GetTickCount(). Powoduje to, że losowość zredukowana jest to 32 bitów. A co z drugim źródłem losowości, pochodzącym z samego kontrolera? Spójrzcie na dwa poniższe obrazki.

Rozkład prawie losowy

Rozkład prawie losowy

Na lewym obrazku widzicie rozkład 4-bajtowych wartości z /dev/urandom. Na prawym rozkład 4-bajtowych wartości z generatora liczb pseudolosowych wbudowanego w kontroler. Generator ten może przyjąć aż 255 różnych wartości. Połączenie tych dwóch źródeł losowości powoduje, że odgadnięcie klucza wygenerowanego przez użytkownika zajmuje w najgorszym razie kilka godzin. I tyle pozostaje z bezpieczeństwa zaszyfrowanych danych.

A to jeszcze nie koniec

Inne odkrycia badaczy to między innymi klucz KEK (który ma być każdorazowo generowany na podstawie hasła klienta) zapisany na dysku i zaszyfrowany kluczem AES zapisanym w oprogramowaniu. W inny modelu z kolei w przypadku zmiany hasła na dysku zapisywany był poprzedni klucz eDEK (zaszyfrowany klucz szyfrujący dane). Oznacza to, że jeśli użytkownik tylko raz zmienił hasło (ustawił je po zakupie dysku), to na dysku zapisany jest klucz szyfrujący zabezpieczony domyślnym hasłem. Jeszcze inny model przechowuje klucz KEK w EEPROMie a urządzenie oferuje nieudokumentowaną metodę odczytania tego klucza drogą programową.

Część błędów została już naprawiona przez producenta. Część nie została ujawniona przez badaczy. Bez względu jednak na to, jak bezpieczne będą od jutra dyski WD, pamiętajcie, że zaufać można jedynie sprawdzonym mechanizmom szyfrowania.

Aktualizacja: Pytacie, jakim mechanizmom szyfrowania można zaufać – do szyfrowania plików i dysków polecamy PGP lub Truecrypta/Veracrypta.