5.6. Eliminación de datos

La eliminación de datos es fundamental si es nuestra deshacernos del dispositivo físico sobre el que los escribíamos. Hay tres opciones:

  • Cifrar los datos, lo cual nos ahorra el problema de tener que eliminarlos.

  • Destruir físicamente el disco, a fin de que quede inservible y sus datos sean absolutamente ilegible. A este respecto, es muy intersante este artículo de xataka.

  • Pero si nuestra intención es reaprovechar los discos o donarlos, entonce es necesario usar técnicas de borrado efectivo de los datos. Un vistazo a herramientas generales se encuentra en este artículo de genbeta, pero dado el propósito de estos apuntes, nos centraremos en herramientas para Linux.

Antes de empezar es preciso distinguir entre el borrado de discos SSD y el borrado de discos magnéticos. Dado que las técnicas se basan en hacer muchas sobrescrituras para asegurarse de que el dato original haya desaparecido…

Advertencia

… no utlice estas herramientas en discos SSD. Para ellos cada fabricante debería facilitar herramientas específicas.

shred

Es una orden básica incluida en las coreutils, que permite borrar ficheros de manera segura, esto es, asegurándose de que el fichero no puede recuperarse. En realidad, se limita a hacer tres pasadas escribiendo datos aleatorios y una cuarta opcional para rellenar finalmente con ceros. Si suponemos que tenemos un fichero llamado «datos_secretos.txt», podremos borrarlo del siguiente modo:

# shred -uvz datos_secretos.txt

donde la opción -u elimina el fichero tras borrar su contenido, -v nos ofrece información de cada pasada y -z hace una pasada adicional rellenando con ceros. Además, podemos hacer más de tres pasadas, utilizando la opción -n. Sin embargo, hay varios problemas:

  • No hay opción para borrado recursivo, por tanto, si queremos borrar todo el contenido de un directorio que incluye subdirectorios, tendremos que recurrir al uso de find para generar la lista de archivos.

  • Si leemos la documentación, el borrado en los sistemas de ficheros con journaling o sistemas RAID puede ser no todo lo efectivo que quiséramos.

Un uso alternativo de shred es el de borrar dispositivos enteros, lo cual evita este último inconveniente y, además, es útil si nuestra intención es borrar toda la información. Así, si quisiéramos borrar todo lo que contiene el dispositivo /dev/sdz, podríamos arrancar desmontar todo sistema de ficheros asociado a particiones de este dispositivo (si se encuentra en él el sistema raíz, podrías arrancar el linux de un dispositivo extraíble) y hacer:

# shred -vz /dev/sdz

donde en este caso, no tiene sentido usar la opción -u.

secure-delete

Es una suite con unas cuantas herramientas especialidas en el borrado de información:

  • srm, que borra ficheros.

  • sfill, que borra el espacio libre.

  • sswap, que borra la memoria de intercambio.

  • sdmem, que borrar la memoria RAM.

La instalación es trivial:

# apt install secure-delete

El borrado estándar que lleva a cabo hace cerca de 40 pasadas y puede acabar con una pasada adicional que rellena con ceros. Borrar un fichero se hace así:

$ srm -vz datos_secretos.txt

A diferencia de shred, sí tiene una opción -r para borrado recursivo.

Por su parte, borrar el espacio libre de un sistema de ficheros, se nace utilizando sfill sobre el punto de montaje. Por ejemplo:

# sfill -vz /home

Si se usa con la opción -l sólo hará dos pasadas con número aleatorios y si se duplica la opción -ll solamente una.