web-dev-qa-db-fra.com

Existe-t-il une alternative à / dev / urandom?

Y a-t-il un moyen plus rapide que/dev/[u] aléatoire? Parfois, j'ai besoin de faire des choses comme

chat/dev/urandom>/dev/sdb

Les périphériques aléatoires sont "trop" Secure et malheureusement trop lent pour cela. Je sais qu'il y a wipe et des outils similaires pour une suppression sécurisée, mais je suppose qu'il existe également des moyens intégrés à celui de Linux.

21
cgp

Si vous cherchez à faire une effacement "sécurisé" d'un disque dur (ou de fichier), vous devez regarder l'utilitaire déchiqueté.

Comme les posters précédentes signalent, les périphériques/* Dev/* sont destinés à être utilisés comme source de petits morceaux de données aléatoires.

12
MikeyB

Malheureusement, Linux a une mauvaise mise en œuvre de l'urandie. Vous pouvez utiliser AES256-CTR avec une clé aléatoire et obtenez plusieurs centaines de mégaoctets de pseudo-aléatoire par seconde, si votre CPU prend en charge AES-NI (accélération matérielle). Je suis impatient d'urander à une approche moderne.

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

Ce chiot fait 1,0 gb/s sur ma boîte (comparé à 14 Mo/s de/dev/ur urandom). Il utilise Urandom uniquement pour créer un mot de passe aléatoire, puis un cryptage très rapide de/dev/zéro à l'aide de cette clé. Cela devrait être un cryptographiquement sécurisé PRNG mais je ne ferai pas de garanties.

24
Tronic

Dans un test rapide sous Ubuntu 8.04 sur un ThinkPad T60P avec CPU T2500, 1 Go de données aléatoires de openssl Rand était 3-4 fois plus rapide que /dev/urandom. C'est-à-dire,

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

... Était environ 4 minutes tandis que ...

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

... était juste plus de 1 minute.

Incertain s'il y a une différence de qualité aléatoire, mais c'est probablement bien pour l'essuyer HD-Wiping.

7
gojomo

Si vous voulez effacer un énorme appareil de bloc, je l'ai trouvé plus robuste d'utiliser dd et le mappeur de périphérique au lieu de la redirection de la sortie de données aléatoires. Ce qui suit sera mapper /dev/sdb à /dev/mapper/deviceToBeErased En- et décrypter de manière transparente entre les deux. Pour remplacer le périphérique sur l'extrémité cryptée, les zéros sont copiés sur le côté texte brut du mappeur (/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

Les données cryptées sur /dev/sdb est garanti d'être indiscernable de données aléatoires s'il n'y a pas grave faiblesse dans les AES. La clé utilisée est saisie de /dev/random (Ne vous inquiétez pas - il n'utilise que 32 octets).

5
Perseids

Si vous devez essuyer enrichement un HD, il y a un outil très Puissant: DBAN

5
Arg

vérifier en frandom

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

selon mon test, il est le plus rapide

4
MA1

Plus votre outil est rapide, moins le résultat sera sécurisé. Générer un bon aléatoire prend du temps.

Quoi qu'il en soit, vous pouvez utiliser quelque chose comme -DD si =/dev/z zéro de =/dev/sdb, mais évidemment, cela ne sera pas aléatoire, il va juste effacer beaucoup plus vite.

Une autre option peut être d'utiliser cette méthode / sbin/badblocks -c 10240 -s -w -t aléatoire -v/dev/sdb Il est plus rapide que Urandom, mais les badblocks PRNG est moins aléatoire.

2
Zoredache

Format avec LUKS et DD sur le volume crypté. Ensuite, utilisez/dev/urandom pour essuyer l'en-tête Luks.

Si vous avez le support de matériel AES, il s'agit d'une solution très rapide.

Brièvement:

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

terminé!

Voir mon blog: remplissez rapidement un disque avec des bits aléatoires (sans/dev/urandom)

2
Eric Wheeler

Si vous souhaitez essuyer rapidement un disque dur, écrivez-y les données de non-inscrit. Ce n'est pas moins sûr que d'utiliser des données aléatoires. De toute façon, lorsqu'il est connecté à un ordinateur, les données d'origine ne peuvent pas être lues. Récoltez les données de disque dur: la grande controverse d'essuyage montre que les données d'origine ne peuvent pas être lues à l'aide d'un microscope non plus.

2
sciurus

Si vous souhaitez effacer un disque dur, DD ne supprime pas le contenu des secteurs réaffectés et est très lent si le disque dur est en train de mourir. Au lieu de cela, vous pouvez utiliser les lecteurs de la fonction d'effacement, qui a été normalisée pendant une longue période.

Dans cet exemple, je suis en train d'effacer un disque dur mécanique de 500 Go en seulement 102 minutes. Même quand il est plein de secteurs réaffectés:

root@ubuntu:~# hdparm --security-set-pass Eins /dev/sdaj
security_password="Eins"

/dev/sdaj:
 Issuing SECURITY_SET_PASS command, password="Eins", user=user, mode=high
root@ubuntu:~# 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

root@ubuntu:~# smartctl --all /dev/sdaj | grep Reallocated
  5 Reallocated_Sector_Ct   0x0033   036   036   036    Pre-fail Always   FAILING_NOW 1327 

Vous pouvez voir plus de détails à Ata.wiki.kernel.org , mais leur exemple n'utilise pas - Security-Erase-amélioré, qui est nécessaire pour supprimer les secteurs réaffectés avant la mention.

2

En pratique, il n'est probablement pas nécessaire de semer le disque entier d'un flux aléatoire continu.

Vous pouvez créer une pièce de données de taille modeste de données aléatoires, puis répétez simplement cela sur le disque.

Assurez-vous simplement que cette pièce de données n'est pas un multiple de la taille du bloc normal du disque, afin de vous assurer que vous ne finissez pas d'écraser les blocs de données corrélés avec le même bit de données aléatoires. Une taille de morceau qui est un nombre premier dans la plage de ~ 1 Mo devrait bien faire.

Pour une sécurité supplémentaire, faites-le simplement plusieurs fois plus, en utilisant une taille de morceau différente à chaque fois.

1
Alnitak

Si tout ce que vous voulez faire, c'est écraser le disque, alors cela n'a pas d'importance à ce que vous utilisez car tout ce qui a tout de temps battra un peu de laboratoire de criminalistique et je ne ferais aucun peu de mal à décanter le lecteur pour arrêter ce niveau de ressources. .

Utilisez simplement une source non aléatoire comme tous les zéros ou ceux ou un motif répété comme (je pense que cela fonctionnera)

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