
Device mapper
Device mapper — это подсистема Linux, позволяющая преобразовать (смэппить) физические блочные устройства в виртуальные. Она лежит в основе LVM, software RAID и dm-crypt.
dm-crypt
dm-crypt является частью device mapper, предоставляющей шифрование блочных устройств, используя Crypto API. Созданное с его помощью виртуальное блочное устройство можно применить как и любое другое: смонтировать, использовать в RAID или LVM. С тем отличием, что на реальном физическом блочном устройстве данные будут зашифрованы.
Так как dm-crypt взаимодействует только с блочными устройствами, мы можем зашифровать только полностью устройство, раздел на нём либо loop-устройство.
cryptsetup
dm-crypt работает в пространстве ядра. Для взаимодействия с ним используется одна из двух user space утилит: cryptsetup или cryptmount. Мы рассмотрим cryptsetup.
cryptsetup умеет работать в разных режимах шифрования:
plain
режим, в котором не пишутся никакие метаданные о зашифрованных разделах и эту информацию необходимо указывать при монтированииluks
режим по умолчанию, в котором на устройство записываются заголовки с метаданными, позволяющими использовать больше возможностей шифрования, актуальная версия luks2loopaes
устаревший режимtcrypt
режим совместимости с TrueCrypt
LUKS
Linux Unified Key Setup — это стандарт для шифрования дисков. Особенностью luks в сравнении с plain режимом работы cryptsetup является возможность создавать несколько паролей для доступа к данными.
Создаём luks-раздел, во время создания у нас спросят пароль для доступа:
# cryptsetup luksFormat --type luks2 <устройство>
После создания раздела для работы с ним в первую очередь нам понадобится разблокировать его. При разблокировке зашифрованный раздел смэппится в новое устройство с помощью device mapper в директорию /dev/mapper. Открываем/разблокируем зашифрованный luks-раздел:
# cryptsetup open <устройство> <имя нового устройства>
После ввода пароля в директории /dev/mapper будет создано виртуальное устройство с указанным именем. В первую очередь обычно создаём файловую систему:
# mkfs -t ext4 /dev/mapper/<устройство>
Дальнейшая работа с /dev/mapper/<устройство> такая же как и с любым другим устройством, конечно можем примонтировать и записывать файлы. После окончания всех работ закрываем устройство:
# cryptsetup close <устройство>