Come posso essere sicuro che una directory o un file sia effettivamente cancellato?


14

So che la maggior parte dei file, una volta eliminati, non vengono effettivamente rimossi dal disco e possono essere recuperati in seguito.

Come posso assicurarmi che una directory che ho cancellato verrà effettivamente rimossa dal disco? Ci sono utilità per quello?

Sto usando Debian Linux.


5
La risposta breve: non puoi! La lunga risposta: distruggere fisicamente il disco o riformulare la domanda: quanti sforzi ci vorrebbe per recuperare i dati e quale sarebbe il tasso di successo di un simile tentativo?
Marco

Risposte:


11

Crittografa i dati prima di memorizzarli. Per cancellare i dati, pulire il tasto.

Se hai già scritto i dati in chiaro, è troppo tardi per cancellarli in modo semplice. Potrebbero esserci più copie dei dati presenti in vari punti:

  • sul filesystem se il file è stato scritto più volte (sovrascritto o sostituito);
  • sul filesystem se è stato riorganizzato come parte della deframmentazione;
  • nel diario (è probabile che questo scompaia abbastanza rapidamente dopo l'ultima scrittura dei dati);
  • nei backup;
  • nei settori disabili (specialmente su SSD).

Per sbarazzarsi delle copie dei dati sul filesystem, un metodo grezzo è quello di riempire lo spazio libero ( cat /dev/zero >somefilee attendere che si fermi perché il filesystem è pieno). Questo sovrascriverà tutti i blocchi completi.

Piccole parti dei dati possono rimanere in blocchi incompleti parzialmente utilizzati da altri file. Ciò è particolarmente preoccupante per i nomi dei file, che possono rimanere nei blocchi che memorizzano il contenuto della directory. Per sbarazzarsi di tutto, eseguire il backup di tutti i file, sovrascrivere completamente il dispositivo contenente il file system, quindi ripristinare i file.

I supporti di archiviazione possono conservare i dati in blocchi non più in uso. Sui dischi rigidi, ciò significa blocchi danneggiati che sono stati riallocati; questo è un evento piuttosto raro fino a quando il disco non inizia a logorarsi. Su SSD, questo è un evento comune a causa del livellamento dell'usura. In entrambi i casi, la minaccia è molto bassa, perché l'accesso a tali dati richiede un aggressore un po 'sofisticato con hardware moderatamente costoso e tempo da perdere. Se ti preoccupi di queste minacce, crittografa i tuoi dati e non lasciare in giro la chiave.

Si noti che è possibile visualizzare consigli sulla cancellazione dei dati eseguendo più passaggi o utilizzando dati casuali anziché zero ("cancellazione di Gutmann"). Dimenticalo: questo vale solo per i dischi rigidi degli anni '80 (e anche allora i dati non sono così economici da ricostruire e la ricostruzione è piuttosto inaffidabile). La sovrascrittura con zero è abbastanza buona; fare più passaggi casuali è un consiglio obsoleto o olio di serpente. Vedi Perché scrivere zeri (o dati casuali) su un disco rigido più volte rispetto a farlo una volta sola?


12

C'è uno strumento molto popolare chiamato shred. Sovrascriverà ogni file 25 volte prima di essere eliminato. Questo potrebbe darmi quello che stai cercando.

L'uso di shred è abbastanza semplice

$ shred secret_archive.tar.gz

Si noti tuttavia che sui sistemi moderni shredpotrebbe essere inefficiente o inutile se:

  • I tuoi programmi creano file temporanei di cui non sei a conoscenza (come molte applicazioni GUI)
  • Il tuo FS è basato su Copy-On-Write (come ZFS o Btrfs)
  • Il tuo FS è basato su log (come NILFS)
  • Il tuo FS utilizza il journaling dei dati (come JFS, ReiserFS, XFS, ext3 o ext4 in alcune configurazioni)
  • Il tuo FS usa la compressione
  • Il tuo FS alloca nuove versioni di file in posizioni diverse
  • Hai istantanee o back-up
  • Sei su una rete FS
  • Stai utilizzando un SSD con algoritmi di livellamento dell'usura

Altre opzioni potenzialmente più sicure sono:

  • Crittografia dei dati critici
  • Sovrascrivere l'intera partizione o dispositivo di archiviazione
  • Distruzione fisica del dispositivo

1
Secondo la mia manpage shredfunziona anche con ext3 (e immagino anche ext4) quando si usano le modalità data = order (default) e data = writeback . Inoltre c'è una semplice alternativa: basta creare un file enorme che occupa tutto lo spazio rimanente del file system in modo che il file eliminato venga sovrascritto.
scai,

Grazie. L'ho appena riparato. journaling -> data jornaling
Taffer

@scai, l' enorme metodo del file non funzionerà necessariamente poiché i blocchi del file potrebbero essere già stati riallocati e non ancora scritti (come i dati di fallo, l'ultimo blocco di file o dirs ...)
Stéphane Chazelas,

3
shredè olio di serpente: non è meglio di head -c $(wc -c secret_archive.tar.gz)>! secret_archive.tar.gz`. L'uso di shred è sempre inutile a meno che non si utilizzi un disco rigido degli anni '80 o dei primi anni '90.
Gilles 'SO- smetti di essere malvagio' il

3
straccio / BCWipe / etc. sono olio di serpente a livello di filesystem. Per qualsiasi filesystem. A causa del modo in cui lavori con i file: ogni volta che fai clic su Salva, il vecchio file viene eliminato (risiede nello spazio libero) e viene creato un nuovo file. Non puoi distruggerlo se il filesystem se ne è già dimenticato. - È diverso a livello di dispositivo o sovrascrivi tutto lo spazio libero. C'è shred è una delle poche fonti di dati casuali veloci disponibili in Linux / Unix. / dev / (u) casuale è troppo lento per essere utilizzabile per sovrascrivere grandi quantità di dati. - Quindi un singolo shred pass è OK per il dispositivo o lo spazio libero, non solo per il singolo file
frostschutz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.