Shufflecake, инструментариум за създаване на скрити криптирани дискови дялове, беше публикуван

Компанията за одит на сигурността Kudelski Security публикува инструмент, наречен Shufflecake, който ви позволява да създавате скрити файлови системи, разпръснати в налично свободно пространство на съществуващи дялове и неразличими от произволни остатъчни данни. Разделенията са създадени по такъв начин, че без да се знае ключа за достъп, е трудно да се докаже съществуването им дори при извършване на съдебномедицински анализ. Кодът на помощните програми (shufflecake-userland) и модула на ядрото на Linux (dm-sflc) е написан на C и се разпространява под лиценз GPLv3, което прави невъзможно включването на публикувания модул на ядрото в основното ядро ​​на Linux поради несъвместимост с лицензът GPLv2, под който се доставя ядрото.

Проектът е позициониран като по-усъвършенствано решение от Truecrypt и Veracrypt за скриване на данни, които изискват защита, което има вградена поддръжка за платформата Linux и ви позволява да поставите до 15 скрити дяла на устройството, вложени един в друг, за да объркате анализирането на тяхното съществуване. Ако самото използване на Shufflecake не е тайна, както може да се съди например по наличието на съответните помощни програми в системата, тогава общият брой създадени скрити дялове не може да бъде определен. Създадените скрити дялове могат да бъдат форматирани по преценка на потребителя, за да поемат всяка файлова система, например ext4, xfs или btrfs. Всеки дял се третира като отделно виртуално блоково устройство със собствен ключ за отключване.

За да се объркат следите, се предлага да се използва моделът на поведение „правдоподобно отричане“, чиято същност е, че ценните данни са скрити като допълнителни слоеве в криптирани секции с по-малко ценни данни, образувайки вид скрита йерархия от секции. В случай на натиск, собственикът на устройството може да разкрие ключа към шифрования дял, но други дялове (до 15 вложени нива) могат да бъдат скрити в този дял и определянето на тяхното присъствие и доказването на съществуването им е проблематично.

Скриването се постига чрез конструиране на всеки дял като набор от криптирани срезове, поставени на произволни позиции в устройството за съхранение. Всеки срез се създава динамично, когато е необходимо допълнително място за съхранение в дяла. За да се направи анализът по-труден, резените от различни секции се редуват, т.е. Секциите на Shufflecake не са свързани със съседни региони и парчетата от всички секции се смесват. Информацията за използваните и свободните срезове се съхранява в карта на местоположението, свързана с всеки дял, която се посочва от криптирана заглавка. Картите и хедърът са криптирани и, без да знаят ключа за достъп, са неразличими от произволни данни.

Заглавката е разделена на слотове, всеки от които дефинира своя собствена секция и свързаните с нея срезове. Слотовете в заглавката са подредени и рекурсивно свързани - текущият слот съдържа ключа за декриптиране на параметрите на предишния раздел в йерархията (по-малко скрития), което позволява да се използва една парола за декриптиране на всички по-малко скрити секции, свързани с избраната секция. Всеки по-малко скрит дял третира частите на вложените дялове като свободни.

По подразбиране всички подсекции на Shufflecake имат същия видим размер като секцията от най-високо ниво. Например, ако има три дяла на устройство от 1 GB, всеки от тях ще бъде видим за системата като дял от 1 GB и общото налично дисково пространство ще бъде споделено между всички дялове - ако общият размер на съхранените данни надвишава действителния размер на устройството, то ще започне I/O грешка.

Вложените секции, които не са отворени, не участват в разпределението на пространството, т.е. опитът за запълване на дял от най-високо ниво ще доведе до раздробяване на данни във вложени дялове, но няма да направи възможно разкриването на тяхното присъствие чрез анализ на размера на данните, които могат да бъдат поставени в дяла, преди да започне грешката (това се предполага, че горните дялове съдържат неизменни данни за отвличане на вниманието и никога не се използват отделно, и редовната работа винаги се извършва с най-скорошния вложен раздел, самата схема предполага, че е по-важно да се поддържа тайната на съществуването на данни, отколкото да загубите тези данни).

Всъщност винаги се създават 15 дяла на Shufflecake - потребителската парола е прикрепена към използваните дялове, а неизползваните дялове се доставят с произволно генерирана парола (невъзможно е да се разбере колко дяла всъщност се използват). Когато дяловете на Shufflecake се инициализират, дискът, дялът или виртуалното блоково устройство, разпределени за тяхното поставяне, се запълват с произволни данни, което прави невъзможно идентифицирането на метаданните и данните на Shufflecake спрямо общия фон.

Реализацията на Shufflecake има доста висока производителност, но поради наличието на режийни разходи, тя е приблизително два пъти по-бавна в пропускателната способност в сравнение с дисковото криптиране, базирано на подсистемата LUKS. Използването на Shufflecake също води до допълнителни разходи за RAM и дисково пространство за съхраняване на сервизни данни. Консумацията на памет се оценява на 60 MB на дял, а дисковото пространство на 1% от общия размер. За сравнение, техниката WORAM, подобна по предназначение, води до забавяне от 5 до 200 пъти със 75% загуба на използваемо дисково пространство.

Инструментариумът и модулът на ядрото са тествани само на Debian и Ubuntu с ядра 5.13 и 5.15 (поддържа се на Ubuntu 22.04). Отбелязва се, че проектът все още трябва да се разглежда като работещ прототип, който не трябва да се използва за съхраняване на важни данни. В бъдеще планираме да направим допълнителни оптимизации за производителност, надеждност и сигурност, както и да предоставим възможност за зареждане от Shufflecake дялове.

Източник: opennet.ru

Добавяне на нов коментар