NVMe-SSD sicher löschen / Secure Erase NVMe-SSD

Zum vollständigen Löschen bzw. Zurücksetzen von SSDs ist ein Secure Erase notwendig. Bei modernen NVMe-SSDs unterscheidet sich das Löschen von den früheren SATA-SSDs. Hier kommt das „NVMe storage command line interface utility“ zum Einsatz, oder kurz „nvme-cli“.

Zum Löschen der SSD kann der „nvme format“ Befehl verwendet werden. Es sind zwei unterschiedliche Arten der Formatierung möglich: User Data Erase und Cryptographic Erase.

Darüber hinaus wurde ab der NVMe-1.3-Spezifikation noch der Befehl „nvme sanitize“ eingeführt. Der Unterschied zu „nvme format“ wurde von Jonmichael Hands folgendermaßen erklärt:

While both options work, Sanitize is more robust for ensuring the data was properly wiped; format is good for everyday use and testing.

Vorgehen

Zunächst muss das System in Linux gebootet werden. Empfehlen kann ich Ubuntu ab 21.04, denn da ist „nvme-cli“ bereits enthalten. Via

nvme version

könnt ihr prüfen, ob und welche Version installiert ist.

Falls es nicht installiert ist, könnt ihr es unter Debian und Ubuntu folgendermaßen installieren:

sudo apt-get update
sudo apt-get install nvme-cli

Im nächsten Schritt können mit

sudo nvme list

alle verbundenen NVMe-Geräte angezeigt werden.

Anschließend kann mit diesem Befehl

sudo nvme id-ctrl /dev/nvmeX -H | grep -E 'Format |Crypto Erase|Sanitize'

alle Infos über die verfügbaren Formatierungsmöglichkeiten der gewählten SSD angezeigt werden.  Das „X“ müsst ihr natürlich durch eine Zahl aus der Liste der NVMe-Geräte ersetzen. Bei einer SSD ist dies logischerweise 0.

Je nachdem welche Befehle von eurer SSD unterstützt werden, könnt ihr direkt dort weitermachen.

nvme format

Bei diesem Befehl wird das NVMe-Laufwerk als Parameter mitgegeben. Zudem wird mit der Option „-s“ die Art der Formatierung bestimmt.

Secure Erase Settings: This field specifies whether a secure erase should be performed as part of the format and the type of the secure erase operation. The erase applies to all user data, regardless of location (e.g., within an exposed LBA, within a cache, within deallocated LBAs, etc). Defaults to 0.

Value Definitions
0 No secure erase operation requested
1 User Data Erase: All user data shall be erased, contents of the user data after the erase is indeterminate (e.g., the user data may be zero filled, one filled, etc). The controller may perform a cryptographic erase when a User Data Erase is requested if all user data is encrypted.
2 Cryptographic Erase: All user data shall be erased cryptographically. This is accomplished by deleting the encryption key.

Sofern die SSD einen „Cryptographic Erase“ unterstützt, wird dieser auch bei Variante 1 durchgeführt. „-n 0xffffffff“ sorgt dafür, dass alle Namespaces formatiert werden.

sudo nvme format /dev/nvme0 -s 1 -n 0xffffffff

Variante 2 führt direkt einen „Cryptographic Erase“ durch, welcher nur wenige Sekunden dauert.

sudo nvme format /dev/nvme0 -s 2 -n 0xffffffff

Weitere Infos findet ihr in der nvme-format Dokumentation.

nvme sanitize

Zu Anfang des Artikels wurde bereits der Unterschied zwischen „nvme sanitize“ und „nvme format“ beschrieben. Nachfolgend nochmal eine detailliertere Erklärung:

The big difference between Sanitize and Format is that sanitize ensures caches are deleted, and the process starts again after an unexpected power loss. Sanitize also supports a pattern overwrite for a secure erase operation, which is terrible for NAND endurance but can be used with other types of storage and memory classes, or for more certainty that user data cannot be recovered.

Auch bei diesem Befehl wird das NVMe-Laufwerk als Parameter mitgegeben. Die Option „-a“ bestimmt die Art der Formatierung.

Value Definition
0x00 Reserved
0x01 | exit-failure Exit Failure Mode
0x02 | start-block-erase Start a Block Erase sanitize operation
0x03 | start-overwrite Start an Overwrite sanitize operation
0x04 | start-crypto-erase Start a Crypto Erase sanitize
operation

Mit diesem Befehl könnt ihr eine grobe Zeitschätzung erhalten, wie lange welcher Befehl dauert, sofern er unterstützt wird. „No time period reported“ bedeutet, dass diese Art der Formatierung nicht unterstützt wird.

sudo nvme sanitize-log /dev/nvme0
...
Estimated Time For Overwrite                   :  4294967295 (No time period reported)
Estimated Time For Block Erase                 :  228
Estimated Time For Crypto Erase                :  30

Ein „Cryptographic Erase“ oder „Block Erase“ ist die sinnvollste Variante. „Overwrite“ sollte nicht benutzt werden, da sich dieser Befehl sehr negativ auf die Haltbarkeit des NAND-Speichers auswirkt.

sudo nvme sanitize /dev/nvme0 -a start-crypto-erase

Weitere Infos findet ihr in der nvme-sanitize Dokumentation.

Quelle

https://wiki.archlinux.org/title/Solid_state_drive/Memory_cell_clearing

Schreibe einen Kommentar

Required fields are marked *.