wenn ich mit dd direkt auf das Device schreibe und dabei keine Begrenzung angebe, dann müsste doch alles, was auf der SSD erreichbar ist, was also der Controller transparent durch reicht und damit doch eigentlich der komplette, für den Nutzer verfügbare Platz, überschrieben werden?
Ok. Also noch mal ganz langsam.
Es gibt mehrere (Abstrations-)Schichten. Die oberste ist das Dateisystem. Also die logische Struktur die dafür zuständig ist, wie Dateien und Verzeichnisse abgelegt hat.
Darunter folgt dann das Blockdevice. Da werden tatsächlich dann direkt Sektoren bzw. Blöcke auf den Massenspeichern wie z.B. Festplatte angesprochen. Das ist, wenn man so will der unterste Level mit dem Du direkt zugreifen kannst (gibt da noch mehr Details zu zu sagen aber ich belasse es der einfachheithalber mal dabei).
Damit addressierst Du direkt Sektoren bzw. Blöcke auf der Hardware. Bei der SSD ist aber selbst das nicht der Fall. Der SSD-Controller selbst nimmt noch mal ein Mapping für zwischen den Blöcken die da adressiert werden und den tatsächlichen Flashzellen in den die Information geschrieben wird (auch bei modernen Festplatten gibts eigentlich keine direkte Adressierung mehr; denn z.B. auch die kennen schon Reserve-Sektoren und remapping; aber das nur am Rande). Das geschieht aber rein SSD-intern. Davon bekommst Du außen nix mit. Dementsprechend auch nicht das System.
dd arbeitet nun auf Ebene der Blockdevices und hat damit keine Chance an die tatsächlichen Flashzellen heranzukommen oder gar an die Reserveblöcke.
Nichtsdestotrotz ist es natürlich beim vollständigen überschreiben mit Nullen so, dass die weitaus meisten Daten (wenn nicht gar alle) vernichtet werden. Es werden also allenfalls kleine Datenteile überleben. Zudem hat ja auch der Angreifer erst mal zunächst keine Chance an die Daten heranzukommen. Er müsste eigentlich, um gute Chancen was zu finden, die SSD aufmachen und quasi am Controller vorbei die Flashzellen direkt auslesen.
Auch
blkdiscard hilft nicht wirklich. Erstens hast Du auch hier wieder das Problem mit Reserveblöcken (die übrigens bei einer SSD mehr Aufgaben haben als reine Reservesektoren im Defektfall zu sein wie bei Magnetfestplatten und dementsprechend fast immer schon beschrieben sein werden). Zweitens löscht
blkdiscard nicht direkt, es gibt nur den Hinweis an den Controller das Blöcke löschbar sind. Wann die tatsächlich gelöscht werden, darauf hat man von außen ebenfalls keinen Einfluss. Optimalerweise versucht das der Controller dann, wenn gerade nicht anderweitig auf die SSD zugegriffen wird.
blkdiscard ist von daher weniger ein Löschfunktion, denn ein Geschwindigkeitsoptimierungsfunktion.