Gepubliceerd Shufflecake, een toolkit voor het maken van verborgen gecodeerde schijfpartities

Beveiligingsauditbedrijf Kudelski Security heeft een tool gepubliceerd met de naam Shufflecake waarmee u verborgen bestandssystemen kunt creëren, verspreid over de beschikbare vrije ruimte op bestaande partities en niet te onderscheiden van willekeurige resterende gegevens. Partities zijn zo gemaakt dat het, zonder de toegangssleutel te kennen, moeilijk is om hun bestaan ​​te bewijzen, zelfs bij het uitvoeren van forensische analyses. De code van de hulpprogramma's (shufflecake-userland) en de Linux-kernelmodule (dm-sflc) is geschreven in C en gedistribueerd onder de GPLv3-licentie, wat het onmogelijk maakt om de gepubliceerde kernelmodule in de belangrijkste Linux-kernel op te nemen vanwege incompatibiliteit met de GPLv2-licentie waaronder de kernel wordt geleverd.

Het project is gepositioneerd als een geavanceerdere oplossing dan Truecrypt en Veracrypt voor het verbergen van gegevens die bescherming vereisen, dat native ondersteuning biedt voor het Linux-platform en waarmee u maximaal 15 verborgen partities op het apparaat kunt plaatsen, in elkaar genest om het parseren te verwarren van hun bestaan. Als het gebruik van Shufflecake zelf geen geheim is, zoals bijvoorbeeld kan worden beoordeeld aan de hand van de aanwezigheid van de overeenkomstige hulpprogramma's in het systeem, kan het totale aantal gemaakte verborgen partities niet worden bepaald. De aangemaakte verborgen partities kunnen naar goeddunken van de gebruiker worden geformatteerd voor elk bestandssysteem, bijvoorbeeld ext4, xfs of btrfs. Elke partitie wordt behandeld als een afzonderlijk virtueel blokapparaat met zijn eigen ontgrendelingssleutel.

Om de sporen te verwarren, wordt voorgesteld om het ‘plausibele ontkennings’-gedragsmodel te gebruiken, waarvan de essentie is dat waardevolle gegevens verborgen zijn als extra lagen in gecodeerde secties met minder waardevolle gegevens, waardoor een soort verborgen hiërarchie van secties ontstaat. In geval van druk kan de eigenaar van het apparaat de sleutel van de gecodeerde partitie onthullen, maar andere partities (tot 15 geneste niveaus) kunnen in deze partitie verborgen zijn, en het vaststellen van hun aanwezigheid en het bewijzen van hun bestaan ​​is problematisch.

Verbergen wordt bereikt door elke partitie te construeren als een set gecodeerde segmenten die op willekeurige posities op het opslagapparaat zijn geplaatst. Elk segment wordt dynamisch gemaakt wanneer er extra opslagruimte nodig is op de partitie. Om de analyse moeilijker te maken, worden plakjes van verschillende secties afgewisseld, d.w.z. Shufflecake-secties zijn niet gekoppeld aan aangrenzende gebieden en plakjes uit alle secties worden gemengd. Informatie over gebruikte en vrije segmenten wordt opgeslagen in een locatiekaart die bij elke partitie hoort, waarnaar wordt verwezen door een gecodeerde header. De kaarten en header zijn gecodeerd en zijn, zonder de toegangssleutel te kennen, niet te onderscheiden van willekeurige gegevens.

De header is verdeeld in slots, die elk hun eigen sectie en bijbehorende segmenten definiëren. De slots in de header zijn gestapeld en recursief gekoppeld - het huidige slot bevat de sleutel om de parameters van de vorige sectie in de hiërarchie (de minder verborgen) te decoderen, waardoor één wachtwoord kan worden gebruikt om alle minder verborgen secties te decoderen die verband houden met het geselecteerde gedeelte. Elke minder verborgen partitie behandelt de segmenten van geneste partities als gratis.

Standaard hebben alle Shufflecake-subsecties dezelfde zichtbare grootte als de sectie op het hoogste niveau. Als er bijvoorbeeld drie partities op een apparaat van 1 GB zijn, zal elk ervan voor het systeem zichtbaar zijn als een partitie van 1 GB en zal de totaal beschikbare schijfruimte worden gedeeld tussen alle partities - als de totale grootte van de opgeslagen gegevens groter is dan de werkelijke grootte van het apparaat, zal er een I/O-fout optreden.

Geneste secties die niet open zijn, nemen niet deel aan de ruimtetoewijzing, d.w.z. een poging om een ​​partitie op het hoogste niveau te vullen zal ertoe leiden dat gegevens worden versnipperd in geneste partities, maar zal het niet mogelijk maken om hun aanwezigheid te onthullen door analyse van de omvang van de gegevens die in de partitie kunnen worden geplaatst voordat de fout begint (het wordt aangenomen dat de bovenste partities onveranderlijke gegevens bevatten om de aandacht af te leiden en nooit afzonderlijk niet worden gebruikt, en dat regulier werk altijd wordt uitgevoerd met de meest recente geneste sectie, impliceert het schema zelf dat het belangrijker is om het geheim van het bestaan ​​​​van gegevens dan deze gegevens kwijt te raken).

In feite worden er altijd 15 Shufflecake-partities aangemaakt - het gebruikerswachtwoord is aan de gebruikte partities gekoppeld en de ongebruikte partities worden voorzien van een willekeurig gegenereerd wachtwoord (het is onmogelijk te begrijpen hoeveel partities daadwerkelijk worden gebruikt). Wanneer Shufflecake-partities worden geïnitialiseerd, wordt de schijf, partitie of virtueel blokapparaat dat is toegewezen voor hun plaatsing gevuld met willekeurige gegevens, waardoor het onmogelijk wordt om Shufflecake-metagegevens en -gegevens tegen de algemene achtergrond te identificeren.

De Shufflecake-implementatie presteert redelijk goed, maar vanwege de aanwezigheid van overhead is de doorvoer ongeveer twee keer zo traag in vergelijking met schijfversleuteling op basis van het LUKS-subsysteem. Het gebruik van Shufflecake resulteert ook in extra kosten voor RAM en schijfruimte voor het opslaan van servicegegevens. Het geheugengebruik wordt geschat op 60 MB per partitie en de schijfruimte op 1% van de totale grootte. Ter vergelijking: de WORAM-techniek, die qua doel vergelijkbaar is, leidt tot een vertraging van 5 tot 200 keer met een verlies van 75% aan bruikbare schijfruimte.

De toolkit en kernelmodule zijn alleen getest op Debian en Ubuntu met kernels 5.13 en 5.15 (ondersteund op Ubuntu 22.04). Opgemerkt wordt dat het project nog steeds moet worden beschouwd als een werkend prototype, dat niet mag worden gebruikt om belangrijke gegevens op te slaan. In de toekomst zijn we van plan om aanvullende optimalisaties door te voeren voor de prestaties, betrouwbaarheid en beveiliging, en om de mogelijkheid te bieden om op te starten vanaf Shufflecake-partities.

Bron: opennet.ru

Voeg een reactie