Шифроване на целия диск с cryptsetup/LUKS#

Това ръководство показва как да конфигурирате томове, криптирани с LUKS, за удостоверяване при зареждане с Nitrokey Pro или Nitrokey Storage.

За да предоставим малко информация, cryptsetup-initramfs вече има поддръжка за използване на OpenPGP смарт карти като Nitrokey Pro и Nitrokey Storage за отключване на обеми, криптирани с LUKS. След като завършите настройката, ще трябва само да поставите Nitrokey при зареждане и да въведете потребителския си PIN код, вместо да въвеждате обичайната си парола за криптиране на диска.

Тези инструкции са тествани в Ubuntu 20.04 и Debian 10.

Warning

Следното ръководство може да ви блокира достъпа до компютъра. Трябва да сте наясно с тези рискове, тъй като се препоръчва инструкциите по-долу да се използват първо на вторичен компютър или след пълно архивиране.

Изисквания#

  • Компютър с Ubuntu или Debian с поне един криптиран с LUKS том.

Вижте раздела по-долу, за да определите кой метод е съвместим с това ръководство.

Известни проблеми#

Засега скриптът работи само с ръчно разделени томове, които се състоят от некриптиран /boot дял и криптиран главен / дял.

Моля, не избирайте автоматичното криптиране на целия диск, предвидено от операционната система, която използвате за това ръководство. Ще се сблъскате с повтарящи се грешки, когато разделянето на дяловете се извършва автоматично, като се използва интерфейсът за инсталиране на Ubuntu и Debian.

Инструкции#

  1. Инсталиране на зависимости

    $ sudo apt install scdaemon opensc gnupg2
    
  2. Създаване на директория smartcard-luks

    $ mkdir smartcard-luks && cd smartcard-luks
    
  3. Изтегляне на скрипта smartcard-luks

    $ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks
    $ sudo chmod +x smartcard-key-luks
    
  4. Експортиране на публичния ключ

    Експортиране на публичния ви ключ от пакета ключове на GnuPG:

    $ gpg2 --armor --export KeyID > pubkey.asc
    

    Ако вече сте качили публичен ключ на сървър за ключове (или го съхранявате някъде другаде), трябва да го изтеглите по най-удобния за вас начин и да преминете към стъпка 5.

  5. Определете и проверете правилното име на устройството LUKS за вашия основен дял:

    $ cat /etc/crypttab
    # if there is only one entry, you want the 1st column of this entry
    

    Hint

    Обикновено това трябва да е нещо като nvme0n1p3_crypt (за NitroPC) или sda3_crypt (за NitroPads). Можете и трябва да проверите дали UUID, посочен в /etc/crypttab, е определеният дял, като проверите символната връзка в /dev/disks/by-uuid/.

  6. Изпълнете скрипта с името на устройството luks (например nvme0n1p3_crypt) и pubkey.asc като аргументи.

    $ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey.asc
    

След като стартирате скрипта с публичния ключ на OpenPGP като аргумент, той автоматично създава нова тайна на LUKS, криптира я срещу този публичен ключ и настройва crypttab, LUKS, initramfs и GRUB.

Първо ще бъдете подканени за User PIN

Изображение 1

След като отключите ключа Nitrokey, ще бъдете помолени да въведете OLD passphrase. Това е паролата, която сте въвели, за да криптирате тома си при инсталацията.

Изображение2

Note

Това е резервна алтернатива в случай, че загубите своя Nitrokey или ако той не е наличен. Засега не е тествана и потребителите трябва да са наясно с риска да бъдат блокирани от компютъра си, ако резервният метод не сработи.

След като въведете паролата, скриптът завършва настройката за около една минута. Не прекъсвайте скрипта, в противен случай може да получите блокиране на компютъра след рестартиране.

Изображение3

Готово!

Сега трябва да рестартирате и ще можете да използвате ключа Nitrokey, за да отключите криптирания диск.

Употреба#

След рестартиране трябва да бъдете подканени да въведете потребителския си ПИН код.

Изображение5

Въведете потребителския си ПИН код, за да отключите устройството

Изображение6

Допълнителни съвети#

Промяна на паролата за криптиране на диска#

След като направите тази настройка, не трябва повече да използвате (gnome) disks помощната програма за промяна на (резервната) парола. Правилният начин да направите това е да извикате директно cryptsetup по следния начин:

$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3

Като nvme0n1p3 е дялът, за който сте настроили ключовете.

Използване на няколко клавиша#

Лесно е да се използват няколко (хардуерни) ключа за сигурност, така че всеки от тях да може да отключва устройството LUKS самостоятелно. Просто експортирайте няколко публични ключа и също така предайте няколко ключа на скрипта за настройка по следния начин:

$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey-1.asc pubkey-2.asc

Задаване на име на картодържателя#

По време на въвеждането на ПИН при зареждане за декриптиране на кореновия дял на LUKS на потребителя се представя картодържател, за да зададете това, използвайте $ gpg --edit-card и вътре в подкана въведете admin и name, за да зададете притежателя на картата за OpenPGP Card (Nitrokey Storage 2 или Nitrokey Pro 2).

Замяна/изтриване на ключове#

Не е възможно да добавяте/премахвате ключове директно. Затова трябва да изтриете/премахнете старата настройка и да я стартирате отново с определения(те) ключ(и):

Премахнете ключовия файл (път, ако сте използвали скрипта по-горе) от luks-device (nvme0n1p3):

$ sudo cryptsetup luksRemoveKey /dev/nvme0n1p3 /etc/cryptsetup-initramfs/cryptkey.gpg

Премахване на самия ключов файл:

$ sudo rm /etc/cryptsetup-initramfs/cryptkey.gpg

Извършете отново горната настройка.

Отключване на LUKS2 със сертификат X509#

SystemD поддържа отключване на дял от LUKS2 с помощта на сертификат X509, намерете чудесен запис в блога за това как да го реализирате в Личния блог на Владимир Тимофеенко