User:c0h2r/Dm-crypt (Русский)/Подготовка диска
До шифрования диска настоятельно рекоммендуется произвести безопасную очистку диска путем полной его перезаписи перезаписи с использованием случайных данных. Для предотвращения криптографических атак или нежелательного восстановления файлов file recovery; по-хорошему, такие данные должны быть неотличимы от тех, что в последствии запишет dm-crypt. For a more comprehensive discussion see Data-at-rest encryption#Preparing the disk.
Безопасная очистка диска
Выбирая, какой метод использовать, стоит учесть, что данная операция производится только однажды перед шифрованием диска.
- Процесс очистки диска на несколько терабайт может занять больше дня. Чтобы не потерять возможность пользоваться компьютером, имеет смысл проводить процедуру с ОС, установленной на другом диске вместо того, чтобы делать это с помощью установщика 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
- 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-раздел состоит из двух частей, заголовка и шифроданных. Заголовок содержит ключи, без которых практически невозможно расшифровать данные. При создании нового раздела вывода диска из эксплуатации (хз) может иметь смысл удатлить только заголовок вместо очистки всего диска. Случаи, когда это нежелательно см. в примечании внизу этого раздела.
Удаление всех ключей выполняется с помощью комманды:
# 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).