Обновленное своё же руководство по полнодисковому шифрованию в Рунете V0.2
Ковбойская стратегия:
[A] блочное системное шифрование Windows 7 установленной системы;
[B] блочное системное шифрование GNU/Linux (Debian) установленной системы (включая /boot);
[C] настройка GRUB2, защита загрузчика цифровой подписью/аутентификацией/хэшированием;
[D] зачистка — уничтожение нешифрованных данных;
[E] универсальное резервное копирование зашифрованных ОС;
[F] атака <на п.[C6]> цель — загрузчик GRUB2;
[G] полезная документация.
╭───Схема #комнаты 40# <BIOS/MBR/1HDD без lvm>:
├──╼ Windows 7 установленная — шифрование полное системное, не скрытое;
├──╼ GNU/Linux установленная (Debian и производные дистрибутивы) — шифрование полное системное не скрытое(/, включая /boot; swap);
├──╼ независимые загрузчики: загрузчик VeraCrypt установлен в MBR, загрузчик GRUB2 установлен в расширенный раздел;
├──╼ установка/переустановка ОС не требуется;
└──╼ используемое криптографическое ПО: VeraCrypt; Cryptsetup; GnuPG; Seahorse; Hashdeep; GRUB2 – свободное/бесплатное.
Вышеописанная схема частично решает проблему «выносной boot на флэшку», позволяет наслаждаться зашифрованными OS Windows/Linux и обмениваться данными по «зашифрованному каналу» из одной ОС в другую.
Порядок загрузки ПК (один из вариантов):
- включение машины;
- загрузка загрузчика VeraCrypt (верный ввод пароля продолжит загрузку Windows 7);
- нажатие клавиши «Esc» загрузит загрузчик GRUB2;
- загрузчик GRUB2 (выбор дистрибутива/ GNU/Linux/CLI), затребует аутентификацию GRUB2-суперпользователя <логин/пароль>;
- после успешной аутентификации и выбора дистрибутива, потребуется ввод парольной фразы для разблокировки «/boot/initrd.img»;
- после ввода безошибочных паролей в GRUB2 «потребуется» ввод пароля (третьего по счету, пароль BIOS или пароль учётки пользователя GNU/Linux – not consider) для разблокирования и загрузки ОС GNU/Linux, или автоматическая подстановка секретного ключа (два пароля + ключ, либо пароль+ключ);
- внешнее вторжение в конфигурацию GRUB2 заморозит процесс загрузки GNU/Linux.
Хлопотно? Ок, идём автоматизировать процессы.
При разметке жёсткого диска (таблица MBR) ПК может иметь не более 4-х главных разделов, или 3-х главных и одного расширенного, а также не размеченную область. Расширенный раздел в отличие от главного может содержать подразделы (логические диски=расширенный раздел). Иными словами, «расширенный раздел» на HDD заменяет LVM для текущей задачи: полного системного шифрования. Если ваш диск размечен на 4 главные раздела, вам необходимо использовать lvm, либо трансформировать (с форматированием) раздел с главного на расширенный, либо грамотно воспользоваться всеми четырьмя разделами и оставить всё, как есть, получив желаемый результат. Даже если у вас на диске один раздел, Gparted поможет разбить HDD (на дополнительные разделы) без потери данных, но все же с небольшой расплатой за такие действия.
Схема разметки жёсткого диска, относительно которой пойдет вербализация всей статьи, представлена в таблице ниже.
Таблица (№1) разделов 1Тб.
Что-то подобное должно быть и у вас.
sda1 — главный раздел №1 NTFS (зашифрованный);
sda2 — расширенный раздел маркер;
sda6 — логический диск (на него установлен загрузчик GRUB2);
sda8 — swap (зашифрованный файл подкачки/не всегда);
sda9 — тестовый логический диск;
sda5 — логический диск для любопытных;
sda7 — ОС GNU/Linux (перенесенная ОС на зашифрованный логический диск);
sda3 — главный раздел №2 с ОС Windows 7 (шифрованный);
sda4 — главный раздел №3 (в нем располагалась незашифрованная GNU/Linux, используется под бэкап/не всегда).
[А] Блочное системное шифрование Windows 7
А1. VeraCrypt
Загрузка с официального сайта, либо с зеркала sourceforge установочной версии криптографического ПО VeraCrypt (на момент публикации статьи v1.24-Update3, портативная версия VeraCrypt не подойдет для системного шифрования). Чекните контрольную сумму загруженного софта
$ Certutil -hashfile "C:\VeraCrypt Setup 1.24.exe" SHA256
и сравните полученный результат с выложенной КС на сайте разработчика VeraCrypt.
Если установлено ПО HashTab, ещё проще: ПКМ (VeraCrypt Setup 1.24.exe)-свойства-хэш суммы файлов.
Для проверки подписи программы в системе должны быть установлены ПО и публичный pgp ключ разработчика gnuPG; gpg4win.
А2. Установка/запуск ПО VeraCrypt с правами администратора
А3. Выбор параметров системного шифрования активного раздела
VeraCrypt – Система – Зашифровать системный раздел/диск – Обычный – Зашифровать системный раздел Windows – Мультизагрузка – (предупреждение: «Неопытным пользователям не рекомендуется использовать этот метод» и это правда, соглашаемся «Да») – Загрузочный диск («да», даже если не так, все равно «да») – Число системных дисков «2 и более» – Несколько систем на одном диске «Да» – Не Windows загрузчик «Нет» (а по факту «Да»! Иначе загрузчики VeraCrypt/GRUB2 не поделят MBR между собой, точнее, в MBR/загрузочной дорожке хранится лишь наименьшая часть кода загрузчика, основная его часть располагается в пределах файловой системы) – Мультизагрузка – Настройки параметров шифрования…
Если отклониться от вышеописанных шагов (схемы блочного системного шифрования), то VeraCrypt выкатит предупреждение и не позволит шифровать раздел.
На следующем шаге, к целенаправленной защите данных, проведите «Тест» и выбирайте алгоритм шифрования. Если у вас несовременный CPU, то, возможно, самым быстрым окажется алгоритм шифрования Twofish, его и выбирайте. Если CPU современный, разницу заметите: AES — шифрование по результатам теста будет в несколько раз скоростнее своих криптоконкурентов. AES — самый популярный алгоритм шифрования, аппаратная часть современных CPU специально оптимизирована на «секрет»
так и на «взлом
».
VeraCrypt поддерживает возможность криптовать диски каскадом AES(Twofish)/и другими комбинациями. На старо-ядерном CPU Intel десятилетней давности (без аппаратной поддержки AES-NI, шифрование каскадом А/Т) снижение производительности в сущности незаметное. (у CPU AMD той же эпохи/~параметров —производительность немного снижена). ОС работает в динамике и потребление ресурсов на прозрачное шифрование – незаметное. В отличие, как например, заметное снижение производительности из-за установленного тестового нестабильного desktop environment Mate v1.20.1 (или v1.20.2 точно не помню) в GNU/Linux, или из-за работы подпрограммы сорняка телеметрии в Windows7. Обычно искушённые пользователи до шифрования проводят тесты на производительность железа. Например, в Aida64/Sysbench/systemd-analyze blame и сравнивают с результатами этих же тестов после криптования системы, тем самым, для себя опровергая миф, «системное шифрование — это вредно». Замедление машины и неудобство ощутимо при резервном копировании/восстановлении зашифрованных данных, потому что сама по себе операция «системного резервного копирования данных» измеряется не в мс, и добавляются те самые <расшифровать/зашифровать на лету>. В конечном итоге каждый пользователь, которому разрешено возиться с криптографией, устанавливает баланс алгоритма шифрования относительно удовлетворения поставленных задач, степени своей паранойи и удобством пользования.
Параметр PIM лучше оставить по умолчанию, чтобы при загрузке ОС каждый раз не вводить точные значения итераций. VeraCrypt применяет огромное кол-во итераций для создания действительно «медленного хэша». Атака на такую «криптоулитку» методом Brute force/радужных таблиц имеет смысл только при
короткой
«простой» парольной фразе и персонального charset-листа жертвы. Расплата за стойкость пароля – задержка при верном вводе пароля при загрузке ОС (монтирование томов VeraCrypt в GNU/Linux — существенно быстрее).
Свободный софт для реализации brute force атаки (извлечение парольной фразы из заголовка диска VeraCrypt/LUKS) Hashcat. John the Ripper не умеет «ломать Veracrypt», а при работе с LUKS не понимает криптографию Twofish. К слову, среди некоммерческого софта во всём остальном JtR лучше чем Hashcat.
По причине криптографической стойкости алгоритмов шифрования, неудержимые шифропанки и их антиподы разрабатывают софт с другим вектором атаки. Например, извлечения метаданных/ключей из ОЗУ (атака холодным ботинком/прямым доступом к памяти), кража заголовка LUKS с одновременным перехватом пароля и отправкой сетевых пакетов, возможно, что-то ещё, чего я не знаю. Существует специализированное свободное и несвободное ПО для этих целей.
По окончанию настройки/генерации «уникальных метаданных» шифруемого активного раздела, VeraCrypt предложит перезагрузить ПК и протестировать работоспособность своего загрузчика. После reboot-а/старта Windows, VeraCrypt подгрузится в режиме ожидания, останется лишь подтвердить процесс шифрования — Y.
На финальном шаге системного шифрования VeraCrypt предложит создать резервную копию заголовка активного зашифрованного раздела в виде «veracrypt rescue disk.iso» — сделать нужно обязательно —
в этом софте такая операция является требованием
(в LUKS, как требование – это к сожалению, опущено, но подчёркнуто в документации). Rescue disk пригодится всем, а кому-то и не один раз. Не имея заголовка диска, перенос OS, утеря (перезапись заголовка/MBR) резервной копии заголовка навсегда лишит доступа к дешифрованному разделу с OS Windows.
А4. Создание спасательного usb/диска VeraCrypt
По умолчанию VeraCrypt предлагает прожечь «метаданные ~2-3мБ» на компакт-диск, но не у всех людей есть диски или приводы DWD-ROM-ы, а создание загрузочной флэшки «VeraCrypt Rescue disk» для кого-то окажется техническим сюрпризом: Rufus/GUIdd-ROSA ImageWriter и другой подобный софт — не смогут справиться с поставленной задачей, потому что помимо копирования смещенных метаданных на загрузочную флэшку, нужно из образа сделать copy/paste за пределами файловой системы usb-накопителя, короче, правильно скопировать MBR/дорожу на брелок. Из-под ОС GNU/Linux создать загрузочную флэшку, можно воспользовавшись утилитой «dd», глядя на эту табличку.
Создание спасательного диска в среде Windows — иначе. Разработчик VeraCrypt не включил решение этой задачки в официальную документацию по «rescue disk», но предложил решение другим путем: выложил дополнительное ПО по созданию «usb rescue disk» в свободный доступ, на своём форуме VeraCrypt. Update: 2020г разработчик сжалился над «горемыками» и включил решение по usb rescue disk официально в своей документации.
После сохранения rescue disk.iso начнется процесс блочного системного шифрования активного раздела. Во время шифрования работа ОС не останавливается, перезагрузка ПК не требуется. По завершению операции криптования, активный раздел становится полностью зашифрованным, можно пользоваться. Если при запуске ПК не появляется загрузчик VeraCrypt, и не помогает операция восстановления заголовка, то проверьте флаг «boot», он должен быть установлен на раздел, где присутствует Windows (независимо от шифрования и других ОС, см. таблица №1).
После шифрования системного диска и логических дисков ntfs (одинаковый пароль) добавьте все шифрованные диски в «системное избранное». Далее «настройки» > «системные избранные тома» поставить галочку «монтировать системные избранные тома при старте Windows», при загрузке ОС — все ntfs-диски будут монтироваться автоматом.
На этом описание блочного системного шифрования с ОС Windows закончено.
[B] LUKS. Шифрование GNU/Linux (~Debian) установленной ОС. Алгоритм и Шаги
Для того чтобы зашифровать установленный Debian/производный дистрибутив, требуется сопоставить подготовленный раздел с виртуальным блочным устройством, перенести на сопоставленный диск GNU/Linux, и установить/настроить GRUB2. Если у вас не голый сервер, и вы дорожите своим временем, то пользоваться необходимо GUI, а большинство терминальных команд, описанных ниже, подразумевается водить в «режиме Чак-Норрис».
B1. Загрузка ПК с live usb GNU/Linux
«Провести криптотест на производительность железа»
lscpu && сryptsetup benchmark
Если вы счастливый владелец мощной тачки с аппаратной поддержкой AES-NI, то цифры будут похожи на правую часть терминала, если вы счастливый, но с античным железом — на левую часть.
Провести подобные тесты до и после шифрования ОС. Сравнить данные.
B2. Разметка диска. монтирование/форматирование фс логического диска HDD в Ext4 (Gparted)
B2.1. Создание зашифрованного заголовка раздела sda7
Описывать имена разделов, здесь и далее, буду согласно относительно своей таблицы разделов, выложенной выше. Согласно вашей разметке диска, вы должны подставлять свои имена разделов.
Сопоставление шифрования логического диска (/dev/sda7 > /dev/mapper/sda7_crypt).
#Простое создание «LUKS-AES-XTS раздела»
cryptsetup -v -y luksFormat /dev/sda7
Опции:
* luksFormat -инициализация LUKS заголовка;
* -y -парольная фраза (не ключ/файл);
* -v -вербализация (вывод информации в терминале);
* /dev/sda7 -ваш логический диск из расширенного раздела (туда, куда планируется перенос/шифрование GNU/Linux).
По умолчанию алгоритм шифрования <LUKS1: aes-xts-plain64, Key: 256 bits, LUKS header hashing: sha256, RNG: /dev/urandom> (зависит от версии cryptsetup).
#Проверка default-алгоритма шифрования
cryptsetup --help #самая последняя строка в выводе терминала.
При отсутствии аппаратной поддержки AES на CPU, лучшим выбором будет создание расширенного «LUKS-Twofish-XTS-раздела».
B2.2. Расширенное создание «LUKS-Twofish-XTS-раздела»
cryptsetup luksFormat /dev/sda7 -v -y -c twofish-xts-plain64 -s 512 -h sha512 -i 1500 --use-urandom
Опции:
* luksFormat -инициализация LUKS заголовка;
* /dev/sda7 ваш будущий зашифрованный логический диск;
* -v вербализация;
* -y запрос подтверждения парольной фразы;
* -c выбор алгоритма шифрования данных;
* -s размер ключа шифрования;
* -h алгоритм хеширования/криптофункция, используется ГСЧ (—use-urandom) для генерации уникального ключа шифрования/дешифрирования заголовка логического диска, вторичного ключа заголовка (XTS); уникального мастер ключа хранящегося в зашифрованном заголовке диска, вторичного XTS ключа, все эти метаданные и подпрограмма шифрования, которая с помощью мастер ключа и вторичного XTS-ключа шифруют/дешифруют любые данные на разделе (кроме заголовка раздела) хранятся в ~3мБ на выбранном разделе жёсткого диска.
* -i Время итерации PBKDF для LUKS (в мс) (задержка по времени при обработке парольной фразы, влияет на загрузку ОС и криптостойкость ключей). Для сохранения баланса криптостойкости при простом пароле типа «russian» требуется увеличивать значение -(i), при сложном пароле типа «?8dƱob/øfh» значение можно уменьшать.
* —use-urandom генератор случайных чисел, генерирует ключи и соль.
После сопоставления раздела sda7 > sda7_crypt (операция быстрая, так как создаётся зашифрованный заголовок с метаданными ~3 мБ и на этом всё), нужно отформатировать и смонтировать файловую систему sda7_crypt.
B2.3. Сопоставление
cryptsetup open /dev/sda7 sda7_crypt
#выполнение данной команды запрашивает ввод секретной парольной фразы.
опции:
* open -сопоставить раздел «с именем»;
* /dev/sda7 -логический диск;
* sda7_crypt -сопоставление имени, которое используется для монтирования зашифрованного раздела или его инициализации при загрузке ОС.
B2.4. Форматирование файловой системы sda7_crypt в ext4. Монтирование диска в ОС
(Примечание: в Gparted работать с шифрованным разделом уже не получится)
#форматирование блочного шифрованного устройства
mkfs.ext4 -v -L DebSHIFR /dev/mapper/sda7_crypt
опции:
* -v -вербализация;
* -L -метка диска (которая отображается в проводнике среди других дисков).
Далее, следует примонтировать виртуальное-шифрованное блочное устройство /dev/sda7_crypt в систему
mount /dev/mapper/sda7_crypt /mnt
Работа с файлами в папке /mnt приведёт к автоматическому шифрованию/дешифрированию данных на лету в sda7.
Удобнее сопоставлять и монтировать раздел в проводнике (nautilus/caja GUI), раздел уже будет в списке выбора дисков, останется ввести только парольную фразу для открытия/расшифрования диска. Сопоставляемое имя при этом будет выбрано автоматически и не «sda7_crypt», а что-то вроде /dev/mapper/Luks-xx-xx…
B2.5. Резервное копирование заголовка диска (метаданные ~3мБ)
Одна из самых важных операций, которую необходимо сделать, не откладывая — резервная копия заголовка «sda7_crypt». Если перезаписать/повредить заголовок (например, установкой GRUB2 в раздел sda7 и тд.), зашифрованные данные будут потеряны окончательно без какой-либо возможности их восстановить, потому что невозможно будет повторно сгенерировать одинаковые ключи, ключи создаются уникальные.
#Бэкап заголовка раздела
cryptsetup luksHeaderBackup --header-backup-file ~/Бэкап_DebSHIFR /dev/sda7
#Восстановление заголовка раздела
cryptsetup luksHeaderRestore --header-backup-file <file> <device>
опции:
* luksHeaderBackup —header-backup-file -команда бэкап;
* luksHeaderRestore —header-backup-file -команда восстановления;
* ~/Бэкап_DebSHIFR — файл резервной копии;
* /dev/sda7 -раздел, чью резервную копию шифрованного заголовка диска требуется сохранить.
Заметка. Не пытайтесь восстановить заголовок LUKS-раздела от [sdaX] на [sdaY], большинство юзернэймов потерпит неудачу.
На этом шаге <создание и редактирование зашифрованного раздела> закончено.
B3. Перенос ОС GNU/Linux (sda4) на зашифрованный раздел (sda7)
Заметка. Перед переносом ОС на шифрованный раздел рекомендуется удалить лишний кэшированный хлам (подобный хлам можно найти с помощью ПО BleachBit), например, в моем случае это были несколько сотен тысяч мелких файлов /var/cache/fontconfig/* и /home/user/.cache/fontconfig/*
Если зачистили fontconfig-файлы, сделать $ fc-cache -fvr
Создаём папку /mnt2 (Примечание — мы всё ещё работаем с live usb, в точку /mnt смонтирован sda7_crypt), и монтируем наш GNU/Linux в /mnt2, который необходимо зашифровать.
mkdir /mnt2
mount /dev/sda4 /mnt2
Осуществляем корректный перенос ОС с помощью ПО Rsync
rsync -avlxhHX --progress /mnt2/ /mnt
Опции Rsync описаны в п.E1.
Далее, необходимо провести дефрагментацию раздела логического диска
e4defrag -c /mnt/ #после проверки, e4defrag выдаст, что степень дефрагментации раздела ≈ 0, это заблуждение, которое может вам стоить существенной потери производительности!
e4defrag /mnt/ #проводим дефрагментацию шифрованной GNU/Linux
Возьмите за правило: делать e4defrag на зашифрованной GNU/Linux время от времени если у Вас HDD.
Перенос и синхронизация [GNU/Linux > GNU/Linux-зашифрованная] на этом шаге закончены.
В4. Настройка GNU/Linux на зашифрованном разделе sda7
После успешного переноса ОС /dev/sda4 > /dev/sda7 необходимо войти в GNU/Linux на зашифрованном разделе, и осуществить дальнейшую настройку (без перезагрузки ПК) относительно зашифрованной системы. То есть находиться в live usb, но команды выполнять «относительно корня шифрованной ОС». Симулировать подобную ситуацию будет «chroot». Чтобы оперативно получать информацию с какой ОС вы в данный момент времени работаете (в шифрованной или нет, так как данные в sda4 и sda7 синхронизированы), рассинхронизируйте ОС-ы. Создайте в корневых каталогах (sda4/sda7_crypt) пустые файлы-маркеры, например, /mnt/шифрованнаяОС и /mnt2/дешифрованнаяОС. Быстрая проверка в какой ОС вы находитесь (в том числе и на будущее):
ls /<Tab-Tab>
B4.1. «Симуляция входа в зашифрованную ОС»
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
B4.2. Проверка, что работа осуществляется относительно зашифрованной системы
ls /mnt<Tab-Tab>
#и видим файл "/шифрованнаяОС"
history
#в выводе терминала должна появиться история команд su рабочей ОС.
B4.3. Создание/настройка зашифрованного swap
Так как файл подкачки при каждом старте ОС форматируется, то не имеет смысла создавать и сопоставлять swap с логическим диском сейчас, и набивать команды, как в п.B2.2. Для Swap-а при каждом старте будут автоматически генерироваться свои временные шифровальные ключи. Жизненный цикл ключей swap-a: размонтирование/отключение swap-раздела (+очистка ОЗУ); или перезапуск ОС. Настройка swap, открываем файл, отвечающий за конфигурацию блочных шифрованных устройств (аналог fstab-файла, но отвечающий за крипто).
nano /etc/crypttab
правим
#«target name» «source device» «key file» «options»
swap /dev/sda8 /dev/urandom swap,cipher=twofish-xts-plain64,size=512,hash=sha512
Опции
* swap -сопоставленное имя при шифровании /dev/mapper/swap.
* /dev/sda8 -используйте ваш логический раздел под swap.
* /dev/urandom -генератор случайных ключей шифрования для swap (с каждой новой загрузкой ОС — созданные новые ключи). Генератор /dev/urandom менее случайный, чем /dev/random, как-никак /dev/random используется при работе в опасных параноидальных обстоятельствах. При загрузке ОС /dev/random тормозит загрузку на несколько ± минут (см. systemd-analyze).
* swap,cipher=twofish-xts-plain64,size=512,hash=sha512: -раздел знает, что он swap и форматируется «соответственно»; алгоритм шифрования.
#Открываем и правим fstab
nano /etc/fstab
правим
# swap was on /dev/sda8 during installation
/dev/mapper/swap none swap sw 0 0
/dev/mapper/swap -имя , которое задали в crypttab.
Альтернативный зашифрованный swap
Если по каким-то причинам вы не хотите отдавать целый раздел под файл подкачки, то можно пойти альтернативным и лучшим путём: создание файла подкачки в файле на зашифрованном разделе с ОС.
fallocate -l 3G /swap #создание файла размером 3Гб (почти мгновенная операция). На некоторых VPS может быть последующая ошибка, в таком случае
#dd if=/dev/zero of=/swap bs=1MiB count=3000
chmod 600 /swap #настройка прав
mkswap /swap #из файла создаём файл подкачки
swapon /swap #включаем наш swap
free -m #проверяем, что файл подкачки активирован и работает
printf "/swap none swap sw 0 0" >> /etc/fstab #при необходимости после перезагрузки swap будет постоянный
Настройка раздела подкачки завершена.
B4.4. Настройка зашифрованной GNU/Linux (правка файлов crypttab/fstab)
Файл /etc/crypttab, как написал выше, описывает зашифрованные блочные устройства, которые настраиваются во время загрузки системы.
#правим /etc/crypttab
nano /etc/crypttab
если сопоставляли раздел sda7>sda7_crypt как в п.B2.1
# «target name» «source device» «key file» «options»
sda7_crypt UUID=81048598-5bb9-4a53-af92-f3f9e709e2f2 none luks
если сопоставляли раздел sda7>sda7_crypt как в п.B2.2
# «target name» «source device» «key file» «options»
sda7_crypt UUID=81048598-5bb9-4a53-af92-f3f9e709e2f2 none cipher=twofish-xts-plain64,size=512,hash=sha512
если сопоставляли раздел sda7>sda7_crypt как в п.B2.1 or B2.2, но не хотите повторно вводить пароль для разблокировки и загрузки ОС, то вместо пароля можно подставить секретный ключ/случайный файл
# «target name» «source device» «key file» «options»
sda7_crypt UUID=81048598-5bb9-4a53-af92-f3f9e709e2f2 /etc/skey luks
Описание
* none -сообщает, что при загрузке ОС, для разблокировки корня требуется ввод секретной парольной фразы.
* UUID -идентификатор раздела. Чтобы узнать свой идентификатор набираете в терминале (напоминание, что всё это время и далее, вы работаете в терминале в среде chroot, а не в другом терминале live usb).
fdisk -l #проверка всех разделов
blkid #должно быть что-то подобное
/dev/sda7: UUID=«81048598-5bb9-4a53-af92-f3f9e709e2f2» TYPE=«crypto_LUKS» PARTUUID=«0332d73c-07»
/dev/mapper/sda7_crypt: LABEL=«DebSHIFR» UUID=«382111a2-f993-403c-aa2e-292b5eac4780» TYPE=«ext4»
эту строчку видно при запросе blkid из терминала live usb при смонтированном sda7_crypt).
UUID берете именно от вашего sdaX (не sdaX_crypt!, UUID sdaX_crypt – автоматом уйдет при генерации конфига grub.cfg).
* cipher=twofish-xts-plain64,size=512,hash=sha512 -luks шифрование в расширенном режиме.
* /etc/skey -секретный файл-ключ, который подставляется автоматически для разблокировки загрузки ОС (вместо ввода 3-го пароля). Файл можно указать любой до 8мБ, но считываться данные будут <1мБ.
#Создание "генерация" случайного файла <секретного ключа> размером 691б.
head -c 691 /dev/urandom > /etc/skey
#Добавление секретного ключа (691б) в 7-й слот заголовка luks
cryptsetup luksAddKey --key-slot 7 /dev/sda7 /etc/skey
#Проверка слотов "пароли/ключи luks-раздела"
cryptsetup luksDump /dev/sda7
Выглядеть будет примерно так:
(Сделайте сами и сами увидите. Если шифруете в 2020г., то вывод будет в LUKS2, если ранее, вывод будет в LUKS1. Примечание автора — в LUKS1 информативнее и красивее вывод в CLI).
# Check "неизвестного раздела"
file -s /dev/sda7
/dev/sda7: LUKS encrypted file, ver 1 [twofish, xts-plain64, sha512] UUID: ХХХХ-- #в случае если LUKS
/dev/sda7: data #в случае если VeraCrypt
cryptsetup luksKillSlot /dev/sda7 7 #удаление ключа/пароля из 7 слота
/etc/fstab содержит описательную информацию о различных файловых системах.
#Правим /etc/fstab
nano /etc/fstab
# «file system» «mount poin» «type» «options» «dump» «pass»
# / was on /dev/sda7 during installation
/dev/mapper/sda7_crypt / ext4 errors=remount-ro 0 1
опция
* /dev/mapper/sda7_crypt -имя сопоставления sda7>sda7_crypt, которое указано в файле /etc/crypttab.
Настройка crypttab/fstab закончена.
B4.5. Редактирование файлов конфигурации. Ключевой момент
B4.5.1. Редактирование конфига /etc/initramfs-tools/conf.d/resume
#Если у вас ранее был активирован swap раздел, отключите его.
nano /etc/initramfs-tools/conf.d/resume
и закомментируйте (если существует) «#» строчку «resume». Файл должен быть полностью пустой.
B4.5.2. Редактирование конфига /etc/initramfs-tools/conf.d/cryptsetup
nano /etc/initramfs-tools/conf.d/cryptsetup
должно соответствовать
# /etc/initramfs-tools/conf.d/cryptsetup
CRYPTSETUP=yes
export CRYPTSETUP
B4.5.3. Редактирование конфига /etc/default/grub (именно этот конфиг отвечает за умение генерировать grub.cfg при работе с зашифрованным /boot)
nano /etc/default/grub
добавляем строку «GRUB_ENABLE_CRYPTODISK=y»
значение ‘y’, grub-mkconfig и grub-install будут проверять наличие зашифрованных дисков и генерировать дополнительные команды, необходимые для их доступа во время загрузки (insmod-ы <cryptomount/set root>).
должно быть подобие
GRUB_DEFAULT=0
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=«acpi_backlight=vendor»
GRUB_CMDLINE_LINUX=«quiet splash noautomount»
GRUB_ENABLE_CRYPTODISK=y
B4.5.4. Редактирование конфига /etc/cryptsetup-initramfs/conf-hook
nano /etc/cryptsetup-initramfs/conf-hook
проверьте, что строка <CRYPTSETUP=y> закомментирована <#>.
В будущем (и даже уже сейчас, этот параметр не будет иметь никакого значения, но иногда он мешает обновлять образ initrd.img).
В конец файла добавляем:
KEYFILE_PATTERN=»/etc/skey»
UMASK=0077
Это упакует секретный ключ «skey» в initrd.img, ключ необходим для разблокировки корня при загрузке ОС (если нет желания при загрузке ОС дважды вводить свой пароль автоподставляется секретный ключ «skey» (пароль + ключ) см. п.B4.4).
B4.6. Обновление /boot/initrd.img [version]
Чтобы упаковать секретный ключ в initrd.img и применить исправления cryptsetup, обновляем образ
update-initramfs -u -k all
при обновлении initrd.img (как говорится «Возможно, но это не точно») появятся предупреждения, связанные с cryptsetup, или, например, уведомление о потере модулей Nvidia — это нормальное явление. После обновления файла, проверяйте, что он действительно обновился см. по времени (относительно chroot среды./boot/initrd.img). Внимание! перед [update-initramfs -u -k all] обязательно проверить, что cryptsetup open /dev/sda7 sda7_crypt — именно это имя должно быть, которое фигурирует в /etc/crypttab, иначе после reboot-a ошибка busybox)
На этом шаге настройка файлов конфигурации завершена.
[С] Установка и настройка GRUB2/Защита
C1. При необходимости отформатируйте выделенный раздел для загрузчика (разделу достаточно не менее 20мБ)
mkfs.ext4 -v -L GRUB2 /dev/sda6
C2. Монтирование /dev/sda6 в /mnt
Так мы работаем в chroot, то в корне не будет каталога /mnt2, а папка /mnt — будет пустой.
монтируем раздел GRUB2
mount /dev/sda6 /mnt
Если у вас установлена старая версия GRUB2, в каталоге /mnt/boot/grub/i-386-pc (возможна другая платформа, например, не «i386-pc») отсутствуют криптомодули (короче, в папке должны находиться модули, включая эти .mod: cryptodisk; luks; gcry_twofish; gcry_sha512; signature_test.mod), в таком случае GRUB2 необходимо встряхнуть.
apt-get update
apt-get install grub2
Важно! Во время обновления пакета GRUB2 из репозитория, на вопрос «о выборе» в какое место устанавливать загрузчик – необходимо отказаться от инсталляции (причина — попытка установки GRUB2 — в «MBR» или на live usb). В противном случае вы повредите заголовок/загрузчик VeraCrypt. После обновления пакетов GRUB2, и отмены установки, загрузчик нужно инсталлировать вручную на логический диск, а не в «MBR». Если в вашем репозитории устаревшая версия GRUB2, попробуйте апдейтить его с официального сайта – не проверял (работал со свежими загрузчиками GRUB 2.02 ~BetaX).
C3. Инсталляция GRUB2 в расширенный раздел [sda6]
У вас должен быть смонтирован раздел [п.C.2]
grub-install --force --root-directory=/mnt /dev/sda6
опции
* —force -установка загрузчика, минуя все предупреждения, которые практически всегда существуют и блокируют установку (обязательный флаг).
* —root-directory -установка каталога <boot/grub> в корень sda6.
* /dev/sda6 -ваш sdaХ раздел (не пропустите <пробел> между /mnt /dev/sda6).
C4. Создание файла конфигурации [grub.cfg]
Забудьте о команде «update-grub2», и используйте полноценную команду генерации файла конфигурации
grub-mkconfig -o /mnt/boot/grub/grub.cfg
после завершения генерации/обновления файла grub.cfg, в терминале вывода должны быть строчки(а) с найденными ОС на диске («grub-mkconfig» возможно найдет и подхватит ОС с live usb, если у вас мультизагрузочная флэшка с Windows 10 и кучей живых дистрибутивов — это нормально). Если в терминале «пусто», файл «grub.cfg» не сгенерирован, то это тот самый случай, когда в системе GRUBые баги (и скорее всего загрузчик из тестовой ветки репозитория), переустановите GRUB2 из надежных источников.
Установка «простая конфигурация» и настройка GRUB2 завершена.
C5. Proof-test зашифрованной ОС GNU/Linux
Корректно завершаем криптомиссию. Аккуратно покидаем зашифрованную GNU/Linux (выход из среды chroot).
umount -a #размонтирование всех смонтированных разделов шифрованной GNU/Linux
Ctrl+d #выход из среды chroot
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount -a #размонтирование всех смонтированных разделов на live usb
reboot
#извлекаем флэшку.
После перезагрузки ПК должен загрузиться загрузчик VeraCrypt.
*Ввод пароля для активного раздела — начнется загрузка ОС Windows.
*Нажатие клавиши «Esc» передаст управление GRUB2, при выборе зашифрованной GNU/Linux – потребуется пароль (sda7_crypt) для разблокировки /boot/initrd.img (если grub2 пишет uuid «не найден» — это проблема загрузчика grub2, его следует переустановить, например, с тестовой ветки/стабильный и пд).
*В зависимости от того, как вы настроили систему (см. п.B4.4/4.5) после верного ввода пароля для разблокировки образа /boot/initrd.img, потребуется пароль для загрузки ядра/корня ОС, либо автоматически подставится секретный ключ «skey», избавляя от повторного ввода парольной фразы.
(скрин «автоматическая подстановка секретного ключа»).
*Далее понесется знакомый процесс загрузки GNU/Linux с аутентификацией учетки пользователя.
*После авторизации пользователя и входа в ОС, нужно повторно обновить /boot/initrd.img (см В4.6).
update-initramfs -u -k all
А в случае лишних строк в меню GRUB2 (из подхвата ОС-м с live usb) избавиться от них
mount /dev/sda6 /mnt
grub-mkconfig -o /mnt/boot/grub/grub.cfg
Краткий итог по системному шифрованию GNU/Linux:
- GNU/Linux зашифрован полностью, включая /boot/kernel and initrd;
- секретный ключ упакован в initrd.img;
- текущая схема авторизации (ввод пароля на разблокировку initrd; пароль/ключ на загрузку ОС; пароль авторизации учетки Linux).
«Простая конфигурация GRUB2» системное шифрование блочного раздела закончено.
С6. Расширенная настройка GRUB2. Защита загрузчика цифровой подписью + защита аутентификацией
GNU/Linux зашифрован полностью, но загрузчик шифровать нельзя – такое условие продиктовано BIOS. По этой причине цепочная зашифрованная загрузка GRUB2 невозможна, но возможна/доступна простая цепочная загрузка, с точки зрения защиты – не нужно [см. П. F].
Для «уязвимого» GRUB2 разработчики реализовали алгоритм защиты загрузчика «подписью/аутентификацией».
- При защите загрузчика «своей цифровой подписью» внешняя модификация файлов, либо попытка загрузить в данном загрузчике дополнительные модули – приведет процесс загрузки к блокировке.
- При защите загрузчика аутентификацией для выбора загрузки какого-либо дистрибутива, либо ввод дополнительных команд в CLI, потребуется ввести логин и пароль суперпользователя-GRUB2.
С6.1. Защита загрузчика аутентификацией
Проверьте, что вы работаете в терминале в зашифрованной ОС
ls /<Tab-Tab> #обнаружить файл-маркер
создайте пароль суперпользователя для авторизации в GRUB2
grub-mkpasswd-pbkdf2 #введите/повторите пароль суперпользователя.
Получите хэш пароля. Что-то похоже на это
grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
монтируем раздел GRUB
mount /dev/sda6 /mnt
редактируем конфиг
nano -$ /mnt/boot/grub/grub.cfg
проверьте поиск по файлу, что в «grub.cfg» отсутствуют где-либо флаги (» —unrestricted» «—user»,
добавьте в самом конце (перед строкой ### END /etc/grub.d/41_custom ###)
«set superusers=»root»
password_pbkdf2 root хэш».
Должно быть примерно так
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the ‘exec tail’ line above.
### END /etc/grub.d/40_custom ###### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z «${config_directory}» -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
### END /etc/grub.d/41_custom ###
#
Если вы часто пользуетесь командой «grub-mkconfig -o /mnt/boot/grub/grub.cfg» и не хотите вносить каждый раз изменения в grub.cfg, занесите вышеописанные строки (логин/пароль) в пользовательский скрипт GRUB-а в самый низ
nano /etc/grub.d/41_custom
cat << EOF
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
EOF
При генерации конфига «grub-mkconfig -o /mnt/boot/grub/grub.cfg», строки, отвечающие за аутентификацию, будут добавляться автоматически в grub.cfg.
На этом шаге настройка аутентификации GRUB2 завершена.
С6.2. Защита загрузчика цифровой подписью
Предполагается, что у вас уже есть ваш персональный pgp-ключ шифрования (либо создайте такой ключ). В системе должно быть установлено криптографическое ПО: gnuPG; kleopatra/GPA; Seahorse. Крипто-ПО существенно облегчит вам жизнь во всех подобных делах. Seahorse — стабильная версия пакета 3.14.0 (версии выше, например, V3.20 – неполноценная и имеет существенные баги).
PGP-ключ нужно генерировать/запускать/добавлять только в среде su!
Сгенерировать персональный шифровальный ключ
gpg - -gen-key
Экспортировать свой ключ
gpg --export -o ~/perskey
Смонтируйте логический диск в ОС если он ещё не смонтирован
mount /dev/sda6 /mnt #sda6 – раздел GRUB2
очистите раздел GRUB2
rm -rf /mnt/
Инсталлируйте GRUB2 в sda6, положив ваш персональный ключ в основной образ GRUB «core.img»
grub-install --force --modules="gcry_sha256 gcry_sha512 signature_test gcry_dsa gcry_rsa" -k ~/perskey --root-directory=/mnt /dev/sda6
опции
* —force -установка загрузчика, минуя все предупреждения, которые всегда существуют (обязательный флаг).
* —modules=«gcry_sha256 gcry_sha512 signature_test gcry_dsa gcry_rsa» -инструктирует GRUB2 на предварительную загрузку необходимых модулей при запуске ПК.
* -k ~/perskey -путь до «PGP-ключа» (после упаковывания ключа в образ, его можно удалить).
* —root-directory -установка каталога boot в корень sda6
/dev/sda6 -ваш sdaХ раздел.
Генерируем/обновляем grub.cfg
grub-mkconfig -o /mnt/boot/grub/grub.cfg
Добавляем в конец файла «grub.cfg» строку «trust /boot/grub/perskey» (принудительно использовать pgp-ключ.) Так как мы инсталлировали GRUB2 с набором модулей, в том числе и модулем подписи «signature_test.mod», то это избавляет от добавления в конфиг команд типо «set check_signatures=enforce».
Выглядеть должно примерно так (концевые строки в файле grub.cfg)
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z «${config_directory}» -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
trust /boot/grub/perskey
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
### END /etc/grub.d/41_custom ###
#
Путь к «/boot/grub/perskey» не нужно указывать на конкретный раздел диска, например hd0,6, для себя загрузчика «корень» является дефолтным путем раздела, на который установлен GRUB2 (см. set rot=..).
Подписываем GRUB2 (все файлы во всех директориях /GRUB) своим ключом «perskey».
Простое решение, как подписать (для проводника nautilus/caja): устанавливаем из репозитория расширение «seahorse» для проводника. Ключ у вас должен быть добавлен в среду su.
Открываете проводник от sudo «/mnt/boot» – ПКМ – подписать. На скрине это выглядит это так
Сам ключ «/mnt/boot/grub/perskey» (скопировать в каталог grub) тоже должен быть подписан своей же подписью. Проверьте, что в каталоге/подкаталогах появились подписи файлов [*.sig].
Вышеописанным способом подписываем «/boot» (наши kernel, initrd). Если ваше время чего-то стоит, то такой метод избавляет писать bash-скрипт для подписи «множества файлов».
Чтобы удалить все подписи загрузчика (если что-то пошло не так)
rm -f $(find /mnt/boot/grub -type f -name '*.sig')
Что бы не подписывать загрузчик после обновления системы, замораживаем все пакеты обновления, имеющие отношение к GRUB2.
apt-mark hold grub-common grub-pc grub-pc-bin grub2 grub2-common
На этом шаге <защита загрузчика цифровой подписью> расширенная настройка GRUB2 завершена.
C6.3. Proof-test загрузчика GRUB2, защищенного цифровой подписью и аутентификацией
GRUB2. При выборе какого-либо дистрибутива GNU/Linux или вход в CLI (командную строку) потребуется авторизация суперпользователя. После ввода верного логина/пароля потребуется пароль от initrd
Скрин, успешная аутентификация GRUB2-суперпользователя.
Если подделать какой-либо из файлов GRUB2/внести изменения в grub.cfg, или удалить файл/подпись, подгрузить вредоносный модуль.mod, то появится соответствующее предупреждение. Загрузка GRUB2 приостановится.
Скрин, попытка вмешаться в GRUB2 «из вне».
При «нормальной» загрузке «без вторжения», системный статус кода выхода «0». Поэтому неизвестно работает ли защита или нет (то есть «с защитой загрузчика подписью или без неё» при нормальной загрузке статус один и тот же «0» — это плохо).
Как проверить защиту цифровой подписью?
Неудобный способ проверки: подделать/удалить используемый GRUB2 модуль, например, удалить подпись luks.mod.sig и получить ошибку.
Правильный способ: зайти в CLI загрузчика и набрать команду
trust_list
В ответ должны получить отпечаток «perskey», если статус «0», значит защита подписью не работает, перепроверяйте п.C6.2.
На этом шаге расширенная настройка «Защита GRUB2 цифровой подписью и аутентификацией» окончена.
С7 Альтернативный метод защиты загрузчика GRUB2 с помощью хэширования
Описанный выше способ «Защита загрузчика ЦП/Аутентификацией» — это классика. Из-за несовершенства GRUB2, в параноидальных условиях тот подвержен реальной атаке, которую я приведу ниже в п.[F]. Кроме того, после обновления ОС/ядра необходимо переподписывать загрузчик.
Защита загрузчика GRUB2 с помощью хэширования
Преимущества перед классикой:
- Более высокий уровень надежности/оповещения (хэширование/проверка проходит только с зашифрованного локального ресурса. Контролируется весь выделенный раздел под GRUB2 на любые изменения, а всё остальное зашифровано, в классической же схеме с защитой загрузчика ЦП/Аутентификацией контролируются лишь файлы, но не свободное пространство, в которое «что-то зловещее» можно дописать и контроль этот осуществляется с незашифрованного локального ресурса).
- Зашифрованное логирование (в схему добавляется удобочитаемый, персональный, шифрованный лог).
- Скорость (защита/проверка целого раздела выделенного под GRUB2 происходит практически мгновенно).
- Автоматизация всех криптографических процессов.
Недостатки перед классикой.
- Подделка подписи (теоретически, возможно нахождение заданной коллизии хэш функции).
- The Worst Evil Script (вектор атаки/условие: подмена загрузчика и загрузка не с GRUB контролируемого раздела, а с usb-брелка/другой микросхемы, система/хозяин не будут оповещены о вторжении в цитадель, а вредоносный модуль передаст перехваченные pass/заголовок_LUKS по сети недоброжелателю).
- Повышенный уровень сложности (по сравнению с классикой требуется чуть больше навыков владения в ОС GNU/Linux).
И общая проблема — аппаратные кейлоггеры, которые открыто продаются не только с Поднебесной.
Как работает идея с хэшированием GRUB2/раздела
«Подписывается» раздел GRUB2, при загрузке ОС происходит проверка неизменности раздела загрузчика с последующим логированием в безопасной среде (зашифрованной). В случае компрометации загрузчика, либо его раздела во время работы ОС, в дополнение к логу вторжения запускается такая
Штука.
Те же действия вторжения, но во время загрузки ОС с раздела GRUB, save log, ПК выключается и не даёт зловреду передать перехваченный pas/заголовок_LUKS по сети.
В случае атаки The Worst Evil Script хозяин обязан форматнуть
раздел
винт с обязательной перезаписью данных в один проход (либо перешифровать cryptsetup reencrypt), простое уничтожение заголовка LUKS не поможет.
Четыре раза в день происходит проверка хэширования раздела GRUB, которая не нагружает ресурсы системы.
С помощью команды «-$ проверка_GRUB» происходит мгновенная проверка в любой момент времени без логирования, но с выводом информации в CLI.
С помощью команды «-$ sudo подпись_GRUB» происходит мгновенное переподписание загрузчика GRUB2/раздела и его обновленное логирование (необходимо после обновления ОС/boot), и жизнь продолжается дальше.
Реализация метода хэширования загрузчика и его раздела
0) Подпишем загрузчик/раздел GRUB, предварительно смонтировав его в /media/username
-$ hashdeep -c md5 -r /media/username/GRUB > /podpis.txt
1) Создаём скрипт без расширения в корне зашифрованной ОС /podpis, применяем к нему нужные права 744 секьюрити и защита от «дурака».
Наполняем его содержимое
#!/bin/bash
#Проверка всего раздела выделенного под загрузчик GRUB2 на неизменность.
#Ведется лог "о вторжении/успешной проверке каталога", короче говоря ведется полный лог с тройной вербализацией. Внимание! обратить взор на пути: хранить ЦП GRUB2 только на зашифрованном разделе OS GNU/Linux.
echo -e "******************************************************************\n" >> '/var/log/podpis.txt' && date >> '/var/log/podpis.txt' && hashdeep -vvv -a -k '/podpis.txt' -r '/media/username/GRUB' >> '/var/log/podpis.txt'
a=`tail '/var/log/podpis.txt' | grep failed` #не использовать "cat"!!
b="hashdeep: Audit failed"
#Условие: в случае любых каких-либо изменений в разделе выделенном под GRUB2 к полному логу пишется второй отдельный краткий лог "только о вторжении" и выводится на монитор мигание gif-ки "warning".
if [[ "$a" = "$b" ]]
then
echo -e "****\n" >> '/var/log/vtorjenie.txt' && echo "vtorjenie" >> '/var/log/vtorjenie.txt' && date >> '/var/log/vtorjenie.txt' & sudo -u username DISPLAY=:0 eom '/warning.gif'
fi
Запускаем скрипт от su, произойдет проверка хэширования раздела GRUB и его загрузчика, save лог.
Создадим или скопируем, например, «вредоносный файл» [virus.mod] в раздел GRUB2 и запустим временную проверку/тестирования:
-$ hashdeep -vvv -a -k '/podpis.txt' -r '/media/username/GRUB
В CLI должны увидеть вторжение в нашу -цитадель-
#Урезанный лог в CLI
Ср янв 2 11::41 MSK 2020
/media/username/GRUB/boot/grub/virus.mod: Moved from /media/username/GRUB/1nononoshifr
/media/username/GRUB/boot/grub/i386-pc/mda_text.mod: Ok
/media/username/GRUB/boot/grub/grub.cfg: Ok
hashdeep: Audit failed
Input files examined: 0
Known files expecting: 0
Files matched: 325
Files partially matched: 0
Files moved: 1
New files found: 0
Known files not found: 0
#как видим появилось «Files moved: 1 и Audit failed» означает, что проверка не прошла.
Из-за особенностей тестируемого раздела вместо «New files found» > «Files moved»
2) Кладём гифку сюда > /warning.gif, задаем права 744.
3) Настраиваем fstab на автомонтирование раздела GRUB при загрузке
-$ sudo nano /etc/fstab
LABEL=GRUB /media/username/GRUB ext4 defaults 0 0
4) Проводим ротацию лога
-$ sudo nano /etc/logrotate.d/podpis
/var/log/podpis.txt {
daily
rotate 50
size 5M
dateext
compress
delaycompress
olddir /var/log/old
}/var/log/vtorjenie.txt {
monthly
rotate 5
size 5M
dateext
olddir /var/log/old
}
5) Добавляем задание в cron
-$ sudo crontab -e
reboot ‘/podpis’ #проверка подписи при загрузке ОС
0 */6 * * * ‘/podpis #проверка подписи в 0-00ч; 6ч; 12ч; 18ч.
6) Создаём постоянные алиасы
-$ sudo su
-$ echo "alias подпись_GRUB='hashdeep -c md5 -r /media/username/GRUB > /podpis.txt'" >> /root/.bashrc && bash
-$ echo "alias проверка_GRUB='hashdeep -vvv -a -k '/podpis.txt' -r /media/username/GRUB'" >> .bashrc && bash
После обновления ОС -$ apt-get upgrade
переподписываем наш раздел GRUB
-$ подпись_GRUB
На этом шаге защита хэшированием раздела GRUB завершена.
[D] Зачистка — уничтожение нешифрованных данных
Удалите свои личные файлы так полностью, что «даже Бог не может их прочитать», по словам представителя Южной Каролины Трей Гауди.
Как обычно существуют разные «мифы и легенды», о восстановлении данных после их удаления с жёсткого диска. Если вы верите в киберколдоство, или являетесь прихожанином Dr web сообщества и никогда не пробовали восстановление данных после их удаления/перезаписи (например, восстановление с помощью R-studio), тогда предложенный способ вряд ли вам подойдет, пользуйтесь тем, чем вам ближе.
После успешного переноса GNU/Linux на зашифрованный раздел, старую копию необходимо удалить без возможности восстановления данных. Универсальный способ очистки: софт для Windows/Linux свободное GUI ПО BleachBit.
Быстро форматируем раздел, данные на котором нужно уничтожить (с помощью Gparted), запускаем BleachBit, выбираем «Очистка свободного пространства» – выбираем раздел (ваш sdaX с прошлой копией GNU/Linux), запустится процесс зачистки. BleachBit — протирает диск в один проход — это то, что «нам нужно», Но! так работает только в теории, если вы форматировали диск и чистили в ПО BB v2.0.
Внимание! BB протирает диск, оставляя метаданные: имена уничтоженных файлов при ликвидации данных сохраняются (Ccleaner — не оставляет метаданных).
И миф о возможности восстановления данных является не совсем мифом.
Bleachbit V2.0-2 бывший пакет unstable OS Debian (и любой другой подобный софт: sfill; wipe-Nautilus -тоже были замечены в этом грязном деле ) на самом деле имел критическую ошибку: функция «свободная очистка пространства» работает некорректно на HDD/Флэшках (ntfs/ext4). ПО подобного рода при очистке свободного места перезаписывают не весь диск, как многие пользователи думают. И некоторые (много) удаленные данные ОС/ПО считают эти данные неудаленными/пользовательскими и при очистке «ОСП» пропускают эти файлы. Проблема в том, что после такой, долгой по времени, очистки диска «удаленные файлы» можно восстановить даже через 3+ прохода протирания диска.
На GNU/Linux в Bleachbit 2.0-2 надежно работают функции безвозвратного удаления файлов и каталогов, но не очистка свободного пространства. Для сравнения: на Windows в ПО CCleaner функция «ОСП для ntfs» работает исправно, и Бог действительно не сможет прочитать удаленные данные.
И так, чтобы основательно удалить
«компрометирующие»
старые нешифрованные данные, необходим прямой доступ Bleachbit к этим данным, далее, воспользоваться функцией «удаление файлов/каталогов безвозвратно».
Для удаления «удаленных файлов штатными средствами ОС» в Windows используйте CCleaner/BB с функцией «ОСП». В GNU/Linux над этой проблемой (удаление удаленных файлов) вам необходимо получить практику самостоятельно (удаление данных+самостоятельная попытка их восстановления и не стоит полагаться на версию ПО (если не закладка, то баг)), только в таком случае вы сможете понять механизм этой проблемы и избавиться от удаленных данных окончательно.
Bleachbit v3.0 не проверял, возможно, проблему уже поправили.
Bleachbit v2.0 работает честно и для GNU/Linux и для Windows7.
На этом шаге «зачистка диска» завершена.
[E] Универсальное резервное копирование зашифрованных ОС
У каждого пользователя свой метод резервного копирования данных, но зашифрованные данные «Системных ОС» требуют чуть иной подход к задаче. Унифицированное ПО, как например «Clonezilla» и подобный софт не могут работать напрямую с зашифрованными данными.
Постановка задачи резервного копирования зашифрованных блочных устройств:
- универсальность — одинаковый алгоритм/ПО резервного копирования для Windows/Linux;
- возможность работать в консоли с любой live usb GNU/Linux без необходимости дополнительного скачивания ПО (но всё же рекомендую GUI);
- безопасность резервных копий — хранимые «образы» должны быть зашифрованы/запаролены;
- размер зашифрованных данных должен соответствовать размеру реальных копируемых данных;
- удобное извлечение нужных файлов из резервной копии (отсутствие требования расшифровать сперва весь раздел).
Например, резервная копия/восстановление через утилиту «dd»
dd if=/dev/sda7 of=/путь/sda7.img bs=7M conv=sync,noerror
dd if=/путь/sda7.img of=/dev/sda7 bs=7M conv=sync,noerror
Соответствует почти всем пунктам поставленной задачи, но по п.4 не выдерживает критики, так как копирует весь раздел диска целиком, в том числе и свободное пространство — не интересно.
Например, резервная копия GNU/Linux через архиватор [tar | gpg] «удобно», но для бэкапа Windows нужно искать другое решение — не интересно.
E1. Универсальное резервное копирование Windows/Linux (связка rsync (Grsync)+VeraCrypt том) & Автомонтирование зашифрованных дисков
Алгоритм создания резервной копии:
- создание зашифрованного контейнера (том/файл) VeraCrypt для ОС;
- перенос/синхронизация ОС с помощью ПО Rsync в криптоконтейнер VeraCrypt;
- при необходимости загрузка тома VeraCrypt в www.
Создание зашифрованного контейнера VeraCrypt имеет свои особенности:
- создание динамического тома (доступно создание ДТ только в ОС Windows, использовать можно и в GNU/Linux);
- создание обычного тома, но присутствует требование «параноидального характера» (со слов разработчика) – форматирование контейнера.
Динамический том создаётся практически мгновенно в ОС Windows, но при копировании данных из ОС GNU/Linux > VeraCrypt ДТ, в целом производительность операции резервного копирования снижается существенно.
Обычный том Twofish в 70 Гб создаётся (скажем так, на средней мощности ПК) на HDD ~ за полчаса (перезапись бывших данных контейнера в один проход, обусловлено требованием безопасности). Из VeraCrypt Windows/Linux убрали функцию быстрого форматирования тома при его создании, поэтому создание контейнера возможно только через «перезапись в один проход», либо создание слабопроизводительного динамического тома.
В 2017 году я обращался к разработчику VeraCrypt с просьбой ввести функцию «создание динамического тома и в ОС GNU/Linux». Получил ответ Транслит en > ru:
Мой первый ответ был неверным, так как быстрое форматирование всегда
отключено для файлового контейнера, чтобы избежать утечки данных на оригинальный диск.…В настоящее время динамические контейнеры не реализованы в Linux.
Технически это должно быть возможно, но на него никогда не было запроса.
Я посмотрю, легко ли это реализовать.
И так, динамический том VeraCrypt не перезатирает старые данные на HDD и создаётся мгновенно.
Обычный том перезаписывает старые данные, их невозможно в последующим восстановить, том создаётся небыстро (предварительно «форматируется» область тома своего размера).
В свежей версии ПО VeraCrypt 1.24-Update3 создание динамических томов можно реализовать и в GNU/Linux, но только для дисковых разделов (/dev/sdaX).
Для контейнеров/файлов — создание только обычных VeraCrypt-томов.
Создаём обычный том VeraCrypt (нединамический/ntfs), никаких проблем возникнуть не должно.
Настраиваем/создаём/открываем контейнер в VeraCrypt GUI > GNU/Linux live usb (том будет автомонтирован в /media/veracrypt2, том ОС Windows монтирован в /media/veracrypt1). Создаём зашифрованную резервную копию ОС Windows с помощью GUI rsync (grsync), расставив галочки.
Дождаться окончания процесса. По завершению резервного копирования, у нас будет один зашифрованный файл.
Аналогично создать резервную копию ОС GNU/Linux, скинув галочку в GUI rsync «совместимость с Windows».
Внимание! контейнер Veracrypt для «бэкапа GNU/Linux» создавать в файловой системе ext4. Если сделаете бэкап в контейнер ntfs, то при восстановлении такой копии потеряете все права/группы на все ваши данные.
Провести все операции можно и в терминале. Основные опции для rsync:
* -g -сохранить группы;
* -P —progress — статус времени работы над файлом;
* -H -копировать хардлинки, как есть;
* -а -режим архива (несколько флагов rlptgoD);
* -v -вербализация.
Если хочется монтировать «том Windows VeraCrypt» через консоль в ПО cryptsetup, можно создать alias (su)
echo "alias veramount='cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sdaX Windows_crypt && mount /dev/mapper/ Windows_crypt /media/veracrypt1'" >> .bashrc && bash
Теперь по команде «veramount
pictures
» появится запрос на ввод парольной фразы, и в ОС-у подмонтируется, зашифрованный системный том Windows.
Сопоставить/смонтировать системный том VeraCrypt в cryptsetup команда
cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sdaX Windows_crypt
mount /dev/mapper/Windows_crypt /mnt
Сопоставить/смонтировать раздел/контейнер VeraCrypt в cryptsetup команда
cryptsetup open --veracrypt --type tcrypt /dev/sdaY test_crypt
mount /dev/mapper/test_crypt /mnt
Вместо alias-а добавим (скрипт в автозагрузку) системный зашифрованный том с ОС Windows и логический криптованный диск ntfs в автозагрузку GNU/Linux с автоматическим монтированием/дешифрованием
#создаём каталоги/точки монтирования для ntfs-дисков
mkdir /media/Winda7 && mkdir /media/КонтейнерНтфс
#кодируем наш пароль от шифрованных дисков VeraCrypt, чтобы "не валялся" в открытом виде
printf 'bob' | base64
Ym9i #вывод в cli закодированный пароль "bob"
Создаём скрипт и сохраняем его в /VeraOpen.sh
echo 'Ym9i' | base64 -d | cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sda3 Windows_crypt && mount /dev/mapper/Windows_crypt /media/Winda7 #декодируем пароль из base64 (bob) и отправляем его на запрос ввода пароля при монтировании системного диска ОС Windows.
echo 'Ym9i' | base64 -d | cryptsetup open --veracrypt --type tcrypt /dev/sda1 ntfscrypt && mount /dev/mapper/ntfscrypt /media/КонтейнерНтфс #аналогично, но монтируем логический диск ntfs.
Раздаем «верные» права:
sudo chmod 100 /VeraOpen.sh
Создаём два одинаковых файла (одинаковое имя!) в /etc/rc.local и /etc/init.d/rc.local
Наполняем файлы
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will «exit 0» on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sh -c "sleep 1 && '/VeraOpen.sh'" #после загрузки ОС, ждём ~ 1с и только потом монтируем диски.
exit 0
Раздаем «верные» права:
sudo chmod 100 /etc/rc.local && sudo chmod 100 /etc/init.d/rc.local
Всё, теперь при загрузке GNU/Linux нам не требуется вводить пароли на монтирование зашифрованных дисков ntfs, диски монтируются автоматом.
После загрузки ОС, проверьте потерю темпа на расшифровку дисков:
systemd-analyze && systemd-analyze blame
Заметка кратко о том, что описано выше в п.E1 по шагам (но теперь для резервного копирования/восстановления OS GNU/Linux)
1) Создать том в фс ext4 > 4gb (для файла) Linux в Veracrypt [Криптоящик].
2) Reboot в live usb.
3) ~$ cryptsetup open /dev/sda7 Lunux #сопоставление шифрованного раздела.
4) ~$ mount /dev/mapper/Linux /mnt #монтирование шифрованного раздела в /mnt.
5) ~$ mkdir mnt2 #создание каталога для будущего бэкапа.
6) ~$ cryptsetup open —veracrypt —type tcrypt ~/Криптоящик Криптоящик && mount /dev/mapper/Криптоящик /mnt2 #Сопоставление тома Veracrypt с именем «Криптоящик» и монтирование Криптоящика в /mnt2.
7) ~$ rsync -avlxhHX —delete —progress /mnt/ /mnt2 #операция резервного копирования/восстановления шифрованного раздела в шифрованный том Veracrypt и обратно. Ключ «—delete» удаляет все лишне на приёмнике (если имеется), т.е. полная синхронизация данных между источником и приёмником.
(p/s/ Внимание! Если вы переносите шифрованную GNU/Linux с одной архитектуры/машины на другую, например, Intel > AMD (то есть разворачиваете бэкап с одного шифрованного раздела на другой шифрованный раздел Intel > AMD), не забывайте после переноса шифрованной ОС править секретный подставляемый ключ вместо пароля, тк. предыдущий ключ /etc/skey — уже не подойдет к другому зашифрованному разделу, а новый ключ «cryptsetup luksAddKey» нежелательно создавать из под chroot — возможен глюк, просто в /etc/crypttab укажите вместо «/etc/skey» временно «none», после rebot-а и входа в ОС пересоздайте свой секретный подставляемый ключ заново.
Как ветераны IT незабываем отдельно делать бэкапы заголовков зашифрованных разделов ОС Windows/Linux, или шифрование обернется против Вас самих.
На данном шаге резервное копирование/восстановление зашифрованных ОС закончено.
[F] Атака на загрузчик GRUB2
Подробности
Если вы защитили свой загрузчик цифровой подписью и/или аутентификацией (см п.C6.), то от физического доступа это никак не защитит. Зашифрованные данные будут по-прежнему недоступны, но обход защиты (сброс защиты цифровой подписи) GRUB2 позволяет киберзлодею внедрить свой код в загрузчик, не вызывая подозрений (если только пользователь вручную не отслеживает состояние загрузчика, или не придумает свой прочный произвольный-скрипт-код для grub.cfg).
Алгоритм атаки. Злоумышленник
* Загружает ПК с live usb. Любое изменение (нарушителем) файлов приведет к оповещению реального хозяина ПК о вторжении в загрузчик. Но простая переустановка GRUB2 с сохранением grub.cfg (и последующей возможностью его редактирования) позволит злоумышленнику редактировать любые файлы (при таком раскладе, при загрузке GRUB2, оповещение реальному пользователю не последует. Статус тот же <0>).
* Монтирует незашифрованный раздел, сохраняет у себя «/mnt/boot/grub/grub.cfg».
* Переустанавливает загрузчик (выбрасывая «perskey» из образа core.img)
grub-install --force --root-directory=/mnt /dev/sda6
* Возвращает «grub.cfg» > «/mnt/boot/grub/grub.cfg», при необходимости его редактирует, например, добавляя свой модуль «keylogger.mod» в папку с модулями загрузчика, в «grub.cfg» > строчку «insmod keylogger». Или, например, если враг коварен, то после переустановки GRUB2 (все подписи остаются на месте) он собирает основной образ GRUB2, используя «grub-mkimage с опцией (-с).» Опция «-с» позволит загружать свой конфиг до загрузки основного «grub.cfg». Конфиг может состоять всего лишь из одной строчки: перенаправление на любой «modern.cfg», смешанный, например, с ~400 файлами (модули+подписи) в папке «/boot/grub/i386-pc». При этом нарушитель может вносить произвольный код и подгружать модули, не затрагивая «/boot/grub/grub.cfg», даже если пользователь применил «hashsum» к файлу и временно выводил его на экран.
Взламывать логин/пароль суперпользователя GRUB2 атакующему не потребуется, нужно будет просто скопировать строки (отвечающие за аутентификацию) «/boot/grub/grub.cfg» в свой «modern.cfg»
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
И для хозяина ПК по-прежнему будет действовать проверка подлинности суперпользователя GRUB2.
Цепочная загрузка (загрузчик загружает другой загрузчик), как писал выше, не имеет смысла (она предназначена для другой цели). Из-за BIOS нельзя загружать зашифрованный загрузчик (при цепной загрузке происходит перезапуск GRUB2 > зашифрованный GRUB2, ошибка!). Однако если всё-таки воспользоваться идеей от цепочной загрузки, то можно быть уверенным, что загружается именно зашифрованный (не модернизированный) «grub.cfg» с зашифрованного раздела. И это тоже ложное чувство безопасности, потому что всё, что указано в зашифрованном «grub.cfg» (подгрузка модулей ) складывается с модулями, которые подгружаются из незашифрованного GRUB2.
Если вы хотите это проверить, то выделите/зашифруйте ещё один раздел sdaY, скопируйте на него GRUB2 (операция grub-install на зашифрованный раздел невозможна) и в «grub.cfg» (незашифрованного конфига) измените строки подобные этим:
menuentry ‘GRUBx2’ —class parrot —class gnu-linux —class gnu —class os $menuentry_id_option ‘gnulinux-simple-382111a2-f993-403c-aa2e-292b5eac4780’ {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod cryptodisk
insmod luks
insmod gcry_twofish
insmod gcry_twofish
insmod gcry_sha512
insmod ext2
cryptomount -u 15c47d1c4bd34e5289df77bcf60ee838
set root=’cryptouuid/15c47d1c4bd34e5289df77bcf60ee838′
normal /boot/grub/grub.cfg
}
строки
* insmod -загрузка необходимых модулей для работы с зашифрованным диском;
* GRUBx2 -название выводимой строки в меню загрузки GRUB2;
* cryptomount -u 15c47d1c4bd34e5289df77bcf60ee838 -см. fdisk -l (sda9);
* set root -установка корня;
* normal /boot/grub/grub.cfg -исполняемый файл конфигурации на зашифрованном разделе.
Уверенность в том, что загружается именно зашифрованный «grub.cfg» — это положительный отклик на ввод пароля/разблокировка «sdaY» при выборе строчки «GRUBx2» в меню GRUB.
При работе в CLI, чтобы не запутаться (и проверить, сработало ли переменное окружение «set root»), создайте пустые файлы маркеры, например, в зашифрованном разделе «/shifr_grub», в незашифрованном разделе «/noshifr_grub». Проверка в CLI
cat /Tab-Tab
Как было отмечено выше, это не поможет от загрузки вредоносных модулей, если такие модули окажутся на вашем ПК. Например, кейлоггер, который сможет сохранять нажатия клавиш в файл и смешиваться с другими файлами в «/boot/grub/i386-pc», пока его не скачает атакующий с физическим доступом к ПК.
Самый простой способ проверить, что защита цифровой подписи активно работает (не сброшена), и никто не вторгся в загрузчик, в CLI набираем команду
list_trusted
в ответ получаем слепок нашего «perskey», или ничего не получаем, если нас атаковали (также необходимо проверить «set check_signatures=enforce»).
Существенный минус такого шага — набивать команды вручную. Если добавить эту команду в «grub.cfg» и защитить цифровой подписью конфиг, то предварительный вывод слепка ключа на экран слишком короткий по таймингу, и можно не успеть разглядеть вывод cli, получив загрузку GRUB2.
Предъявлять претензии особо не к кому: разработчик в своей документации п.18.2 официально заявляет
«Note that even with GRUB password protection, GRUB itself cannot prevent someone with physical access to the machine from altering that machine’s firmware (e.g., Coreboot or BIOS) configuration to cause the machine to boot from a different (attacker-controlled) device. GRUB is at best only one link in a secure boot chain».
GRUB2 — слишком перегружен функциями, которые могут дать чувство ложной безопасности, а его развитие уже опередило по функциональности ОС MS-DOS, а ведь это всего лишь загрузчик. Забавно, что GRUB2 — «завтра» может стать ОС, а загружаемые GNU/Linux виртуальными машинами для него.
Небольшой ролик, о том, как я сбросил защиту цифровой подписью GRUB2, и заявил о своём вторжении реальному пользователю (напугал, а вместо того, что показано на ролике – можно написать небезобидный произвольный код/.mod).
Выводы:
1) Блочное системное шифрование для Windows — реализовать проще, а защита одним паролем удобнее, чем защита несколькими паролями при блочном системном шифровании GNU/Linux, справедливости ради: последнее автоматизировано.
2) Статью написал, как релевантное, подробное и профессиональное руководство по полнодисковому шифрованию ‘VeraCrypt/LUKS on one home the machine’, которое, на сегодняшний день лучшее в Рунете (IMHO). В руководстве ~ 66.6k знаков, поэтому в нём не рассматривались некоторые интересные главы: о криптографах, которые исчезают/держатся в тени; о том, что в разных книжках GNU/Linux мало/не пишут о криптографии; о ст.51 конституции РФ; о лицензировании/запрете шифрования в РФ, о том для чего нужно шифровать «корень/boot». Руководство получилось и без того немалое, но подробное (описывающее даже простые шаги), в свою очередь, это сэкономит вам кучу времени, когда вы займетёсь «настоящим шифрованием».
3) Полнодисковое шифрование проводил на Windows 7 64; GNU/Linux Parrot 4x; GNU/Debian 9.0/9.5.
4) Реализовал успешную атаку на загрузчик GRUB2.
5) Tutorial создан, чтобы помочь всем
параноикам СНГ
, где работа с шифрованием разрешена на законодательном уровне. И в первую очередь для тех, кто желает накатить полнодисковое шифрование не снося свои настроенные системы.
6) Переработал и обновил своё руководство, которое актуально в 2020 году.
[G] Полезная документация
- Руководство пользователя TrueCrypt (февраль 2012 RU)
- Документация VeraCrypt
- /usr/share/doc/cryptsetup(-run) [локальный ресурс] (официальная подробная документация по настройке шифрования GNU/Linux с помощью cryptsetup)
- Официальный FAQ cryptsetup (краткая документация по настройке шифрования GNU/Linux с помощью cryptsetup)
- Шифрование устройства LUKS (archlinux-документация)
- Подробное описание синтаксиса cryptsetup (страница руководства arch)
- Подробное описание crypttab (страница руководства arch)
- Официальная документация GRUB2.
Метки: VeraCrypt, полное шифрование диска, шифрование раздела, полнодисковое шифрование Linux, полное системное шифрование LUKS1/LUKS2.
Пасхалка
© Данное, славное руководство защищено авторским правом.
ne555 2018-2020
💎 Опробовать поисковую систему, разработанную автором статьи.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Шифруете?
21.9% Шифрую всё, что только возможно. У меня паранойя.30
32.85% Шифрую только важные данные.45
16.79% Иногда шифрую, иногда забываю.23
28.47% Нет, не шифрую, это неудобно и затратно.39
Проголосовали 137 пользователей. Воздержались 37 пользователей.
This page was translated from English. The English version may be more up-to-date.
Шифрование накопителя компьютера — это простой, но мощный инструмент для защиты ваших данных. Функция полного шифрования диска (также известная как шифрование устройства) шифрует все данные на вашем компьютере, поэтому их нельзя просмотреть, если при входе в систему не будет введен пароль .
Зачем нужно шифрование диска
Полное шифрование диска (накопителя) способно защитить компьютер (или смартфон) от людей, имеющих физический доступ к устройству. Это полезно, если вы хотите защитить данные от соседей по комнате, коллег или работодателей, членов семьи, партнёров, сотрудников полиции или прочих правоохранительных органов. Шифрование позволит защитить данные на устройствах в случае их кражи или утери — например, если вы случайно оставите ноутбук в автобусе или кафе.
Полное шифрование шифрует весь накопитель после выключения компьютера. Когда вы включаете его и входите в систему со своим паролем, то все данные на устройстве расшифровываются. И Microsoft, и Apple бесплатно предоставляют встроенные в свои операционные системы инструменты для активации полного шифрования диска (оба используют алгоритм шифрования данных XTS-AES), поэтому нет необходимости загрузки стороннего программного обеспечения. Это закрытые запатентованные решения, но если вы используете Windows или macOS, вы уже в какой-то степени должны доверять Microsoft и Apple. Большинство дистрибутивов Linux используют Linux Unified Key Setup (LUKS).
При настройке полного шифрование диска у вас будет возможность создать «ключ восстановления», который позволит получить доступ к компьютеру, если вы забудете пароль. Ключ восстановления — это очень длинная строка цифр, которую можно записать на листе бумаги, распечатать или скопировать и вставить в документ. Ниже мы рассмотрим плюсы и минусы всех вариантов.
Операционная система macOS всегда предлагает возможность сохранить ключ восстановления локально. Поведение Microsoft вызывает смешанные чувства – Windows может вообще не предложить шифрование устройства или предложит, но потребует, чтобы вы хранили ключ восстановления в облаке учётной записи Microsoft. Если это противоречит вашим принципам, вы можете использовать стороннее программное обеспечение для шифрования (например, VeraCrypt), хотя оно сложнее в эксплуатации, чем решения от Microsoft и Apple. Если вы выберете VeraCrypt, руководство Фонда свободы прессы поможет вам на всех этапах процесса шифрования.
Как только шифрование будет активировано, при включении компьютера или выходе из спящего режима вам нужно будет вводить пароль учётной записи компьютера. Это позволит защитить ваши данные, когда компьютер находится в спящем режиме. Также это способствует защите от тех, кто может достать ваш накопитель и установить его на другой компьютер, чтобы получить доступ к вашим данным.
Как хранить ключ восстановления: локально или онлайн?
Основной недостаток шифрования устройства заключается в том, что, если вы потеряете доступ к ключу восстановления или паролю, ваши данные, скорее всего, безвозвратно будут утеряны. Вот почему и Microsoft, и Apple предлагают несколько способов расшифровки накопителя.
В процессе шифрования диска вам предоставляется два варианта: (1) локальное хранение ключа или (2) хранение его онлайн в вашей учётной записи Apple или Microsoft. При втором варианте вы можете разблокировать диск с помощью тех же учётных данных, которые используете для входа в Microsoft или Apple. Если вы выбрали второй вариант, то в случае утери пароля или ключа восстановления Microsoft или Apple смогут помочь вам восстановить доступ. Однако это удобство имеет недостаток, поскольку подразумевает, что у Microsoft или Apple будет пароль, необходимый для расшифровки данных и входа в ваш компьютер. Если потребуется передать эту информацию правоохранительным органам, то они это сделают. Однако шифрование по-прежнему защитит ваш компьютер от попыток доступа со стороны лиц, не относящихся к силовым структурам, например в случае кражи.
Первый вариант требует, чтобы вы сохранили ключ восстановления самостоятельно и либо распечатали его на листе бумаги, либо сохранили цифровую копию. В этом случае Microsoft или Apple не будут иметь доступ к ключу восстановления. Недостаток первого варианта заключается в том, при утере ключа возможности восстановления, сброса пароля или иной помощи не будет. Хотя этот вариант звучит безопаснее, чем хранение ключа восстановления в учётной записи Apple или Microsoft, имейте в виду, что важно хранить ключ в надёжном месте, поскольку любой нашедший его сможет разблокировать ваш компьютер. Имейте в виду:
- Если вы распечатаете ключ восстановления, позаботьтесь о его сохранности. Храните его в огнеупорном сейфе или у надёжных друзей и членов семьи, а не у себя дома.
- Если у вас есть цифровая копия, не храните её на своем компьютере или в каком-либо облачном сервисе. Вместо этого сохраните ключ в менеджере паролей, использующем уникальные имя пользователя и пароль.
Если вы решите сохранить ключ восстановления самостоятельно, вы увидите последовательность букв и цифр. Важно сохранить этот ключ, потому что, если вы забудете пароль для входа в систему, Microsoft или Apple никак не смогут помочь восстановить его. А без пароля вы не сможете получить доступ к накопителю и навсегда потеряете свои файлы.
Как зашифровать накопитель в Windows
В зависимости от типа компьютера и версии операционной системы Windows может предлагать разные названия для шифрования всего диска: шифрование устройства и BitLocker. Шифрование устройств доступно во всех современных версиях Windows, но только в том случае, если оборудование его поддерживает. Компьютер должен содержать специальный модуль (TPM, Trusted Platform Module), а производитель может включить дополнительно несколько методов защиты. BitLocker требует лишь TPM, но доступен только для Windows 10 (и 11) редакций Pro, Education и Enterprise.
Если у вас Windows 10 (или 11) Home и оборудование, которое не поддерживает шифрование устройств, то в настройках может отсутствовать опция шифрования. В этом случае мы рекомендуем следовать руководству по Veracrypt от Фонда свободы прессы.
Выяснить доступный вам способ шифрования может оказаться непросто. На некоторых ноутбуках Windows по умолчанию включено шифрование устройств. Вы можете проверить это.
Windows 10
- Откройте Параметры (Settings) > Обновление и безопасность (Update & Security). Найдите и нажмите «Шифрование устройства» (Device encryption) на левой боковой панели настроек. Если пункт «Шифрование устройства» отсутствует, попробуйте выполнить поиск «Шифрование устройства» в строке поиска.
- Если шифрование устройства отключено, включите его. Для завершения процесса может потребоваться авторизация в учётной записи Microsoft. Если вы не хотите сохранять ключ восстановления в учётной записи Microsoft, но это требуется для продолжения, то, скорее всего, вам придётся воспользоваться сторонними инструментами.
Если пункт «Шифрование устройства» отсутствует, попробуйте выполнить поиск BitLocker, который присутствует в Windows 10 и 11 Pro, Education и Enterprise. В Windows 10 переключатель Bitlocker расположен несколько иначе:
- В поле поиска на панели задач введите «Управление BitLocker», а затем кликните на него в результатах.
- Нажмите «Включить BitLocker» (Turn on BitLocker) и следуйте инструкциям. Вам потребуется придумать пароль, а затем будет предоставлен выбор способа хранения ключа восстановления: либо в учётной записи Microsoft, либо в виде файла или распечатки.
Windows 11
В Windows 11 шифрование устройства и BitLocker будут отображаться в одном и том же месте:
- Откройте Параметры (Settings) > Конфиденциальность и безопасность (Privacy & security) > Шифрование устройства (Device encryption).
- Если шифрование устройства отключено, включите его. В качестве альтернативы вы можете воспользоваться шифрованием BitLocker, опция для включения которого находится здесь же. Для завершения процесса вам может потребоваться войти в систему с учётной записью Microsoft. При шифровании с помощью BitLocker вы сначала создаёте пароль, а затем получаете возможность сохранить ключ восстановления либо в учётной записи Microsoft, либо в виде файла или распечатки.
Microsoft может менять местами элементы настроек в обновлениях. Поэтому, если вы не смогли найти опцию для шифрования устройства по инструкции выше, обратитесь за актуальной информацией к статьям службы поддержки Microsoft Windows. Если это не помогло, попробуйте выполнить поиск в Интернете. Введите в строку поиска имя изготовителя вашего компьютера и фразу «шифрование устройства». Так вы сможете посмотреть, имеются для вашего устройства специальные инструкции.
Как зашифровать накопитель на Mac
Если вы используете macOS версии 10.7 или новее, то шифрование будет выполняться с помощью бесплатного встроенного инструмента FileVault.
Если у вас Mac, выпущенный последние пару лет, FileVault, скорее всего, будет включен по умолчанию. Но если у вас более старый компьютер или вы отказались от этой функции при первоначальной настройке, то нужно проверить, включено ли шифрование.
Для macOS Ventura или новее:
- Откройте Системные настройки (System Settings), нажмите на Конфиденциальность и безопасность (Privacy & Security) и прокрутите вниз до раздела FileVault.
- Нажмите кнопку Включить (Turn On) и следуйте инструкциям на экране.
Apple предоставляет на выбор два способа хранения ключа восстановления: в учётной записи Apple или локально. Если вы решите хранить ключ локально, сохраните его в надёжном месте. Если вы забудете пароль для входа в систему и потеряете ключ, то потеряете доступ к своим данным.
Если у вас более старая версия операционной системы, ознакомьтесь с соответствующим руководством Apple.
Как зашифровать накопитель в Linux
Большинство дистрибутивов Linux предполагают включение полного шифрования накопителя при установке системы. Зачастую шифрование производится при помощи Linux Unified Key Setup (LUKS). В отличие от Windows и macOS, зашифровать накопитель в большинстве дистрибутивов Linux можно только во время установки операционной системы (сделать это постфактум возможно, но это требует опыта, и могут возникнуть трудности). Поэтому, если вы не включили шифрование во время установки, скорее всего, вам потребуется стереть содержимое накопителя перед переустановкой Linux и зашифровать его в процессе. Но сначала обязательно сделайте резервную копию важных файлов!
Написанное выше относится к большинству популярных дистрибутивов Linux, включая Ubuntu, Arch Linux и Fedora.
Существует множество различных дистрибутивов Linux, и мы не можем изложить здесь все инструкции. Однако, чтобы дать вам представление о том, как это работает, давайте рассмотрим процесс шифрование в Ubuntu:
- Скачайте последнюю версию Ubuntu и запишите образ на носитель.
- Когда вы окажитесь на начальном экране установки, нажмите «Установить Ubuntu», затем выберите предпочитаемую раскладку клавиатуры и продолжите настройку системы.
- Когда вы перейдёте к экрану «Тип установки», нажмите на «Дополнительные возможности».
- Выберите «Использовать LVM при новой установке Ubuntu» и установите флажок «Зашифровать новую установку Ubuntu в целях безопасности».
- Нажмите «ОК», затем «Установить сейчас».
- В поле «Выберите ключ безопасности» введите пароль для шифрования диска (обязательно используйте надёжный пароль!), затем введите его ещё раз в поле «Подтвердите ключ безопасности».
- При желании вы можете установить флажок «Включить ключ восстановления». Как и в случае с Mac и Windows, это позволит восстановить доступ к системе, если вы забудете пароль. Вы можете записать ключ на бумаге или сохранить его в менеджере паролей. У вас также есть возможность дополнительно создать файл «recovery.key», который будет доступен после завершения установки. Затем вы можете переместить этот файл в надежное место.
- Нажмите «Установить сейчас» и следуйте инструкциям для завершения процесса установки.
После установки Ubuntu нужно будет вводить пароль шифрования при каждом включении компьютера. Обратите внимание, что он отличается от пароля для входа в систему, который нужно вводить каждый раз, когда компьютер выходит из спящего режима.
Привет, кодебай!
Я решил поделиться своим небольшим опытом по криптованию дисков с мультизагрузкой – надеюсь, понравится и пригодится, и следующему желающему не придётся копаться так долго, как мне. Расписать постарался максимально подробно, если переборщил – извините.
Итак, постановка задачи: вы хотите держать все свои данные зашифрованными, но при этом у вас на одном жёстком диске расположился как Линукс, так и Виндовс. Это может понадобиться, например, если нужна программа, которая не представлена в Лине, или если есть какие-то корпоративные требования безопасности или… Да мало ли зачем благородному дону или донне нужны две ОС.
Смотреть в сторону богомерзких решений с закрытыми исходниками типа BitLocker мы, разумеется, не будем. Для Windows нам понадобится VeraCrypt, а для Линукса – встроенный в большинство дистрибутивов LUKS.
Проблема же заключается в том, что при шифровании Windows с помощью TrueCrypt или VeraCrypt они записывают себя на первое место в списке загрузчиков и после ввода пароля у нас уже нет возможности загрузить Linux. Решение именно этой проблемы представлено в заметке, которую вы читаете. (На русском языке я не нашёл аналога, а то, что на английском — без скриншотов и вообще недостаточно подробно)
Для начала стоит настроить выбрать правильную таблицу разметки диска – нас интересует EFI. Альтернативой будет MBR, с которым мне так и не удалось справиться. Выбор делается при установке Windows: в каком режиме запустите установку, в таком и будет размечен диск. Нас интересует UEFI.
Первым устанавливается Виндовс, чтобы установившийся вторым Линукс – я выбрал для демонстрации лаконичный Manjaro – поставил свой загрузчик GRUB 2. Разумеется, при разметке следует оставить место для линукса! Windows самостоятельно создаст раздел FAT32 размером в 100 Mb с флагами boot и esp.
Поставили? Отлично, теперь Линь. Для начала проверим, всё ли в порядке с таблицей разделов: в gparted вы должны увидеть нечто подобное.
При установке выбираем Manual Partitioning, создаём зашифрованный раздел в свободном пространстве и монтируем стомегабайтный раздел в /boot/efi без форматирования. Ставим, перезагружаем, вводим пароль и с удовольствием видим меню выбора ОС с обеими системами.
Manjaro зашифрован, Windows пока нет. Исправим! Загружаемся в Windows, устанавливаем VeraCrypt (все параметры установки по умолчанию, все программы качать только с офсайтов, благо они пока поддерживаются) и шифруем систему (Система -> Зашифровать системный раздел/диск). Никакого выбора у вас особо не будет, так что придётся оставить “Зашифровать системный раздел Windows” и “Одиночная загрузка”. Параметры шифрования выбираете по вкусу. Я бы предпочёл Serpent(AES) – когда-то у программы были проблемы с реализацией AES, так что лучше перестраховаться. Остальное на ваше усмотрение.
Перезагружаетесь и обнаруживаете требование сразу ввести пароль для винды. Всё, теперь линукс недоступен.
Теперь начинается неочевидная часть. После того, как вы окончательно зашифруете диск (может занять значительное время), скачайте, установите и запустите EasyUEFI. Программа условно-бесплатная, но нам бесплатных функций хватит. Выбираете раздел Manage EFI Boot Option и записывайте путь загрузчика VeraCrypt — File Path на скриншоте. Он нам ещё понадобится.
Далее есть два варианта.
1.
Когда я ставил на собственный компьютер, там была видна опция Manjaro – в этом случае просто ставим её наверх зелёной стрелочкой и перезагружаемся в Linux.
Загрузчик Линукса не имеет ни малейшего представления о том, что Windows зашифрован, и при выборе в нём опции Windows он не будет пытаться запустить старый загрузчик — который, разумеется, ничего не найдёт на обработанном VeraCrypt разделе. Надо указать ему путь к новому загрузчику VeraCrypt. Вбиваем
Код:
sudo nano /boot/grub/grub.cfg
И меняем там строку
Код:
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
на
Код:
chainloader /EFI/VeraCrypt/DcsBoot.efi
Теперь там должен быть путь, который вы увидели в EasyUEFI.
Всё!
Перезагружаемся, вводим пароль от Линукса, и выбираем ОС. Выбрали Manjaro – вошли в Linux, выбрали Windows – вводим пароль от VeraCrypt и загружаемся в Windows.
Возможно, существует способ запускать выбор системы ДО ввода пароля, чтобы при запуске Windows не приходилось бы вводить пароль от Linux, но я его не нашёл.
2.
На VirtualBox, который я запустил для демонстрации, опции Manjaro в программе EasyUEFI почему-то нет. Заходим при загрузке в boot manager (в случае виртуалбокса – F2). Boot Maintenance Manager → Boot Options → Add Boot Option → Ваш Boot раздел →EFI → Manjaro (или Ваша ОС) → grub64.efi. Даёте название, нажимаете F10 для сохранения, дважды Ecs, Change Boot Order и ставите свою систему на первое место. Снова сохраняете и выходите из меню. Теперь вы загрузитесь в Linux.
В очереди загрузчика первым будет стоять загрузчик Линукса. В VirtualBox изменения не сохраняются при перезагрузке, и изменения от efibootmgr тоже, но на реальном железе всё должно быть в порядке. После этого выполняете действия, описанные в первом варианте, то есть модифицируете GRUB.
В следующей статье постараюсь описать как реализовать самоуничтожение заголовков LUKS и VeraCrypt одновременно при вводе кодовой фразы вместо пароля.
Шифрование разделов в Windows и Linux
buttonxxxxxКак часто приходилось вам сталкиваться с ситуацией, когда было бы неплохо иметь надёжный зашифрованный носитель информации или целую операционную систему, куда имели бы доступ только вы? К примеру, вы чертите огромные электронные схемы зданий, моделируете инновационные методы обработки наноматериалов, пишете книгу, которую до опубликования ни одна живая душе не должна видеть даже мельком. Или вы любите принести с работы флешку, на которой с десяток документов, за которые могут уволить или даже посадить. Как бы там ни было, во всех этих случаях необходимо действительно надёжное хранилище для драгоценных данных.
Шифрование в Windows возможно только двумя путями: либо вы используете BitLocker, разработанный корпорацией Microsoft и встроенный в современные операционные системы линейки Windows (7, 8, 8.1, 10), либо TrueCrypt и его производные. Рассмотрим шифрование с помощью BitLocker, про TrueCrypt выходила отдельная статья.
В Linux возможностей зашифровать (безвозвратно потерять) данные больше: это и шифрования на уровне файловой системы «eCryptfs» и «EncFS», и блочные способы шифрования на уровне устройства вроде Loop-AES, TrueCrypt, dm-crypt+LUKS (Linux Unified Key Setup-on-disk-format). В этой статье рассмотрим основные возможности dm-crypt+LUKS.
Рассматривая Bitlocker, нужно отметить, что с операционной системой версии не «Pro», а, например, «Home» («Домашняя»), воспользоваться данным вариантом не получится, так как Bitlocker’а просто не будет в системе. Счастливым обладателям версии «Pro» и выше достаточно пары десятков кликов для успешного решения этой задачи.
Чтобы попасть в окошко настройки шифрования BitLocker, переходим в «Панель управления -> Система и безопасность -> Шифрование диска BitLocker».
Если же лень так много клацать мышкой и искать «Панель управления», то открываем Пуск, набираем «BitLocker» и попадаем в то же самое меню.
Нажимаем на строку «Включить BitLocker» на нужном диске (в данном примере это «Диск С»), и… можем увидеть такое окошко:
Оно говорит, что у нас нет специальной платы – доверенного платформенного модуля (TPM), на котором обычно хранятся ключи шифрования BitLocker. Купить такой модуль можно много где, цена на него невысокая. Например, для большинства материнских плат ASRock такой модуль стоит в около 400-500 российских рублей.
Но если некогда искать и покупать такой модуль, а зашифровать данные надо, заходим в «Редактор локальной групповой политики».
Находим в «Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Шифрование диска BitLocker -> Диски операционной системы» пункт «Этот параметр политики позволяет настроить требования дополнительной проверки подлинности при запуске», ставим галочки «Включить» и «Разрешить использование BitLocker без совместимого TPM».
После этого возвращаемся в «Панель управления -> Система и безопасность -> Шифрование диска BitLocker» и следуем указаниям мастера, внимательно читая инструкции.
Преимущества BitLocker: можно зашифровать сразу целый том, который может состоять из нескольких жёстких дисков, и нет необходимости задумываться о том, что каждый новый файл, который в дальнейшем будет «закинут» на этот том, надо вручную шифровать – служба BitLocker сделает всё автоматически, если шифрование включено.
У BitLocker есть пара недостатков: поддержка только протокола шифрования AES-128/AES-256 (что, на самом деле, не слишком большой недостаток) и закрытые исходные коды. Помня о том, что Bitlocker — разработка корпорации Microsoft, не факт, что у ФБР и подобных организаций нет различных бэкдоров или иных секретных способов дешифровки. В случае с архивом коллекционной порнушки можно не переживать на этот счёт, но вот если вы любитель хранить дома секреты государства, стоит серьёзно задуматься над выбором этого способа шифрования.
Многие, заслышав грозное «Linux», могут сразу засомневаться в своей способности справиться с этой простой задачей. Зачем же рассматривать шифрование данных в Linux, когда в Windows всё так просто? Ответ очень прост: истинные ценители информационной безопасности однозначно скажут, что только в Linux или Unix можно добиться поистине высокого уровня защищённости.
Итак, dm-crypt+LUKS.
Dm-crypt – это модуль ядра Linux, который появился в его составе, начиная с версии 2.6. С его помощью становится возможным создать в каталоге /dev/mapper новое виртуальное блочное устройство с прозрачным шифрованием. Это значит, что все данные на этом устройстве будут зашифрованы, то есть (как и в BitLocker) при записи данных на этот диск данные «на лету» шифруются. Стандартным методом шифрования является алгоритм AES, поскольку большинство современных процессоров оптимизированы под него.
Стоит отметить, что блочным устройством в данном случае может быть как целый диск (например, /dev/sda3, /dev/sdb), так и обычный файл с любым именем и расширением, который подключается как loop-устройство.
LUKS – это алгоритм, определяющий действия и их порядок во время работы с зашифрованным носителем.
Итак, для наглядности рассмотрим шифрование на примере операционной системы Debian (для операционной системы Ubuntu все действия идентичны, поскольку Ubuntu – это производная от Debian). Для облегчения и наглядности работы с этим способом шифрования используем пакет «cryptsetup».
Для начала, если не установлены нужные пакеты, установим их, используя терминал:
$ sudo apt-get update — обновляем список доступных пакетов, чтобы поставить самую свежую версию.
$ sudo apt-get –y install cryptsetup — непосредственно установка.
Далее стоит определиться, какой вариант шифрования целесообразнее: прячем гигабайты «ХХХ»-видео? Тогда создаём файл на нужный размер (или пару десятков гигабайт), заполним его случайными значениями и будем использовать для хранения ценной информации.
В случае использования раздела целиком находим нужный с помощью команды
$ sudo fdisk –l
В результате выполнения команды получим примерно такой вывод. Здесь физические диски представлены записями /dev/sdaX, а динамические диски LVM – записями /dev/mapper/YYY, где YYY – название виртуального блочного устройства.
Далее, для описания более сложного варианта, рассмотрим шифрование раздела, представленного файлом. Назовём его «good_xxx_4k.avi» — так будет меньше подозрений, что файл большого размера (формат .avi, да ещё и в 4K!)
Создаём такой файл с помощью команды «dd»:
$ sudo dd if=/dev/random of=/opt/good_xxx_4k.avi bs=1M count=40960 status=progress
Здесь «if=/dev/random» — заполняемый случайными числами файл, «of=/opt/good_xxx_4k.avi» — создаваемый файл в каталоге /opt/, «bs=1M» — размер блока в 1 мегабайт (можно указать и другой размер), которым мы заполняем файл, «count=40960» — число таких блоков. Умножая размер блока на число блоков получаем, что файл «весит» 40 гигабайт. Опция «status=progress» — необходима, чтобы не так страшно было смотреть на отсутствие видимых признаков изменений до окончания выполнения команды, то есть смотрим прогресс создания файла.
На основе этого файла создаём блочное устройство «/dev/loop0», которым будем дальше оперировать:
$ sudo losetup /dev/loop0 /opt/good_xxx_4k.avi
Итак, устройство создано, теперь можно сделать из него полноценный зашифрованный каталог. Рассмотрим основные параметры команды «cryptsetup», которые могут пригодиться:
- luksFormat – создание зашифрованного раздела
- luksOpen – подключение зашифрованного раздела с вводом ключа шифрования
- luksClose – отключение зашифрованного раздела
- luksDump – создание резервной копии заголовков LUKS
Параметров управления больше, чем приведено выше, здесь указаны лишь самые основные и необходимые. Желающий разобраться глубже всегда может почитать информацию в интернете или на странице «man», выполнив команду
$ man cryptsetup
Итак, выполнив все предварительные операции, приступаем к шифрованию раздела.
ВАЖНО! Стоит отметить, что если выполнять шифрование раздела, на котором уже содержатся важные файлы, стоит заблаговременно перенести их в другое место, так как шифруемое устройство будет стёрто начисто!
Создаём шифрованный раздел:
$ sudo cryptsetup -y -v luksFormat /dev/loop0
Отвечаем на вопрос утвердительно (yes) и вводим пароль, которым шифруем раздел, затем вводим его повторно. Пароль нужно выбирать достаточно криптостойкий: не менее 10 символов из строчных и прописных букв латиницы, цифр, спецсимволов. Желательно, чтобы это были не слова, а просто набор букв – так меньше вероятность подбора пароля. И, естественно, нужно запомнить этот пароль (лучше нигде не записывая).
Выполняем следующую команду:
$ sudo cryptsetup luksOpen /dev/loop0 diplom
Она посылает модулю dm-crypt команду на подключение устройства «/dev/loop0» как устройство «/dev/mapper/diplom», при этом система запросит установленный пароль шифрования.
В случае успешного подключения зашифрованного раздела, его можно увидеть с помощью следующей команды:
$ sudo ls -l /dev/mapper/diplom
Для просмотра состояния устройства выполним команду
$ sudo cryptsetup -v status diplom
На всякий случай можно сделать резервную копию заголовков LUKS:
$ sudo cryptsetup luksDump /dev/loop0
Для дальнейшей работы необходимо отформатировать диск
$ sudo dd if=/dev/zero of=/dev/mapper/diplom status=progress
и создать на нем файловую систему (например, ext4)
$ sudo mkfs.ext4 /dev/mapper/diplom
Вуаля, наш зашифрованный раздел почти полностью готов к работе! Осталось только смонтировать его в каталог, и с ним можно работать, как с обычным диском, каталогом или флешкой:
$ mkdir ~/diplom — в домашнем каталоге пользователя создаём каталог с названием «diplom»
$sudo mount /dev/mapper/diplom ~/diplom — монтируем в него зашифрованный диск
Готово!
По окончании работы с зашифрованным диском выполняем в терминале команды
$ sudo umount ~/diplom — размонтируем зашифрованный диск от каталога
$ sudo cryptsetup luksClose diplom — отключаем зашифрованный раздел, чтобы никто без пароля не мог получить к нему доступ
Вот, пожалуй, и всё. Основные принципы работы разобраны. Стоит добавить, что начиная с версии ядра Linux 2.6.32 шифрование модулем dm-crypt может быть ускорено аппаратно процессорами Intel и AMD, содержащими набор инструкций AES-NI.
Из заметных минусов — LUKS не рекомендован для различных приложений, которым требуется шифрование на уровне файлов.
И «вишенка на торте»: если вы потеряли/забыли пароль так, что совсем не можете вспомнить, то есть 2 выхода – либо терморектальный криптоанализатор (не факт, что поможет вспомнить), либо поминаете безвозвратно утерянные файлы стаканом чего покрепче и начинаете все с нуля!
Общая информация.
В настоящее время гарантировать конфиденциальность информации на корпоративных и частных компьютерах или облачных сервисах почти невозможно. Для защиты данных считается хорошей практикой использовать шифрование, но гарантию не даёт ни одна компания, ни один метод. Взломать любую защиту можно, но вопрос стоит в том, сколько времени и ресурсов для этого потребуется. Это значит, что можно создать хорошую защиту данных, с которой взламывать их будет попросту не выгодно. Шифрование бывает симметричное и асимметричное, и отличается количеством ключей используемых для шифрования и дешифрования. Симметричное шифрование использует один ключ, асимметрическое шифрования два ключа: один ключ для кодирования (открытый) и один для декодирования (закрытый). В большинстве случаев все методы шифрования на ПК сводятся к созданию отдельного виртуального тома, образа дисков или отдельного файла со своим расширением.
Если ценность информации не критична, ее можно скрыть от посторонних или поставить пароль пользователя на вход в систему и настроить права доступов для папок и файлов.
Шифрование данных в Windows программой BitLocker.
В некоторых дистрибутивах Windows, начиная с версии Vista, встроена утилита для шифрования. В Windows Vista и 7-ке она встроена в профессиональную, максимальною и корпоративную версиях системы. А в 8-ке, 8.1 и 10-ке присутствует в профессиональной и корпоративной версиях.
Если нужно сделать действительно надежную защиту для файлов без сторонних программ. И операционная система поддерживает BitLocker, то лучше воспользоваться им, это один из самых лучших способов защиты файлов и папок на компьютере с Windows.
BitLocker полностью шифрует логический диск, а начиная с Windows 7 карты памяти и USB флешки. Для того чтобы зашифровать данные потребуется выполнить две операции.
Первое, создать виртуальный жесткий диск «Virtual Hard Disk» (VHD). После, подключив его в системе, поместить в него информацию которую нужно зашифровать. Это будет файл vhd, который монтируется по принципу работы как образ ISO диска для дисковода.
На втором этапе нужно настроить шифрование BitLocker для этого диска. Для этого нужно, кликнув правой кнопки мыши по нему, выбрать пункт «Включить Bitlocker». Все папки и файлы, которые были помещены на виртуальный диск, будут зашифрованы. Чтобы получить доступ к файлам нужно смонтировать диск, и после работы также не забывайте размонтировать его (клик ПКМ – «извлечь»).
Как альтернатива данному методу, можно воспользоваться программой со схожими функциями VeraCrypt, которая также надежно зашифрует данные. Архиваторами, которые при упаковке дают возможность задать пароль на архив или другими специальными программами.
Как зашифровать данные в MacOS X.
Disk Utility
В операционных системах от Apple можно легко настроить защиту папки паролем путем создания образа из папки утилитой Disk Utility. Она является частью ОС для работы с файловыми системами жёстких и оптических дисков.
Для шифрования папки нужно:
- Из меню «Программы» — «Служебные программы» запустить «Дисковую утилиту», (Disk Utility);
- В меню самой программы нужно создать образ, кликнув «Новый образ». Или создать его из уже существующей папки. Нажимаем «Файл», потом «Новый» и «Создать образ из папки»;
- В настройках нужно задать имя, размер и тип шифрования, после нажать «Создать». Алгоритм шифрования для надежности укажите 256 бит AES, а также формат образа Чтение / запись, для того, чтобы в будущем добавлять или удалять файлы из зашифрованной папки;
Установка пароля папки Disk Utility MacOS - В следующем окне нужно задать пароль и его подтверждение. Зашифрованная папка с расширением .dmg появится рядом с оригинальной.
Для доступа к информации нужно смонтировать диск и ввести пароль. Чтобы добавить новые файлы перетяните в нее нужные объекты. После этого нажмите на образе правой кнопкой, а затем «Извлечь». Все данные будут храниться на нем в зашифрованном виде.
С помощью этой программы также можно зашифровать и USB-накопитель.
FileVault
FileVault встроенная функция для шифрования диска в систему Mac OS, которая могла зашифровать только домашнюю папку пользователя, но с версии MacOS X Lion позволяет шифровать весь диск. Начиная с версии MacOS X Leopard, зашифрованная часть файловой системы хранится как Sparse Bundles частями по 8 Мб. Включенная функция шифрование негативно влияет на скорость работы компьютера. Данные шифруются по алгоритму XTS-AES-128 с длиной ключа 256 бит. Ключ шифрования вырабатывается на основе пароля пользователя алгоритмом PBKDF2. Для защиты от утери пароля предусмотрена возможность снимать защиту при помощи записи iCloud или создается мастер-пароль.
Настраивается программа очень просто:
- В «Системных настройках» заходим в пункт меню «Защита и безопасность», затем переходим на вкладку «FileVault»;
- Снимаем блокировку, нажав замочек в левом нижнем углу;
- Жмем «Включить FileVault» и выбираем вариант сброса пароля, через учетную запись iCloud или создаем ключ восстановления.
Создание ключа восстановления FileVault
После перезагрузки будет выполняться фоновое шифрование, при этом компьютером можно будет пользоваться без ограничений.
Шифрование данных в Linux встроенными методами.
LUKS
В операционных системах Linux существует возможность зашифровать раздел диска с использованием LUKS. Это спецификация шифрования дисков, предназначавшаяся для Linux, созданная Clemens Fruhwirth. В Windows зашифрованные диски LUKS можно использовать в программе FreeOTFE. Для монтирования раздела достаточно запустить его из менеджера файлов, как и демонтировать, при монтировании запрашивает пароль доступа.
Для работы в графическом формате с LUKS в Linux прежде всего нам понадобится файловый менеджер с пакетом gnome-disk-utility (управления разделами, S.M.A.R.T. мониторинг, тестирование и программный RAID).
Далее нам понадобится:
- Отформатировать раздел и указать тип форматирования с шифрованием LUKS;
- В следующем окошке задаем пароль для доступа к диску;
Для использования нужно подключить диск и ввести правильный пароль.
Из минусов можно выделить только поддержку LUKS до восьми паролей. Это значит, что только восемь пользователей с разными паролями могут иметь доступ к устройству.
CryptKeeper
В операционных системах Linux также можно установить утилиту CryptKeeper, которая в графическом виде выполнит шифрование папки используя возможности EncFS. Программу можно установить с официального репозитория.
Установив, она станет доступна в главном меню, сразу после вызова она появится на панели.
Для защиты доступа к папке паролем нужно:
- Нажать New encrypted folder;
- В открывшемся окне нужно указать путь и имя папки нажать «Forward» и придумать пароль.
Интерфейс окна CryptKeeper
Вновь созданную папку можно найти на панели, в меню программы. Для доступа к ней нужно ввести правильный пароль. Она будет подключена как раздел диска. Для блокирования, снимите галочку в том же всплывающем меню программы.
Какой бы метод вы не использовали, главное не теряйте пароль, потому что вы попросту не сможете получить доступ к своим данным. Что в конечном итоге приведет к потере информации, так как без ключа это будет бессмысленный набор единиц и нулей.