[Articolo] Cancellazione sicura dei file in Linux


Difficoltà articolo (0->10): 5

Approfondiamo oggi il tema della cancellazione dei file su Linux, e in particolare vedremo come è possibile rimuovere definitivamente e in modo sicuro i propri dati. Questo può essere utile se dobbiamo cancellare dati sensibili, ad esempio se vogliamo cedere un disco o una chiavetta USB ad un nostro amico o conoscente.

Quali metodi conoscete per rimuovere i file su Linux? rm? rmdir? La formattazione completa dell’intero disco? Ecco, tutti questi strumenti non sono sufficienti per la cancellazione definitiva di un file, anche se possono andare bene per la quotidianità. Ad esempio il comando rm non elimina realmente, ma solo l’indice che punta a quel file, rendendo impossibile il suo recupero, ma solo apparentemente! Con questi metodi infatti il sistema non elimina fisicamente i file, ma modifica solamente le coordinate dei file rimossi in maniera tale da poter essere riscritti successivamente. E’ possibile quindi recuperare in un secondo momento file e directory rimossi in questo modo con semplici programmi anche gratuiti, come ad esempio con PhotoRec o con Recuva, e non servono aziende specializzate per farlo.

Esaminiamo in dettaglio due strumenti che possiamo usare per rimuovere definitivamente file e directory:

  • shred
  • srm

Il comando shred, presente solitamente di default tra le utility di sistema, permette di sovrascrivere X volte (3 di default) un file in modo tale da rendere impossibile recuperarne il reale contenuto.

# shred -vu prova.txt
shred: prova.txt: pass 1/3 (random)...
shred: prova.txt: pass 2/3 (random)...
shred: prova.txt: pass 3/3 (random)...
shred: prova.txt: removing
shred: prova.txt: renamed to 000000000000
shred: 000000000000: renamed to 00000000000
shred: 00000000000: renamed to 0000000000
shred: 0000000000: renamed to 000000000
shred: 000000000: renamed to 00000000
shred: 00000000: renamed to 0000000
shred: 0000000: renamed to 000000
shred: 000000: renamed to 00000
shred: 00000: renamed to 0000
shred: 0000: renamed to 000
shred: 000: renamed to 00
shred: 00: renamed to 0
shred: prova.txt: removed

Alcuni esempi di utilizzo sono:

$ shred -zu file.pdf$ shred -vun 15 file.pdf

$ shred -v /dev/hda1

$ shred -v -u -z -n 5 file.txt

Dove:

  • l’opzione z specifica che dopo l’eliminazione del file vengono scritti tutti 0, per cercare di nascondere ad altri tool il fatto che è stato usato un comando per l’eliminazione di dati;
  • l’opzione v serve per la modalità verbose;
  • l’opzione u per eliminare anche il puntatore al file;
  • l’opzione n XXX (con XXX numero) indica quante volte deve essere sovrascritto il file da eliminare.

Attenzione: il comando non funziona con tutti i tipi di file system, ad esempio non funziona con sistemi RAID che scrivono dati in modo ridondato!

Il comando shred ha però i suoi limiti. Cosa succede se vogliamo eliminare tutte le sottodirectory di una determinata directory? Dovrebbe essere sufficiente usare l’asterisco:

shred -uv *

E invece no! Il comando precedente eliminerà tutti i file contenuti nella directory di lavoro corrente, ma non le sottodirectory. Per risolvere possiamo usare un altro strumento: srm (Secure Remove).

Con srm il processo di cancellazione dei dati è il seguente:

  1. 1 passaggio con 0xff
  2. 5 passaggi casuali. /dev/urandom è utilizzato se disponibile come fonte RNG sicura.
  3. 27 passaggi con valori speciali definiti da Peter Gutmann.
  4. 5 passaggi casuali. /dev/urandom è utilizzato se disponibile come fonte RNG sicura.
  5. Troncamento del file

srm scrive blocchi a 32k allo scopo di avere una maggiore velocità, di riempire i buffer di cache del disco per costringerli a svuotarsi e sovrascrivere i dati vecchi che appartenevano al file.

Le opzioni di srm sono:

  • -d ignora i due file speciali costituiti con i punti . e .. dalla linea di comando. (così si può eseguirlo come “srm -d .* *”)
  • -f fast (ed insicuro): no viene usato /dev/urandom, e non viene utilizzato il modo sincronizzato.
  • -l diminuisce la sicurezza. Solo due passaggi sono scritti: uno con 0xff ed i valori in modalità casuale.
  • -l -l per una seconda volta per abbassare ulteriormanete la sicurezza: viene fatto solo un passaggio casuale.
  • -r modalità ricursiva, cancella le sottodirectory.
  • -v modalità dettagliata
  • -z pulisce l’ultima scrittura con zeri invece che con dati casuali

Come ho già scritto nel corso dell’articolo, con i normali strumenti di recupero file (Recuva per esempio) non è possibile recuperare i file cancellati con gli strumenti visti fino ad ora, mentre si possono recuperare file rimossi con i comandi “semplici” del sistema (es. rm). Tuttavia, in ambito professionale e forense esistono programmi particolari e molto costosi che sono in grado di leggere le impronte magnetiche (nel caso degli HDD) o elettriche (nel caso degli SSD) lasciate da un singolo bit eradicato con la formattazione a basso livello, rendendo possibile il recupero del bit (e del file finale). Tale percentuale si abbassa notevolmente se il processo di formattazione viene ripetuto numerose volte: si consiglia di utilizzare almeno 7 passaggi di dd per cancellare hard disk da ogni traccia di file o dati sensibili; ma se non avete segreti militari da nascondere, un passaggio di dd è più che sufficiente, specie se il disco verrà subito riutilizzato (verranno progressivamente sovra-scritte le impronte ancora presenti).

roghan

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...