Stellen Sie die PRNG-Beschreibung von aufeinanderfolgenden Ausgaben wieder her


7

Wie kann man angesichts der Ausgänge des Pseudozufallszahlengenerators den Typ (z. B. Linear Feedback Shift Register), Multiply-With-Carry, Linear Congruential Generator usw. bestimmen und die Funktion und den Startwert wiederherstellen?

Das angegebene Zahlenfeld wird mit Sicherheit von PRNG generiert (nicht kryptografisch sicher) - dies ist im Voraus bekannt. Die Ausgänge sind sauber, das PRNG ist eine Blackbox, die fortlaufende Zahlen zurückgibt (keine geänderten, keine übersprungenen Werte. Jetzt besteht die Aufgabe darin, die Funktion und den Startwert aus den Werten zu finden.

Die einfache Idee ist, alle Schemata auszuprobieren, bis eine Übereinstimmung gefunden wird, aber ich bin an einem algorithmischeren Ansatz interessiert.

Antworten:


10

Es gibt keine einzige Methode, um den Typ des PRNG zu bestimmen. In der Tat können Sie für ein PRNG mit kryptografischer Stärke seine Ausgabe nicht von einer wirklich zufälligen unterscheiden, sodass Sie den Typ solcher PRNGs nicht allein anhand ihrer Ausgabe bestimmen können.

Stattdessen für jedes der Systeme , dass Sie Liste, es ist ein Weg , um die Samen zu erholen und zukünftigen Bits von seinem Ausgang vorhersagen. Die Vorgehensweise ist für jeden PRNG-Typ unterschiedlich. Der natürliche Ansatz lautet also: Probieren Sie für jeden Kandidatentyp die Methode zur Wiederherstellung des Startwerts aus, der für diesen PRNG-Typ geeignet ist, und prüfen Sie, ob Sie erfolgreich sind. Wenn ja, haben Sie die Art der PRNG herausgefunden.

Ich glaube nicht, dass es eine effizientere oder allgemeinere Technik gibt. Und ehrlich gesagt denke ich nicht, dass eine effizientere benötigt wird. Für die von Ihnen aufgelisteten Typen gibt es sehr effiziente Algorithmen zur Kryptoanalyse, wenn genügend Ausgabe vorhanden ist. Ich vermute also, dass es schwierig sein wird, den Ansatz "Alle Versuche ausprobieren" zu übertreffen.

Dies funktioniert, wenn Ihr Satz von PRNG-Typen nur PRNGs enthält, die kryptografisch schwach sind, dh wenn es möglich ist, zukünftige Ausgaben vorherzusagen, wenn genügend vergangene Ausgaben vorliegen.

Für Einzelheiten dazu, wie dies für einen bestimmten PRNG-Typ zu tun ist, schlage ich vor, dass Sie eine separate Frage stellen, die sich auf diesen einen PRNG-Typ konzentriert. Hier sind einige Ressourcen zu einigen der von Ihnen aufgelisteten PRNG-Typen:


1
Sie können einen Klappentext hinzufügen, dass die Ausgabe von LCGs beim Zeichnen in Hyperebenen hoch organisiert ist . Diagramme wie dieses können verwendet werden, um zu identifizieren, dass es sich um LCGs und andere Typen handelt.
Iwillnotexist Idonotexist

2
@IwillnotexistIdonotexist, diese Diagramme sind tatsächlich weniger effektiv als die Methode, mit der ich verknüpfe. Daher sehe ich keinen Grund, sie zu verwenden, wenn Ihr Ziel darin besteht, die Verwendung eines LCG zu ermitteln: Die Diagramme erfordern mehr Ausgaben und erfordern, dass jemand das Diagramm inspiziert. Der Ansatz, mit dem ich verknüpfe, erfordert nur eine Handvoll Ausgaben und sehr wenig Berechnung.
DW

Wahr; Die Mathematik ist solide und erkennt sehr schnell, ob es sich um eine bestimmte Familie handelt. Aber es ist schön, weniger mathematisch und visuell zu demonstrieren, dass PRNGs nicht alle gleich sind, und dies ist eines der leuchtenden Beispiele.
Iwillnotexist Idonotexist
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.