I kryptografi är en pseudoslumpgenerator (PRG) en algoritm som producerar en sekvens av bitar som verkar slumpmässigt, även om den faktiskt bestäms av ett hemligt internt tillstånd. En säker PRG är en PRG som är beräkningsmässigt omöjlig att skilja från en verkligt slumpmässig sekvens av bitar. Detta betyder att det inte finns någon effektiv algoritm som kan ta som indata en sekvens av bitar som produceras av en säker PRG och skilja den från en sekvens av verkligt slumpmässiga bitar.
Säkra PRG:er används i en mängd olika kryptografiska tillämpningar, inklusive:
* Kryptering:En säker PRG kan användas för att generera en nyckel för kryptering av data. Denna nyckel kan sedan användas för att kryptera data på ett sådant sätt att det är beräkningsmässigt omöjligt att dekryptera utan nyckeln.
* Autentisering:En säker PRG kan användas för att generera ett utmaning-svar-par för autentisering av användare. Utmaningen skickas till användaren, som svarar med motsvarande svar. Verifieraren kontrollerar att svaret är korrekt, och om det är det, är användaren autentiserad.
* Digitala signaturer:En säker PRG kan användas för att generera en digital signatur för ett meddelande. Denna signatur kan sedan användas för att verifiera att meddelandet kom från avsändaren och att det inte har manipulerats.
Det finns ett antal olika sätt att konstruera säkra PRG:er. Några vanliga tekniker inkluderar:
* Använda en kryptografisk hashfunktion:En säker PRG kan konstrueras genom att använda en kryptografisk hashfunktion för att hasha ett hemligt frövärde. Utdata från hash-funktionen används sedan som utdata från PRG.
* Använda ett blockchiffer:En säker PRG kan konstrueras genom att använda ett blockchiffer för att kryptera ett hemligt frövärde. Utsignalen från blockchifferet används sedan som utdata från PRG.
* Använda ett strömchiffer:En säker PRG kan konstrueras genom att använda ett strömchiffer för att kryptera ett hemligt frövärde. Utdata från strömchifferet används sedan som utdata från PRG.
Säkerheten för en säker PRG beror på säkerheten för den underliggande kryptografiska primitiva (som en hashfunktion, blockchiffer eller strömchiffer). Om den kryptografiska primitiva är säker, kommer den säkra PRG också att vara säker.