Это старая версия документа.


LUKS (Linux Unified Key Setup) — спецификация шифрования диска (или блочного устройства), изначально предложенная для Linux, но сейчас поддерживаемая и в ряде других операционных систем.

Особенности

  • В качестве «контейнера» используется файл. Его размер «фиксирован».
  • «Внутри» контейнера создается файловая система, любого удобного вам формата.
  • При использовании - монтируется «как обычный раздел».

—- Данные сохраняются по блокам, как в обычном файле/файловой системе. То есть :

  • модификация файла внутри контейнера приводит к перезаписи блоков, занимаемых этим файлом, но не всего контейнера;
  • «потеря/порча» одного блока приводит к потере информации «того-что-было-в-этом-блоке», и не более того.
  • при синхронизации контейнера «в облако» - как правило, перезаписывается не весь файл, а «модифицировання часть», что требует малого объема трафика.

—- В отличие от EncFS

  • «снаружи» не видны общее количество файлов, их размеры и время модификации;
  • проблематично изменить «размер контейнера», если весь контейнер «занят».

—- В отличие от Truecript

  • как правило, выше скорость обработки данных (зависит от алгоритма/размера ключа);
  • проще работа с ключами;
  • нет механизма «двойного дна»;
  • возможны проблемы при попытке использования контейнера «из другой ОС»

Создание контейнера

  • Создаем необходимые каталоги:
md /home/user/keys            # каталог файла-ключа и скриптов. Должен быть недоступен другим пользователям 
md /home/user/.private        # каталог контейнера. В нем хранится криптованный файл-контейнер
md /home/user/private         # точка монтирования. В нем будет содержимое контейнера "в открытом виде"
  • При необходимости, доустанавливаем пакеты:
sudo apt-get install cryptsetup

и проверяем (должен быть вывод «kernel/drivers/md/dm-crypt.ko»)

modprobe -l |grep dm-crypt  
  • Создаем ключ
dd if=/dev/urandom of=/home/user/keys/container.key bs=512 count=1
  • Создаем контейнер, файл container.crt, размером 50M
dd if=/dev/urandom of=/home/user/.private/container.crt bs=1M count=50

Размечаем контейнер, как luks-систему с ключом

sudo cryptsetup luksFormat /home/user/.private/container.crt -d /home/user/keys/container.key -c aes-xts-plain64 -s 512

или - без ключа, с набором пароля при каждом открытии контейнера

sudo cryptsetup luksFormat /home/user/.private/container.crt -c aes-xts-plain64 -s 512

Параметры контейнера, смотрим

sudo cryptsetup luksDump /home/user/.private/container.crt
  • «Открываем» контейнер
sudo cryptsetup luksOpen /home/user/.private/container.crt -d /home/user/keys/container.key container

смотрим, появился ли в устройствах, и информация о нем

ls /dev/mapper/
sudo dmsetup info container
 
 
 
 
 

Ссылки