it-swarm-es.com

¿Hay una alternativa a / dev / urandom?

¿Hay alguna forma más rápida que/dev/[u] random? A veces, necesito hacer cosas como

cat/dev/urandom>/dev/sdb

Los dispositivos aleatorios son "demasiado" seguros y desafortunadamente demasiado lentos para eso. Sé que hay wipe y herramientas similares para la eliminación segura, pero supongo que también hay algunos medios integrados para eso en Linux.

21
cgp

Si está buscando hacer un borrado "seguro" de un disco duro (o archivo), debe mirar la utilidad de trituración.

Como señalan los carteles anteriores, los dispositivos aleatorios/dev/* están destinados a ser utilizados como una fuente de pequeños fragmentos de datos aleatorios.

12
MikeyB

Desafortunadamente, Linux tiene una mala implementación de urandom. Puede usar aes256-ctr con una clave aleatoria y obtener varios cientos de megabytes de pseudoaleatoriedad por segundo, si su CPU admite AES-NI (aceleración de hardware). Tengo muchas ganas de cambiar urandom a un enfoque moderno también.

openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > randomfile.bin

Este cachorro tiene 1.0 GB/s en mi caja (en comparación con 14 MB/s de/dev/urandom). Utiliza urandom solo para crear una contraseña aleatoria y luego realiza un cifrado muy rápido de/dev/zero con esa clave. Esto debería ser criptográficamente seguro PRNG pero no haré garantías.

24
Tronic

En una prueba rápida con Ubuntu 8.04 en un Thinkpad T60p con CPU T2500, 1 GB de datos aleatorios de openssl Rand fue 3-4X más rápido que /dev/urandom. Es decir,

time cat /dev/urandom | head -c 1000000000 > /dev/null

... fue alrededor de 4 minutos mientras ...

time openssl Rand 1000000000 | head -c 1000000000 > /dev/null

... fue poco más de 1 minuto.

No estoy seguro de si hay una diferencia en la calidad aleatoria, pero cualquiera de los dos probablemente esté bien para borrar HD.

7
gojomo

Veo muchas respuestas que dicen que usar datos aleatorios no es importante. Eso es bastante cierto si todo lo que está tratando de hacer es limpiar la unidad, pero no tanto si la está limpiando en preparación para el cifrado del disco.

Si llena un dispositivo con datos no aleatorios, coloque una partición cifrada en él y podría tener un problema. La parte de la unidad que almacena datos cifrados se destacará del resto de la unidad, porque los datos cifrados se verán al azar y el resto no. Esto se puede usar para determinar información sobre el disco criptográfico que podría usarse para descifrarlo. El siguiente enlace explica la teoría detrás de cómo funcionan algunos de los ataques más comunes y cómo defenderse de ellos (en Linux, de todos modos).

configuración de cifrado del disco duro de Linux

5
user104021

Si desea borrar un dispositivo de bloque enorme, me parece más robusto usar dd y el mapeador de dispositivos en lugar de la redirección de salida de datos aleatorios. Lo siguiente asignará /dev/sdb a /dev/mapper/deviceToBeErased es- y descifrar transparentemente en el medio. Para llenar el dispositivo en el extremo cifrado, los ceros se copian en el lado de texto plano del mapeador (/dev/mapper/deviceToBeErased).

cryptsetup --cipher aes-xts-plain64 --key-file /dev/random --keyfile-size 32 create deviceToBeErased /dev/sdb
dd if=/dev/zero of=/dev/mapper/deviceToBeErased bs=1M

Los datos cifrados en /dev/sdb se garantiza que no se puede distinguir de los datos aleatorios si no hay grave debilidad en AES. La clave utilizada se toma de /dev/random (no te preocupes, solo usa 32 bytes).

5
Perseids

Si necesita limpiar de forma segura un HD, hay una herramienta muy potente: DBAN =

5
Arg

comprobar al azar

http://billauer.co.il/frandom.html

según mi prueba es más rápido

4
MA1

Cuanto más rápida sea su herramienta, menos seguro será el resultado. Generar buena aleatoriedad lleva tiempo.

De todos modos, podría usar algo como dd if =/dev/zero of =/dev/sdb, pero obviamente eso no será aleatorio, simplemente se borrará mucho más rápido.

Otra opción podría ser utilizar este método / sbin/badblocks -c 10240 -s -w -t random -v/dev/sdb es más rápido que urandom, pero los badblocks PRNG es menos aleatorio.

2
Zoredache

/dev/random utiliza una gran cantidad de entropía del sistema, por lo que solo produce un flujo de datos lento.

/dev/urandom es menos seguro y más rápido, pero aún está orientado a fragmentos de datos más pequeños: no está destinado a proporcionar un flujo continuo de números aleatorios de alta velocidad.

Debe hacer un PRNG de su propio diseño, y sembrarlo con algo de /dev/random o /dev/urandom. Si lo necesita un poco más al azar, instálelo periódicamente, cada pocos MB (o cualquiera que sea la longitud de su prng). Obtener 4 bytes (valor de 32 bits) de urandom o random es lo suficientemente rápido como para que pueda hacer esto cada 1k de datos (reinicializar su prng cada 1k) y obtener resultados muy aleatorios, mientras que va muy, muy, rápidamente.

-Adán

2
Adam Davis

Formatee con LUKS y dd sobre el volumen cifrado. Luego use/dev/urandom para borrar el encabezado LUKS.

Si tiene soporte de hardware AES, esta es una solución muy rápida.

Brevemente:

cryptsetup luksFormat /dev/sdX
cryptsetup luksOpen /dev/sdX cryptodev
dd if=/dev/zero bs=1M of=/dev/mapper/cryptodev
cryptsetup luksClose cryptodev
# wipe the luks header.  Yes, it uses /dev/urandom but only for 2MB of data:
dd if=/dev/urandom bs=1M count=2 of=/dev/sdX

¡hecho!

Vea mi blog: Rellene rápidamente un disco con bits aleatorios (sin/dev/urandom)

2
Eric Wheeler

Si desea borrar un disco duro rápidamente, escríbale datos no aleatorios. Esto no es menos seguro que usar datos aleatorios. De cualquier manera, cuando se conecta a una computadora, los datos originales no se pueden leer. Sobrescribir datos del disco duro: la gran controversia de limpieza muestra que los datos originales tampoco se pueden leer con un microscopio.

2
sciurus

Si desea borrar un disco duro, dd no elimina el contenido de los sectores reasignados, y es muy lento si el disco duro está muriendo. En su lugar, puede utilizar la función de borrado integrada de unidades, que se ha estandarizado durante mucho tiempo.

En este ejemplo, estoy borrando un disco duro mecánico de 500 GB en solo 102 minutos. Incluso cuando está lleno de sectores reasignados:

[email protected]:~# hdparm --security-set-pass Eins /dev/sdaj
security_password="Eins"

/dev/sdaj:
 Issuing SECURITY_SET_PASS command, password="Eins", user=user, mode=high
[email protected]:~# time hdparm --security-erase-enhanced Eins /dev/sdaj
security_password="Eins"

/dev/sdaj:
 Issuing SECURITY_ERASE command, password="Eins", user=user

real    102m22.395s
user    0m0.001s
sys     0m0.010s

[email protected]:~# smartctl --all /dev/sdaj | grep Reallocated
  5 Reallocated_Sector_Ct   0x0033   036   036   036    Pre-fail Always   FAILING_NOW 1327 

Puede ver más detalles en ata.wiki.kernel.org , sin embargo, su ejemplo no utiliza --security-erase-enabled, que es necesario para eliminar los sectores reasignados antes mencionados.

2

En la práctica, probablemente no sea necesario sembrar todo el disco desde una secuencia continua aleatoria.

Puede crear una porción modesta de datos aleatorios y luego repetir eso una y otra vez en el disco.

Solo asegúrese de que esa porción de datos no sea un múltiplo del tamaño de bloque normal del disco, para asegurarse de que no termine sobrescribiendo bloques de datos correlacionados con exactamente el mismo bit de datos aleatorios. Un tamaño de fragmento que es un número primo en el rango de ~ 1 MB debería funcionar bien.

Para mayor seguridad, solo hazlo varias veces más, usando un tamaño de fragmento diferente cada vez.

1
Alnitak

La utilidad 'triturar' es fácil y rápida. Si los atributos SMART de la unidad indican cero sectores reasignados, es probable que 'triturar' sea lo suficientemente seguro.

Sin embargo, si la unidad tiene sectores reasignados, los datos sobre sectores dañados no se sobrescribirán. Si las ubicaciones dañadas contenían datos confidenciales antes de ser reasignadas, 'triturar' puede no ser lo suficientemente bueno. Los sectores "defectuosos" pueden leerse restableciendo el mapa de asignación de la unidad y (repetidamente) leyéndolos.

La capacidad de restablecer el mapa de asignación de sector defectuoso varía según el fabricante y el modelo de unidad.

1
drok

Si todo lo que quiere hacer es sobrescribir el disco, entonces no importa lo que use porque cualquier cosa superará a cualquier cosa menos que un laboratorio forense y no confiaría en nada menos que estropear el disco para detener ese nivel de recursos .

Simplemente use una fuente no aleatoria como todos ceros o unos o un patrón repetitivo como (creo que esto funcionará)

(head -c 4096 /dev/urandom; cat /dev/sdb/) > /dev/sdb
0
BCS