Ich versuche, eine Reihe von Festplatten halb sicher zu löschen. Folgendes arbeitet mit 20-50Mb / s
dd if=/dev/zero of=/dev/sda
Aber
dd if=/dev/random of=/dev/sda
scheint nicht zu funktionieren. Auch wenn ich tippe
dd if=/dev/random of=stdout
Es gibt mir nur ein paar Bytes, unabhängig davon, was ich für bs = und count = übergeben habe
Benutze ich / dev / random falsch? Nach welchen anderen Informationen sollte ich suchen, um diese Problembehandlung voranzutreiben? Gibt es eine andere Möglichkeit, dies mit einem Skript oder ähnlichem zu tun?
makeMyLifeEasy | dd if=stdin of=/dev/sda
Oder etwas ähnliches...
/dev/random
liefert nur ein paar Bytes, siehe superuser.com/a/712515/139307Antworten:
Beides
/dev/random
und/dev/urandom
ein "Entropie-Pool". Wenn der Pool erschöpft ist,/dev/random
wartet er darauf, dass er wieder aufgefüllt wird. Dies erfordert eine Überwachung des Systemverhaltens (Tastatureingabe, Mausbewegung usw.), während Sie/dev/urandom
weiterhin pseudozufällige Daten erhalten./dev/random
ist theoretisch von höherer Qualität, aber/dev/urandom
mit ziemlicher Sicherheit gut genug für Ihre Zwecke. (Aber es/dev/urandom
ist wahrscheinlich sogar langsamer als einige andere Methoden. Ein schnellerer, aber qualitativ schlechterer Generator ist wahrscheinlich gut genug, um Festplatten zu löschen. Es ist nicht klar, dass ein Angreifer einen Vorteil daraus ziehen würde, die zu erzeugende Sequenz zu kennen, oder dass Zufallszahlen für diesen Zweck besser sind als eine Folge wie 0, 1, 2, 3, 4, ....)Zitieren der
random(4)
Manpage:UPDATE : Die Manpage `random (4) wurde aktualisiert, seit ich das geschrieben habe. Es heißt jetzt:
Siehe auch " Mythen über / dev / urandom " von Thomas Hühn.
Aber
/dev/urandom
, auch wenn es nicht blockiert wird, ist wahrscheinlich zu langsam sein , wenn Sie große Mengen an Daten generieren möchten. Nehmen Sie einige Messungen an Ihrem System vor, bevor Sie es versuchen.BEARBEITEN: Das Folgende ist ein Exkurs über "wahre" Zufallszahlen im Vergleich zu Pseudo-Zufallszahlen. Wenn alles, was Sie interessiert, eine praktische Antwort auf die Frage ist, können Sie jetzt aufhören zu lesen.
Ich scheine Behauptungen (auch in anderen Antworten hier),
/dev/random
die einen "wahren" Zufallszahlengenerator im Gegensatz zu einem Pseudozufallszahlengenerator (PRNG) implementieren. Beispielsweise macht der Wikipedia-Artikel einen solchen Anspruch geltend. Ich glaube nicht, dass das stimmt. Es gibt hier einige Diskussionen darüber , die sich auf Hardware-Zufallszahlengeneratoren beziehen, aber ich sehe keine Beweise dafür, dass/dev/random
normalerweise ein solches Gerät verwendet wird oder dass typische Computer sogar über ein solches Gerät verfügen. Sie unterscheiden sich von PRNGs wie der C-rand()
Funktion darin, dass sie nicht deterministisch sind, da sie Entropie aus praktisch unvorhersehbaren Quellen gewinnen.Ich würde sagen, es gibt drei Klassen von Zufallszahlengeneratoren:
Deterministische PRNGs wie die C-
rand()
Funktion, die einen Algorithmus verwenden, um wiederholbare Sequenzen zu generieren, die (mehr oder weniger) die statistischen Eigenschaften einer wirklich zufälligen Sequenz haben. Diese können für Spiele gut genug sein (vorausgesetzt, sie lassen sich auf eine gute Art und Weise aussondern) und sind für Anwendungen erforderlich, die Wiederholbarkeit erfordern, jedoch nicht für die Kryptografie geeignet sind.Generatoren wie
/dev/random
und/dev/urandom
, die Entropie aus einer praktisch unvorhersehbaren Quelle wie der E / A-Aktivität gewinnen (aus diesem Grund kann das Klopfen auf der Tastatur oder das Bewegen der Maus dazu führen/dev/random
, dass mehr Daten erzeugt werden). Es ist (für mich) nicht klar, ob diese der Definition eines PRNG entsprechen (ich habe Definitionen gesehen, die besagen, dass ein PRNG deterministisch ist), aber sie sind auch keine echten Zufallszahlengeneratoren.Hardware-Zufallszahlengeneratoren , die selbst bei vollständiger Kenntnis ihres Ausgangszustands physikalisch unvorhersehbar sind und die zusätzlich mathematische Techniken verwenden, um die richtigen statistischen Eigenschaften sicherzustellen.
quelle
/dev/urandom
eindeutig pseudozufällig./dev/random
unterscheidet sich darin, dass es versucht, eine konservative Schätzung der Entropie seiner Eingabe vorzunehmen, und nicht mehr Entropie ausgibt, als es tatsächlich kann (denkt es). Dies ist unabhängig vom Vorhandensein eines dedizierten TRNG-Geräts, da eine echte Entropie auch von unabhängigen Ereignissen jeglicher Art wie Tastatur oder Netzwerk-E / A über der Zeit erhalten werden kann./dev/random
ist eine Quelle wahrer Entropie, wahrhaft zufälliger Bytes. Als solches braucht es eine Quelle der Zufälligkeit. Sie können die Zufälligkeit "aufbrauchen", indem Sie daraus lesen. Es wird dir all die Zufälligkeit geben, die es hat, und dann blocken, bis es mehr wird. Sie sitzen wahrscheinlich nur da und warten, und die Maschine bekommt sehr wenig neue Zufälligkeit und wartet nur./dev/random
für wirklich zufällige Krypto, hohe Qualität der Zufälligkeit. Als solches ist es ein Overkill, wenn ein Laufwerk überschrieben wird./dev/zero
Ein paar Mal zu schreiben ist in Ordnung. Oder Sie können von schreiben/dev/urandom
, was nicht blockiert und Pseudo-Zufallszahlen gibt, wenn es keine echte Zufälligkeit mehr gibt.quelle
/dev/random
generiert keine "wirklich zufälligen Bytes". Es erzeugt höherwertige Pseudo- Zufallsbytes als dies der/dev/urandom
Fall ist.In Linux ist / dev / random eine spezielle Datei, die qualitativ hochwertige Pseudozufallszahlen liefert. Diese Implementierung sammelt Entropie von Ereignissen, die von Tastatur-, Maus-, Festplatten- und Systeminterrupts stammen. (siehe dieses Dokument) Wenn es keine derartigen Ereignisse gibt, ist der Entropiepool leer. Die Lesevorgänge von / dev / random werden blockiert, bis zusätzliches Umgebungsrauschen erfasst wird. Dies erklärt Ihr Problem. Um den Entropiepool zu füllen, können Sie Tasten auf der Tastatur drücken.
Andererseits verwendet ein echter Zufallszahlengenerator einen Hardware-Zufallszahlengenerator, der Zufallszahlen aus physikalischen Prozessen erzeugt. Diese Prozesse umfassen mikroskopische Phänomene, die ein statistisch zufälliges "Rauschsignal" mit niedrigem Pegel erzeugen, wie beispielsweise thermisches Rauschen oder den fotoelektrischen Effekt oder andere physikalische Phänomene. Diese Prozesse sind theoretisch völlig unvorhersehbar, und die Behauptungen der Theorie zur Unvorhersehbarkeit werden einem experimentellen Test unterzogen.
Ein Hardware-Zufallszahlengenerator besteht typischerweise aus einem Wandler, um einen Teil der physikalischen Phänomene in ein elektrisches Signal umzuwandeln, einem Verstärker und anderen elektronischen Schaltungen, um die Amplitude der Zufallsschwankungen auf ein makroskopisches Niveau zu erhöhen, und einer Art von Analog-Digital-Wandler Um die Ausgabe in eine digitale Zahl, häufig eine einfache Binärzahl 0 oder 1, umzuwandeln. Durch wiederholtes Abtasten des zufällig variierenden Signals wird eine Reihe von Zufallszahlen erhalten.
Der Hardware-Zufallszahlengenerator sammelt Umgebungsgeräusche von Gerätetreibern und anderen Quellen in einem Entropiepool. Aus diesem Entropiepool werden Zufallszahlen erzeugt. Beim Lesen gibt das Gerät / dev / random nur zufällige Bytes innerhalb der geschätzten Anzahl von Rauschbits im Entropiepool zurück. Dies erklärt Ihr Problem.
Einige Implementierungen von Hardware RNG werden im Kerneldokument und in den Informationen zu einem Gerät erläutert .
Ein Gegenstück zu / dev / random ist / dev / urandom ("entsperrte" / nicht blockierende zufällige Quelle), die den internen Pool wiederverwendet, um mehr pseudozufällige Bits zu erzeugen. Dies bedeutet, dass der Aufruf nicht blockiert wird, die Ausgabe jedoch möglicherweise weniger Entropie enthält als der entsprechende Lesevorgang aus / dev / random.
Wenn Sie also nicht beabsichtigen, CSPRNG (Cryptographically Secure Pseudorandom Number Generator) zu generieren, sollten Sie / dev / urandom verwenden.
quelle
/dev/random
wirklich Quellen wie thermisches Rauschen verwenden? Nach meinem Verständnis werden Informationen aus (relativ) unvorhersehbaren Systemstatus verwendet, z. B. E / A-Aktivität und Prozessstatus. Ich glaube nicht, dass die meisten Linux-Systeme über Hardware verfügen, die thermisches Rauschen abfangen kann. Können Sie dazu einige Unterlagen anführen?/dev/random
"wirklich zufällige Zahlen" erzeugt.Ohne Beantwortung Ihrer Frage - hier gibt es bereits vollständige Antworten - können Sie auch Dariks Boot und Nuke alias DBAN , einen Wischer für ein Live-CD-Laufwerk, ausprobieren.
quelle
Verwenden Sie einfach den
shred
Befehl, der mit coreutils geliefert wird. Es verwendet zufällige Daten auf effiziente Weise. dd ist ein Low-Level-Tool und das ist wahrscheinlich ein bisschen zu niedrig für diese Aufgabe.shred
überspringt effizient nicht beschreibbare Teile des Geräts.quelle