The question is almost completely answered. However, more details are still needed. See Update 2 down here.
I've learnt that the ATA Secure Erase is uncorrectly implemented in SSDs (sources are down here), but I'm still willing to find a way to erase as much as I can on them.
What I intend to wipe is the whole SDD, which includes:
- The cells that users may access
- Bad/unmapped/corrupted sectors
- The over-provisioned space
- The trimmed cells
- The Device Configuration Overlay (DCO)
- The Host Protected Area (HPA)
- And everything I've forgot
I know that encryption is the best way to simulate a limited "Secure Erase", but before doing that for my new datas, I want to at least make a single pass in order to wipe as much as I can of the old ones.
As I know so far:
- ATA Secure Erase: Not reliable, still wipe correctly HPA or DCO ?
- dban: Do not erase remapped sectors, nor HPA or DCO
- nwipe: Same problems as dban since it's a fork
- dd: Same as dban and nwipe, but also blocks everytime it meets a bad sector
- shred: Recommended for files, works like dban, may have issues with SSDs
- badblocks -w : Should check every sectors destructively, is it correctly implemented for SSDs ?
For now, the best I can do is a badblock -w.
So the question is: What tools can I use in order to erase data as much as possible on an SSD ?
The idea is, based on information I may not know -yet- but you do, to find the most suitable tool listed here, or any other tools not listed here.
Also, anything that may lead to correctly access or/then then delete an SDD's DCO or HPA is ok too. -> This was almost completely answered by @guest, but see update 2.
Same goes for remapped/bad/unnmapped sectors, trimmed cells and over-provisioned space.
Destroying the drive is not an option.
Sources:
- http://cseweb.ucsd.edu/~swanson/papers/Fast2011SecErase.pdf
- http://nvsl.ucsd.edu/index.php?path=projects/sanitize
Update: badblocks -w may not be reliable (https://lime-technology.com/forum/index.php?topic=23792.0), but I need to dig that up more, unless someone provide an answer here first, which I'm also interested in.
Update 2:
Now, the remaining thing I need to know is: Does the implementation of DCO and HPA respective erasure and disabling is effective -and not badly done like it is for ATA secure erase- ? Furthermore, a naive question here: Does disabling the HPA means this latter will get erased too ?
PS: Sorry if I don't answer right away, I'm working and travelling around the world -thus making this post related- and I often face time-squeezing business. But, I will definitely answer back for sure.