Vorrei sapere come eliminare un'unità flash USB tramite il terminale, se possibile, in modo che i dati non possano essere recuperati.
Vorrei sapere come eliminare un'unità flash USB tramite il terminale, se possibile, in modo che i dati non possano essere recuperati.
Risposte:
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 dd
va 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, è blkdiscard
possibile utilizzare l' TRIM
operazione 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 TRIM
comando 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 TRIM
comando effettivo può garantirlo.
Per automatizzare la sovrascrittura con valori casuali, ti consigliamo di esaminare shred
come, ad esempio:
# shred -vzn88 /dev/myusbdrive
Le opzioni utilizzate:
Se possibile, utilizzare entrambi blkdiscard
e shred
, se blkdiscard -s
supportato dall'unità, è la soluzione ottimale, ma non si può fare male a fare in shred
anticipo 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' blkid
output 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: blkdiscard
funzionerà 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 ERASE
comando ATA che può essere emesso tramite hdparm
comandi. 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 ERASE
comando 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 blkdiscard
dice che non è supportato, è possibile provare un lettore di dongle / card diverso e / o farlo in una macchina con uno slot SD / MMC diretto .
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-linux
versione 2.23.
blkdiscard
confronta alla hdparm
soluzione in un altro commento di @zhenech (in particolare il collegamento: ata.wiki.kernel.org/index.php/ATA_Secure_Erase ).
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.
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.
sì, esiste una mappatura a blocchi logici. Ma il blocco logico A verrà sempre mappato sul blocco fisico B.
questa persona apriva l'unità, estraeva il chip di memoria dalla scheda e leggeva direttamente la memoria flash, bypassando il controller
Il modo più semplice e veloce che conosco è scrivere zeri (0) sull'intero disco:
dd if=/dev/zero of=/dev/sdX
dove si /dev/sdX
trova 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 shred
comando appositamente per questo scopo. Molte persone usano anche badblocks -w
, che fa parte del pacchetto e2fsprogs. Su FreeBSD l' shred
utilità è chiamata gshred
e dovrebbe essere disponibile in entrambe le porte /usr/ports/sysutils/coreutils
o /usr/ports/sysutils/fileutils
.
Questo dovrebbe essere in grado di cancellare in modo sicuro l'unità flash se si prevede di riutilizzarla: http://linux.die.net/man/1/scrub In caso contrario, fonderla ...