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.
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.
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.
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.
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).
Si vous devez essuyer enrichement un HD, il y a un outil très Puissant: DBAN
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.
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)
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.
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.
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.
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