NoctisNode
← PoradnikiBezpieczeństwo2026-10-238 min

LUKS2 vs LUKS1: różnice, jak sprawdzić wersję i jak przekonwertować

LUKS2 dodaje względem LUKS1 Argon2id, redundantny nagłówek JSON, tokeny i integralność. Sprawdź wersję przez cryptsetup luksDump i konwertuj bezpiecznie po kopii zapasowej nagłówka.

Krótko: LUKS2 to obecny format dyskowy szyfrowania dysków w Linuksie i domyślny w cryptsetup od wersji 2.1. W porównaniu z LUKS1 dodaje redundantny nagłówek metadanych JSON z sumami kontrolnymi, wymagającą dużej ilości pamięci (memory-hard) funkcję wyprowadzania klucza Argon2id zamiast PBKDF2, 32 keysloty zamiast 8, tokeny do odblokowania przez TPM2 i FIDO2 oraz opcjonalne szyfrowanie uwierzytelnione. Używaj LUKS2, chyba że stary GRUB musi samodzielnie odszyfrować `/boot`.

Oba formaty szyfrują dane tak samo, zwykle AES-XTS. Różni się nagłówek: sposób przechowywania kluczy, trudność łamania haseł metodą brute-force i to, jakie narzędzia potrafią go odczytać. Ten poradnik omawia różnice, sposób sprawdzenia, którą wersję masz, i konwersję przez `cryptsetup convert` bez utraty dysku. Jeśli szyfrujesz świeży serwer pod stos self-hosting na małym VPS, wybierz LUKS2.

LUKS2 vs LUKS1 w skrócie

FunkcjaLUKS1LUKS2
NagłówekPojedynczy 592-bajtowy nagłówek binarny plus obszar keyslotówDwa nagłówki binarne plus metadane JSON, z sumami kontrolnymi i redundantną kopią
Domyślny offset nagłówka / danych2 MiB16 MiB
Keysloty832
Wyprowadzanie klucza (PBKDF)Tylko PBKDF2Argon2id (domyślnie), Argon2i lub PBKDF2
Tokeny (TPM2, FIDO2, PKCS#11, Clevis)NieTak
Szyfrowanie uwierzytelnione (dm-integrity)NieOpcjonalne, eksperymentalne
Ponowne szyfrowanie onlineTylko offlineTak, `cryptsetup reencrypt` na zamontowanym urządzeniu
Trwałe flagi i etykietaNieTak, na przykład `--allow-discards --persistent`
Odblokowanie przez GRUB dla zaszyfrowanego /bootTakTylko keysloty PBKDF2 w upstreamowym GRUB

Format nagłówka i keysloty

Nagłówek LUKS1 to stała struktura binarna, po której następuje osiem obszarów keyslotów. Jeśli pierwsze sektory urządzenia zostaną nadpisane, na przykład przez omyłkowy `mkfs` lub narzędzie do partycjonowania, wszystkie keysloty znikają, a dane są stracone, chyba że masz kopię zapasową nagłówka.

LUKS2 przechowuje nagłówek binarny i obszar metadanych JSON oraz trzyma drugą kopię obu. Każda kopia ma sumę kontrolną, więc `cryptsetup` może wykryć uszkodzenie i przełączyć się na drugą kopię. Obszar JSON opisuje keysloty, segmenty, skróty i tokeny — to właśnie umożliwia nowe funkcje bez ponownej zmiany formatu. Redundancja wciąż nie zastępuje kopii nagłówka: pełne nadpisanie pierwszych megabajtów niszczy obie kopie.

Argon2id vs PBKDF2

Hasło nigdy nie jest używane bezpośrednio jako klucz. Funkcja wyprowadzania klucza je „rozciąga”, tak by każda próba była kosztowna. LUKS1 może używać tylko PBKDF2, który tanio działa na GPU i ASIC-ach, więc atakujący ze skopiowanym nagłówkiem może testować hasła równolegle z dużą szybkością.

LUKS2 domyślnie używa Argon2id, który wymaga konfigurowalnej ilości pamięci na każdą próbę (domyślnie do 1 GiB, z limitem dostępnej RAM w chwili formatowania) i jest znacznie droższy do zrównoleglenia. Silne hasło nadal jest główną obroną, ale Argon2id znacząco podnosi koszt każdej próby.

Na małych serwerach pamiętaj o koszcie pamięci. Keyslot utworzony na maszynie z dużą ilością RAM może do odblokowania potrzebować więcej pamięci, niż VPS z 1 GB, taki jak plan Wisp w NoctisNode, może przeznaczyć wewnątrz initramfs. Ustaw ją jawnie przez `--pbkdf-memory` (w KiB), gdy formatujesz lub dodajesz klucze na dużej maszynie dla małej.

# Inspect PBKDF parameters of each keyslot
cryptsetup luksDump /dev/vda3 | grep -A6 '^  [0-9]*: luks2'

# Re-derive keyslot 0 with Argon2id and 512 MiB memory cost
cryptsetup luksConvertKey /dev/vda3 --key-slot 0 \
  --pbkdf argon2id --pbkdf-memory 524288

Tokeny, integralność i zastrzeżenia dotyczące GRUB

Tokeny to obiekty JSON w nagłówku LUKS2, które mówią narzędziom, jak automatycznie uzyskać klucz. `systemd-cryptenroll` używa ich do powiązania keyslotu z układem TPM2, kluczem bezpieczeństwa FIDO2 lub kartą inteligentną PKCS#11, a Clevis — do odblokowania sieciowego z serwerem Tang. Nic z tego nie istnieje w LUKS1.

Tryb integralności (`cryptsetup luksFormat --integrity hmac-sha256`) łączy szyfrowanie z dm-integrity, tak że zmodyfikowane sektory dają błędy odczytu zamiast po cichu zmienionych danych. Kosztuje to miejsce na dysku i szybkość zapisu, wymaga pełnego wyczyszczenia przy formatowaniu i wciąż jest oznaczone jako eksperymentalne. Większość serwerów go nie używa.

GRUB to główny powód, dla którego ludzie wciąż spotykają LUKS1. Upstreamowy GRUB 2.06 i nowsze potrafią otworzyć LUKS2, ale tylko keysloty korzystające z PBKDF2, bo obsługa Argon2 nie jest częścią upstreamowego GRUB. Jeśli sam GRUB musi odszyfrować zaszyfrowany `/boot`, użyj LUKS1 lub keyslotu LUKS2 z `--pbkdf pbkdf2`. Instalatory Debiana i Ubuntu zostawiają `/boot` niezaszyfrowany, więc odblokowaniem zajmują się jądro i initramfs i Argon2id działa, także przy zdalnym odblokowaniu przez SSH.

Jak sprawdzić, czy wolumen to LUKS1 czy LUKS2

Każda z tych metod działa w uruchomionym systemie jako root. Linia `Version:` z `cryptsetup luksDump` to rozstrzygająca odpowiedź; zrzut pokazuje też keysloty, typ PBKDF i tokeny.

# Find encrypted partitions (FSVER column shows 1 or 2)
lsblk -f

# Authoritative: header version
cryptsetup luksDump /dev/vda3 | grep -E '^Version'
# Version:        2

# Exit code 0 only if the device is LUKS2
cryptsetup isLuks --type luks2 /dev/vda3 && echo LUKS2

Konwersja przez cryptsetup convert

`cryptsetup convert` przepisuje nagłówek w miejscu; zaszyfrowane dane pozostają nietknięte. Urządzenie musi być zamknięte, więc dla głównego systemu plików uruchamiasz to z systemu ratunkowego lub live. Awaria lub utrata zasilania w trakcie konwersji może uczynić nagłówek bezużytecznym, dlatego krok kopii zapasowej nie jest opcjonalny.

  1. 01.Uruchom system ratunkowy lub live i upewnij się, że urządzenie LUKS nie jest otwarte (w razie potrzeby `cryptsetup close`).
  2. 02.Zrób kopię nagłówka przez `cryptsetup luksHeaderBackup` i skopiuj plik poza serwer. Każdy, kto ma ten plik i stare hasło, może odblokować dysk, więc przechowuj go zaszyfrowany.
  3. 03.Przekonwertuj LUKS1 na LUKS2 przez `cryptsetup convert --type luks2`. Istniejące keysloty pozostają PBKDF2.
  4. 04.Zaktualizuj każdy keyslot do Argon2id przez `cryptsetup luksConvertKey --pbkdf argon2id`, chyba że GRUB musi go odczytać.
  5. 05.Sprawdź, czy urządzenie się otwiera, następnie przebuduj initramfs przez `update-initramfs -u` i zrestartuj.
  6. 06.Aby wrócić z LUKS2 do LUKS1, najpierw przekonwertuj każdy keyslot na PBKDF2 i usuń tokeny oraz funkcje dostępne tylko w LUKS2; w przeciwnym razie `cryptsetup convert --type luks1` odmówi.
# From a rescue system, device closed
cryptsetup luksHeaderBackup /dev/vda3 --header-backup-file /root/vda3-luks-header.img

cryptsetup convert --type luks2 /dev/vda3
cryptsetup luksConvertKey /dev/vda3 --key-slot 0 --pbkdf argon2id

cryptsetup open /dev/vda3 cryptroot && cryptsetup close cryptroot

# Emergency restore (overwrites the current header!)
# cryptsetup luksHeaderRestore /dev/vda3 --header-backup-file /root/vda3-luks-header.img

Note · Po przywróceniu nagłówka znów działają hasła ważne w chwili wykonania kopii, w tym te, które później usunąłeś. Usuwaj stare kopie nagłówka przy rotacji haseł. Bieżącą kopię trzymaj w osobnym miejscu, na przykład w repozytorium opisanym w poradniku o kopiach zapasowych restic.

FAQ

QCzy LUKS2 jest lepszy od LUKS1?

AW niemal każdej nowej konfiguracji tak. LUKS2 ma redundantny nagłówek, wyprowadzanie klucza Argon2id, tokeny dla TPM2 lub FIDO2 i ponowne szyfrowanie online; LUKS1 jest potrzebny tylko wtedy, gdy starszy GRUB musi sam odszyfrować `/boot`.

QJak sprawdzić wersję LUKS?

AUruchom `cryptsetup luksDump /dev/sdX | grep Version` jako root; wypisze 1 lub 2. `lsblk -f` też pokazuje wersję w kolumnie FSVER dla partycji crypto_LUKS.

QCzy mogę przekonwertować LUKS1 na LUKS2 bez utraty danych?

ATak. `cryptsetup convert --type luks2` przepisuje tylko nagłówek, gdy urządzenie jest zamknięte. Najpierw zrób kopię nagłówka przez `cryptsetup luksHeaderBackup`, bo przerwana konwersja może uczynić wolumen nieczytelnym.

QCzy GRUB obsługuje LUKS2?

AUpstreamowy GRUB 2.06 i nowsze potrafią odblokować LUKS2, ale tylko keysloty używające PBKDF2, a nie Argon2id. Ma to znaczenie tylko wtedy, gdy sam `/boot` jest zaszyfrowany; przy niezaszyfrowanym `/boot` initramfs normalnie odblokowuje LUKS2 z Argon2id.

QJakiego szyfrowania LUKS2 używa domyślnie?

AObecny cryptsetup domyślnie używa `aes-xts-plain64` z kluczem 512-bitowym (AES-256 w trybie XTS) i Argon2id do wyprowadzania klucza. Uruchom `cryptsetup --help`, aby zobaczyć wkompilowane wartości domyślne w Twoim systemie, a pełną konfigurację znajdziesz w poradniku o zaszyfrowanym root z LUKS.

LUKS2 vs LUKS1: różnice, jak sprawdzić wersję i jak przekonwertować · NoctisNode