Создание зашифрованного раздела в Ubuntu

Механизм шифрования уровня ядра dm-crypt используется для прозрачного шифрования дисков, что позволяет использовать файлы на таких дисках сразу после монтирования без дополнительных действий. В большинстве случаев шифрование производится на уровне разделов, но мы в качестве примера будет рассматривать файл, подключаемый как петлевое устройство (loopback device).

Установка инструментов dm-crypt

Установка инструментов dm-crypt выполняется командой:

$ apt-get install cryptsetup

Создание неразреженного пустого файла

Для хранения наших шифрованных данных нам потребуется создать файл, который будет использован как устройство хранения. Нам нужен пустой файл, но он не должен быть разреженным.

Самый простой и быстрый способ создания такого файла - использовать команду fallocate, мгновенно выделяющую необходимый объем диска под файл. Для примера, создадим файл размером 1 Гб:

$ fallocate -l 1G /root/test

Такой вариант очень быстр, но недостаточно безопасен, т.к. старые данные при выделении места под файл не затираются, что может сделать понятным, какой объем данных зашифрован.

Альтернативой может стать использование широко известной команды dd. Мы можем заполнить файл нулями:

$ dd if=/dev/zero of=/root/test bs=1M count=1024

Или случайными данными, что сделает невозможным определить объем зашифрованных данных, но ценою более длительного процесса создания файла:

$ dd if=/dev/urandom of=/root/test bs=1M count=1024

Также можно использовать псевдо-устройство /dev/random, что еще более безопасно, но также займет больше времени:

$ dd if=/dev/random of=/root/test bs=1M count=1024

Создание LUKS-контейнера в файле

Перед форматирование файла нам необходимо создать в нем раздел LUKS. Linux Unified Key Setup - стандарт для шифрования дисков и является основным слоем, поверх которого размещаются все остальные данные.

Инструменты dm-crypt позволяют легко это осуществить:

$ cryptsetup -y luksFormat /root/test-c aes-xts-plain64:sha512 -s 512

В процессе создания раздела вам понадобится дать согласие на перезапись данных в файле, а также установить пароль, необходимый для расшифровки данных. Потеря пароля равносильно потере данных. С опцией -y команда запросит повторный ввод пароля, чтобы убедиться в отсутствии опечаток.

Теперь мы можем открыть только что созданный контейнер:

$ cryptsetup luksOpen /root/test test

После успешного ввода пароля устройство станет доступно как /dev/mapper/test, которое теперь можно использовать как любое другое.

Создание и монтирование файловой системы

Для примера, мы отформатируем наше новое устройство в Ext4:

$ mkfs.ext4 -j /dev/mapper/test

Далее, создадим директорию для монтирования:

$ mkdir /mnt/test

И, наконец, смонтируем файловую систему:

$ mount /dev/mapper/test /mnt/test

Размонтирование файловой системы и закрытие LUKS-контейнера

Отмонтировать файловую систему можно обычным способом:

$ umount /mnt/test

Теперь можно закрыть контейнер, отключив устройство /dev/mapper/test:

$ cryptsetup luksClose test
Статьи и заметки
ЛИЧНЫЙ КАБИНЕТ
На вашу почту отправлено сообщение с кодом подтверждения. Введите его для завершения регистрации.
ВЫПОЛНИТЬ