Cancellazione sicura dei dati – software per GNU/Linux

Nel precedente articolo ho descritto in cosa consista la cancellazione sicura dei dati e quando sia opportuno eseguirla, citando alcuni tra gli standard più diffusi per “ripulire” i dischi. Mostrerò adesso alcuni programmi per GNU/Linux disponibili a questo scopo. I programmi di seguito elencati sono stati testati sotto Kubuntu Lucid Lynx (10.04).


  • Wipe

Semplice programma a riga di comando, come da buona tradizione dell’ambiente Gnu/Linux, wipe è disponibile nei repository di Ubuntu (sudo apt-get install wipe).

La pagina di manuale di Wipe presenta esplicitamente un questione importante per la sicurezza (leggasi: “rendere la vita difficile a chi tenta di recuperare i dati”): la riallocazione dei blocchi difettosi. In sintesi, gli hard disk moderni copiano “silenziosamente” il contenuto dei blocchi difettosi su altri blocchi (rimappatura), in modo da scongiurare perdite di dati. Il blocco marcato come difettoso non è più accessibile ma contiene ancora i dati che vi erano stati scritti prima della rimappatura che potrebbero dunque essere recuperati, con tutte le difficoltà del caso.

Dopo averci dato questa informazione, l’autore del programma parte con il suo bell’attacco di paranoia da film. Insieme al suo amico immaginario, l’autore di Wipe ipotizza che i moderni hard disk possano tenere da parte a nostra insaputa file contenenti informazioni sensibili. Tali informazioni possono poi essere recuperate tramite comandi IDE/SCSI segreti, frutto degli accordi tra i produttori e le agenzie governative. Anche gli hacker supportati da potenti organizzazioni criminali potrebbero arrivare a scoprire tali comandi. È quindi opportuno non fidarsi del proprio hard disk e cifrare i dati. Questi controlli segreti, condotti anche attraverso qualche losca operazione effettuata dai processori, servono come base per le investigazioni criminali ed il “controllo del pubblico dissenso”.

Comincio a sospettare anche del tostapane, penso che mi stia spiando…

Tornando a wipe, questo programma consente di cancellare non solo dischi interi e file ma anche directory. Le raccomandazioni sull’utilizzo ci informano che è meglio, ai fini della sicurezza, cancellare una partizione (o un disco intero, distruggendo così il MBR) piuttosto che un singolo file e che i file system journaled possono inficiare il risultato dell’operazione (ulteriori dettagli nella sezione dedicata a “shred”).

Il “quick wipe” (default) prevede 4 passaggi di dati random: in alternativa se ne può specificare il numero con “-Q <n>”.
Wipe si presenta ricco di opzioni per personalizzare il metodo di generazione dei dati random. Si può infatti scegliere sia il device da cui ricevere i dati di input (opzione -R, default: /dev/random) sia l’algoritmo PRNG (Pseudo Random Number Generator: generatore di numeri pseudo-casuali) tramite l’opzione “-M”.

La scelta dell’algoritmo è in effetti la chiave dell’operazione. Infatti è importante che il flusso di dati usati per sovrascrivere il contenuto dei dischi non sia ripetibile e, quindi, prevedibile. Deve essere cioè impossibile (o almeno molto molto difficile!) ricostruirne la sequenza, così da non poter risalire ai dati originali.

L’algoritmo scelto usa quindi un “seed” (“seme”, detto anche “salt” – “sale”) di opportuna lunghezza (ad esempio 128 bit: maggiore è la lunghezza, maggiore è il livello di sicurezza ottenuto) per generare lo stream di dati. Il seed è una sequenza di bit ottenuta a sua volta da una funzione di “hashing“, come il noto “MD5” che spesso vediamo indicato come sequenza di caratteri per verificare l’integrità di un file scaricato. E adesso con calma e pian pianino spieghiamo che significano tutte queste brutte parole…

Sebbene la teoria e la tecnica dietro questi termini siano abbastanza “pesanti”, il concetto è relativamente semplice: le funzioni di hashing operano una serie di trasformazioni sulle sequenze di caratteri forniti in ingresso (“hash” è una parola inglese che indica un misto di carne e verdure tagliate a pezzetti) fino ad ottenere un’unica stringa di lunghezza determinata (detta “digest”, di 48 – 128 bit nelle implementazioni attuali). Le funzioni di hashing hanno la fondamentale peculiarità di non generare mai la stessa stringa a partire da sequenze di ingresso diverse e, soprattutto, di non essere invertibili. Non si può cioè ricostruire la sequenza di ingresso a partire dal risultato della funzione. Esattamente quello di cui abbiamo bisogno!

[Sequenza A] ---> [Funzione di Hashing] ---> [Digest 1]
[Sequenza B] ---> [Funzione di Hashing] ---> [Digest 2]
[Digest] -X-> [Inversione dell'hashing] -X-> [Sequenza originale]

A questo punto il digest viene usato come valore iniziale (come “seme”, appunto) per il generatore di numeri pseudo-casuali et voilà!, abbiamo il nostro flusso di dati da scrivere su disco per cancellare le tracce dei più torbidi segreti in esso custoditi. Nella successiva sezione dedicata a DBAN troverete qualche informazione aggiuntiva sui PRNG (meglio prendere ‘ste robine a piccole dosi, altrimenti ci si squagliano le sinapsi…) ;-).

Tutto questo con Wipe si traduce nelle opzioni

  • “-R”: origine dei dati per la generazione del seed (dev/random o output di comando)
  •  “-S <x>”: metodo di generazione del seed
  • “-M <y>”: (scelta del algoritmo PRNG)

E visto che gli schemini fanno molto figo, ecco l’ineluttabile ed ineludibile rappresentazione di quello che succede sotto i vostri occhioni attoniti di distruttori di dati:

┌──────────────────(-R)─────────────────┐                  ┌──────(-S <x>)──────┐    ┌───(-M <y>)───┐
[Dati da /dev/random o output di comando] -> [Hash MD5] -> [Generazione del Seed] -> [Algoritmo PRNG] -> ...
... -> [Morte, Caos e Distruzione!]

Ed ecco l’altrettanto ineluttabile output generato da wipe per ripulire in pochi secondi (opzioni: quick wipe, recurse subdirs, seed da random device, output esteso) i circa 60 MB di file e relativa struttura di directory “scomodi” creati allo scopo:

ubuntu@ubuntu:~/Documenti/Level1/Level2/Level3$ ls -l
total 61680
-rw-r--r-- 1 ubuntu ubuntu 21168128 2011-08-31 16:55 filecompromettente
-rw-r--r-- 1 ubuntu ubuntu 21430272 2011-08-31 16:55 filescabroso
-rw-r--r-- 1 ubuntu ubuntu 20480000 2011-08-31 16:54 filesegreto
ubuntu@ubuntu:~/Documenti/Level1/Level2/Level3$ cd ~/Documenti
ubuntu@ubuntu:~/Documenti$ wipe -q -r -S r -i Level1/
Okay to WIPE 1 directory ? (Yes/No) yes
Entering directory 'Level1/'
Entering directory 'Level2'
Entering directory 'Level3'
File filecompromettente (21168128 bytes) wiped
File filescabroso (21430272 bytes) wiped
File filesegreto (20480000 bytes) wiped
Going back to directory /home/ubuntu/Documenti/Level1/Level2
Going back to directory /home/ubuntu/Documenti/Level1
Going back to directory /home/ubuntu/Documenti
Operation finished.
3 files wiped and 0 special files ignored in 3 directories, 0 symlinks removed but not followed, 0 errors occured.

Tutto fatto al volo da una live di Natty che porto sempre con me su una chiavetta: avviato un pc a caso, una botta di apt-get, uno spruzzo di terminale et voilà #2. Servito fresco fresco che ci manca solo l’ombrellino e la fetta di limone. No, per dire…

E poi mi chiedono perché uso Gnu/Linux: perché ti aiuta a fare quello che ti serve, quando ti serve, come ti serve, senza “Ma…”, “Però…”, “L’EULA non lo prevede…”, “It’s magically magic!”, “Per farlo devi donarci un organo”, etc… E poi perché smanettare mi piace un sacco! Vabbè, finito il momento di fanatismo, andiamo oltre…

[Shred →]


Informazioni su Man from Mars

https://extendedreality.wordpress.com/

  1. Ralph Magpie

    Da perfetto utonto del comp(i)uter va bene per il “filesegreto” ma perchè cancellare il filescabroso?

    Mi piace

    • La rimozione dei file scabrosi serve a fare spazio per altri file ancora più scabrosi in un’escalation di scabrosità. Con gli hard disk moderni ovviamente il problema si è mitigato. 🙂
      P.s.: L’anti spam aveva filtrato il tuo commento (evidentemente la tua fama ti ha preceduto e questi sono i risultati…)

      Mi piace

  2. Pingback: Cancellazione sicura dei dati – software per Windows « Extended Reality

  3. Pingback: Secure erase – introduction « Extended Reality

  4. Pingback: Secure erase – software for GNU/Linux « Extended Reality

Dimmi che ne pensi o fai "Ciao ciao!" con la manina // Share your thoughts or just say "Hello!"

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

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. 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 )

Google+ photo

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

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: