Pubblicato Shufflecake, un toolkit per creare partizioni di dischi crittografate nascoste

La società di audit della sicurezza Kudelski Security ha pubblicato uno strumento chiamato Shufflecake che consente di creare file system nascosti sparsi nello spazio libero disponibile su partizioni esistenti e indistinguibili dai dati residui casuali. Le partizioni sono create in modo tale che senza conoscere la chiave di accesso è difficile dimostrarne l'esistenza anche durante l'analisi forense. Il codice delle utilità (shufflecake-userland) e del modulo del kernel Linux (dm-sflc) è scritto in C e distribuito sotto la 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 viene fornito il kernel.

Il progetto si posiziona come una soluzione più avanzata rispetto a Truecrypt e Veracrypt per nascondere i dati che richiedono protezione, che ha il supporto nativo per la piattaforma Linux e consente di posizionare fino a 15 partizioni nascoste sul dispositivo, annidate l'una nell'altra per confondere l'analisi della loro esistenza. Se l'utilizzo stesso di Shufflecake non è un segreto, come si può giudicare, ad esempio, dalla presenza delle utilità corrispondenti nel sistema, non è possibile determinare il numero totale di partizioni nascoste create. Le partizioni nascoste create possono essere formattate a discrezione dell'utente per adattarsi a qualsiasi file system, ad esempio ext4, xfs o btrfs. Ogni partizione viene trattata come un dispositivo a blocchi virtuale separato con la propria chiave di sblocco.

Per confondere le tracce, si propone di utilizzare il modello di comportamento della "negabilità plausibile", la cui essenza è che i dati preziosi vengono nascosti come strati aggiuntivi in ​​sezioni crittografate con dati meno preziosi, formando una sorta di gerarchia nascosta di sezioni. In caso di pressione, il proprietario del dispositivo può rivelare la chiave della partizione crittografata, ma in questa partizione potrebbero essere nascoste altre partizioni (fino a 15 livelli nidificati) ed è problematico determinarne la presenza e dimostrarne l'esistenza.

L'occultamento si ottiene costruendo ciascuna partizione come un insieme di sezioni crittografate posizionate in posizioni casuali sul dispositivo di archiviazione. Ogni sezione viene creata dinamicamente quando è necessario spazio di archiviazione aggiuntivo nella partizione. Per rendere l'analisi più difficile, vengono alternate fette di sezioni diverse, ad es. Le sezioni di Shufflecake non sono collegate a regioni contigue e le sezioni di tutte le sezioni vengono mescolate. Le informazioni sulle porzioni utilizzate e libere vengono archiviate in una mappa di posizione associata a ciascuna partizione, a cui fa riferimento un'intestazione crittografata. Le carte e l'intestazione sono crittografate e, senza conoscere la chiave di accesso, sono indistinguibili dai dati casuali.

L'intestazione è divisa in slot, ognuno dei quali definisce la propria sezione e le sezioni associate. Gli slot nell'intestazione sono impilati e collegati ricorsivamente: lo slot corrente contiene la chiave per decrittografare i parametri della sezione precedente nella gerarchia (quella meno nascosta), consentendo di utilizzare una password per decrittografare tutte le sezioni meno nascoste associate a la sezione selezionata. Ciascuna partizione meno nascosta considera libere le porzioni delle partizioni nidificate.

Per impostazione predefinita, tutte le sottosezioni di Shufflecake hanno la stessa dimensione visibile della sezione di livello superiore. Ad esempio, se sono presenti tre partizioni su un dispositivo da 1 GB, ciascuna di esse sarà visibile al sistema come partizione da 1 GB e lo spazio totale disponibile su disco verrà condiviso tra tutte le partizioni, se la dimensione totale dei dati archiviati supera la dimensione effettiva del dispositivo, verrà avviato un errore I/O.

Le sezioni nidificate che non sono aperte non partecipano all'allocazione dello spazio, ad es. un tentativo di riempire una partizione di livello superiore comporterà la distruzione dei dati in partizioni nidificate, ma non consentirà di rivelare la loro presenza attraverso l'analisi della dimensione dei dati che possono essere inseriti nella partizione prima che inizi l'errore (è si presuppone che le partizioni superiori contengano dati immutabili per distrarre l'attenzione e non vengano mai utilizzate separatamente, e il lavoro regolare viene sempre eseguito con la sezione nidificata più recente, lo schema stesso implica che è più importante mantenere il segreto dell'esistenza di dati piuttosto che perderli).

Infatti vengono sempre create 15 partizioni Shufflecake: alle partizioni utilizzate viene allegata la password dell'utente e alle partizioni non utilizzate viene fornita una password generata casualmente (è impossibile capire quante partizioni vengono effettivamente utilizzate). Quando le partizioni Shufflecake vengono inizializzate, il disco, la partizione o il dispositivo a blocchi virtuale allocato per il loro posizionamento viene riempito con dati casuali, il che rende impossibile identificare i metadati e i dati di Shufflecake rispetto allo sfondo generale.

L'implementazione di Shufflecake ha prestazioni piuttosto elevate, ma a causa della presenza di sovraccarico, è circa due volte più lenta nel throughput rispetto alla crittografia del disco basata sul sottosistema LUKS. L'utilizzo di Shufflecake comporta anche costi aggiuntivi per RAM e spazio su disco per l'archiviazione dei dati di servizio. Il consumo di memoria è stimato a 60 MB per partizione e lo spazio su disco all'1% della dimensione totale. Per fare un confronto, la tecnica WORAM, simile nello scopo, porta ad un rallentamento da 5 a 200 volte con una perdita del 75% di spazio su disco utilizzabile.

Il toolkit e il modulo kernel sono stati testati solo su Debian e Ubuntu con kernel 5.13 e 5.15 (supportati su Ubuntu 22.04). Va notato che il progetto dovrebbe comunque essere considerato come un prototipo funzionante, che non dovrebbe essere utilizzato per archiviare dati importanti. In futuro, prevediamo di apportare ulteriori ottimizzazioni per prestazioni, affidabilità e sicurezza, oltre a fornire la possibilità di eseguire l'avvio da partizioni Shufflecake.

Fonte: opennet.ru

Aggiungi un commento