El método DoD5220.22-M (Departamento de Defensa de EE. UU.) para borrar datos de un disco duro.


Este es un método para borrar datos de un disco duro.

El método DoD5220.22-M (Departamento de Defensa de EE. UU.)

Este es un método para escribir 0, 1 y números aleatorios en todo el HDD. Se realizan un total de tres escrituras.

Esta es la versión inicial de DoD5220.22-M, y ahora se ha creado una guía diferente.

Historia

En , se emitió la primera versión. Esta versión especificó un procedimiento para sobrescribir datos en un disco duro (HDD) con patrones de cero y uno tres veces. Esto se conoció como el método de saneamiento DoD 5220.22-M.

En , el Departamento de Defensa designó el método de saneamiento DoD 5220.22-M ECE como una extensión de DoD 5220.22-M. Este método requería siete pasadas de sobrescritura.

En , se emitió la última versión de DoD 5220.22-M. En esta versión, el patrón de sobrescritura ya no se especificaba como un método de borrado de datos para los HDD. En su lugar, se recomendaban otros métodos de saneamiento como el borrado, la desimantación y la destrucción física.

En , DoD 5220.22-M fue revisado. En esta versión, las pautas del método de saneamiento se actualizaron para acomodar nuevas tecnologías como el almacenamiento basado en flash y dispositivos móviles.

En , el Departamento de Defensa dejó de referirse a DoD 5220.22-M y en su lugar cumplió con las pautas de saneamiento de medios del Instituto Nacional de Estándares y Tecnología (NIST SP 800-88).

Comandos

En Linux, puedes usar el comando dd para eliminar datos.

Escribir 0

  • dd es un comando para copiar datos¹.
  • if=/dev/zero especifica /dev/zero como el archivo de entrada. /dev/zero es un archivo especial que produce ceros indefinidamente.
  • of=/dev/sdb especifica /dev/sdb como el archivo de salida. /dev/sdb es un archivo de dispositivo para discos duros, memorias USB, etc.¹.
  • bs=4096 especifica 4096 bytes como el tamaño del bloque. El tamaño del bloque es la unidad de datos para leer y escribir a la vez.

Este comando copia ceros desde /dev/zero a /dev/sdb en incrementos de 4096 bytes, sobrescribiendo y borrando los datos en /dev/sdb.

Confirmar

Comprobar el inicio del disco

Muestra los primeros 512 bytes del dispositivo, como un disco duro o una memoria USB, en hexadecimal.

  • dd es un comando para copiar datos.
  • if=/dev/sdb especifica /dev/sdb como el archivo de entrada.
  • bs=512 especifica 512 bytes como el tamaño del bloque.
  • count=1 especifica 1 como el número de bloques a leer. Esto lee solo los primeros 512 bytes.
  • hexdump -C es un comando para mostrar los datos recibidos por la tubería en código hexadecimal y ASCII. -C es una opción para mostrar el código hexadecimal y ASCII en columnas.

A partir de este resultado, puedes ver que el inicio del disco duro está lleno de ceros.

Si especificas of=output.bin o algo así como un parámetro del comando dd, puedes escribir los primeros 512 bytes en el archivo output.bin.

Comprobar el final del disco

Muestra los últimos 512 bytes del dispositivo, como un disco duro o una memoria USB, en hexadecimal. Este comando pasa el valor obtenido restando 1 al número total de sectores del disco duro a skip y lee solo el último bloque.

  • Como se mencionó anteriormente, dd es un comando para copiar datos.
  • if=/dev/sdb especifica /dev/sdb como el archivo de entrada.
  • bs=512 especifica 512 bytes como el tamaño del bloque.
  • skip=(((blockdev --getsz /dev/sdb) - 1)) especifica el número de bloques a saltar
    • blockdev --getsz /dev/sdb es un comando para obtener el número total de sectores del disco duro.
    • $(()) es una notación para operaciones aritméticas.

Escribir 1

  • tr es un comando que convierte caracteres.
  • '0', '377' convierte los caracteres de entrada de \0 (0 en octal) a \377 (255 en octal). Esto convierte 0 bits en 1 bits.
    • ((3 x 8) + 7) x 8 + 7 = 255
  • < /dev/zero especifica /dev/zero como la fuente de entrada estándar.
  • > /dev/sdb especifica /dev/sdb como el destino de salida estándar.

Este comando lee 0 de /dev/zero, lo convierte en 1 en tr, y lo sigue escribiendo en 1 en /dev/sdb Al continuar escribiendo , los datos en /dev/sdb se sobrescribirán y borrarán.

Confirmar

Lo verifiqué de la misma manera que cuando escribí 0.

Comprobar el inicio del disco
Comprobar el final del disco

Escribir números aleatorios

Lee datos aleatorios del dispositivo /dev/urandom y los escribe en /dev/sdb.

El uso de /dev/urandom lleva más tiempo que el uso de /dev/zero. Esto se debe simplemente a que generar números aleatorios lleva tiempo. /dev/urandom genera números aleatorios a partir de ruido ambiental (condiciones relacionadas con el dispositivo como el ratón, el teclado, etc.).

Confirmar

Lo verifiqué de la misma manera que cuando escribí 0.

Comprobar el inicio del disco
Comprobar el final del disco