Обычное шифрование диска в Linux устроено так, что в начале зашифрованного раздела хранится служебный заголовок с метаданными: параметрами шифра, солью и зашифрованными копиями ключей. Этот заголовок выдаёт зашифрованный том с головой, потому что по нему сразу видно, что перед нами не пустое пространство, а защищённое хранилище. Механизм отделённого заголовка переворачивает эту схему: заголовок выносят в отдельный файл и хранят его подальше от самого раздела. В результате зашифрованный том превращается в неотличимую от случайного шума область, по которой невозможно доказать, что там вообще что-то зашифровано.

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

Что хранится в заголовке и почему его расположение так важно

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

При обычном шифровании заголовок располагается в начале самого зашифрованного раздела. Это удобно, ведь всё хранится в одном месте, но именно это и выдаёт факт шифрования. Любой, кто взглянет на раздел, увидит характерную сигнатуру заголовка и поймёт, что перед ним защищённое хранилище. Отделённый заголовок убирает эту сигнатуру с диска полностью, оставляя на разделе лишь зашифрованные данные, которые статистически неотличимы от случайного шума.

Отсюда и главное свойство техники. Раздел без заголовка выглядит так, будто его просто заполнили случайными данными, например при подготовке к шифрованию или при затирании старой информации. Доказать, что эта случайность на самом деле зашифрованный том, невозможно, потому что нет ни единого метаданного, указывающего на шифрование. Это и есть основа правдоподобного отрицания: владелец может правдоподобно утверждать, что диск просто стёрт, и опровергнуть это технически нельзя.

Как создать том с отделённым заголовком

Создание такого тома отличается от обычного одним ключом, который указывает, куда складывать заголовок вместо начала раздела. Утилита управления шифрованием принимает путь к файлу заголовка как отдельный параметр.

sudo cryptsetup luksFormat --header /media/usb/secret.header /dev/sdb1

Здесь данные шифруются на разделе, а весь служебный заголовок отправляется в отдельный файл на внешнем носителе. После такой команды на самом разделе не остаётся никакой сигнатуры шифрования, и со стороны он выглядит как область случайных данных. Файл заголовка при этом становится критически важным: он и есть единственный вход в зашифрованные данные.

Открывают такой том тоже с явным указанием, где искать заголовок, поскольку на самом разделе его нет и система не найдёт его автоматически.

sudo cryptsetup --header /media/usb/secret.header luksOpen /dev/sdb1 secretdata

Эта команда читает заголовок из указанного файла, отпирает им главный ключ введённым паролем и создаёт расшифрованное отображение тома, к которому уже можно обращаться как к обычному устройству. Без правильного файла заголовка та же команда не сможет ничего открыть, сколько бы верных паролей ни вводили.

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

sudo cryptsetup --header /media/usb/secret.header --key-file /media/usb/secret.key luksOpen /dev/sdb1 secretdata

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

В каких сценариях отделённый заголовок действительно нужен

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

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

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

Почему потеря файла заголовка означает потерю всех данных

Здесь кроется оборотная сторона всей затеи, и относиться к ней нужно предельно серьёзно. Заголовок содержит зашифрованные копии главного ключа тома, и без них расшифровать данные невозможно никакими средствами. Это не пароль, который можно сбросить, и не забытая мелочь, а единственный математический вход в зашифрованное содержимое. Нет заголовка, нет и доступа, и никакие пароли тут не помогут, потому что отпирать им нечего.

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

Отсюда железное правило: файл заголовка нужно бережно копировать и хранить в нескольких надёжных местах, обращаясь с ним как с самым ценным активом всей схемы. Резервную копию заголовка делают штатной командой, которая выгружает его в отдельный файл.

sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file header-copy.img

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

Чем отделённый заголовок отличается от скрытых томов

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

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

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

Как убедиться, что на разделе не осталось сигнатуры

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

sudo wipefs /dev/sdb1

Эта команда в режиме просмотра показывает все обнаруженные на разделе сигнатуры, и в идеале для тома с отделённым заголовком она не должна найти ничего. Если же она выводит остатки прежнего заголовка или метку старой файловой системы, их вычищают, иначе раздел выдаст своё назначение вопреки всем стараниям. Чистый раздел без единой сигнатуры это и есть то самое неотличимое от случайных данных состояние, ради которого затевалась вся схема.

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

О чём ещё стоит помнить при работе с отделённым заголовком

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

  1. Резервные копии заголовка нужно хранить отдельно от зашифрованного диска, иначе теряется и защита, и страховка одновременно;
  2. Восстановление заголовка из старой копии вернёт и старые пароли из слотов, которые могли быть позже изменены или удалены;
  3. Файл заголовка стоит дополнительно защитить, ведь его попадание к посторонним вместе с диском раскрывает всю схему;
  4. Случайное место хранения вроде временного каталога ненадёжно, поскольку такие данные легко теряются при перезагрузке;
  5. Запись пути к заголовку нужно держать в памяти или в защищённой заметке, ведь без знания, где он лежит, доступ тоже теряется.

Особого внимания заслуживает вторая тонкость. Восстановив заголовок из давней резервной копии, владелец вернёт том в то состояние, в котором были сделаны метаданные, включая те пароли в слотах, что существовали на тот момент. Если после резервирования какой-то пароль был сменён ради безопасности, восстановление откатит эту смену, и старый пароль снова заработает. Это тонкий момент с точки зрения безопасности, который стоит держать в уме при управлении копиями.

Что в итоге запомнить

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

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