Аудиторская компания по безопасности 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, под которой поставляется ядро.
Если вы хотите узнать больше об этом, вы можете ознакомиться с деталями По следующей ссылке.