Come posso eliminare in modo sicuro il contenuto di una chiavetta USB in modo che i dati non possano essere recuperati.


32

Vorrei sapere come eliminare un'unità flash USB tramite il terminale, se possibile, in modo che i dati non possano essere recuperati.


31
Un'unità flash? Rompi la cosa, fai leva su tutte le fessure dal circuito verde e schiacciale in piccoli pezzi luccicanti, poi vai a comprarne un'altra. La distruzione fisica è davvero l'unico modo per esserne sicuri, per via del livellamento dell'usura e delle cose. In futuro, utilizzare la crittografia dell'intero disco e perdere le chiavi | password quando non la si desidera più.
Blacklight Shining

1
@BlacklightShining - questa è l'unica vera risposta. molti dei bastoncini economici sono anche riciclabili.
Mikeserv,

1
@BlacklightShining Anche trasformarlo in plasma funziona bene.
PyRulez,

3
Se per te è importante che i dati non siano recuperabili, l'unica soluzione "sicura" è la distruzione fisica. Se è sufficiente essere semplicemente difficili da recuperare, non c'è davvero bisogno di altro che formattare / sovrascrivere.
Sobrique,

Bruciale in un fuoco di carbone, assicurando che tutte le parti raggiungano un calore rosso.
Ben

Risposte:


47

TL / DR: assicurati di ottenere il nome corretto del dispositivo, assicurati che non sia montato e esegua tutte le sovrascritture casuali che puoi permetterti. Puoi seguirlo con un comando di cancellazione progettato per l'hardware flash, se hai una distribuzione abbastanza recente. In questi controlli, utilizzare sempre l'unità (come / dev / sd h ) e non il nome della partizione (che sarebbe / dev / sd h1 )

# dmesg|grep sdXX
[3600.000001] sd 6:0:0:0: [sdXX] 125106176 512-byte logical blocks: (64.0 GB/59.6 GiB)
# blkid|grep sdXX
/dev/sdXX1: PARTUUID="88a03bb2-ced8-4bb2-9883-0a51b4d460a8"
# df|grep /dev/sdXX
# shred -vzn8 /dev/sdXX
shred: /dev/sdXX: pass 1/9 (random)...
shred: /dev/sdXX: pass 1/9 (random)...46MiB/3.8GiB 1%
...
shred: /dev/sdXX: pass 9/9 (000000)...3.8GiB/3.8GiB 100%
# blkdiscard -s /dev/sdXX
blkdiscard: /dev/sdXX: BLKSECDISCARD ioctl failed: Operation not supported
# blkdiscard /dev/sdXX
blkdiscard: /dev/sdXX: BLKDISCARD ioctl failed: Operation not supported
#

In teoria, sovrascrivere con zero con ddva bene. Tuttavia, a causa della modalità di creazione degli interni di un'unità flash, se si utilizza un singolo passaggio di sovrascrittura, potrebbero esserci diversi strati di dati nascosti dietro i blocchi effettivi che conservano ancora le informazioni rimanenti.

In genere una parte della memoria flash è difettosa ed è contrassegnata così durante la produzione. Ci sono anche altri bit che possono andare storti (diventando immutabili, inattuabili o insopportabili), queste parti devono essere contrassegnate come difettose anche durante la vita. Queste informazioni sono archiviate in uno spazio riservato, sugli stessi chip dei tuoi dati. Questo è uno dei numerosi motivi per cui una chiavetta USB da 4 GB non mostra una capacità di 2 ^ 32 byte.

L'archiviazione flash è inoltre organizzata internamente in blocchi più grandi, a volte molto più grandi dei filesystem che lavorano sull'unità. Una dimensione tipica del blocco del filesystem è 4KB, e i segmenti flash che possono essere cancellati in una volta sola possono variare da 64 KB a persino diversi megabyte. Questi blocchi di grandi dimensioni possono essere cancellati solo per intero, il che reimposta tutto il blocco su uno stato noto (tutti 1 o tutti 0). Successivamente una scrittura di dati può alterare qualsiasi bit (modificare gli 1 di default in 0 se necessario, o modificare gli 0 di default in 1), ma solo una volta . Per ripristinare i valori predefiniti di uno qualsiasi dei bit , è necessario cancellare nuovamente tutto il segmento!

Pertanto, quando si desidera modificare un blocco 4KB (al file system viene richiesto di modificare un singolo carattere nel mezzo di un file), il controller flash dovrebbe leggere e bufferizzare tutti i 64 KB dei vecchi dati, cancellarli tutti e riscrivi i nuovi contenuti. Questo sarebbe molto lento, la cancellazione dei segmenti è l'operazione più lenta. Inoltre, un segmento può essere cancellato solo per un tempo limitato (decine di migliaia è tipico), quindi se si apportano troppe modifiche a un singolo file, questo può deteriorare rapidamente l'unità.

Ma non è così. I controller flash intelligenti scrivono semplicemente i nuovi dati 4KB altrove e prendono nota per reindirizzare le letture a questo 4KB di dati nel mezzo del vecchio blocco. Hanno bisogno di un po 'più di spazio, che non possiamo vedere per archiviare queste informazioni sui reindirizzamenti. Provano anche ad assicurarsi che attraversino tutti i segmenti accessibili per memorizzare i dati, questo si chiama livellamento dell'usura .

Ciò significa che in genere i vecchi dati sono ancora sull'unità da qualche parte! Se hai appena cancellato tutti i blocchi accessibili, tutti i blocchi nascosti mantengono comunque una versione abbastanza recente dei dati. Se questo è accessibile a un utente malintenzionato da cui si desidera proteggere i propri dati, è una domanda diversa.

Se si dispone di una distribuzione abbastanza recente e l'unità USB è programmata per rivelare che si tratta di un'unità flash, è blkdiscardpossibile utilizzare l' TRIMoperazione sottostante , che è la cancellazione del segmento di cui abbiamo parlato sopra. Ha anche un flag aggiuntivo per assicurarsi che anche i dati nascosti invisibili vengano completamente cancellati dall'hardware:

# blkdiscard -s /dev/myusbdevice

-s, --secure Esegue uno scarto sicuro. Uno scarto sicuro equivale a uno scarto normale, tranne per il fatto che devono essere cancellate anche tutte le copie dei blocchi scartati che potrebbero essere stati creati dalla Garbage Collection. Ciò richiede il supporto dal dispositivo.

Non funzionerà necessariamente, come ho dimostrato sopra. Se ottieni Operation not supported, il tuo kernel, i tuoi programmi di utilità o il chip gateway USB (che consente al controller flash di apparire come un'unità tramite USB) non supporta il TRIMcomando di passaggio . (Il controller flash deve essere ancora in grado di cancellare i segmenti da solo). Se è supportato dal fornitore dell'unità, questo è il modo più sicuro.

Un altro modo meno sicuro per essere sicuri di consentire a meno dei vecchi dati di indugiare da qualche parte è quello di sovrascriverli più volte, con valori casuali, se possibile.

Perché casuale, chiedi? Immagina solo se l'unità USB è stata resa troppo intelligente e ha rilevato che volevi cancellare un settore, e ha appena apportato una modifica in una bitmap che questo settore è ora libero e dovrà essere cancellato in seguito. Ciò significa che può accelerare la scrittura di zeri, quindi rende un pendrive che appare più efficiente, giusto? Non importa se l'unità lo sta facendo.

Al limite estremo, l'unità potrebbe solo ricordare quanto hai cancellato dall'inizio e tutto ciò che serve per archiviare è di circa 4 byte di informazioni per farlo, e non cancellare nulla dai dati che vuoi far sparire. Tutto in modo che possa sembrare molto veloce.

Se si sovrascrivono i dati con valori casuali e imprevedibili, queste ottimizzazioni sono impossibili. Quindi l'unità deve assicurarsi che i dati vengano archiviati all'interno dei chip flash. Ma non sarai ancora in grado di escludere che alcuni dei settori utilizzati in precedenza siano ancora lì con alcuni dei tuoi vecchi dati, ma l'unità non ha considerato importante cancellarli ancora, poiché non è accessibile normalmente. Solo il TRIMcomando effettivo può garantirlo.

Per automatizzare la sovrascrittura con valori casuali, ti consigliamo di esaminare shredcome, ad esempio:

# shred -vzn88 /dev/myusbdrive

Le opzioni utilizzate:

  • -v per averlo fatto mostrare i progressi
  • -z per azzerarlo come fase finale
  • -n8 è fare 8 passaggi casuali di sovrascritture

Se possibile, utilizzare entrambi blkdiscarde shred, se blkdiscard -ssupportato dall'unità, è la soluzione ottimale, ma non si può fare male a fare in shredanticipo per escludere errori del firmware.

Oh, e ricontrolla sempre tre volte il dispositivo che stai cercando di cancellare! dmesg può aiutare a vedere qual è stato il dispositivo inserito più di recente e vale anche la pena controllare il nome del dispositivo con cui si desidera cancellare ls -al, anche per i numeri di nodo dei dispositivi, e l' blkidoutput per vedere quali partizioni potrebbero essere disponibili NON voglio cancellare.

Non utilizzare mai questi comandi su un'unità interna che si desidera continuare a utilizzare: blkdiscardfunzionerà solo su unità a stato solido, ma non vale la pena provare a perdere i dati!

Potrebbero esserci altri modi per cancellare i dati in modo sicuro man mano che la tecnologia avanza.

Un altro modo menzionato è il SECURITY ERASEcomando ATA che può essere emesso tramite hdparmcomandi. Nella mia esperienza, non è davvero supportato su unità flash. È stato progettato per i dischi rigidi aziendali e la funzionalità non è sempre implementata nei dispositivi di archiviazione a basso costo.

L' operazione TRIM/ DISCARDè molto più recente del SECURITY ERASEcomando ed è stata creata in risposta alle funzionalità flash, quindi ha una possibilità molto più alta di essere implementata, anche in unità USB economiche, ma non è ancora onnipresente. Se si desidera cancellare una scheda SD / micro SD in un dongle USB e si blkdiscarddice che non è supportato, è possibile provare un lettore di dongle / card diverso e / o farlo in una macchina con uno slot SD / MMC diretto .


Grazie per le informazioni all'avanguardia. blkdiscardè in Debian Jessie, e solo nelle ultime due versioni di Ubuntu, ma non in Ubuntu LTS 14.04. blkdiscardè stato aggiunto al pacchetto util-linuxversione 2.23.
RobertL

Sai come si blkdiscardconfronta alla hdparmsoluzione in un altro commento di @zhenech (in particolare il collegamento: ata.wiki.kernel.org/index.php/ATA_Secure_Erase ).
RobertL

Non sono sicuro se questo è anche il caso delle unità flash, ma potrebbe valere la pena leggere howtogeek.com/234683/…
hhaslam11,

1
@RobertL Uguale, in senso negativo. La maggior parte delle unità flash economiche non implementano né ATA Secure Erase né TRIM, quindi entrambi i metodi probabilmente falliranno.
duskwuff,

27

Mi rendo conto che questa non è davvero una risposta alla tua domanda, ma il modo più semplice è quello di distruggere fisicamente l'unità (distruggerlo ripetutamente con una mazza generalmente fa il trucco, ma anche la distruzione industriale o l'incenerimento sono opzioni). Se sei abbastanza preoccupato per la sicurezza da voler assicurarti che i dati siano irrecuperabili, il valore di tali dati è probabilmente molte volte superiore al costo dell'unità stessa e il metodo fisico è economico e affidabile.


5
Se si tratta di un'unità flash economica e sostituibile, vai sicuramente con la distruzione fisica. Se si utilizza un martello, assicurarsi di ottenere il chip di archiviazione effettivo. Ho aperto un vecchio flash drive per divertimento un paio di settimane fa, e la maggior parte del suo volume fisico era in realtà case e air.
Blacklight Shining

1
A parte la mia risposta, sono completamente d'accordo - è difficile distruggerli a pezzi tramite accesso ssh :) Dato quanto questi dongle siano inaffidabili per l'archiviazione dei dati, è sorprendentemente difficile farli effettivamente sbarazzarsi degli stessi dati.
chexum,

D'accordo - se per te è importante che i dati siano irrecuperabili, la distruzione fisica è l'unica opzione. Ammettiamolo, rispetto al valore commerciale dei dati su di esso, anche le unità più costose probabilmente non sono così significative. Se non è così importante, quasi ogni cancellazione / sovrascrittura è "abbastanza buona".
Sobrique,

1
Questo metodo non è solo il più efficace, è anche il più divertente. Non perdere mai l'opportunità di usare una mazza e di essere pagato per questo.
zetetico

2

Quasi tutte le funzioni di eliminazione sicura disponibili sono state progettate per la rotazione di supporti magnetici, in cui il computer può in genere determinare la posizione fisica [1] dei blocchi utilizzati per il file e scrivere su quegli stessi blocchi. I chip del controller di archiviazione a stato solido astraggono la posizione fisica dei dati dal sistema e gli piace spostarli.

La tua domanda dipende davvero da chi sta cercando i tuoi dati. Se sei preoccupato per la perdita casuale o il furto occasionale, allora un formato regolare andrà bene. Se sei preoccupato di essere preso di mira da un utente altamente motivato e tecnicamente competente con risorse sostanziali a sua disposizione [2], incenerisci l'unità e spendi $ 10 per una nuova.

  1. sì, esiste una mappatura a blocchi logici. Ma il blocco logico A verrà sempre mappato sul blocco fisico B.

  2. questa persona apriva l'unità, estraeva il chip di memoria dalla scheda e leggeva direttamente la memoria flash, bypassando il controller


1

Il modo più semplice e veloce che conosco è scrivere zeri (0) sull'intero disco:

dd if=/dev/zero of=/dev/sdX

dove si /dev/sdXtrova il nodo del dispositivo del thumbdrive.

Alcuni suggeriscono un processo più approfondito con più iterazioni e altri schemi. Utilità specifiche sono disponibili per fare questo. Il pacchetto GNU coreutils contiene il shredcomando appositamente per questo scopo. Molte persone usano anche badblocks -w, che fa parte del pacchetto e2fsprogs. Su FreeBSD l' shredutilità è chiamata gshrede dovrebbe essere disponibile in entrambe le porte /usr/ports/sysutils/coreutilso /usr/ports/sysutils/fileutils.


Questo non è abbastanza per eseguire una pulizia sicura. Vorrei andare per almeno 20 serie di scritture di cose casuali. Meglio di tutto, vorrei utilizzare uno strumento per la pulizia sicura, ad esempio la distruzione. Anche se alcune persone dicono che non ha senso e che l'azzeramento è sufficiente, non me ne fiderei.
mons

4
@monsune È solo una leggenda urbana. Mentre alcuni standard lo richiedono , non sembra esserci alcun attacco pratico.
Gilles 'SO- smetti di essere cattivo'

Le unità flash utilizzano il livellamento dell'usura per non distruggere le celle flash troppo velocemente. Immagina come: l'unità ha 1200 celle ma ti dice solo che ne ha 1000 e il controller seleziona su quale cella scrive effettivamente. Quindi dopo un giorno hai cancellato 1000 celle ma non le 200 in riserva e quelle potrebbero essere leggibili collegando il flash effettivo a un controller senza riserva. Suggerirei di fare una cancellazione sicura dopo il dd, ma non tutti i supporti flash lo supportano.
zhenech

@zhenech, che cos'è "cancellazione sicura"?
RobertL


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.