Come eliminare i file salvati in modo sicuro su un SSD?

Da un articolo (molto lungo, ma sicuramente da leggere) su SSD :

Quando si elimina un file nel sistema operativo, non esiste alcuna reazione da un disco fisso o da un SSD. Non è finché non si sovrascrive il settore (su un disco rigido) o la pagina (su un SSD) che si perde i dati. I programmi di recupero di file utilizzano questa properties; a loro vantaggio e così vengono aiutati a recuperare i file eliminati.

La distinzione tra HDD e SSD tuttavia è ciò che accade quando si sovrascrive un file. Mentre un HDD può semplicemente scrivere i nuovi dati nello stesso settore, un SSD assegnerà una nuova pagina (o precedentemente utilizzata) per i dati sovrascritti. La pagina che contiene i dati ora non validi sarà semplicemente contrassegnata come non valida e ad un certo punto verrà cancellata.

Quindi, quale sarebbe il modo migliore per cancellare in modo sicuro i file memorizzati su un SSD? La sovrascrittura con i dati casuali come abbiamo usato per i dischi rigidi (ad esempio utilizzando l'utilità "shred") non funziona se non si sovrascrive l'unità WHOLE …

Come fare a crittografare il volume stesso? I dati eliminati resteranno ancora presenti, ma dovrebbero essere inaccessibili a chiunque non abbia la chiave appropriata.

Se l'unità SSD support la funzionalità di modalità di protezione ATA, è dotato di funzionalità di cancellazione sicura, che dovrebbe essere in grado di accedere usando qualcosa come Secure Erase .

Anche se si sovrascrive l'integer drive, non si può essere assolutamente sicuri poiché sia ​​HD che SSD contengono settori di ricambio sostituiti quando si verificano guasti o nel caso di SSD per aiutare a livellare l'usura .

Se si desidera essere assolutamente certi che i dati sono irrecuperabili, è necessario distruggere fisicamente l'unità oltre il recupero. La sovrascrittura ti dà una certezza ragionevole su HDs – su SSD, non c'è davvero un modo per raggiungere anche questo. Se si riempie l'integer drive, è ancora ansible che il block dei dati sia stato commutato in un block di riserva per livellare l'usura e riapparirà in seguito.

A causa della natura della memory flash NAND, gli SSD non possono sovrascrivere direttamente i dati. Ripetere la sovrascrittura di un file prima di cancellarla non salverà in modo sicuro su un SSD: i dati verrebbero scritti solo altrove sulla NAND.

Per capire perché questo è il caso, è necessario spiegare come gli SSD lavorano all'interno.

  • Il flash NAND è suddiviso in blocchi , ognuno composto da un insieme di pagine di size superiori a 4 KB (più codici di correzione degli errori). La maggior parte dei moderni SSD utilizza NAND con blocchi di 128 pagine per una dimensione di block di 512 KB, anche se alcune unità, specialmente quelle più vecchie, possono utilizzare blocchi di 256 KB o più piccoli. Il seguente diagramma assume blocchi da 256 KB, ma il concetto è lo stesso indipendentemente dalla dimensione del block.

Diagramma delle pagine in un blocco NAND
Fonte – Sorte di cortesia su Wikipedia, CC BY-SA 3.0

  • Ogni pagina può essere scritta singolarmente, ma le pagine non possono essere riscritte finché non vengono cancellate e la cancellazione può essere eseguita solo in blocchi interi. Ciò significa che each volta che i dati vengono riscritti, il SSD deve contrassegnare i dati contenuti nelle pagine interessati e riscriverlo altrove, eventualmente in un block diverso. Ad un momento più appropriato, idealmente quando l'unità è intriggers e tutte le pagine in un block sono contrassegnate non valide, il SSD può cancellare blocchi che non sono più in uso. Questo process di pulizia è chiamato raccolta rifiuti .

  • Affinché il SSD sappia quali blocchi possono essere cancellati, il sistema operativo deve indicare quali blocchi non contengono più dati validi. Ciò avviene usando il command ATA TRIM . Il SSD è quindi libero di rifiuti – raccogliere quei blocchi inutilizzati.

Gli SSD cercano di diffondere la scrittura in modo uniforms sulla NAND per evitare un guasto precoce, un process che si basa sullo spazio libero disponibile sull'unità.

  • Ogni block NAND può sostenere solo un numero finito di loops di scrittura / cancellazione. Molti degli SSD di prima class utilizzano 19-21nm NAND in cui each block è buono per circa 3.000 loops prima di diventare inutilizzabile, anche se SSD di grandi imprese e diversi SSD consumer di fascia alta che utilizzano tipi di NAND più resistenti sono commercialmente disponibili.

  • In tutti i casi, tuttavia, gli SSD devono diffondersi su tutta l'unità in modo da evitare di indossare indebiti eventuali blocchi singoli per evitare un guasto prematuro dell'azionamento attraverso un process chiamato livello di usura . L'efficace livellamento dell'usura può essere raggiunta solo se c'è una certa quantità di spazio ( over-provisioning ) che è riservato per consentire una raccolta efficace di rifiuti, anche se l'unità è quasi piena.

  • In condizioni estreme in cui viene richiesto al SSD di scrivere dati più rapidamente di quanto non possa cancellare vecchi blocchi (comuni nei carichi di lavoro datacenter pesanti), potrebbe essere costretto a riscrivere i dati in un block in un altro block, quindi cancellare immediatamente il vecchio block per dare spazio a nuovi dati, prima che abbia avuto la possibilità di eseguire la raccolta dei rifiuti.

  • La riscrittura forzata di un block è less che ideale perché degrada le performance e contribuisce a scrivere l'amplificazione , where più dati vengono scritti sulla base NAND rispetto all'importo effettivo che l'unità è incaricata di scrivere. L'aggiunta di over-provisioning aiuta a mitigare l'amplificazione della scrittura fornendo più spazio di riserva per riscrivere i dati e cancellare vecchi blocchi. Questo è il motivo per cui gli SSD di alto livello come Samsung SSD 845DC PRO vengono forniti in size come 200 GB e 400 GB anche se l'unità contiene in realtà alless 256 o 512 GB di NAND all'interno. Vedere anche: Perché SSD hanno size strane?

  • La serie di carta bianca SSD di Samsung fornisce una spiegazione approfondita del funzionamento interno di SSD. La scrittura e la cancellazione di pagine e blocchi di NAND e la raccolta dei rifiuti sono illustrati in white paper 04 .

L'unico modo per cancellare veramente i dati su un SSD consiste nell'utilizzare i comandi ATA Secure Erase.

  • Secure Erase invita l'unità a cancellare tutti i dati memorizzati, inclusi i dati che possono rimanere nelle regioni NAND sovraordinate. Tutti i blocchi vengono cancellati quando questo viene fatto, con conseguente inversione.

  • Nelle unità con funzionalità di auto-crittografia, Secure Erase può essere implementata semplicemente cancellando la chiave di crittografia. Poiché i dati sulla NAND di un'unità crittografata non sono leggibili senza la chiave, non è necessario eliminare tutti i blocchi come sarebbe necessario su un'unità non crittografata.

Come affermato da @teabot che utilizza il software di crittografia a disco completo eliterà la questione di una cancellazione sicura perché non c'è più. Tuttavia, come affermato in una domanda correlata , questo avrà enormi impatti sul rendimento in quanto ciò impedisce molte funzioni del controller come la compressione e TRIM ed è stato segnalato di ridurre le performance fino ad un livello in cui un disco rigido normale è più veloce rispetto al costoso SSD. Per i dispositivi basati su SandForce, c'è una soluzione migliore: quei dispositivi eseguono la crittografia AES per impostazione predefinita e la chiave verrà eliminata quando si utilizza la function di cancellazione sicura ATA, rendendo tutti i dati non accessibili a less che l'attaccante non sospenda AES (128 bit per la corrente, 256 bit per i nuovi dischi rilasciati nel marzo 2011).

Come pensavate, spazzando tutto lo spazio libero per assicurare che tutti i blocchi che contenevano i dati vengano cancellati è l'unico modo per essere sicuri. Beh, oltre a prendere un nuking del sito dall'orbita …

Questo richiederà molto tempo e ridurrà la durata dei chip flash, se si utilizza un frammento a più passaggi.

L'altro modo per proteggere i dati eliminati è quello di memorizzarlo crittografato nei primi posti utilizzando un file system crittografato usando qualcosa come truecrypt.