Come cancellare in modo sicuro i file dall'unità SSD?


14

Quando si tenta di cancellare in modo sicuro SSD, abbiamo diversi problemi:

  • Gli SSD si consumano dopo un numero limitato di cicli di cancellazione
  • Gli SSD hanno un controller che mappa dinamicamente gli LBA (indirizzi di blocchi logici utilizzati dal sistema per accedere al disco) alle celle NVRAM (le celle di memoria flash effettive) per bilanciare l'usura, il che significa dire al disco di sovrascrivere i blocchi che precedentemente memorizzavano uno specifico il file può comportare la sovrascrittura di eventuali altri blocchi di riserva.
  • Gli SSD hanno una notevole percentuale di capacità di riserva che viene utilizzata per compensare le celle di conservazione morenti e ridurre l'usura. Non sono visibili al sistema e potrebbero contenere vecchi frammenti di dati.

Ora quali opzioni abbiamo all'interno di Ubuntu per cancellare in sicurezza gli SSD?

Ho sentito che alcuni SSD più recenti dovrebbero essere in grado di cancellarsi in modo sicuro, ma come faccio a sapere se il mio SSD è in grado di farlo e come posso attivarlo?
Dovrebbe esserci anche un comando di cancellazione sicura ATA, come faccio a sapere se è supportato e come posso attivarlo?

Ci sono anche modi per cancellare in sicurezza solo un determinato file o solo lo spazio inutilizzato?
Immagino che fare un backup di tutte le partizioni, cancellare in sicurezza l'intero disco e poi ripristinare il backup sarebbe possibile ma sembra troppo complicato e richiederebbe troppo tempo per essere pratico. Ci sono altre alternative? In caso contrario, quali strumenti posso utilizzare per il backup delle partizioni senza eseguire il backup dei file già eliminati?

Naturalmente gli strumenti standard gradiscono shredo wipenon sono utilizzabili qui per i punti sopra descritti. Sovrascrivono semplicemente un file (sovrascrivendo i suoi cluster di file system che sono associati agli LBA che non puntano costantemente sulle stesse celle flash a causa del controller di livellamento dell'usura).


Potrebbero esserci alcune informazioni interessanti qui wiki.archlinux.org/index.php/SSD_memory_cell_clearing
Byte Commander

Conosco il lavoro accademico su questo che è entrato nel kernel, vedi lwn.net/Articles/480269
noleti,

Risposte:


9

Attualmente non è possibile cancellare in modo sicuro i file su SSD senza cancellare il contenuto dell'intero disco o accedere al firmware dell'SSD.

  • È impossibile sapere dove l'SSD può archiviare copie precedenti di un blocco logico.

  • A peggiorare le cose, a causa dei meccanismi di journaling e copy-on-write del file system, potrebbe essere impossibile sapere quali blocchi logici possono contenere una copia precedente di un determinato file.

L'unico modo per impedire la perdita di file eliminati a qualcuno con accesso diretto all'unità è di crittografarli in primo luogo e mantenere la chiave di crittografia al sicuro da occhi indiscreti.

Addendum:

Ho fatto qualche ricerca e ho scoperto che è possibile cancellare tutti i file precedentemente eliminati se si riesce a imparare tutti i settori non occupati di un file system, che è generalmente possibile e offerto da alcuni strumenti del file system (ad esempio per la famiglia ext * ), quindi eliminarli (ad es. blkdiscard(8)come indicato in questa risposta alla domanda collegata ), che restituisce i blocchi per la raccolta dei rifiuti finché non vengono riutilizzati e sovrascritti nel processo.

Questo è sicuro contro tutti coloro che non possono accedere direttamente alle celle flash, quindi chiunque

  • non ha un dispositivo di lettura delle celle flash adatto e
  • non riesco a parlare del firmware dell'unità nel rivelare il contenuto di blocchi non assegnati (che richiederebbe una modifica significativa del firmware nella maggior parte dei casi e comandi ATA personalizzati poiché non esiste un modo standardizzato).

Per favore, includi i punti chiave e un riepilogo delle istruzioni da quel link nella tua risposta?
Byte Commander

Ho collegato a una domanda equivalente UA. Spero sia meglio
David Foerster,

La cancellazione sicura dello spazio libero all'avvio sarebbe un'opzione praticabile?
user4493605,

1
@ user4493605: Cosa intendi con "praticabile"? È certamente possibile. Potresti aprire una nuova domanda se hai una domanda nuova o successiva? La sezione dei commenti non è adatta o pensata per nuove domande o discussioni estese. Ti prego di inviarmi un commento con una notifica per attirare la mia attenzione su di esso. Grazie.
David Foerster,

3

Avvertenza: nel caso in cui non sia già chiaro, la cancellazione sicura dell'unità eliminerà tutti i dati sull'unità e dovrebbe rendere impossibile il ripristino. È necessario eseguire il backup di tutte le informazioni critiche.

Il modo più semplice per determinare se l'unità supporta la cancellazione sicura è chiederlo: ho usato / dev / sdX negli esempi seguenti. Dovrai cambiarlo attentamente per adattarlo al dispositivo con cui stai lavorando:

fonti:

https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase

/superuser/1161531/how-to-un-freeze-drive-in-linux

$ sudo hdparm -I /dev/sdX | grep -i erase

Sul mio SSD questo si traduce in:

supported: enhanced erase
2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.

Se la cancellazione sicura è supportata dal tuo dispositivo, l'attivazione è un processo in 2 o 3 passaggi.

  1. Se il dispositivo segnala che è bloccato come indicato dall'output sudo hdparm -I /dev/sdXsimile a questo:
not   enabled
not   locked
      frozen
not   expired: security count
supported: enhanced erase

Sbloccalo sospendendo e riprendendo il tuo sistema. L'ho fatto con il comando sudo systemctl suspend spostando il puntatore fino al riavvio del sistema.

  1. Devi impostare una password per utilizzare la cancellazione sicura in questo caso sto usando foobar come password, puoi usare qualsiasi password non vuota che ti piace in quanto temporanea.

    sudo hdparm --user-master u --security-set-pass foobar /dev/sdX

  2. Con la password impostata ora puoi usarla per cancellare in modo sicuro l'unità:

sudo hdparm --user-master u --security-erase foobar /dev/sdX

Se l'unità lo supporta e lo desideri, puoi scegliere di utilizzare la cancellazione della sicurezza avanzata invece di:

sudo hdparm --user-master u --security-erase-enhanced foobar /dev/sdX

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.