Shufflecake ist ein Tool für Linux, das es ermöglicht, mehrere versteckte Volumes auf einem Speichergerät so zu erstellen, dass es selbst bei forensischer Untersuchung sehr schwierig ist, die Existenz solcher Volumes nachzuweisen.
Das Sicherheitsprüfungsunternehmen Kudelski Security hat das Shufflecake-Toolset veröffentlicht . Dieses ermöglicht die Erstellung versteckter Dateisysteme, die über den verfügbaren freien Speicherplatz auf bestehenden Partitionen verteilt sind und sich nicht von zufälligen Restdaten unterscheiden lassen. Diese Bereiche werden so erstellt, dass ihr Nachweis ohne Kenntnis des Zugriffsschlüssels selbst bei forensischen Analysen problematisch ist.
Das Projekt positioniert sich als fortschrittlichere Lösung als Truecrypt und Veracrypt zum Verbergen vertraulicher Daten, bietet native Unterstützung für die Linux-Plattform und ermöglicht es, bis zu 15 versteckte Partitionen auf dem Gerät zu platzieren, die ineinander verschachtelt sind, um die Analyse ihrer Existenz zu verschleiern.
Die erstellten versteckten Partitionen können nach Belieben des Benutzers für jedes beliebige Dateisystem formatiert werden, beispielsweise ext4, xfs oder btrfs. Jede Partition wird als unabhängiges virtuelles Blockgerät mit eigenem Entsperrschlüssel behandelt.
Um Spuren zu verwischen, wird das Verhaltensmodell der „plausiblen Abstreitbarkeit“ vorgeschlagen. Dabei werden wertvolle Daten als zusätzliche Ebenen innerhalb verschlüsselter Abschnitte verborgen, die weniger wertvolle Daten enthalten. So entsteht eine Art verborgene Hierarchie von Abschnitten. Unter Druck kann der Gerätebesitzer zwar den Schlüssel zum verschlüsselten Abschnitt preisgeben, doch können darin weitere Abschnitte (bis zu 15 verschachtelte Ebenen) verborgen sein, was es schwierig macht, deren Vorhandensein festzustellen und ihre Existenz zu beweisen.
Shufflecake und das Kernelmodul wurden bisher nur unter Debian und Ubuntu mit den Kernelversionen 5.13 und 5.15 getestet (Ubuntu 22.04 wird unterstützt). Es ist zu beachten, dass das Projekt noch als Prototyp zu betrachten ist und nicht zur Speicherung sensibler Daten verwendet werden sollte.
Für die Zukunft planen wir zusätzliche Optimierungen für Leistung, Zuverlässigkeit und Sicherheit sowie die Möglichkeit, von Shufflecake-Partitionen zu booten.
Über Shufflecake
Die Verschleierung wird dadurch erreicht, dass jede Partition aus einer Menge verschlüsselter Segmente besteht, die an zufälligen Positionen auf dem Speichermedium abgelegt werden. Jedes Segment wird dynamisch erstellt, wenn die Partition zusätzlichen Speicherplatz benötigt. Um die Analyse zu erschweren, werden Ausschnitte aus verschiedenen Abschnitten verschachtelt.
Shufflecake-Abschnitte sind nicht mit zusammenhängenden Regionen verbunden, und Portionen aus allen Abschnitten werden miteinander vermischt. Informationen über die verwendeten und freien Abschnitte werden in der jedem Abschnitt beigefügten Standortkarte gespeichert, auf die durch den verschlüsselten Header verwiesen wird. Die Karten und der Header sind verschlüsselt und ohne Kenntnis des Passkeys nicht von zufälligen Daten zu unterscheiden.
Der Header ist in Slots unterteilt , von denen jeder einen eigenen Abschnitt und zugehörige Sektoren definiert. Die Slots im Header sind gestapelt und rekursiv verknüpft: Der aktuelle Slot enthält den Schlüssel zum Entschlüsseln der Parameter des vorherigen (weniger verborgenen) Abschnitts in der Hierarchie. Dadurch kann ein einziges Passwort alle weniger verborgenen Abschnitte des ausgewählten Elements entschlüsseln. Jeder weniger verborgene Abschnitt behandelt Teile verschachtelter Abschnitte als frei.
Standardmäßig haben alle verschachtelten Shufflecake-Partitionen dieselbe sichtbare Größe wie die Partition der obersten Ebene. Werden beispielsweise drei Partitionen auf einem 1-GB-Gerät verwendet, erscheint jede Partition dem System als 1-GB-Partition, und der gesamte verfügbare Speicherplatz wird auf alle Partitionen aufgeteilt. Überschreitet die Gesamtmenge der gespeicherten Daten die tatsächliche Gerätegröße, treten E/A-Fehler auf.
Nicht geöffnete, verschachtelte Abschnitte werden bei der Speicherbelegung nicht berücksichtigt. Das heißt, der Versuch, einen übergeordneten Abschnitt zu füllen, überschreibt zwar die Daten in den verschachtelten Abschnitten, lässt deren Existenz aber nicht durch die Analyse der maximal möglichen Datenmenge erkennen, bevor ein Fehler auftritt (es wird davon ausgegangen, dass die übergeordneten Abschnitte unveränderliche Daten enthalten). Daten werden nicht zufällig und niemals isoliert verwendet, und die reguläre Arbeit erfolgt stets mit dem zuletzt geöffneten verschachtelten Abschnitt. Das Schema selbst impliziert, dass die Geheimhaltung der Daten von höchster Priorität ist, selbst auf Kosten von Datenverlust.
Die Shufflecake-Implementierung bietet zwar eine relativ hohe Leistung, erreicht aber aufgrund des Overheads nur etwa die halbe Leistung der Festplattenverschlüsselung mit dem LUKS-Subsystem. Die Verwendung von Shufflecake verursacht zudem zusätzliche Kosten für Arbeitsspeicher und Festplattenspeicher zur Speicherung der Dienstdaten. Der Speicherbedarf wird auf 60 MB pro Partition geschätzt , der Festplattenspeicherbedarf auf 1 % der gesamten Partitionsgröße. Im Vergleich dazu führt die ähnlich zielgerichtete WORAM-Technik zu einer 5- bis 200-fachen Verlangsamung und einem Verlust von 75 % des nutzbaren Festplattenspeichers.
Der Code für die Dienstprogramme (shufflecake-userland) und das Linux-Kernel-Modul (dm-sflc) ist in C geschrieben und unter der GPLv3-Lizenz veröffentlicht, was es aufgrund von Inkompatibilität unmöglich macht, das veröffentlichte Kernel-Modul in den Haupt-Linux-Kernel aufzunehmen unter der GPLv2-Lizenz, unter der der Kernel ausgeliefert wird.
Wenn Sie mehr erfahren möchten, finden Sie die Details unter folgendem Link.