Shufflecake — это инструмент для Linux, который позволяет создавать несколько скрытых томов на устройстве хранения таким образом, что доказать существование таких томов очень сложно даже при криминалистической проверке.
Компания Kudelski Security, специализирующаяся на аудите безопасности, выпустила набор инструментов Shufflecake , позволяющий создавать скрытые файловые системы, распределенные по свободному пространству на существующих разделах, неотличимые от случайных остаточных данных. Эти разделы создаются таким образом, что без знания ключа доступа доказать их существование проблематично даже при проведении криминалистического анализа.
Проект позиционирует себя как более продвинутое решение для сокрытия конфиденциальных данных, чем Truecrypt и Veracrypt, предлагая встроенную поддержку платформы Linux и позволяя размещать на устройстве до 15 скрытых разделов, вложенных друг в друга, чтобы затруднить анализ их существования.
Созданные по усмотрению пользователя скрытые разделы могут быть отформатированы для любой файловой системы, например, ext4, xfs или btrfs. Каждый раздел рассматривается как независимое виртуальное блочное устройство со своим собственным ключом разблокировки.
Для сокрытия следов предлагается поведенческая модель «правдоподобного отрицания». По сути, ценные данные скрываются в виде дополнительных слоев внутри зашифрованных разделов, содержащих менее ценные данные, образуя своего рода скрытую иерархию разделов. Под давлением владелец устройства может раскрыть ключ к зашифрованному разделу, но другие разделы (до 15 вложенных уровней) могут быть скрыты внутри него, что затрудняет определение их наличия и доказательство их существования.
Shufflecake и модуль ядра были протестированы только на Debian и Ubuntu с ядрами версий 5.13 и 5.15 (поддерживается Ubuntu 22.04). Следует отметить, что проект следует рассматривать как рабочий прототип и не использовать для хранения конфиденциальных данных.
В дальнейшем мы планируем провести дополнительные оптимизации производительности, надежности и безопасности, а также предоставить возможность загрузки с разделов Shufflecake.
О шаффлкейке
Маскировка достигается путем формирования каждого раздела как набора зашифрованных сегментов, размещенных в случайных позициях на запоминающем устройстве. Каждый сегмент создается динамически, когда разделу требуется дополнительное пространство для хранения. Для усложнения анализа фрагменты из разных разделов чередуются.
Разделы Shufflecake не связаны со смежными областями, и части всех разделов смешиваются вместе. Информация об использованных и свободных частях хранится в карте проезда, прикрепленной к каждому разделу, на которую ссылается зашифрованный заголовок. Карты и заголовок зашифрованы и, не зная пароля, неотличимы от случайных данных.
Заголовок разделён на слоты , каждый из которых определяет свой собственный раздел и связанные с ним секторы. Слоты в заголовке расположены друг над другом и рекурсивно связаны: текущий слот содержит ключ для расшифровки параметров предыдущего (менее скрытого) раздела в иерархии, что позволяет одному паролю расшифровать все менее скрытые разделы, связанные с выбранным элементом. Каждый менее скрытый раздел рассматривает части вложенных разделов как свободные.
По умолчанию все вложенные разделы Shufflecake имеют тот же видимый размер, что и раздел верхнего уровня. Например, если на устройстве с объемом памяти 1 ГБ используются три раздела, каждый из них будет виден системе как раздел размером 1 ГБ, и общее доступное дисковое пространство будет распределено между всеми разделами. Если общий объем хранимых данных превышает фактический размер устройства, начнут возникать ошибки ввода-вывода.
Неоткрытые вложенные разделы не участвуют в распределении пространства; то есть попытка заполнить раздел более высокого уровня перезапишет данные во вложенных разделах, но не выявит их наличие путем анализа размера данных , которые могут быть размещены в разделе до возникновения ошибки (предполагается, что разделы более высокого уровня содержат неизменяемые данные). Данные не используются случайно и никогда отдельно, а обычная работа всегда выполняется с самым последним вложенным разделом; сама схема подразумевает, что главное — сохранить существование данных в секрете, даже ценой их потери.
Реализация Shufflecake обеспечивает относительно высокую производительность, но из-за накладных расходов она работает примерно вдвое хуже, чем шифрование диска на основе подсистемы LUKS. Использование Shufflecake также влечет за собой дополнительные затраты на оперативную память и дисковое пространство для хранения служебных данных. Затраты на память оцениваются в 60 МБ на раздел , а использование дискового пространства — в 1% от общего размера раздела. Для сравнения, аналогичная по назначению технология WORAM приводит к замедлению работы в 5–200 раз и потере 75% полезного дискового пространства.
Код утилит (shufflecake-userland) и модуля ядра Linux (dm-sflc) написан на C и выпущен под лицензией GPLv3, что делает невозможным включение опубликованного модуля ядра в основное ядро Linux из-за несовместимости. под лицензией GPLv2, под которой поставляется ядро.
Если вас заинтересовала более подробная информация, вы можете найти ее по следующей ссылке.