Shufflecake je nástroj pre Linux, ktorý umožňuje vytváranie viacerých skrytých zväzkov na úložnom zariadení takým spôsobom, že je veľmi ťažké, dokonca aj pri forenznej kontrole, dokázať existenciu takýchto zväzkov.
Bezpečnostná audítorská firma Kudelski Security vydala sadu nástrojov Shufflecake , ktorá umožňuje vytvárať skryté súborové systémy distribuované v dostupnom voľnom priestore na existujúcich oddieloch, nerozoznateľné od náhodných zvyškových údajov. Tieto sekcie sú vytvorené takým spôsobom, že bez znalosti prístupového kľúča je preukázanie ich existencie problematické, a to aj počas forenznej analýzy.
Projekt sa prezentuje ako pokročilejšie riešenie na skrývanie dôverných údajov ako Truecrypt a Veracrypt, ponúka natívnu podporu pre platformu Linux a umožňuje umiestniť na zariadenie až 15 skrytých oddielov, ktoré sú do seba vnorené, aby sa zakryla analýza ich existencie.
Skryté oddiely vytvorené podľa uváženia používateľa je možné naformátovať tak, aby vyhovovali ľubovoľnému súborovému systému, napríklad ext4, xfs alebo btrfs. Každý oddiel sa považuje za nezávislé virtuálne blokové zariadenie s vlastným odomykacím kľúčom.
Na zahmlievanie stôp sa navrhuje behaviorálny model „pravdepodobného popierania“. V podstate sú cenné údaje skryté ako ďalšie vrstvy v rámci šifrovaných sekcií obsahujúcich menej cenné údaje, čím sa vytvára akási skrytá hierarchia sekcií. Pod tlakom môže vlastník zariadenia odhaliť kľúč k šifrovanej sekcii, ale v nej môžu byť skryté aj ďalšie sekcie (až do 15 vnorených úrovní), čo sťažuje určenie ich prítomnosti a dokázanie ich existencie.
Shufflecake a modul jadra boli testované iba na Debiane a Ubuntu s jadrami 5.13 a 5.15 (Ubuntu 22.04 je podporované). Treba poznamenať, že projekt by sa mal stále považovať za funkčný prototyp a nemal by sa používať na ukladanie citlivých údajov.
V budúcnosti plánujeme vykonať ďalšie optimalizácie výkonu, spoľahlivosti a bezpečnosti, ako aj poskytnúť možnosť zavádzania z oddielov Shufflecake.
O Shufflecake
Utajenie sa dosahuje vytvorením každej oblasti ako sady šifrovaných segmentov umiestnených na náhodných pozíciách na úložnom zariadení. Každý segment sa vytvára dynamicky, keď oblasť vyžaduje ďalší úložný priestor. Pre skomplikovanie analýzy sa segmenty z rôznych sekcií prekladajú.
Miešané časti nie sú spojené so susednými oblasťami a časti zo všetkých častí sú zmiešané. Informácie o použitých a voľných častiach sú uložené v mape polohy pripojenej ku každej sekcii, na ktorú odkazuje zašifrovaná hlavička. Karty a hlavička sú zašifrované a bez znalosti prístupového kľúča sú na nerozoznanie od náhodných údajov.
Hlavička je rozdelená na sloty , z ktorých každý definuje svoju vlastnú sekciu a pridružené sektory. Sloty v hlavičke sú naskladané a rekurzívne prepojené: aktuálny slot obsahuje kľúč na dešifrovanie parametrov predchádzajúcej (menej skrytej) sekcie v hierarchii, čo umožňuje jedinému heslu dešifrovať všetky menej skryté sekcie spojené s vybranou položkou. Každá menej skrytá sekcia považuje časti vnorených sekcií za voľné.
V predvolenom nastavení majú všetky vnorené oddiely Shufflecake rovnakú viditeľnú veľkosť ako oddiel najvyššej úrovne. Napríklad, ak sa na zariadení s kapacitou 1 GB použijú tri oddiely, každý z nich bude pre systém viditeľný ako oddiel s veľkosťou 1 GB a celkový dostupný priestor na disku bude zdieľaný medzi všetkými oddielmi. Ak celkové množstvo uložených údajov prekročí skutočnú veľkosť zariadenia, začnú sa vyskytovať chyby I/O.
Neotvorené vnorené sekcie sa nezúčastňujú alokácie priestoru; to znamená, že pokus o naplnenie sekcie vyššej úrovne prepíše dáta vo vnorených sekciách, ale neodhalí ich prítomnosť analýzou veľkosti dát , ktoré je možné do sekcie umiestniť predtým, ako sa vygeneruje chyba (predpokladá sa, že sekcie vyššej úrovne obsahujú nemenné dáta). Dáta sa nepoužívajú náhodne a nikdy samostatne a bežná práca sa vždy vykonáva s najnovšou vnorenou sekciou; samotná schéma naznačuje, že hlavným cieľom je udržať existenciu dát v tajnosti, aj za cenu ich straty.
Implementácia Shufflecake ponúka relatívne vysoký výkon, ale kvôli réžijným nákladom dosahuje približne polovičný výkon v porovnaní s šifrovaním disku založeným na subsystéme LUKS. Používanie Shufflecake tiež spôsobuje dodatočné náklady na RAM a diskový priestor na ukladanie servisných údajov. Náklady na pamäť sa odhadujú na 60 MB na oddiel a využitie diskového priestoru sa odhaduje na 1 % z celkovej veľkosti oddielu. Pre porovnanie, podobne účelná technika WORAM vedie k 5- až 200-násobnému spomaleniu so 75 % stratou využiteľného diskového priestoru.
Kód pre nástroje (shufflecake-userland) a modul linuxového jadra (dm-sflc) je napísaný v jazyku C a uvoľnený pod licenciou GPLv3, čo znemožňuje zahrnúť publikovaný modul jadra do hlavného linuxového jadra z dôvodu nekompatibility. pod licenciou GPLv2, pod ktorou sa jadro dodáva.
Ak máte záujem dozvedieť sa viac, podrobnosti nájdete na nasledujúcom odkaze.