NoctisNode
← RehberlerGüvenlik2026-10-238 dk

LUKS2 ve LUKS1: farklar, nasıl kontrol edilir ve nasıl dönüştürülür

LUKS2, LUKS1'e Argon2id, yedekli bir JSON header, token'lar ve bütünlük ekler. Sürümünüzü cryptsetup luksDump ile kontrol edin ve header yedeğinden sonra güvenle dönüştürün.

Kısaca: LUKS2, Linux disk şifrelemesinin güncel disk formatıdır ve cryptsetup 2.1'den beri varsayılandır. LUKS1'e kıyasla yedekli, checksum'lı bir JSON metadata header'ı, PBKDF2 yerine bellek yoğun Argon2id anahtar türetmeyi, 8 yerine 32 keyslot'u, TPM2 ve FIDO2 ile kilit açma için token'ları ve isteğe bağlı kimlik doğrulamalı şifrelemeyi ekler. Eski bir GRUB'un `/boot`'u kendi başına çözmesi gerekmiyorsa LUKS2 kullanın.

Her iki format da veriyi aynı şekilde şifreler, genellikle AES-XTS ile. Farklı olan header'dır: anahtarların nasıl saklandığı, parolaların brute-force ile kırılmasının ne kadar zor olduğu ve hangi araçların onu okuyabildiği. Bu rehber farkları, hangisine sahip olduğunuzu nasıl kontrol edeceğinizi ve diski kaybetmeden `cryptsetup convert` ile nasıl dönüştüreceğinizi anlatıyor. Küçük bir VPS'te self-hosting stack'i için yeni bir sunucuyu şifreliyorsanız seçilecek format LUKS2'dir.

Bir bakışta LUKS2 ve LUKS1

ÖzellikLUKS1LUKS2
HeaderTek bir 592 baytlık binary header artı keyslot alanıİki binary header artı JSON metadata, checksum'lı, yedekli bir kopyayla
Varsayılan header / veri ofseti2 MiB16 MiB
Keyslot'lar832
Anahtar türetme (PBKDF)Yalnızca PBKDF2Argon2id (varsayılan), Argon2i veya PBKDF2
Token'lar (TPM2, FIDO2, PKCS#11, Clevis)HayırEvet
Kimlik doğrulamalı şifreleme (dm-integrity)Hayırİsteğe bağlı, deneysel
Çevrimiçi yeniden şifrelemeYalnızca çevrimdışıEvet, bağlı bir cihazda `cryptsetup reencrypt`
Kalıcı bayraklar ve etiketHayırEvet, örneğin `--allow-discards --persistent`
Şifreli /boot için GRUB ile kilit açmaEvetUpstream GRUB'da yalnızca PBKDF2 keyslot'ları

Header formatı ve keyslot'lar

LUKS1 header'ı, ardından sekiz keyslot alanı gelen sabit bir binary yapıdır. Cihazın ilk sektörlerinin üzerine yazılırsa — örneğin yanlışlıkla çalıştırılan bir `mkfs` veya bir bölümleme aracıyla — tüm keyslot'lar gider ve header yedeğiniz yoksa veriler kaybolur.

LUKS2 bir binary header ve bir JSON metadata alanı saklar ve ikisinin de ikinci bir kopyasını tutar. Her kopya bir checksum taşır, böylece `cryptsetup` bozulmayı algılayıp diğer kopyaya geçebilir. JSON alanı keyslot'ları, segmentleri, digest'leri ve token'ları tanımlar; formatı yeniden değiştirmeden yeni özellikleri mümkün kılan da budur. Yedeklilik yine de header yedeğinin yerini tutmaz: ilk megabaytların tamamen üzerine yazılması her iki kopyayı da yok eder.

Argon2id ve PBKDF2

Parola asla doğrudan anahtar olarak kullanılmaz. Bir anahtar türetme fonksiyonu onu esneterek her tahmini pahalı hale getirir. LUKS1 yalnızca GPU ve ASIC'lerde çalıştırması ucuz olan PBKDF2'yi kullanabilir, bu yüzden kopyalanmış bir header'a sahip bir saldırgan parolaları paralel olarak yüksek hızda deneyebilir.

LUKS2 varsayılan olarak, tahmin başına yapılandırılabilir miktarda bellek gerektiren (varsayılan olarak 1 GiB'e kadar, format anında mevcut RAM ile sınırlı) ve paralelleştirmesi çok daha pahalı olan Argon2id'yi kullanır. Güçlü bir parola hâlâ ana savunmadır, ancak Argon2id her tahminin maliyetini önemli ölçüde artırır.

Küçük sunucularda bellek maliyetini aklınızda tutun. Bol RAM'li bir makinede oluşturulan bir keyslot, kilidi açmak için NoctisNode Wisp planı gibi 1 GB'lık bir VPS'in initramfs içinde ayırabileceğinden fazla bellek gerektirebilir. Büyük bir makinede küçük bir makine için format atarken veya anahtar eklerken bunu `--pbkdf-memory` (KiB cinsinden) ile açıkça ayarlayın.

# 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

Token'lar, bütünlük ve GRUB uyarıları

Token'lar, LUKS2 header'ındaki ve araçlara bir anahtarı otomatik olarak nasıl elde edeceklerini söyleyen JSON nesneleridir. `systemd-cryptenroll` bunları bir keyslot'u TPM2 çipine, FIDO2 güvenlik anahtarına veya PKCS#11 akıllı kartına bağlamak için kullanır; Clevis ise bir Tang sunucusuyla ağa bağlı kilit açma için kullanır. Bunların hiçbiri LUKS1'de yoktur.

Bütünlük modu (`cryptsetup luksFormat --integrity hmac-sha256`), şifrelemeyi dm-integrity ile birleştirir; böylece kurcalanmış sektörler sessizce değiştirilmiş veri yerine okuma hataları üretir. Disk alanına ve yazma hızına mal olur, format anında tam silme gerektirir ve hâlâ deneysel olarak işaretlidir. Çoğu sunucu bunu kullanmaz.

İnsanların hâlâ LUKS1 ile karşılaşmasının ana nedeni GRUB'dur. Upstream GRUB 2.06 ve sonrası LUKS2'yi açabilir, ancak yalnızca PBKDF2 kullanan keyslot'ları, çünkü Argon2 desteği upstream GRUB'un parçası değildir. GRUB'un kendisinin şifreli bir `/boot`'u çözmesi gerekiyorsa LUKS1 veya `--pbkdf pbkdf2` ile bir LUKS2 keyslot'u kullanın. Debian ve Ubuntu kurulumcuları `/boot`'u şifresiz bırakır, bu yüzden kilidi kernel ve initramfs açar ve Argon2id — SSH ile uzaktan kilit açma dahil — çalışır.

Bir birimin LUKS1 mi LUKS2 mi olduğunu nasıl kontrol edersiniz

Bunlardan herhangi biri çalışan bir sistemde root olarak çalışır. `cryptsetup luksDump` çıktısındaki `Version:` satırı kesin yanıttır; döküm ayrıca keyslot'ları, PBKDF türünü ve token'ları gösterir.

# 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

cryptsetup convert ile dönüştürme

`cryptsetup convert`, header'ı yerinde yeniden yazar; şifreli verilere dokunulmaz. Cihaz kapalı olmalıdır, bu yüzden bir root dosya sistemi için bunu bir rescue veya live sistemden çalıştırırsınız. Dönüştürme ortasında bir hata veya elektrik kesintisi header'ı kullanılamaz bırakabilir; yedekleme adımının isteğe bağlı olmamasının nedeni budur.

  1. 01.Bir rescue veya live sistem başlatın ve LUKS cihazının açık olmadığından emin olun (gerekirse `cryptsetup close`).
  2. 02.Header'ı `cryptsetup luksHeaderBackup` ile yedekleyin ve dosyayı sunucunun dışına kopyalayın. Bu dosyaya ve eski bir parolaya sahip herkes diskin kilidini açabilir, bu yüzden onu şifreli saklayın.
  3. 03.LUKS1'i `cryptsetup convert --type luks2` ile LUKS2'ye dönüştürün. Mevcut keyslot'lar PBKDF2 olarak kalır.
  4. 04.GRUB'un okuması gerekmiyorsa her keyslot'u `cryptsetup luksConvertKey --pbkdf argon2id` ile Argon2id'ye yükseltin.
  5. 05.Cihazın açıldığını test edin, ardından initramfs'i `update-initramfs -u` ile yeniden oluşturun ve yeniden başlatın.
  6. 06.LUKS2'den LUKS1'e geri dönmek için önce her keyslot'u PBKDF2'ye dönüştürün ve token'ları ile yalnızca LUKS2'ye özgü özellikleri kaldırın; aksi halde `cryptsetup convert --type luks1` reddeder.
# 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 · Header geri yüklendikten sonra yedekleme anında geçerli olan parolalar — sonradan kaldırdıklarınız dahil — yeniden çalışır. Parolaları değiştirdiğinizde eski header yedeklerini silin. Güncel yedeği ayrı bir yerde tutun, örneğin restic yedekleme rehberinde anlatılan depoda.

SSS

QLUKS2, LUKS1'den daha mı iyi?

ANeredeyse her yeni kurulum için evet. LUKS2'de yedekli header, Argon2id anahtar türetme, TPM2 veya FIDO2 için token'lar ve çevrimiçi yeniden şifreleme vardır; LUKS1 yalnızca eski bir GRUB'un `/boot`'u kendisinin çözmesi gerektiğinde gerekir.

QLUKS sürümümü nasıl kontrol ederim?

ARoot olarak `cryptsetup luksDump /dev/sdX | grep Version` çalıştırın; 1 veya 2 yazdırır. `lsblk -f` de crypto_LUKS bölümleri için FSVER sütununda sürümü gösterir.

QLUKS1'i veri kaybetmeden LUKS2'ye dönüştürebilir miyim?

AEvet. `cryptsetup convert --type luks2`, cihaz kapalıyken yalnızca header'ı yeniden yazar. Önce header'ı `cryptsetup luksHeaderBackup` ile yedekleyin, çünkü yarıda kesilen bir dönüştürme birimi okunamaz hale getirebilir.

QGRUB LUKS2'yi destekliyor mu?

AUpstream GRUB 2.06 ve sonrası LUKS2'nin kilidini açabilir, ancak yalnızca Argon2id değil PBKDF2 kullanan keyslot'ları. Bu yalnızca `/boot`'un kendisi şifreliyse önemlidir; şifresiz bir `/boot` ile initramfs, Argon2id'li LUKS2'yi normal şekilde açar.

QLUKS2 varsayılan olarak hangi şifrelemeyi kullanır?

AGüncel cryptsetup varsayılan olarak 512 bit anahtarlı `aes-xts-plain64` (XTS modunda AES-256) ve anahtar türetme için Argon2id kullanır. Sisteminizdeki derlenmiş varsayılanları görmek için `cryptsetup --help` çalıştırın; tam kurulum için bkz. LUKS şifreli root rehberi.

LUKS2 ve LUKS1: farklar, nasıl kontrol edilir ve nasıl dönüştürülür · NoctisNode