A veces, existe la necesidad de eliminar un archivo en un sistema de archivos y asegurarse de que el archivo haya desaparecido realmente. Un archivo que contiene contraseñas confidenciales, por ejemplo, debe eliminarse completamente del disco.
La emisión de un simple rm
en un sistema de archivos típico elimina el inodo ("puntero") del archivo, pero no elimina el contenido del archivo en el disco físico; estos se dejan allí hasta que se sobrescriben cuando el sistema de archivos necesita espacio libre.
En muchos sistemas de archivos, el programa shred permite dicha eliminación segura. Sin embargo, en un sistema de archivos CoW como btrfs, este enfoque es inútil . El problema se exacerba por el hecho de que el archivo puede estar presente en las instantáneas de volumen.
¿Hay alguna manera de eliminar de forma segura un archivo en un sistema de archivos btrfs? ¿Es suficiente eliminar todos los punteros (en todos los volúmenes) y llenar el espacio libre con ceros ?
fuente
Respuestas:
La eliminación segura es una propuesta difícil en cualquier sistema de archivos. A menos que el sistema de archivos sea muy peculiar y garantice que no haya otras copias del archivo, debe limpiar todo el espacio libre en el dispositivo. Si bien es más probable que encuentre muchos bits del archivo en los sistemas de archivos de copia en escritura, aún más sistemas de archivos "estáticos" no tienen esta garantía en la práctica, porque muchos archivos se editan, por lo que hay bits de versiones anteriores del archivo por ahí.
Tenga en cuenta que borrar con ceros es tan bueno como borrar con bytes aleatorios, y no necesita múltiples pases. Borrar con ceros dejó datos residuales que podrían recuperarse parcialmente en condiciones de laboratorio con las tecnologías de disco duro de 1980; Esto ya no es aplicable hoy. Vea ¿Por qué es mejor escribir ceros (o datos aleatorios) en un disco duro varias veces que hacerlo una sola vez?
Puede deshacerse de los datos confidenciales de texto sin cifrar cifrando todo en el disco. Configure un volumen ecryptfs sobre ese sistema de archivos y mueva todos sus archivos (confidenciales) a él. Luego sobrescriba todo el espacio no utilizado del sistema de archivos. Puede borrar la mayor parte llenando el sistema de archivos
cat /dev/zero >zero
. Todavía puede quedar algo de información en bloques incompletos (bloques que contienen el último fragmento de un archivo, seguido de algo de basura, que podrían ser restos de un archivo confidencial). Para asegurarse de que no haya bloques incompletos, mueva todo en el sistema de archivos a ecryptfs (los archivos de ecryptfs usan bloques completos, al menos en configuraciones típicas donde los bloques son de 4kB). Asegúrese de aplicar esto a todos los volúmenes y de borrar todas las instantáneas que contengan datos confidenciales de texto sin formato.Todavía puede quedar algo de información en el diario. No sé cómo fregar eso.
En SSD, debido a la reasignación de bloque, puede que queden datos que no se puedan leer por medios normales de software pero que se puedan recuperar pirateando el firmware o con acceso físico. Allí, su único recurso es borrar completamente el SSD.
fuente
0
sea correcto, y no esté sujeto a CORTE, digamos escribir todo1
en su lugar? ¿O algunas unidades usan compresión en todo?Hmmm, btrfs parece derrotar todos los métodos habituales de trituración ...
nodatacow
pero que no parece afectar a los archivos ya existentes.debugfs
. Es solo para sistemas de archivos ext, pero hay un parche que podría funcionar. Puede usarlo para averiguar las direcciones de bloque afectadas y luego sobrescribirlas directamente en / dev / sdXY. Pero eso es muy peligroso y podría no funcionar (especialmente si hay más instantáneas del archivo)El intento más limpio (para datos realmente muy sensibles) sería:
Este podría no ser el enfoque más barato, pero teniendo en cuenta los bajos costos de almacenamiento actuales y el problema que tendría con las otras opciones, en realidad podría ser el más barato (en términos de horas de trabajo).
fuente
nodatacow
establece el estado predeterminado de laC
bandera para los archivos recién creados . ¿Seguramente uno podría justochattr +C ~/.browser/logins.sqlite
y luegoshred
?Hay
shred(1)
para Unix / Linux (debe estar en los paquetes de su distribución). Es lo que recomienda el EFF .fuente