Avevamo già trattato l’argomento della cancellazione di un disco, questa volta vediamo come farlo utilizzando i comandi ATA, che operano ad un livello inferiore rispetto a quello che avevamo trattato la scorsa volta.
Lo scopo delle istruzioni che seguono è di inviare al disco da cancellare il comando Secure Erase (SE). Questo comando è disponibile anche su molti dischi SCSI e su alcuni dischi FC.
SE dice al firmware del hard disk di sovrascrivere tutte le aree dati del disco, indipendentemente dal fatto che siano raggiungibili dal sistema operativo, quindi anche quelle non partizionate. Nel caso in cui un disco sia scollegato dall’alimentazione durante il processo di cancellazione, appena questo viene alimentato riprende la cancellazione. Per evitare che qualcuno spenga il disco e lo connetta ad un altro firmware prima del termine della cancellazione, SE cambia la chiave con cui i dati vengono scritti sul disco, rendendo impossibile il recupero dei dati in tempi ragionevoli.
Secondo alcune fonti, questa procedura potrebbe migliorare le performance dei dischi allo stato solido (SSD).
HIC SUNT LEONES!
Queste operazioni devono essere eseguite su hardware sacrificabile, non utilizzate il vostro computer di lavoro o l’unico computer che avete per compiere le operazioni descritte di seguito. C’è il rischio concreto che il testo che segue contenga indicazioni che portino a danneggiare irreparabilmente l’hardware e comportino la perdita definitiva di dati. Questo tipo di attività va eseguito con coscienza di causa e ogni tipo di responsabilità è a carico di chi esegue queste operazioni.
HIC SUNT LEONES!
Innanzi tutto gli strumenti per operare:
- un PC che possa partire da un dispositivo removibile (CD o chiavetta USB)
- l’hard disk da cancellare
- un dispositivo bootable con una distribuzione Linux che contenga hdparm.
Per questo esempio ho utilizzato Ubuntu 10.10 caricata su una chiavetta USB, un Dell Dimension 9200 e un disco SATA Western Digital WDC WD6400AAKS-75A7B0 con firmware versione 01.03B01.
Il disco deve essere per forza collegato al bus SATA/eSATA/PATA; se è collegato via USB o FireWire, hdparm non può funzionare perché ha bisogno di inviare comandi ATA. Esistono alcune emulazioni ATA-USB che supportano alcuni comandi ATA, ma il tempo richiesto da SE per completare la cancellazione potrebbe venire interpretato dall’emulatore come un timeout del disco e potrebbe rendere definitivamente inutilizzabile il disco.
La teoria è di avviare Ubuntu, dare il comando di cancellazione, attendere e vedere il risultato. La pratica potrebbe richiedere qualche operazione aggiuntiva.
Una volta avviato il sistema operativo, verifichiamo il contenuto del disco, nel mio caso /dev/sda:
Disk /dev/sda: 640.1 GB, 640135028736 bytes 255 heads, 63 sectors/track, 77825 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xacdd9b22 Device Boot Start End Blocks Id System /dev/sda1 1 77825 625129281 83 Linux
Come verifica, ho provato a montare la partizione e ho trovato quello che c’era, ovvero un vecchio backup con dei dati che sono riuscito a leggere senza problemi.
Vediamo innanzi tutto le caratteristiche del disco con il comando
# hdparm -I /dev/sda
il cui output è
ATA device, with non-removable media Model Number: WDC WD6400AAKS-75A7B0 Serial Number: WD-WCASY0365223 Firmware Revision: 01.03B01 Transport: Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5 [...] Security: Master password revision code = 65534 supported not enabled not locked frozen not expired: security count supported: enhanced erase 118min for SECURITY ERASE UNIT. 118min for ENHANCED SECURITY ERASE UNIT. Logical Unit WWN Device Identifier: 50014ee201915086 NAA : 5 IEEE OUI : 0014ee Unique ID : 201915086 Checksum: correct
Notare la parola frozen. Se prima c’è un not siamo a cavallo, altrimenti bisogna disabilitare lo stato di frozen.
In alcuni PC basta spegnere il computer, scollegare il cavo per qualche decina di secondi o sconnettere l’alimentazione del disco e riavviare. Molti BIOS, incluso quello Dell, mandano il comando freeze ai dischi in fase di boot per impedire che qualche malware faccia esattamente quello che noi vogliamo fare.
In questo caso l’unica soluzione è sconnettere l’alimentazione del disco e riconnetterla dopo una decina di secondi a PC acceso. Roba da brivido per qualcuno, ma non ci sono alternative. Ubuntu non ha problemi se gli spegnete e riaccendete un disco sotto al naso.
In un modo o nell’altro, dobbiamo arrivare ad un disco not frozen:
Security: Master password revision code = 65534 supported not enabled not locked not frozen not expired: security count supported: enhanced erase 118min for SECURITY ERASE UNIT. 118min for ENHANCED SECURITY ERASE UNIT.
Notiamo anche che hdparm ci dice quanto potrebbe durare l’operazione di cancellazione che stiamo per fare. Nel mio caso l’operazione è durata quasi tre ore anziché 118 minuti, ma ho utilizzato un disco con dei settori danneggiati, la qual cosa potrebbe aver allungato la durata della cancellazione.
Ora dobbiamo impostare una password, nel nostro caso pippo, per bloccare il disco e predisporre la cancellazione sicura:
# hdparm --user-master u --security-set-pass pippo /dev/sda security_password="pippo" /dev/sda: Issuing SECURITY_SET_PASS command, password="pippo", user=user, mode=high
Una volta impostata la password verifichiamo con il solito comando hdparm -I /dev/sda
che il disco sia pronto:
Security: Master password revision code = 65534 supported enabled not locked not frozen not expired: security count supported: enhanced erase Security level high
Capiamo che il disco è pronto a ricevere il comando di cancellazione perché è sparito il not prima di enabled. A questo punto il comando di distruzione dei dati:
# hdparm --user-master u --security-erase pippo /dev/sda security_password="pippo" /dev/sda: Issuing SECURITY_ERASE command, password="pippo", user=user
Il comando dura un bel po’, nel nostro caso un paio d’ore. Se l’operazione viene interrotta dallo spegnimento del disco, questa riprenderà appena il disco viene alimentato. Non c’è modo di interrompere l’operazione e il disco non è disponibile finché l’operazione non è terminata.
Terminata la cancellazione, hdparm -I /dev/sda
deve ritornare lo status di not enabled:
Security: Master password revision code = 65534 supported not enabled not locked not frozen not expired: security count supported: enhanced erase 118min for SECURITY ERASE UNIT. 118min for ENHANCED SECURITY ERASE UNIT.
Eseguendo fdisk non viene rilevata alcuna partizione e dd rivela che ogni byte del disco è stato azzerato. Il disco è di nuovo utilizzabile. Missione compiuta.
Riferimenti e link utili:
- Erasing drives should be quick and easy
- ATA Secure Erase (SE) and hdparm
- ATA Secure Erase
- SecureErase per MS-DOS (meno compatibile con l’hardware di ultima generazione di Ubuntu+hdparm)
Aggiornamento 4/4/2011 – Ho provato a spegnere il computer durante la procedura di SE di un disco Western Digital WD20EADS da 2 Tb. Alla riaccensione il disco accettava solamente il comando di secure erase. Per uscire da questo stallo l’unica soluzione è stata il comando security unlock:
# hdparm --user-master u --security-unlock pippo /dev/sda security_password="pippo" /dev/sda: Issuing SECURITY_UNLOCK command, password="pippo", user=user
Una volta eseguito questo comando, il disco è tornato disponibile per le normali operazioni. La lezione imparata è stata quella di annotare scrupolosamente la password utilizzata, se non si usa una password… standard.
Lascia un commento