Frage von Maimaier, 35

Wie erzeugt man eine möglichst sichere Zufallszahl für die Kryptographie?

Ich gehe davon aus, das der Programmcode auch dem Angreifer zur Verfügung steht, was bei käuflicher Software möglich ist mittels reverse engineering/Decompiler. Damit ist jeder Pseudozufallsgenerator reproduzierbar, solange es nicht irgendeine Information gibt, die der Angreifer nicht hat. Würde man z.B. die aktuelle Uhrzeit als Randomseed nehmen, könnte der Angreifer dies auch machen mit allen möglichen Zeitwerten eines kleinen Zeitfensters.

Gibt es eine Hardware-componente im PC, die eche Zufallszahlen generiert? Beim C64 gab es die Möglichkeit, das weisse Rauschen vom Soundchip abzufragen, damit wären echte Zufallszahlen möglich. Gibt es sowas auch hier irgendwo? Oder einen anderen Trick?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von FloTheBrain, 2

Das einfachste heute ist sicherlich die Mausbewegung des Users zu nehmen. Wurde mit TrueCrypt (heute der Fork VeraCrypt) sehr bekannt.

Etwas aufwändiger und für den Privatmann nicht so leicht zu bekommen sind Zufallsgeneratoren, die ein radioaktives Nuklid und einen Geigerzähler an Bord haben. Da werden die Spontanzerfälle gemessen und daraus die Zahlen erzeugt... Die Luxusvariante.

Antwort
von triopasi, 7

Meinst du sowas wie RdRand von Intel?

Ansonsten: Nimm einfach ne Pseudozufallszahl. Oder noch was mit Mausbewegung oder sonstwas. Mehr zufällig brauchst du niemals.

Kommentar von Maimaier ,

RdRand erzeugt zwar Zufallszahlen, aber scheinbar nur berechnete Pseudozufallszahlen, und es gibt Spekulationen das die NSA hier eine Hintertür einbauen hat lassen um Verschlüsselungen leichter knacken zu können. Da diese Hardware-berechnung scheinbar auch langsamer ist als gute Softwareimplementierungen, bei denen zumindest klar ist was sie berechnen ohne eine Möglichkeit der Hintertüre, ist der Einsatz eher fraglich.

https://en.wikipedia.org/wiki/RdRand#Reception

Kommentar von triopasi ,

Das kann man IMMER behaupten...Einen besseren Zufallszahlengenerator als den wirst du am PC aber nicht finden.

Hör mal auf paranoid zu sein. Und natürlich ist das in der Hardware langsamer als es mit Software irgendwie möglich ist. Aber diese 800MB/s sollten doch reichen oder?

Antwort
von Cooper97, 23

Dazu müsste deine Anwendung eine Internetverbindung zu Webseiten aufbauen welche echte Zufallszahlen zu Verfügung stellen, wie zum Beispiel random.org und ähnliches.

Antwort
von EvilMastermind, 18

Eine Möglichkeit wäre auch den User zu bitten mehrere male in ein größeres Feld zu klicken um 

Antwort
von Kaen011, 16

Ein Computer kann logischerweise keine echten Zufallszahlen generieren. Aus diesem Grund werden möglichs viele verschiedene Informationen genommen um die Zufallszahl zu erzeugen. Alle Informationen erneut zu generieren kann schwer sein.

Wenn du z.b. die Uhrzeit, Mausposition, Prozessorauslastung, Ram Auslastung, anzahl der geöffneten Task.....

Zusammenbringst und daraus eine Zufallszahl errechnest ist es sehr unwahscheinlich das jemand anderes sie herausbekommt

Kommentar von Maimaier ,

Der C64 war ein Computer, und er konnte echte Zufallszahlen generieren, da er eine Hardwarekomponente hatte die weisses Rauschen erzeugte.

Technisch kein Problem soetwas einzubauen, wird aber scheinbar nicht mehr gemacht. Gäbe es soetwas wieder, wäre es schwieriger für die NSA alles abzuhören.

Uhrzeit, Mausposition, Prozessorauslastung usw. könnten erraten oder von einem anderen Programm ausgelesen werden, das ebenfalls auf deinem Rechner läuft (z.B. die Skripte hier von GuteFrage).

Kommentar von Kaen011 ,

Das Problem vom Abhören ist nicht das es keine Zufallzahlen gibt^^.

Wenn der Pc sowieso überwacht wird kannst du auch keinen sicheren schlüssel erstellen, da selbst wenn du eine echte Zufallszahl bekommst, diese dem Überwacher auch bekannt sind.

Kommentar von Kaen011 ,

Und durch die Verbindung von vielen verschiedenen Daten zur Erzeugung der Zufallszahl ist es genauso unwahrscheinlich diese zu "erraten" wie eine echte zufallszahl

Antwort
von LSDDD, 17

Bewegung des Mauszeigers (wie bei VeraCrypt)

Antwort
von Mojoi, 15

Das Zufallsrauschen des Soundchip (vom C64) konnte ausgelesen werden? Wie das denn?

Kommentar von Maimaier ,

https://www.c64-wiki.de/index.php/SID#Programmierung

"Zufallsgenerator"

Man muss wohl erst als Hüllkurve das Rauschen einstellen (es gab als Hüllkurve Dreieck, Sägezahl, Rechteck und Rauschen), und dann das richtige Register über den Peek-befehl auslesen. Beim C64 ging alles über Poke und Peek, es war noch möglich sich selbst in kurzer Zeit ALLES beizubringen was der Computer überhaupt kann, beim PC ist das unmöglich Aufgrund der Unmenge an Hardware und Software.

Kommentar von Mojoi ,

Erstaunlich.

Keine passende Antwort gefunden?

Fragen Sie die Community