LUKS is the standard
for Linux hard disk encryption. ... While LUKS is a standard on-disk
format, there is also a reference implementation. LUKS for dm-crypt
is implemented in an enhanced version of cryptsetup.
Недавно я
отчитался
(в виде наблюдений за производительностью)
по использованию eCryptfs.
Теперь запишу отчет о dm-crypt.
eCryptfs годится,
когда закрыть от посторонних глаз надо
отдельное дерево каталогов или
папочку-другую. Если же оперировать
дисковыми разделами, то удобнее, надежнее
и производительнее использовать блочную
прослойку. В смысле, криптовать не на
уровне файлов а на уровне блоков
ввода/вывода. Отдельно надо заметить
возможность аппаратного ускорения
операций алгоритмов AES современными
камнями от Intel (AES-NI).
dm-crypt умеет аппаратно ускоряться, eCryptfs
— нет (во всяком случае, я не встретил
инструкции по зацеплению eCryptfs за
крипто-API ядра). Могу сразу сказать, я
разницу между ускоренным AES и традиционным
заметил. Это экономия около 10% загрузки
CPU и прибавка в 10 — 15 мегабайт/сек.
трансфера с диска на диск. Хотя, надо
сделать скидку на разницу в подходах —
файловый IO и блочный IO. А с другой стороны,
где-то я видел число более 500 мегабайт/сек.
на ускоренном AES. Более чем достаточно,
ящетаю.
Итак, практикум.
Сначала надо
сделать копию данных с раздела,
назначенного под криптование
rsync -av /extst1/virt /extht1/virt
Пока пишется, читаем теорию и готовимся.
Смотрим, есть
ли в ядре поддержка AES
cat /boot/config-3.2.0-0.bpo.2-amd64 | grep AES
Как дела с модулями
lsmod |grep aes aesni_intel 50498 216 cryptd 14463 1 aesni_intel aes_x86_64 16796 1 aesni_intel aes_generic 37122 2 aesni_intel,aes_x86_64
Видно, что AES-ni есть и даже загружен, это
какбэ намекает на то, что акселерация
будет.
Ставим Cryptsetup
aptitude install cryptsetup
Посмотрев в
/etc/fstab видно, что нужный мне раздел
монтируется по uuid
UUID=216858de-b781-4efa-9666-4373804a17cf /extst1
А вывод команды mount говорит о двойном
подключении, сперва
/dev/sdb1 on /extst1 type ext4 (rw)
а потом
/extst1/virt on /extst1/virt type ecryptfs...
А тут и копирование закончено. Если не
закончено — ждем.
Раз два
монтирования, надо два раза размонтировать
umount /extst1/virt umount /dev/sdb1
Создаем
криптованный раздел
cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb1
если параметры по умолчанию (алгоритмы,
длина ключа и пр.) не устраивают, читаем
man cryptsetup и задаем параметры ручками.
Умолчальные же параметры можно глянуть
в выводе команды
cryptsetup --help
Теперь
криптованный раздел можно подключить
к мапперу
cryptsetup luksOpen /dev/sdb1 extst1crypt
или, если уж основываться на uuid, сперва
выясним его
blkid /dev/sdb1: UUID="96eed01e-6783-4e64-917a-2aa1f0a76f1c" TYPE="crypto_LUKS"
и подключаем так
cryptsetup luksOpen /dev/disk/by-uuid/96eed01e-6783-4e64-917a-2aa1f0a76f1c extst1crypt
Проверим статус
cryptsetup status extst1crypt /dev/mapper/extst1crypt is active: cipher: aes-cbc-essiv:sha256 keysize: 256 bits device: /dev/sdb1 offset: 2056 sectors size: 976760824 sectors mode: read/write
Создадим
файловую систему
mke2fs -t ext4 /dev/mapper/extst1crypt
И смонтируем в дерево файлсистем
mount /dev/mapper/extst1crypt /extst1
Осталось
вернуть взад файло из резервной копии
# chown -R v:users /extst1 # chmod -R 766 /extst1 $ rsync -av /extht1/virt/ /extst1/virt/ sent 206013701910 bytes received 945 bytes 115123611.54 bytes/sec total size is 205988553697 speedup is 1.00
И на тот случай,
если понадобится вручную отключить
раздел, заклинать так
umount /dev/mapper/extst1crypt cryptsetup luksClose /dev/mapper/extst1crypt
Собственно,
все. Тут нарисовано простейшее
использование dm-crypt в обертке cryptsetup.
Использование ключей в виде файлов,
скрытых разделов и прочие продвинутые
вещи — остались за кадром. Кому надо,
тот сам нагуглит, инфы полно.
По материалам
Комментариев нет:
Отправить комментарий