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

RdRand von /dev/random

Es handelt sich um eine Hardware-Implementierung, die nicht formal getestet wurde und proprietär ist. Die potenzielle Sorge ist, dass Intel die Implementierung auf Verlangen der NSA durch eine Hintertür hätte erledigen können.

Die aktuelle Art, die rdrand-Ausgabe in das Linux-Kernel-PRNG zu mischen, besteht darin, dass sie in den Pool xoriert wird, was mathematisch bedeutet, dass es für eine schwache Ausgabe der rdrand-Implementierung keine Möglichkeit gibt, den Gesamtpool zu schwächen – sie wird ihn entweder stärken oder der Sicherheit nichts tun.

Das eigentliche Risiko besteht jedoch darin, dass die xor-Anweisung so hintertürt wird, dass die Verwendung von rdrand in einem speziellen Szenario erkannt wird, und dann eine andere Ausgabe erzeugt, wenn xor aufgerufen wird, was nur verursacht die absichtlich geschwächte rdrand-Leistung in den Pool zu legen.

Machbar? Ja. Plausibel? Angesichts der jüngsten Enthüllungen vielleicht. Wenn es eine Hintertür ist, ist Linus daran beteiligt? Ihre Vermutung ist so gut wie meine.

Außerdem gibt es ein großartiges Dokument zum Verstecken von Hardware-Hintertüren auf Transistorebene in CPUs.

Bearbeitet, Februar 2019. Benutzer Luc kommentierte unten, dass sich die Dinge geändert haben, seit diese Antwort ursprünglich geschrieben wurde:

Ab Linux 4.19 vertraut der Kernel darauf, dass RDRAND sein CSPRNG vollständig aussendet, es sei denn, man übergibt das Flag random.trust_cpu=0 beim Booten (oder setzt es zur Kompilierzeit). Dies sollte kein Problem sein, wenn dies nicht Ihr erster Start ist, aber neu installierte Systeme oder neu erstellte VMs haben möglicherweise eine vorhersehbare Startdatei (oder überhaupt keine Seed-Datei), daher ist dies für diese Systeme relevant, um eine gute Entropie zu sammeln.


Die RdRand-Anweisung ist auf Ivy Bridge aufgrund eines Hardwarefehlers unterbrochen, der auf diesen Prozessoren aufgetreten ist. Es ist nicht unplausibel, dass es dafür einen anderen Grund als einen Fehler gibt. Kryptografische Algorithmen, die mit deterministischen Pseudozufallsalgorithmen gesät wurden, sind wahrscheinlich hunderte Millionen Mal leichter zu knacken als solche, die mit echten Zufallszahlen gesät wurden. Ich habe tatsächlich eine technische Anwendung, die von dieser Anweisung profitieren würde, aber sie verursacht eine illegale Anweisungsausnahme mein neuer Ivy-Bridge-Laptop. Bekomme ich mein Geld zurück? Erste Informationen zum Hardware-Bug finden Sie im Wikipedia-Eintrag auf RdRand.


Linux
  1. So generieren Sie ein zufälliges Passwort unter Linux mit /dev/random

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

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

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

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

tty (/dev/tty ) vs. pts (/dev/pts) unter Linux

/dev/random unter Windows simulieren

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

Warum gibt dd von /dev/random unterschiedliche Dateigrößen an?

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

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