Linux Hardening Co naprawdę dzieje się podczas uruchamiania LUKS? Anatomia szyfrowania dysku w Linuksie
Linux Hardening: Co naprawdę dzieje się podczas uruchamiania LUKS? Anatomia szyfrowania dysku w Linuksie
Większość administratorów pamięta moment, w którym podczas instalacji Ubuntu pojawia się niewinne pytanie: „Encrypt the new Ubuntu installation for security.” Kliknięcie tego pola zajmuje sekundę. Wpisanie hasła kolejne kilka. Potem komputer uruchamia się jak zwykle i można odnieść wrażenie, że szyfrowanie po prostu „jest”.
Problem polega na tym, że w rzeczywistości właśnie uruchomiliśmy jeden z najbardziej przemyślanych mechanizmów bezpieczeństwa w całym Linuksie. LUKS nie szyfruje plików pojedynczo, nie ukrywa katalogów i nie działa jak archiwum ZIP z hasłem. Chroni całą warstwę blokową dysku – zanim system plików w ogóle zacznie istnieć z punktu widzenia jądra.
To właśnie dlatego po wyjęciu dysku z komputera i podłączeniu go do innej maszyny napastnik nie zobaczy /home, /etc ani /var. Zobaczy ciąg danych, który bez właściwego klucza wygląda jak losowy szum.
Wszystko zaczyna się przed systemem plików
Żeby zrozumieć LUKS, trzeba odwrócić sposób myślenia o dysku.
Większość użytkowników wyobraża sobie go mniej więcej tak:
Dysk
├── Dokumenty
├── Zdjęcia
├── Filmy
└── System
Linux widzi go zupełnie inaczej.
Najpierw istnieją sektory.
Na nich pojawiają się partycje.
Dopiero później system plików.
A dopiero na końcu pliki.
LUKS wchodzi do gry przed systemem plików.
SSD / HDD
│
▼
LUKS Header
│
▼
dm-crypt
│
▼
ext4 / XFS / Btrfs
│
▼
Twoje dane
To właśnie warstwa dm-crypt wykonuje właściwą pracę kryptograficzną.
Dlaczego dm-crypt jest ważniejszy niż sama nazwa LUKS?
To ciekawa rzecz, o której rzadko mówi się w poradnikach.
LUKS nie jest silnikiem szyfrującym.
Silnikiem jest dm-crypt, czyli moduł Device Mapper w jądrze Linuksa.
Można powiedzieć, że:
- dm-crypt szyfruje,
- LUKS organizuje zarządzanie kluczami.
To trochę jak różnica między silnikiem samochodu a stacyjką.
Jeden wykonuje pracę.
Drugi decyduje, kto może ją uruchomić.
Pierwszy sektor nie jest przypadkowy
Jednym z najciekawszych elementów całego rozwiązania jest nagłówek LUKS.
Można go zobaczyć:
Bash
sudo cryptsetup luksDump /dev/sda2
To nie pokaże klucza.
Pokaże strukturę.
Znajdziemy tam między innymi:
- wersję LUKS,
- identyfikator UUID,
- algorytm szyfrowania,
- parametry KDF,
- sloty kluczy.
To właśnie sloty sprawiają, że można zmieniać hasła bez ponownego szyfrowania całego dysku.
To jedna z najbardziej eleganckich decyzji projektowych w LUKS.
Jedno hasło nie szyfruje dysku
To kolejny mit.
Hasło wpisywane podczas uruchamiania nie staje się kluczem AES.
Proces wygląda inaczej.
Hasło
│
▼
KDF
│
▼
Key Encryption Key
│
▼
Master Key
│
▼
AES-XTS
│
▼
Dysk
To ogromna różnica.
Master Key powstaje raz.
Hasło jedynie pozwala go odszyfrować.
Dzięki temu zmiana hasła nie wymaga ponownego szyfrowania terabajtów danych.
Dlaczego LUKS2 zastąpił LUKS1?
Przez wiele lat LUKS1 sprawdzał się znakomicie.
Świat jednak się zmienił.
Pojawiły się szybsze procesory.
Większa ilość pamięci.
Nowe algorytmy.
Dlatego LUKS2 wprowadził między innymi:
- bardziej elastyczne metadane,
- lepsze zarządzanie slotami,
- Argon2 jako nowoczesny KDF,
- większą możliwość rozbudowy formatu.
To nie jest kosmetyka.
To przygotowanie systemu na kolejne lata.
Argon2 to nie kolejny algorytm „bo tak”
Przez długi czas PBKDF2 był standardem.
Dzisiaj coraz częściej spotkamy Argon2.
Dlaczego?
Bo współczesne GPU świetnie radzą sobie z wieloma klasycznymi obliczeniami kryptograficznymi.
Argon2 utrudnia ataki wykorzystujące równoległe procesory.
W uproszczeniu zmusza atakującego do zużywania nie tylko czasu, ale również pamięci.
To znacznie podnosi koszt łamania haseł.
AES-XTS nie jest przypadkowym wyborem
Najczęściej spotkasz konfigurację podobną do:
AES-256-XTS
Nie jest to zwykły AES używany w TLS.
XTS został zaprojektowany właśnie dla szyfrowania urządzeń blokowych.
Wyobraźmy sobie dwa identyczne sektory.
Bez odpowiedniego trybu mogłyby wyglądać identycznie po zaszyfrowaniu.
XTS wykorzystuje dodatkowy mechanizm „tweak”, dzięki czemu identyczne dane zapisane w różnych sektorach otrzymują różne wyniki szyfrowania.
To bardzo ważna właściwość dla dysków.
Co dzieje się podczas startu komputera?
To jeden z najbardziej fascynujących momentów.
Wyobraźmy sobie zimny start.
UEFI
│
▼
Bootloader
│
▼
Initramfs
│
▼
cryptsetup
│
▼
Hasło
│
▼
Master Key
│
▼
dm-crypt
│
▼
Root filesystem
│
▼
Linux
Kluczowy moment następuje w initramfs.
To właśnie tam uruchamiany jest cryptsetup.
System jeszcze nie zna katalogu /.
Najpierw musi odszyfrować urządzenie.
Dopiero potem może zamontować główny system plików.
Dlaczego odzyskanie danych bez hasła jest takie trudne?
Często pojawia się pytanie:
„Czy można odzyskać dane z zaszyfrowanego dysku?”
Tak.
Pod jednym warunkiem.
Musisz posiadać właściwy klucz.
Bez niego sytuacja wygląda inaczej.
Napastnik widzi:
3F A8 91 5C
A2 44 F1 90
87 B2 7E 4A
To nie są „ukryte pliki”.
To zaszyfrowane bloki.
Bez Master Key ich interpretacja staje się praktycznie niemożliwa.
Hibernacja zmienia sytuację
Tutaj pojawia się ciekawy wyjątek.
Jeżeli komputer został zahibernowany, część informacji może znajdować się w pamięci zapisanej na dysku.
Dlatego środowiska o wysokich wymaganiach bezpieczeństwa często preferują pełne wyłączenie zamiast hibernacji.
To pokazuje, że bezpieczeństwo nie kończy się na wyborze algorytmu.
Liczy się cały cykl życia urządzenia.
TPM nie zastępuje hasła
Coraz więcej komputerów oferuje integrację LUKS z TPM.
Brzmi kusząco.
Komputer uruchamia się automatycznie.
Ale warto rozumieć kompromis.
Hasło wymaga obecności użytkownika.
TPM wiąże odszyfrowanie z zaufanym stanem platformy.
Najlepsze rozwiązanie zależy od scenariusza.
Laptop podróżujący z właścicielem.
Serwer stojący w szafie.
Komputer laboratoryjny.
Każdy przypadek wygląda trochę inaczej.
Największa pułapka? Nagłówek LUKS
Jest jedna rzecz, której wielu administratorów dowiaduje się zbyt późno.
Nagłówek LUKS jest niezwykle ważny.
Jego uszkodzenie może uniemożliwić dostęp do danych.
Dlatego jedna z pierwszych rzeczy, które robię po skonfigurowaniu szyfrowania, wygląda tak:
Bash
sudo cryptsetup luksHeaderBackup /dev/sda2 \
--header-backup-file luks-header.img
Ten plik nie zawiera danych użytkownika.
Zawiera metadane potrzebne do odszyfrowania dysku.
Przechowuję go offline.
Nigdy na tym samym dysku.
Czy szyfrowanie spowalnia komputer?
To pytanie wraca od lat.
Na współczesnych procesorach różnica często okazuje się znacznie mniejsza, niż wielu użytkowników się spodziewa.
Dlaczego?
Bo większość nowoczesnych CPU posiada sprzętową akcelerację AES.
To oznacza, że wiele operacji wykonywanych jest bez dużego obciążenia procesora.
Największe różnice można zauważyć raczej podczas bardzo intensywnych operacji dyskowych niż zwykłej pracy biurowej.
Co naprawdę chroni LUKS?
Najłatwiej odpowiedzieć przez scenariusze.
Chroni
- kradzież laptopa,
- zgubiony dysk SSD,
- wyjęcie dysku z komputera,
- analizę offline.
Nie chroni
- złośliwego oprogramowania działającego po zalogowaniu,
- przejętej sesji użytkownika,
- wycieku danych przez aplikację,
- błędów administratora.
To bardzo ważne rozróżnienie.
LUKS chroni dane przechowywane, a nie wszystkie możliwe scenariusze ataku.
Najciekawsza lekcja z całej architektury
Najbardziej imponujące w LUKS nie jest to, że używa AES.
Najbardziej imponujące jest to, że większość użytkowników przez lata nie zauważa jego działania.
Po wpisaniu hasła system uruchamia się normalnie.
Pliki wyglądają tak samo.
Programy działają tak samo.
Cała złożona architektura – initramfs, cryptsetup, dm-crypt, Master Key, Argon2 i AES-XTS – znika za jednym oknem proszącym o hasło.
To właśnie jest oznaka dobrze zaprojektowanego mechanizmu bezpieczeństwa.
Najtrudniejsza kryptografia często działa wtedy, gdy użytkownik prawie jej nie zauważa.







