LUKS
LUKS, czyli Linux Unified Key Setup to próba opracowania standardów dotyczących szyfrowania dysków. Jednocześnie istnieje "implementacja referencyjna" dla Linuksa, dostępna w ramach pakietu cryptsetup (dawniej był to odrębny pakiet bazujący na cryptsetup – cryptsetup-luks).
Co daje LUKS? Dopiero się zapoznaję z tymi różnymi rzeczami do szyfrowania pod Linuksem, ale z tego, co przeczytałem i zaobserwowałem:
- Przechowuje na bazowej partycji swój nagłówek, po którym można przede wszystkim rozpoznać, że jest to partycja szyfrowana. Poza tym są tam zapisane parametry: algorymt szyfrowania, hash i inne. Fajnie, z drugiej strony może jest to pewna wada – szereg informacji podanych "na talerzu" w przypadku, gdyby ktoś niepowołany chciał dobrać się do naszych danych.
- Pozwala na zastosowanie do ośmiu haseł równolegle, z których każde umożliwi dostęp do master key i tym samym do zaszyfrowanych danych. Przydatne, gdy więcej niż jedna osoba ma mieć korzystania z nich. Albo gdy admin chce sobie zostawić furtkę ratunkową dla sklerotycznych userów.
- Domyślny tryb szyfrowania to cbc-essiv:sha256, co ma zapobiegać atakom typu watermarking. Dm-crypt bez LUKS-a stosuje cbc-plain.
- Stosuje PBKDF2, dzięki któremu utrudnia stosowanie brute force do znalezienia hasła – każde wprowadzone hasło wymaga odpowiedniego przetworzenia, co zabiera chwilę czasu (domyślnie około sekundy, można skonfigurować inaczej).
- W przeciwieństwie do "gołego" dm-crypta, LUKS potrafi wykryć, że podano nieprawidłowe hasło.
Uwagi:
1. Przy tworzeniu wolumenu należy zwrócić uwagę na rozmiar klucza. Domyślnie zarówno "goły" dm-crypt, jak i wspomagany LUKS-em, stosują AES, ale w pierwszym przypadku z kluczem 256-bitowym, a w drugim – 128-bitowym. Można to jednak zmienić podając odpowiednią opcję.
2. LUKS może korzystać z pliku-klucza, ale musi to być zwykły plik, nie można użyć np. /dev/random. Dlatego prościej nie używać LUKS-a np. do szyfrowania swapa (oczywiście zakładając, że chcemy utracić dostęp do zawartości partycji wymiany po jej odmapowaniu).
3. Partycję do pracy z LUKS-em należy zainicjalizować poleceniem:
- cryptsetup luksFormat /dev/sdX [opcje]
To utworzy wspomniany wyżej nagłówek, ale poza tym nic się na partycji nie zmieni. Trzeba ją więc wcześniej "ręcznie" zapełnić danymi wyglądającymi na losowe.