Полная версия

OSS Group


Авторизация

  

Навигация

Текущее местоположение:  OSS Group :: Wiki :: APT :: cryptsetup-luks.README.ALT
Главное меню:   Главная   Документация   Разработка   Контакты   Поиск   Карта сайта   Wiki   Блоги
Разделы Wiki:   Admin  APT  Sandbox

cryptsetup-luks.README.ALT

======       Краткое введение в cryptsetup-luks и работу с ним.          =====

------------------------------------------------------------------------------
-1. Что это такое.

Данная утилита позволяет выполнять конфигурацию устройств модуля Device Mapper
в составе ядер Linux 2.6.x для обеспечения прозрачного шифрования дисковых
систем, т.е. создание систем OTFE (On The Fly disk Encryption). 

По сравнению с обычными дисками диски OTFE обладают такой же надёжностью. Сбои
питания или появление на поверхности дисков дефектов приведут к ошибкам чтения
соответствующих кластеров, не влияя на остальную часть дисков. Ошибки в
файловых системах на шифрованных дисках исправляются так же, как и на обычных.

Разделы cryptsetup могут располагаться поверх других систем dm (т.е. на
программных RAID-массивах, разделах LVM/LVM2 и т.п.) и, в свою очередь,
содержать такие системы. Возможно создание шифрованных дисков внутри
подключенных через losetup файлов.

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

cryptsetup-luks поддерживает два вида дисков OTFE. Первый вид - это диски
старого стандарта dm-crypt. Шифруется весь выделенный раздел диска, ключом
шифрования является хеш парольной фразы. В отключенном состоянии раздел диска
с точки зрения постороннего лица целиком заполнен мусором, отличительных
признаков наличия на нём шифрованного раздела нет. При подключении диска
обязательно требуется указывать используемый блочный шифр и его параметры, т.к.
никаких данных об этом на диске нет. Данный вид дисков может быть уязвим для
криптоанализа, т.к. неудачный выбор парольной фразы может привести к плохому с
точки зрения криптостойкости хешу, т.е. ключу шифрования. Подробности см.
http://luks.endorphin.org/LUKS-on-disk-format.pdf 

Второй вид - диски LUKS (Linux Unified Key Setup). В этом случае в начале
шифрованного раздела записывается заголовок, содержащий информацию о выбранном
шифре, длине ключа и пр. Ключом шифрования данных на диске является случайным
образом выбранная последовательность, которая также сохраняется в зашифрованном
виде в заголовке диска. Пользователь не знает ключ шифрования, и имеет дело
только с парольной фразой, которой зашифрован ключ в заголовке диска. Ключ
шифрования может храниться в нескольких выделенных слотах в заголовке диска,
каждый слот защищается своей парольной фразой. Данный подход:
- предотвращает угрозы раскрытия данных от неудачного выбора парольных фраз;
- предоставляет возможность иметь для диска несколько парольных фраз, каждая из
  которых позволяет подключить шифрованный диск;
- позволяет лёгкого сменить пароль на диск путём создания нового слота с
  зашифрованным ключом к диску и удалением старого слота, без необходимости
  переписывания всего раздела;
- позволяет определить ошибки ввода парольной фразы на этапе расшифровывания
  слота, без необходимости попытки подключения файловой системы;
- даёт возможность полностью разрушить шифрованный раздел путём уничтожения
  слота с ключём шифрования.
- позволяет отличить диск LUKS от неформатированного раздела с мусором. LUKS не
  поддерживает режимов "правдоподобного отказа" (*).


Применение шифрования возможно для любых разделов диска, включая корневую
файловую систему (с включением запроса пароля в initrd) и разделов подкачки. 



------------------------------------------------------------------------------
0. До начала работы с cryptsetup-luks.

Подумайте, действительно ли Вам нужны разделы dm-crypt. В ряде случаев вполне
можно обойтись шифрованием файлов (архивов) с использованием GnuPG или подобных
систем. Возможно, Вам стоит взглянуть на EncFS. Решение на базе dm-crypt
достаточно ресурсоёмкие с точки зрения процессорного времени и плохо подходят
для слабых машин.

Сделайте резервную копию данных. 

Помните, что утрата ключа равнозначна потери всех данных на разделе.

Помните, что неосторожная работа с разделом (неправильный порядок подключения
раздела, запуск fsck на неподключенном разделе, случайное удаление слота с
ключом в LUKS, пр.) практически однозначно приведёт к потере всех данных на
нём.

Изучите возможные проблемы использования систем OTFE с точки зрения закона. 

Проверьте наличие резервной копии данных. В списке рассылки cryptsetup вопросы
о возможности восстановления данных задаются достаточно часто. Положительные
ответы звучат _гораздо_ реже.



Далее дана краткая справка по порядку создания и работы с дисками LUKS и
dm-crypt. Предпочтение выбора того или иного формата дисков зависит от
поставленной задачи. Команды даны для создания диска в файле. Для обычных
разделов команды losetup не требуются.

Все команды требуют привилегий суперпользователя. С уже подключёнными дисками
могут работать все пользователи, согласно обычным правам доступа к файловым
системам в Un*x. Для программ подключённые через cryptsetup диски выглядят так
же, как и обычные. 

------------------------------------------------------------------------------
1. Подготовка диска.
    
Создание файла crypt-disk размером XXX Mb и заполнение его случайными данными:

# dd if=/dev/urandom of=crypt-disk bs=1M count=XXX

Обычные разделы также следует заполнить мусором. Данная операция весьма
длительна для больших размеров дисков. Состояние работы dd можно увидеть,
послав процессу сигнал USR1 (для dd из состава дистрибутивов ALTLinux, в других
случаях данную возможность желательно проверить).

Заполнять раздел нулями из /dev/zero принципиально быстрее, но это позволит в
дальнейшем возможность отличить записанные блоки шифрованного диска от ещё не
записанных. 

Кроме того, обратите внимание на то, что при желании с магнитных носителей
можно прочитать данные и после записи поверх них случайных значений (и тем
более нулей). В случае острых приступов паранойи рекомендуется почитать статью
"Secure Deletion of Data from Magnetic and Solid-State Memory", Peter Gutmann
(http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html) и повторить
вышеописанную операцию перезаписи от 2 до 17 раз. В особо тяжёлых случаях - с
заменой /dev/urandom на /dev/random.



------------------------------------------------------------------------------
2. Создание и работа с диском LUKS

2.1. Создание нового диска.

Форматирование нового диска LUKS
Подключение файла crypt-disk к /dev/loop0:
# losetup /dev/loop0 crypt-disk

Форматирование диска LUKS:
# cryptsetup [-c <cypher> [-s <keysize>]] luksFormat /dev/loop0

Здесь <cypher> - модуль шифрования, который будет использоваться для диска.
Доступные модули шифрования (cypher): blowfish, serpent, twofish, des, aes.
Самый быстрый из них - aes (как целиком написанный на ассемблере). Остальные
немного хуже. Сравнение можно посмотреть на странице
http://www.pgpru.com/articles/openpgp/pgp_compare.shtml По умолчанию выбирается
модуль aes, длина ключа 256 бит. При планировании размещения на защищенном
диске часто используемых данных рекомендуется предварительно провести тесты
производительности для разных модулей шифрования и выбрать наиболее оптимальный
для конкретного компьютера, файловой системы, размера кластера диска, и т.п.

Указывать опции шифрования требуется только при форматировании раздела LUKS.
Далее они сохраняются на диске, и используются при подключении диска
автоматически.

Отформатированный диск LUKS необходимо подключить:
# cryptsetup luksOpen /dev/loop0 crypt_disk

При подключении диска пароль будет запрошен ещё раз. После выполнения команды
будет создано устройство /dev/mapper/crypt_disk.

На данном устройстве требуется создать файловую систему:
# mkfs.YYYY /dev/mapper/crypt_disk

Затем готовый диск LUKS можно отключить:
# cryptsetup luksClose crypt_disk
# losetup -d /dev/loop0


2.2. Подключение существующего диска LUKS

Подключение диска LUKS:
# cryptsetup luksOpen /dev/loop0 crypt_disk

После выполнения команды будет создано устройство /dev/mapper/crypt_disk. Далее
его следует смонтировать в требуемое место файловой системы:
# mount /dev/mapper/crypt_disk /mnt/disk


2.3. Отключение существующего диска LUKS

Диск следует размонтировать, затем отключить, и удалить соответствующее ему
loopback-устройство:
# umount /dev/mapper/crypt_disk
# cryptsetup luksClose crypt_disk
# losetup -d /dev/loop0

Отключить неразмонтированный диск нельзя. 


2.4. Прочие операции с дисками LUKS.

2.4.1. Проверка, содержит ли данный диск LUKS

# cryptsetup isLuks /dev/loop0

Если диск не содержит LUKS, cryptsetup выведет соответствующее сообщение.
Как вариант:
# cryptsetup isLuks /dev/loop1 && echo "This is a LUKS partition"


2.4.2 Получить UUID диска LUKS можно командой

# cryptsetup luksUUID /dev/loop0


2.4.3. Информацию о диске LUKS можно получить командой

# cryptsetup luksDump /dev/loop0

При этом выводится информация о параметрах шифрования раздела, а также
информация о заданных для раздела парольных фразах. 

2.4.4. Добавление новой парольной фразы для диска LUKS

Всего для диска можно задать 8 парольных фраз. Для этого в формате заголовка
раздела предусмотрены соответствующие поля. Посмотреть, какие из парольных
слотов используются и сколько есть доступных можно при помощи luksDump. При
наличии незаполненных слотов есть возможность задания дополнительной парольной
фразы для диска:
# cryptsetup luksAddKey /dev/loop0 

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

Все парольные фразы, определённые для диска, равноценны. Подключить диск
возможно с помощью любой из них. 


2.4.5. Удаление парольной фразы для диска LUKS

# cryptsetup luksDelKey /dev/loop0 <slot>

Здесь <slot> - номер слота, из которого требуется удалить парольную фразу. При
удалении слота запрашивается одна из парольных фраз к диску. Удалить слот,
содержащий введённую парольную фразу, нельзя (т.е. удалить последнюю парольную
фразу с диска нельзя. Это поведение появилось с 1.0.4, более ранние версии
cryptsetup-luks позволяли удалить любую парольную фразу).

2.4.6. Замена парольной фразы

Производится путём добавления новой парольной фразы (через luksAddKey, с
использованием старой парольной фразы), и последующим удалением старой (через
luksDelKey, с использование новой парольной фразу).


Все описанные операции с дисками можно проводить как с подключёнными, так и с
отключёнными дисками. 

Средства резервного копирования заголовка диска LUKS в cryptsetup-luks
отсутствуют. Описание того, как можно осуществить резервное копирование
заголовка (и причины, почему это делать не стоит), есть в FAQ, пункт 
"How can I backup my partition header/my metadata?",
http://www.saout.de/tikiwiki/tiki-index.php?page=LUKSFaq


------------------------------------------------------------------------------
3. Создание и работа с диском dm-crypt.

3.1. Создание нового диска.

Создание loop-устройства:
# losetup /dev/loop0 crypt-disk

Создание устройства dm-crypt:
# cryptsetup -y -c aes-cbc-essiv:sha256 [-s <keysize>]] create crypt_disk /dev/loop0

Значения параметров - как в luksFormat. При выполнении команды будет запрошен
пароль и создано устройство /dev/mapper/crypt_disk .  Значение параметра '-c'
(т.е. выбор модуля шифрования) требуется задавать в обязательном порядке, с
указанием использовать ESSIV. Выбираемый по-умолчанию модуль aes без ESSIV
уязвим для криптоанализа.

Опция '-y' указывает cryptsetup запрашивать пароль два раза и рекомендуется для
использования при создании дисков.

Создание файловой системы:
# mkfs.YYYY /dev/mapper/crypt_disk

Удаление устройства dm-crypt:
# cryptsetup remove crypt_disk
# losetup -d /dev/loop0
	   
При работе с обычным диском создание loop-устройства опускается.
	   

3.2. Монтирование диска:
	       
# losetup /dev/loop0 crypt-file
# cryptsetup -c aes-cbc-essiv:sha256 [-s <keysize>] ] create crypt_disk /dev/loop0
# mount /dev/mapper/crypt_disk /mnt/disk
		   
Указывать модуль шифрования обязательно, т.к. на дисках dm-crypt никакой
информации о выборе его е хранится. То же самое касается нестандартной длины
ключа.

Если mount не может смонтировать устройство, то введён неверный пароль или
указан неверный модуль алгоритма шифрования.
		   
3.3. Размонтирование диска:
       
3.3. Размонтирование диска:
       
# umount /mnt/disk
# cryptsetup remove crypt_disk
# losetup -d /dev/loop0



------------------------------------------------------------------------------
4. Дополнения, примечания.

4.1. Свободное устройство loopX можно узнать с помощью команды
# losetup -f
Обычно доступно 8 устройств, loop0 .. loop7.


4.2. Для дисков dm-crypt возможно зашифровать существующую файловую систему на
дисковом разделе без предварительного переноса данных с неё на временное место.
Порядок данного процесса:
- Резервное копирование
- Проверка функционирования ИБП
- Размонтирование устройства
- Проверка: fsck -f /dev/XXXX
- Подготовка устройства криптографического диска:
  # cryptsetup -y -c aes-cbc-essiv:sha256 -s 256 create XXXX /dev/XXXX
- Шифрование диска:
  # dd if=/dev/XXXX of=/dev/mapper/XXXX bs=4k
- Проверка нового диска: fsck -f /dev/mapper/XXXX
- Монтирование его по старому месту

Возможно также проведение и обратной операции.

Для дисков LUKS зашифровать существующую файловую систему без переноса с
неё данных нельзя.


4.3. cryptsetup-luks поддерживает ввод паролей как непосредственно с терминала,
так и через перенаправление входного потока, а также из файлов. При этом
поведение cryptsetup-luks сильно отличается для дисков dm-crypt и LUKS.
Подробности описаны в cryptsetup(8). 

4.4. Если cryptsetup-luks при попытке подключения диска выдаёт сообщения о
невозможности найти в системе какой-либо модуль шифрования, имеет смысл
попробовать загрузить вручную модули dm_mod и dm_crypt.

------------------------------------------------------------------------------
5. Прочие утилиты для работы с дисками OTFE и их альтернативами.

Создаваемый cryptsetup диски, как dm-crypt, так и LUKS, возможно подключить из
Microsoft Windows. Для этого можно использовать утилиту FreeOTFE,
http://www.freeotfe.org/ . Для работы с подключенными дисками на них должна
быть файловая система, понятная Windows. 

Альтернативой LUKS/dm-crypt, но ведущей своё начало из Windows, является
TrueCrypt: http://truecrypt.sourceforge.net/ . Для работы под Linux требует
загрузки своего модуля ядра. Утилита для управления дисками находится в
одноимённом пакете. 

В ряде случаев существенным недостатком систем OTFE является необходимость
использования привилегий суперпользователя для управления (создания,
подключения и отключения) ими. Кроме того, для разграничения доступа к
подключённому диску OTFE используется стандартная система привилегий Un*x, т.е.
администратор системы всегда имеет полный доступ к данным на защищённых дисках.
Существуют разнообразные решения для защиты данных с использование файловых
систем пользовательского уровня, как правило работающих через FUSE. В этом
случае уровень шифрования лежит над обычной файловой системой, что позволяет,
например, проводить резервное копирование защищённых данных без необходимости
ввода паролей и пр. Примером подобной системы может служить EncFS,
http://arg0.net/wiki/encfs (пакет fuse-encfs).


------------------------------------------------------------------------------

=== Ссылки ===
Домашняя страница cryptsetup-luks: http://luks.endorphin.org/dm-crypt

FAQ по cryptsetup-luks: http://www.saout.de/tikiwiki/tiki-index.php?page=LUKSFaq

Много полезной информации можно найти на странице старой версии cryptsetup,
http://www.saout.de/misc/dm-crypt/

Доступно также Wiki: http://www.saout.de/tikiwiki/tiki-index.php 

Текущая версия данного описания: 
http://git.altlinux.ru/people/naf/packages/?p=cryptsetup-luks.git;a=blob_plain;f=cryptsetup-luks.README.ALT.utf-8;hb=HEAD
http://www.ossg.ru/wiki/APT/cryptsetup-luks.README.ALT

Некоторая подборка ссылок на решения по защите дисков:
http://www.ossg.ru/wiki/Admin/Криптографические файловые системы


----
*) Plausible Denial ("Правдоподобный отказ") - возможность правдоподобного отказа 
от предоставления ключей к защищённым разделам при угрозе или применении насилия.
LUKS _не предоставляет_ механизмов для plausible denial и внедрение подобных
механизмов в него _не планируется_. Объяснение см. здесь:
http://clemens.endorphin.org/weblog/archives/2006-03.shtml#e2006-03-30T19_26_01.txt



---------------------------------
Замечания и пожелания по содержимому данного документа приветствуются.
Nikolay A. Fetisov <naf@altlinux.ru>

Дата создания: 2006-05-24 19:00:13 (Фетисов Н. А. (naf))
Последнее изменение: 2007-03-15 10:53:51 (Фетисов Н. А. (naf))
Владелец: Фетисов Н. А. (naf)
Версия: 2  Все версии


  Не показывать комментарии


Wiki::APT   Карта раздела  Оглавление  Изменения за сутки  Изменения за неделю  Изменения за месяц



Быстрый поиск по Wiki:
И ИЛИ

На эту страницу ссылаются:

©2006-2024 OSS Group. All rights reserved. | Техническая поддержка: Открытые Информационные Технологии и Системы