Shufflecake è uno strumento per Linux che consente la creazione di più volumi nascosti su un dispositivo di archiviazione in modo tale che sia molto difficile, anche sotto ispezione forense, provare l'esistenza di tali volumi.
La società di audit di sicurezza Kudelski Security ha rilasciato il toolset Shufflecake , che consente la creazione di file system nascosti distribuiti nello spazio libero disponibile su partizioni esistenti, indistinguibili da dati residui casuali. Queste sezioni vengono create in modo tale che, senza conoscere la chiave di accesso, dimostrarne l'esistenza risulti problematico, anche durante un'analisi forense.
Il progetto si propone come una soluzione più avanzata rispetto a Truecrypt e Veracrypt per la protezione dei dati riservati, offrendo supporto nativo per la piattaforma Linux e consentendo di creare fino a 15 partizioni nascoste sul dispositivo, annidate l'una nell'altra per rendere difficile l'individuazione della loro presenza.
Le partizioni nascoste create , a discrezione dell'utente, possono essere formattate per adattarsi a qualsiasi file system, ad esempio ext4, xfs o btrfs. Ogni partizione viene trattata come un dispositivo a blocchi virtuale indipendente con una propria chiave di sblocco.
Per offuscare le tracce, viene proposto il modello comportamentale della "negabilità plausibile". In sostanza, i dati di valore vengono nascosti come livelli aggiuntivi all'interno di sezioni crittografate contenenti dati meno importanti, formando una sorta di gerarchia nascosta di sezioni. Sotto pressione, il proprietario del dispositivo può rivelare la chiave della sezione crittografata, ma altre sezioni (fino a 15 livelli annidati) possono essere nascoste al suo interno, rendendo difficile determinarne la presenza e provarne l'esistenza.
Shufflecake e il modulo del kernel sono stati testati solo su Debian e Ubuntu con kernel 5.13 e 5.15 (Ubuntu 22.04 è supportato). È importante sottolineare che il progetto deve essere considerato ancora un prototipo funzionante e non deve essere utilizzato per archiviare dati sensibili.
In futuro, prevediamo di apportare ulteriori ottimizzazioni per prestazioni, affidabilità e sicurezza, oltre a fornire la possibilità di eseguire l'avvio dalle partizioni Shufflecake.
A proposito di Shufflecake
L'occultamento si ottiene creando ciascuna partizione come un insieme di segmenti crittografati posizionati in punti casuali sul dispositivo di archiviazione. Ogni segmento viene creato dinamicamente quando la partizione richiede ulteriore spazio di archiviazione. Per complicare l'analisi, le porzioni provenienti da sezioni diverse vengono intercalate.
Le sezioni di Shufflecake non sono legate alle regioni adiacenti e le porzioni di tutte le sezioni vengono mescolate. Le informazioni sulle porzioni utilizzate e libere sono memorizzate nella mappa della posizione allegata a ciascuna sezione, a cui fa riferimento l'intestazione crittografata. Le carte e l'intestazione sono crittografate e, senza conoscere la passkey, sono indistinguibili dai dati casuali.
L'intestazione è divisa in slot , ognuno dei quali definisce la propria sezione e i settori associati. Gli slot nell'intestazione sono impilati e collegati ricorsivamente: lo slot corrente contiene la chiave per decifrare i parametri della sezione precedente (meno nascosta) nella gerarchia, consentendo a una singola password di decifrare tutte le sezioni meno nascoste associate all'elemento selezionato. Ogni sezione meno nascosta considera libere porzioni delle sezioni annidate.
Per impostazione predefinita, tutte le partizioni Shufflecake annidate hanno la stessa dimensione visibile della partizione di livello superiore. Ad esempio, se si utilizzano tre partizioni su un dispositivo da 1 GB, ciascuna sarà visibile al sistema come una partizione da 1 GB e lo spazio su disco totale disponibile sarà condiviso tra tutte le partizioni. Se la quantità totale di dati memorizzati supera la dimensione effettiva del dispositivo, inizieranno a verificarsi errori di I/O.
Le sezioni nidificate non aperte non partecipano all'allocazione dello spazio; ovvero, il tentativo di riempire una sezione di livello superiore sovrascriverà i dati nelle sezioni nidificate, ma non ne rivelerà la presenza tramite l'analisi della dimensione dei dati che possono essere inseriti nella sezione prima che venga generato un errore (si presume che le sezioni di livello superiore contengano dati immutabili). I dati non vengono utilizzati a caso e mai separatamente, e le operazioni regolari vengono sempre eseguite con la sezione nidificata più recente; lo schema stesso implica che la cosa principale sia mantenere segreta l'esistenza dei dati, anche a costo di perderli.
L'implementazione di Shufflecake offre prestazioni relativamente elevate, ma a causa dei costi generali, le sue prestazioni sono circa la metà di quelle della crittografia del disco basata sul sottosistema LUKS. L'utilizzo di Shufflecake comporta anche costi aggiuntivi in termini di RAM e spazio su disco per l'archiviazione dei dati di servizio. I costi di memoria sono stimati in 60 MB per partizione e l'utilizzo dello spazio su disco è stimato all'1% della dimensione totale della partizione. Per confronto, la tecnica WORAM, che ha uno scopo simile, si traduce in un rallentamento da 5 a 200 volte superiore con una perdita del 75% dello spazio su disco utilizzabile.
Il codice per le utility (shufflecake-userland) e il modulo del kernel Linux (dm-sflc) è scritto in C e rilasciato sotto licenza GPLv3, il che rende impossibile includere il modulo del kernel rilasciato nel kernel principale di Linux. sotto la licenza GPLv2 in base alla quale viene distribuito il kernel.
Se desideri saperne di più, puoi trovare maggiori dettagli al seguente link.