In de cryptografie is een pseudorandomgenerator (PRG) een algoritme dat een reeks bits produceert die willekeurig lijkt, ook al wordt deze in werkelijkheid bepaald door een geheime interne toestand. Een veilige PRG is een PRG die computationeel niet te onderscheiden is van een werkelijk willekeurige reeks bits. Dit betekent dat er geen efficiënt algoritme bestaat dat een reeks bits geproduceerd door een veilige PRG als invoer kan nemen en deze kan onderscheiden van een reeks werkelijk willekeurige bits.
Veilige PRG's worden gebruikt in een verscheidenheid aan cryptografische toepassingen, waaronder:
* Encryptie:Een beveiligde PRG kan worden gebruikt om een sleutel te genereren voor het coderen van gegevens. Deze sleutel kan vervolgens worden gebruikt om de gegevens op een zodanige manier te versleutelen dat het rekenkundig onhaalbaar is om zonder de sleutel te ontsleutelen.
* Authenticatie:een beveiligde PRG kan worden gebruikt om een uitdaging-antwoordpaar te genereren voor het authenticeren van gebruikers. De uitdaging wordt naar de gebruiker gestuurd, die reageert met het bijbehorende antwoord. De verificateur controleert of het antwoord juist is en als dat zo is, wordt de gebruiker geauthenticeerd.
* Digitale handtekeningen:Een beveiligde PRG kan worden gebruikt om een digitale handtekening voor een bericht te genereren. Deze handtekening kan vervolgens worden gebruikt om te verifiëren dat het bericht afkomstig is van de afzender en dat er niet mee is geknoeid.
Er zijn een aantal verschillende manieren om veilige PRG's te construeren. Enkele veel voorkomende technieken zijn:
* Met behulp van een cryptografische hashfunctie:Een veilige PRG kan worden geconstrueerd door een cryptografische hashfunctie te gebruiken om een geheime startwaarde te hashen. De uitvoer van de hashfunctie wordt vervolgens gebruikt als de uitvoer van de PRG.
* Met behulp van een blokcode:Een veilige PRG kan worden geconstrueerd door een blokcode te gebruiken om een geheime startwaarde te coderen. De uitvoer van het blokcijfer wordt vervolgens gebruikt als de uitvoer van de PRG.
* Met behulp van een stream cipher:Een veilige PRG kan worden geconstrueerd door een stream cipher te gebruiken om een geheime startwaarde te coderen. De uitvoer van het stroomcijfer wordt vervolgens gebruikt als de uitvoer van de PRG.
De veiligheid van een veilige PRG hangt af van de veiligheid van de onderliggende cryptografische primitief (zoals een hashfunctie, blokcijfer of stroomcijfer). Als de cryptografische primitief veilig is, zal de beveiligde PRG ook veilig zijn. |