In der Kryptographie ist ein Pseudozufallsgenerator (PRG) ein Algorithmus, der eine Folge von Bits erzeugt, die zufällig erscheint, obwohl sie tatsächlich durch einen geheimen internen Zustand bestimmt wird. Ein sicheres PRG ist ein PRG, das rechnerisch nicht von einer wirklich zufälligen Bitfolge zu unterscheiden ist. Dies bedeutet, dass es keinen effizienten Algorithmus gibt, der eine von einem sicheren PRG erzeugte Bitfolge als Eingabe verwenden und sie von einer Folge wirklich zufälliger Bits unterscheiden kann.
Sichere PRGs werden in einer Vielzahl kryptografischer Anwendungen verwendet, darunter:
* Verschlüsselung:Mit einem sicheren PRG kann ein Schlüssel zum Verschlüsseln von Daten generiert werden. Dieser Schlüssel kann dann verwendet werden, um die Daten so zu verschlüsseln, dass eine Entschlüsselung ohne den Schlüssel rechnerisch nicht möglich ist.
* Authentifizierung:Mit einem sicheren PRG kann ein Challenge-Response-Paar zur Authentifizierung von Benutzern generiert werden. Die Challenge wird an den Benutzer gesendet, der mit der entsprechenden Antwort antwortet. Der Verifizierer prüft, ob die Antwort korrekt ist. Ist dies der Fall, wird der Benutzer authentifiziert.
* Digitale Signaturen:Mit einem sicheren PRG kann eine digitale Signatur für eine Nachricht erstellt werden. Mithilfe dieser Signatur kann dann überprüft werden, ob die Nachricht vom Absender stammt und nicht manipuliert wurde.
Es gibt verschiedene Möglichkeiten, sichere PRGs zu erstellen. Einige gängige Techniken sind:
* Verwendung einer kryptografischen Hash-Funktion:Ein sicheres PRG kann erstellt werden, indem eine kryptografische Hash-Funktion zum Hashen eines geheimen Startwerts verwendet wird. Die Ausgabe der Hash-Funktion wird dann als Ausgabe des PRG verwendet.
* Verwendung einer Blockverschlüsselung:Ein sicheres PRG kann erstellt werden, indem eine Blockverschlüsselung zum Verschlüsseln eines geheimen Startwerts verwendet wird. Die Ausgabe der Blockchiffre wird dann als Ausgabe des PRG verwendet.
* Verwendung einer Stream-Verschlüsselung:Ein sicheres PRG kann erstellt werden, indem eine Stream-Verschlüsselung verwendet wird, um einen geheimen Startwert zu verschlüsseln. Die Ausgabe der Stromverschlüsselung wird dann als Ausgabe des PRG verwendet.
Die Sicherheit eines sicheren PRG hängt von der Sicherheit des zugrunde liegenden kryptografischen Grundelements (z. B. einer Hash-Funktion, Blockverschlüsselung oder Stromverschlüsselung) ab. Wenn das kryptografische Grundelement sicher ist, ist auch das sichere PRG sicher.