dm-crypt — подсистема шифрования дисков в ядре Linux, использующая Device Mapper (dm) для прозрачного шифрования блочных устройств. LUKS (Linux Unified Key Setup) — стандартный формат заголовка для dm-crypt с поддержкой нескольких ключей и парольных фраз.
Как работает
dm-crypt создаёт виртуальное блочное устройство, которое автоматически шифрует данные при записи и расшифровывает при чтении. Алгоритм по умолчанию — AES-256-XTS. Ключ шифрования деривируется из парольной фразы через функцию PBKDF2 или Argon2. Без ключа данные на диске — набор случайных байт.
LUKS-заголовок хранит метаданные шифрования в начале раздела: алгоритм, соль, параметры KDF. Поддерживается до 32 слотов ключей — несколько пользователей могут расшифровывать один том своими фразами.
Создание зашифрованного раздела
# Инициализировать LUKS на разделе
cryptsetup luksFormat /dev/sdb1
# Открыть зашифрованный раздел
cryptsetup luksOpen /dev/sdb1 my_encrypted
# Создать файловую систему
mkfs.ext4 /dev/mapper/my_encrypted
# Монтировать
mount /dev/mapper/my_encrypted /mnt/data
# Закрыть (размонтировать и удалить ключ из памяти)
umount /mnt/data
cryptsetup luksClose my_encrypted
История
dm-crypt появился в ядре Linux 2.6.4 в 2004 году. LUKS-спецификацию разработал Clemens Fruhwirth в 2004-2005 годах как замену нестандартным форматам шифрования. LUKS2 выпущен в 2018 году с поддержкой Argon2 (защита от GPU-атак), стойкими заголовками и улучшенным управлением ключами. Ubuntu и Fedora предлагают шифрование всего диска через LUKS при установке.
Применение для хостинга
На VPS dm-crypt используется для шифрования дополнительных дисков с чувствительными данными: резервные копии с персональными данными, базы данных клиентов. Автомонтирование при старте через /etc/crypttab + ключевой файл, хранящийся в защищённом месте (HSM или Vault).
На что обращать внимание
Шифрование всего диска на VPS менее эффективно, чем на физическом сервере: гипервизор имеет доступ к памяти ВМ, где ключ находится в открытом виде при работе. Для полной защиты нужен контроль над физическим железом или технология шифрованной памяти (AMD SEV, Intel TDX). Потери производительности от dm-crypt — 5-15% на современных CPU с AES-NI ускорением.
LUKS2 и современные возможности
LUKS2 (2018) добавил существенные улучшения: Argon2id — GPU-устойчивая функция деривации ключа вместо PBKDF2. Аргументы памяти и итераций настраиваются: cryptsetup luksFormat --pbkdf argon2id --pbkdf-memory 65536. Overhead для атакующего с GPU увеличивается в сотни раз. Detached header — хранение LUKS-заголовка отдельно от зашифрованного тома: без заголовка тип шифрования неизвестен, том выглядит как случайные данные.
Несколько ключевых слотов: добавить новую парольную фразу cryptsetup luksAddKey /dev/sdb1, удалить старую cryptsetup luksRemoveKey /dev/sdb1. Ротация ключей без перешифрования тома — важно для shared-серверов при увольнении сотрудника.
VeraCrypt как альтернатива
VeraCrypt (наследник TrueCrypt) поддерживает кросс-платформенные зашифрованные контейнеры: один файл-контейнер монтируется на Linux (VPS), macOS и Windows. Функция правдоподобного отрицания (plausible deniability): два слоя шифрования с разными паролями — внешний контейнер выглядит как обычный зашифрованный том, внутренний скрыт.
На что обращать внимание
Потеря LUKS-парольной фразы означает безвозвратную потерю данных — нет механизма восстановления. Делайте резервную копию LUKS-заголовка: cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file header.img. Повреждение первых секторов диска уничтожает заголовок — бекап спасёт данные. Шифрование не защищает от утечки данных через запущенные сервисы — смонтированный зашифрованный том доступен для чтения любому процессу с правами доступа.