Si es posible, me gustaría saber cómo eliminar una unidad flash USB a través del terminal para que no se puedan recuperar los datos.
Si es posible, me gustaría saber cómo eliminar una unidad flash USB a través del terminal para que no se puedan recuperar los datos.
Respuestas:
TL / DR: asegúrese de obtener el nombre correcto del dispositivo, asegúrese de que no esté montado y realice todas las sobrescrituras aleatorias que pueda pagar. Puede seguirlo con un comando de borrado diseñado para hardware flash, si tiene una distribución lo suficientemente reciente. En estas comprobaciones, use siempre la unidad (como / dev / sd h ) y no el nombre de la partición (que sería / dev / sd h1 )
# dmesg|grep sdXX
[3600.000001] sd 6:0:0:0: [sdXX] 125106176 512-byte logical blocks: (64.0 GB/59.6 GiB)
# blkid|grep sdXX
/dev/sdXX1: PARTUUID="88a03bb2-ced8-4bb2-9883-0a51b4d460a8"
# df|grep /dev/sdXX
# shred -vzn8 /dev/sdXX
shred: /dev/sdXX: pass 1/9 (random)...
shred: /dev/sdXX: pass 1/9 (random)...46MiB/3.8GiB 1%
...
shred: /dev/sdXX: pass 9/9 (000000)...3.8GiB/3.8GiB 100%
# blkdiscard -s /dev/sdXX
blkdiscard: /dev/sdXX: BLKSECDISCARD ioctl failed: Operation not supported
# blkdiscard /dev/sdXX
blkdiscard: /dev/sdXX: BLKDISCARD ioctl failed: Operation not supported
#
En teoría, sobrescribir con cero con dd
está bien. Sin embargo, debido a cómo se construyen los componentes internos de una unidad flash, si usa una sola pasada de sobrescritura, puede haber varias capas de datos ocultas detrás de los bloques reales que aún almacenan la información restante.
Por lo general, una parte del almacenamiento flash es defectuosa y se marca durante la fabricación. También hay otros bits que pueden salir mal (volviéndose inmutables, inestables o ilegibles), estas partes también deben marcarse como defectuosas durante la vida útil. Esta información se almacena en un espacio reservado, en los mismos chips que sus datos. Esta es una de las varias razones por las que una unidad de memoria USB de 4 GB no muestra una capacidad de 2 ^ 32 bytes.
El almacenamiento flash también se organiza internamente en bloques más grandes, a veces mucho más grandes que los sistemas de archivos que trabajan en la unidad. Un tamaño de bloque típico del sistema de archivos es 4KB, y los segmentos flash que se pueden borrar de una vez pueden variar desde 64 KB hasta varios megabytes. Estos bloques grandes solo se pueden borrar en su totalidad, lo que restablece todo el bloque a un estado conocido (todos los 1 o todos los 0). Posteriormente, una escritura de datos puede alterar cualquiera de los bits (cambiar los 1s predeterminados a 0s donde sea necesario, o cambiar los 0s predeterminados a 1s), pero solo una vez . Para volver a cambiar cualquiera de los bits al valor predeterminado, ¡todo el segmento debe borrarse nuevamente!
Entonces, cuando desee cambiar un bloque de 4KB (se le pide al sistema de archivos que cambie un solo carácter en el medio de un archivo), el controlador de flash necesitaría leer y almacenar en memoria intermedia todos los 64 KB de datos antiguos, borrarlos todos y escribir de nuevo los nuevos contenidos. Esto sería muy lento, borrar segmentos es la operación más lenta. Además, un segmento solo puede borrarse por un tiempo limitado (decenas de miles es típico), por lo que si realiza demasiados cambios en un solo archivo, eso puede deteriorar rápidamente la unidad.
Pero no es así como se hace. Los controladores de flash inteligentes simplemente escriben los nuevos datos de 4KB en otro lugar y hacen una nota para redirigir las lecturas a estos 4KB de datos en el medio del bloque anterior. Necesitan más espacio, que no podemos ver para almacenar esta información sobre redireccionamientos. También intentan asegurarse de pasar por todos los segmentos accesibles para almacenar datos, esto se llama nivelación de desgaste .
¡Esto significa que los datos típicamente antiguos todavía están en el disco en alguna parte! Si acaba de borrar todos los bloques accesibles, todos los bloques ocultos aún conservan una versión bastante reciente de los datos. Si esto es accesible para un atacante del que desea proteger sus datos, es una pregunta diferente.
Si tiene una distribución lo suficientemente reciente y la unidad USB está programada para revelar que es una unidad flash, blkdiscard
puede usar la TRIM
operación subyacente , que es el borrado de segmento del que hablamos anteriormente. También tiene un indicador adicional para asegurarse de que incluso el hardware oculto borre por completo los datos invisibles:
# blkdiscard -s /dev/myusbdevice
-s, --secure Realizar un descarte seguro. Un descarte seguro es lo mismo que un descarte regular, excepto que todas las copias de los bloques descartados que posiblemente fueron creados por la recolección de basura también deben borrarse. Esto requiere soporte del dispositivo.
No necesariamente funcionará, como lo demostré anteriormente. Si obtiene Operation not supported
, ya sea su núcleo, sus utilidades o el chip de puerta de enlace USB (que permite que el controlador flash parezca una unidad a través de USB) no admite el pasoTRIM
comando de . (El controlador de flash aún debe poder borrar segmentos por sí mismo). Si es compatible con el proveedor de su unidad, esta es la forma más segura.
Otra forma menos segura de asegurarse de permitir que menos datos antiguos permanezcan en algún lugar es sobrescribirlos varias veces, con valores aleatorios, si es posible.
¿Por qué al azar, preguntas? Imagínese si la unidad USB se hizo demasiado inteligente, y detectó que desea borrar un sector, y simplemente realizó un cambio en un mapa de bits de que este sector ahora está libre, y necesitará borrarlo más tarde. Como esto significa que puede acelerar las escrituras de ceros, por lo que resulta un pendrive que parece más eficiente, ¿verdad? Si su disco lo está haciendo, es difícil saberlo.
En el extremo, la unidad podría recordar cuánto ha borrado desde el principio, y todo lo que necesita almacenar es aproximadamente 4 bytes de información para hacer esto, y no borrar nada de los datos que desea que desaparezcan. Todo para que se vea muy rápido.
Si está sobrescribiendo los datos con valores aleatorios e impredecibles, estas optimizaciones son imposibles. Por lo tanto, la unidad debe asegurarse de que los datos terminen almacenados dentro de los chips flash. Pero aún no podrá descartar que algunos de los sectores utilizados anteriormente todavía estén allí con algunos datos antiguos suyos, pero la unidad simplemente no consideró importante borrarla todavía, ya que no es accesible normalmente. Solo el TRIM
comando real puede garantizar eso.
Para automatizar la sobrescritura con valores aleatorios, es posible que desee considerar el uso shred
, como:
# shred -vzn88 /dev/myusbdrive
Las opciones utilizadas:
Si es posible, use ambos blkdiscard
y shred
, si blkdiscard -s
es compatible con su unidad, es la solución óptima, pero no puede hacer daño de shred
antemano para descartar errores de firmware.
¡Ah, y siempre verifique dos veces el dispositivo que está intentando borrar! dmesg puede ayudar a ver cuál fue el dispositivo insertado más recientemente, y también vale la pena verificar el nombre del dispositivo con el que desea borrar ls -al
, incluso para los números de nodo del dispositivo, y la blkid
salida para ver qué particiones pueden estar disponibles que NO quiero despejar.
Nunca use estos comandos en una unidad interna que quiera seguir usando; blkdiscard
solo funcionará en unidades de estado sólido, ¡pero no vale la pena intentar perder datos!
Puede haber otras formas de borrar datos de forma segura a medida que avanza la tecnología.
Otra forma mencionada es el SECURITY ERASE
comando ATA que puede emitirse a través de hdparm
comandos. En mi experiencia, no es realmente compatible con unidades flash. Fue diseñado para discos duros empresariales, y la función no siempre se implementa en dispositivos de almacenamiento de menor costo.
La operación TRIM
/ DISCARD
es mucho más nueva que el SECURITY ERASE
comando y se creó en respuesta a las funciones de flash, por lo que tiene muchas más posibilidades de implementarse, incluso en unidades USB baratas, pero aún no es omnipresente. Si desea borrar una tarjeta SD / micro SD en un dongle USB, e blkdiscard
informa que no es compatible, puede probar con un lector de dongle / tarjeta diferente, y / o hacerlo en una máquina con una ranura SD / MMC directa .
blkdiscard
está en Debian Jessie, y solo en las dos versiones más recientes de Ubuntu, pero no en Ubuntu LTS 14.04. blkdiscard
fue agregado a la util-linux
versión del paquete 2.23.
blkdiscard
compara con la hdparm
solución en otro comentario de @zhenech (específicamente el enlace: ata.wiki.kernel.org/index.php/ATA_Secure_Erase ).
Me doy cuenta de que esto no es realmente una respuesta a su pregunta, pero la forma más simple es destruir físicamente el disco (aplastarlo repetidamente con un mazo generalmente funciona, pero la trituración industrial o la incineración también son opciones). Si está lo suficientemente preocupado por la seguridad como para asegurarse de que los datos sean irrecuperables, es probable que el valor de esos datos sea muchas veces mayor que el costo del disco, y el método físico es barato y confiable.
Casi todas las funciones de borrado seguro disponibles fueron diseñadas para girar medios magnéticos, donde la computadora generalmente puede determinar la ubicación física [1] de los bloques utilizados para el archivo y escribir sobre esos mismos bloques. Los chips de controlador de almacenamiento de estado sólido resumen la ubicación física de los datos del sistema y le gusta moverlos.
Su pregunta realmente depende de quién va tras sus datos. Si le preocupa la pérdida aleatoria o el robo casual, entonces un formato regular estará bien. Si le preocupa ser el objetivo de un usuario altamente motivado y técnicamente competente con recursos sustanciales a su disposición [2], entonces incinere el disco y gaste $ 10 en uno nuevo.
Sí, hay un mapeo lógico de bloques. Pero el bloque lógico A siempre se asignará al bloque físico B.
esta persona abriría la unidad, sacaría el chip de memoria de la tarjeta y leería la memoria flash directamente, sin pasar por el controlador
La forma más simple y rápida que conozco es escribir ceros (0) en todo el disco:
dd if=/dev/zero of=/dev/sdX
donde /dev/sdX
está el nodo del dispositivo de tu memoria USB.
Algunos sugieren un proceso más completo con más iteraciones y otros patrones. Hay utilidades específicas disponibles para hacer esto. El paquete GNU coreutils contiene el shred
comando específicamente para este propósito. Muchas personas también usan badblocks -w
, que es parte del paquete e2fsprogs. En FreeBSD shred
, se llama a la utilidad gshred
y debería estar disponible en los puertos /usr/ports/sysutils/coreutils
o /usr/ports/sysutils/fileutils
.
Esto debería ser capaz de limpiar de forma segura su unidad flash si planea reutilizarla: http://linux.die.net/man/1/scrub. Si no, derrítela ...