¿Cómo borrar de forma segura los archivos de la unidad SSD?

14

Cuando tratamos de borrar SSD de forma segura, tenemos varios problemas:

  • Los SSD se desgastan después de una cantidad limitada de ciclos de borrado
  • Las SSD tienen un controlador que asigna dinámicamente los LBA (direcciones de bloques lógicos utilizados por el sistema para acceder al disco) a las celdas NVRAM (las celdas de memoria flash reales) para equilibrar el desgaste, lo que significa decirle al disco que sobrescriba los bloques que anteriormente almacenaban un determinado el archivo puede sobrescribir cualquier otro bloque de repuesto.
  • Los SSD tienen un porcentaje notable de capacidad de reserva que se utiliza para compensar las células de almacenamiento moribundas y reducir el desgaste. No son visibles para el sistema y pueden contener fragmentos de datos antiguos.

Ahora, ¿qué opciones tenemos desde Ubuntu para borrar de forma segura los SSD?

Escuché que algunos SSD más nuevos deberían poder limpiarse de manera segura, pero ¿cómo puedo saber si mi SSD es capaz de esto y cómo podría activarlo?
También debería haber un comando de borrado seguro ATA, ¿cómo puedo saber si eso es compatible y cómo lo activaría?

¿Existen también formas de borrar de forma segura solo un archivo determinado o solo el espacio no utilizado?
Supongo que sería posible hacer una copia de seguridad de todas las particiones, limpiar de forma segura todo el disco y luego restaurar la copia de seguridad, pero parece demasiado complicado y tomaría demasiado tiempo para ser práctico. ¿Hay otras alternativas? Si no, ¿qué herramientas puedo usar para hacer una copia de seguridad de las particiones sin también hacer una copia de seguridad de los archivos ya eliminados?

Por supuesto, las herramientas estándar tienen gusto shredo wipeno aquí para los puntos descritos anteriormente. Simplemente sobrescriben un archivo (sobrescribiendo sus grupos de sistemas de archivos que están vinculados a LBA que no apuntan constantemente a las mismas celdas flash debido al controlador de nivelación de desgaste).

Byte Commander
fuente
Puede haber información interesante aquí wiki.archlinux.org/index.php/SSD_memory_cell_clearing
Byte Commander
Sé del trabajo académico sobre esto que llegó al núcleo, ver lwn.net/Articles/480269
noleti

Respuestas:

9

Actualmente no hay forma de borrar archivos de forma segura en SSD sin borrar el contenido de toda la unidad o acceder al firmware de la SSD.

  • Es imposible saber dónde puede almacenar el SSD copias anteriores de un bloque lógico.

  • Para empeorar las cosas, debido a los mecanismos de registro diario y copia en escritura del sistema de archivos, puede ser imposible saber qué bloques lógicos pueden contener una copia previa de un archivo en particular.

La única forma de evitar la filtración de archivos eliminados a alguien con acceso directo a la unidad es, en primer lugar, cifrarlos y mantener la clave de cifrado a salvo de miradas indiscretas.

Apéndice:

Investigué un poco y descubrí que puedes borrar todos los archivos eliminados previamente si logras aprender todos los sectores desocupados de un sistema de archivos, lo que generalmente es posible y lo ofrecen algunas herramientas del sistema de archivos (por ejemplo, para la familia ext * ), y luego deséchelos (por ejemplo, blkdiscard(8)como se describe en esta respuesta a la pregunta vinculada ), que devuelve los bloques para la recolección de basura hasta que se vuelvan a usar y se sobrescriban en el proceso.

Esto es seguro contra todos los que no pueden acceder a las celdas flash directamente, por lo que todos los que

  • no tiene un dispositivo de lectura de celda flash adecuado y
  • no puede convencer al firmware de la unidad para que revele el contenido de bloques no asignados (lo que requeriría una modificación significativa del firmware en la mayoría de los casos y comandos ATA personalizados, ya que no hay una forma estandarizada).
David Foerster
fuente
¿Podría incluir los puntos clave y un resumen de las instrucciones de ese enlace en su respuesta?
Byte Commander
Me vinculé a una pregunta equivalente de la UA. Espero que sea mejor
David Foerster
¿Borrar de forma segura el espacio libre en el arranque sería una opción viable?
user4493605
1
@ user4493605: ¿Qué quieres decir con "viable"? Ciertamente es posible. ¿Podría abrir una nueva pregunta si tiene una pregunta nueva o de seguimiento? La sección de comentarios no es adecuada ni está destinada a nuevas preguntas o discusiones extensas. Puede enviarme un comentario con una notificación para llamar mi atención. Gracias.
David Foerster
3

Advertencia: en caso de que aún no esté claro, el borrado seguro de la unidad eliminará todos los datos en la unidad y debería imposibilitar la recuperación. Debe hacer una copia de seguridad de toda la información crítica.

La forma más fácil de determinar si su unidad admite borrado seguro es preguntarlo: he usado / dev / sdX en los ejemplos a continuación. Deberá cambiarlo cuidadosamente para que coincida con el dispositivo con el que está trabajando:

Fuentes:

https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase

/superuser/1161531/how-to-un-freeze-drive-in-linux

$ sudo hdparm -I /dev/sdX | grep -i erase

En mi SSD esto resulta en:

supported: enhanced erase
2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.

Si su dispositivo admite el borrado seguro, su activación es un proceso de 2 o 3 pasos.

  1. Si el dispositivo informa que está congelado como lo indica la salida de forma sudo hdparm -I /dev/sdXsimilar a esto:
not   enabled
not   locked
      frozen
not   expired: security count
supported: enhanced erase

Descongele suspendiendo y reanudando su sistema. Hice esto con el comando sudo systemctl suspend moviendo el puntero hasta que el sistema se reanudó.

  1. Debe establecer una contraseña para usar el borrado seguro en este caso, estoy usando foobar como contraseña, puede usar cualquier contraseña que no esté en blanco que desee, ya que es temporal.

    sudo hdparm --user-master u --security-set-pass foobar /dev/sdX

  2. Con la contraseña establecida, ahora puede usarla para borrar la unidad de forma segura:

sudo hdparm --user-master u --security-erase foobar /dev/sdX

Si su unidad lo admite y desea, puede optar por utilizar el borrado de seguridad mejorado en su lugar con:

sudo hdparm --user-master u --security-erase-enhanced foobar /dev/sdX

Elder Geek
fuente