L'azienda Kudelski Security, specializzata nell'audit della sicurezza, ha pubblicato lo strumento Shufflecake, che permette di creare file system nascosti distribuiti nello spazio libero disponibile nelle partizioni esistenti, indistinguibili da dati residui casuali. Le partizioni vengono create in modo tale che, senza conoscere la chiave di accesso, è problematico dimostrarne l'esistenza anche durante un'analisi forense. Il codice degli strumenti (shufflecake-userland) e del modulo del kernel Linux (dm-sflc) è scritto in linguaggio C e distribuito sotto licenza GPLv3, il che rende impossibile includere il modulo del kernel pubblicato nel kernel Linux principale a causa dell'incompatibilità con la licenza GPLv2, sotto la quale è rilasciato il kernel.
Il progetto è posizionato come una soluzione più avanzata rispetto a Truecrypt e Veracrypt per nascondere dati sensibili, con supporto nativo per la piattaforma Linux e la possibilità di creare fino a 15 partizioni nascoste sui dispositivi, annidate l'una dentro l'altra per confondere la loro esistenza. Se l'uso stesso di Shufflecake non rappresenta un segreto, come si può dedurre dalla presenza di strumenti corrispondenti nel sistema, il numero totale di partizioni nascoste create è impossibile da determinare. Le partizioni nascoste possono essere formattate a discrezione dell'utente per ospitare qualsiasi file system, come ext4, xfs o btrfs. Ogni partizione viene trattata come un dispositivo di blocco virtuale separato con la propria chiave di sblocco.
Per confondere le tracce, si propone di utilizzare un modello comportamentale di "negazione plausibile", la cui essenza è che i dati di valore vengono nascosti come strati aggiuntivi in partizioni crittografate con dati di minore valore, formando una sorta di gerarchia nascosta di partizioni. In caso di pressione, il proprietario del dispositivo può rivelare la chiave della partizione crittografata, ma in essa possono nascondersi altre partizioni (fino a 15 livelli annidati), e risulta problematico determinare la loro esistenza e dimostrarne la validità.
La sicurezza è garantita grazie alla formazione di ogni sezione come un insieme di slici criptati, posizionati in posizioni casuali sul dispositivo di archiviazione. Ogni slice viene creato dinamicamente nel momento in cui è necessaria ulteriore spazio di archiviazione per la sezione. Per rendere difficoltosa l'analisi, gli slice di diverse sezioni sono alternati, cioè le sezioni Shufflecake non sono collegate a aree continue e gli slice di tutte le sezioni sono mescolati. Le informazioni sugli slice utilizzati e liberi sono memorizzate in una mappa di posizione legata a ciascuna sezione, a cui si riferisce l'intestazione criptata. Le mappe e l'intestazione sono criptate e senza la conoscenza della chiave di accesso sono indistinguibili da dati casuali.
L'intestazione è suddivisa in slot, ciascuno dei quali definisce la propria sezione e gli slice ad essa associati. Gli slot nell'intestazione sono disposti in ordine a pila e collegati in modo ricorsivo; lo slot corrente contiene la chiave per decifrare i parametri della sezione precedente nella gerarchia (meno nascosta), consentendo l'uso di una sola password per decifrare tutte le sezioni meno nascoste collegate alla sezione selezionata. Ogni sezione meno nascosta considera gli slice delle sezioni annidate come liberi.
Per impostazione predefinita, tutte le sezioni annidate di Shufflecake hanno le stesse dimensioni visibili della sezione di primo livello. Ad esempio, se su un dispositivo da 1 GB sono attive tre sezioni, ognuna di esse sarà visibile per il sistema come una sezione di 1 GB e lo spazio disponibile totale verrà condiviso tra tutte le sezioni; se in totale la dimensione dei dati salvati supererà la dimensione effettiva del dispositivo, verrà restituito un errore di input/output.
Le sezioni annidate non aperte non partecipano alla distribuzione dello spazio, cioè un tentativo di riempire una sezione di alto livello porterà alla sovrascrittura dei dati nelle sezioni annidate, senza dare la possibilità di rivelare la loro esistenza attraverso l'analisi della dimensione dei dati che possono essere memorizzati nella sezione prima dell'inizio della segnalazione di errore (si presume che le sezioni superiori contengano dati immutabili per deviare l'attenzione e non vengano mai utilizzate singolarmente, mentre il lavoro standard viene sempre eseguito con l'ultima sezione annidata, la stessa struttura implica che sia più importante mantenere il segreto dell'esistenza dei dati piuttosto che perdere quei dati).
Fattivamente vengono sempre create 15 sezioni Shufflecake - le sezioni utilizzate sono collegate alla password dell'utente, mentre le sezioni non utilizzate sono dotate di una password generata casualmente (è impossibile capire quante sezioni sono realmente utilizzate). Durante l'inizializzazione delle sezioni Shufflecake, il disco, la partizione o il dispositivo di blocco virtuale destinato al loro posizionamento viene riempito con dati casuali, il che impedisce di identificare sullo sfondo generale i metadati e i dati di Shufflecake.
L'implementazione di Shufflecake ha prestazioni sufficientemente elevate, ma a causa dell'overhead è circa due volte più lenta in termini di throughput rispetto alla crittografia dei dischi basata sul sottosistema LUKS. L'uso di Shufflecake porta anche a costi aggiuntivi di memoria operativa e spazio per archiviare dati di servizio sul disco. I costi di memoria sono stimati in 60 MB per ogni sezione, mentre lo spazio su disco è dell'1% della dimensione totale. A titolo di confronto, una tecnica analoga chiamata WORAM porta a una riduzione della velocità da 5 a 200 volte con una perdita del 75% dello spazio utile sul disco.
L'insieme di strumenti e il modulo del kernel sono stati testati solo su Debian e Ubuntu con i kernel 5.13 e 5.15 (è supportato l'uso in Ubuntu 22.04). Si osserva che il progetto deve ancora essere considerato come un prototipo operativo, che non dovrebbe essere utilizzato per l'archiviazione di dati importanti. In futuro è previsto un ulteriore ottimizzazione delle prestazioni, dell'affidabilità e della sicurezza, oltre a garantire la possibilità di avvio dalle sezioni Shufflecake.
Fonte: opennet.ru
