Jak korzystać z dm-crypt (LUKS) w GnuPG, aby używać dwuskładnikowego FDE?


9

Podczas korzystania z pełnego szyfrowania dysku w systemie Ubuntu (w przeciwieństwie do szyfrowania homedir), do szyfrowania woluminu używany jest dm-crypt z LUKS. W instalatorze (przynajmniej 12.04 na przemian) możesz wybrać konfigurację za pomocą hasła lub pliku klucza. Chciałbym użyć kombinacji tych dwóch; też nie, ale wymagają obu.

Dlaczego? Ponieważ zwiększa to bezpieczeństwo (dwuskładnikowe); musisz coś mieć i musisz coś wiedzieć, aby to odblokować. Następnie chcę umieścić plik klucza na małym wymiennym urządzeniu pamięci masowej (dysk flash USB) i podłączyć go tylko podczas rozruchu. W rezultacie powinno być wymagane włożenie odpowiedniego napędu flash i podanie odpowiedniego hasła do odblokowania partycji root.

Innymi słowy, chcę zostać zapytany podczas uruchamiania o hasło, do którego szyfrowany jest plik klucza na dysku zewnętrznym.

Widzę /usr/share/initramfs-tools/hooks/cryptgnupgskrypt pomocnika, który może pomóc go osiągnąć, ale nie mam pojęcia, jak go używać.

Aby uniknąć zamieszania: nie pytam o sposób dodania dodatkowego klucza do woluminu, aby go odblokować.


Znalazłem jedną część odpowiedzi, ... czytając dokumenty . Przeczytaj o tym, jak z tego korzystać /usr/share/doc/cryptsetup/README.gnupg. Spróbuję znaleźć trochę czasu na jego zmianę, aby używał pliku klucza z zewnętrznych mediów.
— gertvdijk

Odpowiedzi:


5

Robię to samo, ale obawiam się, że moja odpowiedź nie będzie satysfakcjonująca, ponieważ z różnych powodów wybrałem całkowicie niestandardowy Initramfs .

Zamiast GnuPG, który jest dodatkowym plikiem binarnym, który musi być zawarty w Initramfs (a w przypadku GnuPG-2dość złożonego), po prostu użyłem tego, co już tam jest. I to oczywiście dm-crypt/LUKS.

Załóżmy, że masz keyfile. Najlepiej z danymi losowymi.

# dd if=/dev/urandom of=keyfile count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000189802 s, 2.7 MB/s

Dodaj szyfrowanie za pomocą LUKS (możesz dodać wybrane ustawienia szyfrowania).

# truncate -s 2M keyfile.luks
# cryptsetup luksFormat keyfile --header keyfile.luks

WARNING!
========
This will overwrite data on keyfile.luks irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: bananas
Verify passphrase: bananas

Teraz masz plik klucza (512 bajtów) i plik klucza.luks (2 MB, który z jakiegoś powodu cryptsetup musi napisać 192k nagłówek LUKS). Ponieważ Initramf i tak zostanie skompresowany, nie jest to wcale takie złe (wciąż mniejsze niż GnuPG).

Teraz możesz odszyfrować plik klucza:

# cryptsetup luksOpen keyfile --header keyfile.luks lukskey
Enter passphrase for keyfile: bananas

I masz 512 bajtów losowych danych /dev/mapper/lukskey. (Możesz do niego napisać, jeśli chcesz go zmienić, abyśmy mogli wcześniej zainicjować plik zerami).

# blockdev --getsize64 /dev/mapper/lukskey
512

W Initramfs init możesz następnie otworzyć z nim prawdziwy wolumin LUKS (zakładając, że najpierw dodałeś klucz).

cryptsetup --key-file=/dev/mapper/lukskey luksOpen /dev/yourdisk luksyourdisk
cryptsetup luksClose lukskey # clean up

Takie podejście sprawia, że ​​GnuPG jest całkowicie zbędny, a ponadto zyskujesz wszystkie zalety LUKS, takie jak wiele haseł dla klucza, wybrany szyfr i tak dalej. Nie wspominając już o ładnym (najczęściej zwykłym) pytaniu o hasło z wieloma próbami.


2
Fajne rozwiązanie, ale jak dokładnie zintegrować to z moimi initramfs? Stwierdzasz, że używasz całkowicie niestandardowych initramfs, ale czy nie byłoby to możliwe tylko za pomocą haka?
— gertvdijk

Na pewno. Może nawet bez haka, jeśli wymyślisz sposób zmuszenia crypttab, aby najpierw znalazł i otworzył klucz. Np. Nie musi to być plik, możesz utworzyć dla niego osobną partycję na pamięci USB. Ponieważ jednak nie robię tego w ten sposób, nie mogę na to
— udzielić

1
Żaden problem - obejście GnuPG i ponowne użycie LUKS jest z pewnością lepszą opcją. W przypadku, gdy muszę przepisać haczyki dla podejścia GnuPG, lepiej przepisałbym to bez używania go w ogóle. I tak, wiem, że to nie musi być plik.
— gertvdijk

@gertvdijk, jeśli się tak stanie, byłbym zainteresowany twoją odpowiedzią na przyszłość
— frostschutz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.