GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist ein Rand von /dev/urandom sicher für einen Anmeldeschlüssel?

Die kurze Antwort ist ja. Die lange Antwort ist auch ja. /dev/urandom liefert Daten, die angesichts der vorhandenen Technologie nicht von echter Zufälligkeit zu unterscheiden sind. Eine "bessere" Zufälligkeit als bei /dev/urandom bietet, ist bedeutungslos, es sei denn, Sie verwenden einen der wenigen "informationstheoretischen" kryptografischen Algorithmen, was nicht Ihr Fall ist (Sie würden es wissen).

Die Manpage für urandom ist etwas irreführend, wohl geradezu falsch, wenn es darauf hindeutet, dass /dev/urandom kann "keine Entropie mehr haben" und /dev/random sollte bevorzugt werden; der einzige Moment wo /dev/urandom vielleicht implizieren, dass ein Sicherheitsproblem aufgrund niedriger Entropie in den ersten Momenten einer neuen, automatisierten Betriebssysteminstallation auftritt; Wenn die Maschine bis zu einem Punkt hochgefahren ist, an dem sie begonnen hat, Netzwerkaktivität zu haben, dann hat sie genug physische Zufälligkeit gesammelt, um eine Zufälligkeit von ausreichend hoher Qualität für alle praktischen Anwendungen bereitzustellen (ich spreche hier von Linux; unter FreeBSD dieser momentane Moment der leichten Schwäche tritt gar nicht auf). Andererseits /dev/random neigt dazu, zu ungünstigen Zeiten zu blockieren, was zu sehr realen und lästigen Usability-Problemen führt. Oder, um es mit weniger Worten auszudrücken:Verwenden Sie /dev/urandom und sei glücklich; Verwenden Sie /dev/random und es tut mir leid.

(Bearbeiten: diese Webseite erklärt die Unterschiede zwischen /dev/random und /dev/urandom ganz klar.)

Zum Zweck der Erstellung eines „Cookies“:Ein solches Cookie sollte so beschaffen sein, dass keine zwei Benutzer dasselbe Cookie teilen und dass es rechnerisch unmöglich ist, den Wert eines vorhandenen Cookies zu „schätzen“. Eine Folge von Zufallsbytes tut das gut, vorausgesetzt, sie verwendet Zufälle von ausreichender Qualität (/dev/urandom ist in Ordnung) und dass es lang genug ist . Als Faustregel gilt, wenn Sie weniger als 2 haben Benutzer (n =33 wenn die gesamte Erdbevölkerung Ihr System nutzen könnte), dann eine Folge von n+128 Bits ist breit genug; Sie müssen nicht einmal nach einer Kollision mit bestehenden Werten suchen:Sie werden sie zu Lebzeiten nicht sehen. 161 Bit passen in 21 Byte.

Es gibt Einige Tricks, die machbar sind, wenn Sie kürzere Cookies wünschen und trotzdem vermeiden möchten, in Ihrer Datenbank nach Kollisionen zu suchen. Für ein Cookie dürfte dies aber kaum nötig sein (ich gehe von einem webbasierten Kontext aus). Denken Sie auch daran, Ihre Cookies vertraulich zu behandeln (d. h. HTTPS zu verwenden und die Cookie-Flags „secure“ und „HttpOnly“ zu setzen).


Ja, es ist eine großartige Möglichkeit.

@ Thomas 'Erklärung bringt es auf den Punkt. Und er hat vollkommen recht, wenn er die /dev/urandom kritisiert Manpage. Genau richtig.

Aber überspringen Sie "Prüfen, ob es bereits existiert". Diese Überprüfung ist sinnlos. Es wird nicht passieren. (Die Wahrscheinlichkeit, dass dies passiert, ist geringer als die Wahrscheinlichkeit, vom Blitz getroffen zu werden – mehrmals – am selben Tag.)


Linux
  1. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  2. Wie kann /dev/random oder /dev/urandom mit base64 codiert werden?

  3. DD von /dev/zero nach /dev/null ... was eigentlich passiert

  4. RdRand von /dev/random

  5. Kernel:/dev/kmem und /dev/mem deaktivieren

Wann sollte /dev/random vs. /dev/urandom verwendet werden?

Linux – Was bedeutet der Buchstabe „u“ in /dev/urandom?

So ordnen Sie /dev/sdX- und /dev/mapper/mpathY-Geräte vom /dev/dm-Z-Gerät zu

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0

Wofür wird `/dev/console` verwendet?