I kryptografi er en pseudorandomgenerator (PRG) en algoritme, der producerer en sekvens af bits, der fremstår tilfældig, selvom den faktisk bestemmes af en hemmelig intern tilstand. En sikker PRG er en PRG, der er beregningsmæssigt umulig at skelne fra en virkelig tilfældig sekvens af bit. Dette betyder, at der ikke er nogen effektiv algoritme, der kan tage som input en sekvens af bit produceret af en sikker PRG og skelne den fra en sekvens af virkelig tilfældige bit.
Sikre PRG'er bruges i en række kryptografiske applikationer, herunder:
* Kryptering:En sikker PRG kan bruges til at generere en nøgle til kryptering af data. Denne nøgle kan derefter bruges til at kryptere dataene på en sådan måde, at det er beregningsmæssigt umuligt at dekryptere uden nøglen.
* Godkendelse:En sikker PRG kan bruges til at generere et udfordring-svar-par til godkendelse af brugere. Udfordringen sendes til brugeren, som svarer med det tilsvarende svar. Verifikatoren kontrollerer, at svaret er korrekt, og hvis det er, er brugeren autentificeret.
* Digitale signaturer:En sikker PRG kan bruges til at generere en digital signatur til en besked. Denne signatur kan derefter bruges til at bekræfte, at beskeden kom fra afsenderen, og at den ikke er blevet manipuleret.
Der er en række forskellige måder at konstruere sikre PRG'er på. Nogle almindelige teknikker omfatter:
* Brug af en kryptografisk hashfunktion:En sikker PRG kan konstrueres ved at bruge en kryptografisk hashfunktion til at hash en hemmelig seed-værdi. Outputtet af hash-funktionen bruges derefter som output fra PRG.
* Ved hjælp af en blokchiffer:En sikker PRG kan konstrueres ved at bruge en blokchiffer til at kryptere en hemmelig startværdi. Outputtet fra blokchifferet bruges derefter som output fra PRG.
* Brug af en stream-chiffer:En sikker PRG kan konstrueres ved at bruge en stream-ciffer til at kryptere en hemmelig seed-værdi. Outputtet af strømchifferet bruges derefter som output fra PRG.
Sikkerheden af en sikker PRG afhænger af sikkerheden af den underliggende kryptografiske primitiv (såsom en hash-funktion, blok-chiffer eller stream-ciffer). Hvis den kryptografiske primitiv er sikker, så vil den sikre PRG også være sikker.