User:c0h2r/Dm-crypt (Русский)/Подготовка диска

From ArchWiki

До шифрования диска настоятельно рекоммендуется произвести безопасную очистку диска путем полной его перезаписи перезаписи с использованием случайных данных. Для предотвращения криптографических атак или нежелательного восстановления файлов file recovery; по-хорошему, такие данные должны быть неотличимы от тех, что в последствии запишет dm-crypt. For a more comprehensive discussion see Data-at-rest encryption#Preparing the disk.

Безопасная очистка диска

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

Warning: Перед очисткой настоятельно рекоммендуется сделать бэкап всей важной инфоармации!
Note: Перезапись больших объемов информации может занять от нескольких часов до нескольких дней.
Tip:
  • Процесс очистки диска на несколько терабайт может занять больше дня. Чтобы не потерять возможность пользоваться компьютером, имеет смысл проводить процедуру с ОС, установленной на другом диске вместо того, чтобы делать это с помощью установщика Arch.
  • Для SSD дисков хорошей практикой является минимизация артифактов кэша флеш-памяти, для этого до выполнения следующих инструкций выполните очистку ячеек памяти SSD.

Неспецифичные методы

Детальные инструкции по подготовке и очистке диска находятся в разделе Securely wipe disk.

Методы, специфичные для dm-crypt

Два следующих метода специфичны для dm-crypt и упомянуты из-за того, что затрачивают мало времени и могут быть произведены полсле разметки диска.

cryptsetup FAQ (item 2.19 "How can I wipe a device with crypto-grade randomness?") описывает, как использовать существующий dm-crypt-раздел чтобы переписать все свободное пространство на диске, используя его как простой генератор псевдослучайных чисел. Также утверждается, что данный метод защищает от раскрытия паттернов использования, поскольку зашифрованная информация практически неотличима от случайных данных.

dm-crypt wipe on an empty disk or partition

Сначала создайте временный шифроконтейнер из раздела (sdXY) или диска (sdX):

# cryptsetup open --type plain -d /dev/urandom /dev/<block-device> to_be_wiped

Чтобы проверить, что раздел создан успешно:

# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda             8:0    0  1.8T  0 disk
└─to_be_wiped 252:0    0  1.8T  0 crypt

Перепишите контейнер нулями. Нет необходимости использовать if=/dev/urandom, поскольку encryption cipher (шифр шифрования? WAT?) is used for randomness.

# dd if=/dev/zero of=/dev/mapper/to_be_wiped status=progress
dd: writing to ‘/dev/mapper/to_be_wiped’: No space left on device
Tip:
  • dd часто используют с флагом bs=, например bs=1M, для increase disk throughput of the operation.
  • Чтобы удостовериться в успехе операции, перепишите раздел то создания контейнера для очистки. После очистки можно воспользоваться коммандой blockdev --getsize64 /dev/mapper/container, чтобы узнать точный размер контейнера. После используйте od, чтобы проверить, перезаписала ли очистка "обнуленные" сектора, например od -j containersize - blocksize покажет, завершен ли вайп.

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

# cryptsetup close to_be_wiped

Если шифруется система, следующим шагом будет #Разметка. Для раздела следуйте инструкциям из dm-crypt/Encrypting a non-root file system#Partition.

Очистка свободного пространства после установки системы с помощью dm-crypt

Если у вас нет времени на вайп до установки, вы можете достичь подобного результата после успешной загрузки и монтирования разделов. Однако следует учесть, что файловая система может зарезервировать пространство для root-пользователя или прочих disk quota, что может помешать очистке, даже если она производится с правами root: перезапись может не затронуть часть блочных девайсов.

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

# dd if=/dev/zero of=/file/in/container status=progress
dd: writing to ‘/file/in/container’: No space left on device

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

# sync
# rm /file/in/container

Вышеперечисленные операции должны быть выполнены для всех созданных разделов. Например, для LVM on LUKS процесс выполняется для каждого логического раздела.

Очистка свободного пространства после установки системы с помощью dm-crypt путем повторного шифрования

Те, кто хочет очистить свободное место без переустановки, могут следовать инструкциям из re-encrypting LUKS devices. Операция производится единожды для каждого LUKS девайса. Стоит заметить, что процесс достаточно медленный (Например, ~50Мб/с на десктопном HDD).

Очистка заголовков LUKS

LUKS-раздел состоит из двух частей, заголовка и шифроданных. Заголовок содержит ключи, без которых практически невозможно расшифровать данные. При создании нового раздела вывода диска из эксплуатации (хз) может иметь смысл удатлить только заголовок вместо очистки всего диска. Случаи, когда это нежелательно см. в примечании внизу этого раздела.

Warning: Будьте внимательны, операция не требует подтверждения. А еще ее нельзя отменить.

Удаление всех ключей выполняется с помощью комманды:

# cryptsetup erase device

Make sure there is no active slots left by invoking:

# cryptsetup luksDump device

Дополнительно можно удалить LUKS заголовок (чтобы cryptsetup не распознавал раздел в будущем) с помощью комманды wipefs после удаления ключей:

# wipefs -a device

В таком случае шифроданные не удаляются и (не)возможность их расшифровки зависит от стойкости используемого алгоритма шифрования. По данным на 2020 год нет известных способов доступа к шифроданным, однако ситуация может измениться в будущем (пер: а на 2021, возможно,есть) . Выбор между полной очисткой диска и удалением ключей или заголовка зависит от пользователя.

В случае некоторых девайсов, в частности - использующих flash память, невозможно быть уверенным в надежности удаления данных. Операционная система может не иметь доступа к расположению LUKS заголовка (и ключей). Если это вас беспокоит, следуйте ATA Secure Erase. Данная операция должна стереть все блоки девайса, включая невидимые для софта. Детали: cryptsetup FAQ 5.19.

Разметка

Инструкции из этой секции применимы только в случае шифрования всей системы. После безопасной очистки диска(ов), нужно выбрать подходящую схему разделов; стоит брать во внимание требования dm-crypt и влияние, которое различные варианты выбора окажут на управление системой.

Необходимо отметить, что практически во всех случаях вам понадобится отделльный незашифрованный раздел /boot, поскольку загрузчик должен иметь доступ к директории /boot откуда будут загружены модули initramfs/encryption, которые в свою очередь необходимы для загрузки системы (подробнее: mkinitcpio). Если для вас это недостаточно безопасно, ознакомьтесь с dm-crypt/Specialties#Securing the unencrypted boot partition.

Также необходимо взять во внимание работу с swap-разделом и механизмами сна/гибернации, см. dm-crypt/Swap encryption.

Физические разделы

В простейшем случае шифруются физические разделы; подробнее о их создании см. Partitioning. Как и в случае незашифрованной системы, достаточно раздела под root ( кроме /boot, как упомянуто выше). Данный метод позволяет самому выбирать, какие разделы будут зашифрованы. Вне зависимости от количества дисков, все работает одинаково. В будущем также возможно добавить или удалить разделы, однако, очевидно, при изменении раздела, вы ограничены размерами диска, на котором он расположен. Наконец, для каждого диска понадобится отдельный пароль, хотя это можетбыть автоматизировано с использованием crypttab файла, см. Dm-crypt/System configuration#crypttab.

Stacked block devices

Впрочем, если предыдущий подход недостаточно гибок, dm-crypt может работать с другими stacked block devices, такими как LVM и RAID. The encrypted containers can either reside below or on top of other stacked block devices:

  • If the LVM/RAID devices are created on top of the encrypted layer, it will be possible to add, remove and resize the file systems of the same encrypted partition liberally, and only one key or passphrase will be required for all of them. Since the encrypted layer resides on a physical partition, though, it will not be possible to exploit the ability of LVM and RAID to span multiple disks.
  • If the encrypted layer is created on top of LVM/RAID devices, it will still be possible to reorganize the file systems in the future, but with added complexity, since the encryption layers will have to be adjusted accordingly. Moreover, separate passphrases or keys will be required to open each encrypted device. This, however, is the only choice for systems that need encrypted file systems to span multiple disks.

Btrfs подразделы

В случае выбора Btrfs, вместе с dm-crypt можно использовать подразделы, вместо LVM, если нет необходимости использовать другие файловые системы. Однако своп-файлы не поддерживались brtrfs до Linux 5.0, так что encrypted swap раздел необходим, если есть необходимость использовать swap с ядром Linux <5.0 (например, linux-lts). См. также Dm-crypt/Encrypting an entire system#Btrfs subvolumes with swap.

Boot раздел (GRUB)

См. dm-crypt/Encrypting an entire system#Encrypted boot partition (GRUB).