Монтируемый при загрузке зашифрованный раздел

Материал из База знаний проекта Russian Fedora

Перейти к: навигация, поиск
Страница находится в работе
Ответственный: Предлагаемый способ не оттестирован полностью.

Настоящая статья описывает способ получения шифрованный раздела, который:

Наиболее очевидная уязвимость в этой конструкции - наличие ключа на внешнем носителе, который, скорее всего, можно скопировать постороннему.

Достижение нашей цели производится с помощью LUKS, cryptsetub и ds-crypt в Fedora 16.

Создание зашифрованного диска

LUKS работает с блочными устройствами, это значит, что зашифровать можно только раздел целиком. Для шифрования отдельных файлов или папок на носителе (например, домашней папки) можно воспользоваться пакетом ecryptfs-utils. Все команды производить под sudo.

  1. Таким образом, любым удобным способом (самый простой - Дисковая утилита), создаём пустой раздел, он будет являться контейнером для создания зашифрованного раздела. В данном руководстве за такой раздел примем /dev/sda3
  2. Для повышения устойчивости шифрования настоятельно рекомендуется наполнить раздел случайными данными. Данные команды утичтожают все данные с выбранного устройства. Если у вас есть время и/или шифруемый раздел не слишком велик, воспользуйтесь командой:
    dd if=/dev/urandom of=/dev/sda3
    В противном случае команда
    badblocks -c 10240 -s -w -t random -v /dev/sda3
    сделает это быстрее, но менее качественно.
  3. Лучший ключ - состоящий из случайной последовательности символов. Лучший генератор случайных чисел - /dev/random. Генерируем ключ key длиной 256 байт на флэшке c файловой системой fat или ext4 (допустим, она примонтирована как /media/flash) и запрещаем его изменение:
    dd if=/dev/random of=/media/flash/key bs=1 count=256
    chmod 0444 /media/flash/key
  4. Шифруем устройство с помощью сгенерированного ключа. Устройство должно быть отмонтировано. cryptsetup попросит ввести YES для подтверждения. Данная команда уничтожит все данные с устройства.
    cryptsetup luksFormat /dev/sda3 /media/flash/key
  5. Убедимся в том, что всё прошло хорошо. Первая команда должна написать Success, вторая команда даст информацию по зашифрованному разделу.
    cryptsetup isLuks /dev/sda3 && echo Success
    cryptsetup luksDump /dev/sda3
  6. Для дальнейших действий желательно узнать UUID контейнера з
  7. Открываем /etc/crypttab. В Fedora он пустой, поэтому заполняем его следующим образом:

Замена ключа шифрования

Если ключ скомпрометирован или просто прошло достаточно много времени с начала его использования, его необходимо заменить. Как и прежде, выполняем от рута команды для генерации нового шифрованного ключа, затем добавляем его в зашифрованный контейнер, а старый удаляем.Считаем, что зашифрованное устройство - /dev/sda3, а флэшка смонтирована как /media/flash. Новый ключ будет newkey.

dd if=/dev/random of=/media/flash/newkey bs=1 count=256
chmod 0444 /media/flash/newkey
cryptsetup luksDump /dev/sda3
cryptsetup luksAddKey /dev/sda3 /media/flash/newkey
cryptsetup luksDump /dev/sda3
cryptsetup --key-file /media/flash/newkey luksKillSlot /dev/sda3 0
cryptsetup luksDump /dev/sda3
cryptsetup luksOpen /dev/sda3 crypted --key-file /media/flash/newkey
mount /dev/mapper/crypted /media/crypted