Cryptographically Secure Pseudorandom Number Generators (CSPRNG'er) er en kritisk komponent inden for cybersikkerhed, især inden for klassisk kryptografi og stream-cifre. For at løse spørgsmålet om, hvorvidt CSPRNG'er er ikke-deterministiske, er det vigtigt at overveje CSPRNG's definitioner, funktioner og karakteristika, såvel som deres skelnen fra sande tilfældige talgeneratorer (TRNG'er).
En CSPRNG er designet til at generere sekvenser af tal, der tilnærmer egenskaberne af tilfældige tal. I modsætning til sande tilfældige talgeneratorer, som udleder tilfældighed fra fysiske processer, er CSPRNG'er imidlertid algoritmiske og deterministiske af natur. Denne deterministiske egenskab betyder, at hvis den oprindelige startværdi og algoritmen er kendt, kan hele talsekvensen, der genereres af CSPRNG, forudsiges og reproduceres.
Det primære formål med en CSPRNG er at producere output, der ikke kan skelnes fra ægte tilfældighed til enhver effektiv statistisk test. Denne egenskab er vigtig for kryptografiske applikationer, hvor forudsigelighed kan føre til sårbarheder. På trods af deres deterministiske karakter er CSPRNG'er konstrueret til at være beregningsmæssigt umulige at forudsige uden viden om frøet.
For at illustrere dette koncept skal du overveje et eksempel på en CSPRNG baseret på en kryptografisk hashfunktion. Antag, at vi bruger en velkendt hash-funktion som SHA-256 til at generere pseudorandom-tal. Processen kan involvere at tage en indledende seed-værdi, hashe den for at producere det første pseudorandom-tal og derefter bruge dette output som seed for den næste iteration. Sekvensen, der genereres af denne metode, er deterministisk, da den samme indledende seed- og hashfunktion altid vil producere den samme sekvens. Uden kendskab til det oprindelige frø bliver det dog beregningsmæssigt umuligt at forudsige fremtidige værdier i sekvensen, forudsat at hash-funktionen er kryptografisk sikker.
Den deterministiske karakter af CSPRNG'er forringer ikke deres nytte eller sikkerhed, forudsat at frøet holdes hemmeligt. I praksis er sikker generering og håndtering af frøet altafgørende. For eksempel kan frø udledes fra højentropikilder såsom TRNG'er, der udnytter fysiske fænomener som elektronisk støj, radioaktivt henfald eller andre kvanteprocesser til at producere virkelig tilfældige værdier. Når først et sikkert frø er opnået, kan en CSPRNG generere en stor sekvens af pseudorandom-numre, der kan bruges til forskellige kryptografiske formål, såsom nøglegenerering, initialiseringsvektorer og nonces.
En bemærkelsesværdig egenskab ved CSPRNG'er er deres modstand mod "statskompromisudvidelser." Dette betyder, at selvom en modstander lærer en del af den interne tilstand af CSPRNG, bør de ikke være i stand til at rekonstruere tidligere output eller forudsige fremtidige output. Denne egenskab er vigtig for at opretholde sikkerheden for kryptografiske protokoller, der er afhængige af pseudorandom-numre.
For yderligere at belyse forskellen mellem CSPRNG'er og TRNG'er, overveje one-time pad (OTP) krypteringsskemaet. OTP'en kræver en nøgle, der er lige så lang som meddelelsen, der skal krypteres og bruges kun én gang. For at OTP'en er helt sikker, skal nøglen være virkelig tilfældig, hvilket nødvendiggør brugen af en TRNG. I modsætning hertil, hvis en CSPRNG blev brugt til at generere nøglen, kunne den deterministiske karakter af CSPRNG potentielt kompromittere sikkerheden af OTP'en, hvis frøet blev opdaget.
I forbindelse med stream ciphers bruges CSPRNG'er ofte til at generere keystreams. En strømkryptering krypterer almindelig tekst ved at kombinere den med en pseudorandom nøglestrøm genereret af CSPRNG. Strømchifferets sikkerhed afhænger af nøglestrømmens uforudsigelighed, som igen afhænger af CSPRNG'ens sikkerhed og hemmeligholdelsen af dens frø. Eksempler på stream-cifre, der bruger CSPRNG'er, inkluderer RC4, Salsa20 og ChaCha20.
RC4-strømchifferen initialiserer for eksempel sin interne tilstand med en nøgleplanlægningsalgoritme (KSA), der tager en hemmelig nøgle som input. KSA'en permuterer et internt tilstandsarray baseret på nøglen, og permutationen bruges derefter til at generere den pseudotilfældige nøglestrøm under krypteringsprocessen. Nøglestrømmen genereret af RC4 er deterministisk, da den er fuldstændig afhængig af den oprindelige nøgle. Sikkerheden i RC4 afhænger dog af vanskeligheden ved at bestemme nøglen fra nøglestrømmen.
Salsa20 og ChaCha20 er moderne stream-cifre, der også bruger CSPRNG-principper. Disse cifre initialiserer deres interne tilstand med en nøgle og en nonce og anvender derefter en række kryptografiske transformationer for at producere nøglestrømmen. Den resulterende nøglestrøm er deterministisk, men uden viden om nøglen og nonce er det beregningsmæssigt umuligt at forudsige eller reproducere.
Mens CSPRNG'er i sagens natur er deterministiske, sikrer deres design, at deres output ikke kan skelnes fra ægte tilfældighed til enhver effektiv statistisk test, forudsat at frøet forbliver hemmeligt. Denne deterministiske egenskab underminerer ikke deres anvendelighed i kryptografiske applikationer, da den beregningsmæssige umulighed med at forudsige output uden frøet sikrer deres sikkerhed. Sondringen mellem CSPRNG'er og TRNG'er er vigtig, hvor sidstnævnte er nødvendigt for applikationer, der kræver ægte tilfældighed, såsom engangspuden, og førstnævnte er egnet til at generere pseudotilfældige sekvenser til stream-chiffer og andre kryptografiske protokoller.
Andre seneste spørgsmål og svar vedr Grundlæggende om EITC/IS/CCF klassisk kryptografi:
- Blev offentlig-nøgle-kryptografi introduceret til brug i kryptering?
- Kaldes sættet af alle mulige nøgler i en bestemt kryptografisk protokol for nøglerummet i kryptografi?
- I en skiftchiffer, erstattes bogstaverne i slutningen af alfabetet med bogstaver fra begyndelsen af alfabetet i henhold til modulær aritmetik?
- Hvad bør en blokchiffer indeholde ifølge Shannon?
- Blev DES-protokollen introduceret for at forbedre sikkerheden i AES-kryptosystemer?
- Afhænger sikkerheden af blokchiffere af at kombinere forvirrings- og diffusionsoperationer mange gange?
- Skal krypterings- og dekrypteringsfunktionerne holdes hemmelige for at kryptografiprotokollen kan forblive sikker?
- Kan kryptanalyse bruges til at kommunikere sikkert over en usikker kommunikationskanal?
- Hører internet, GSM og trådløse netværk til de usikre kommunikationskanaler?
- Er en udtømmende nøglesøgning effektiv mod substitutionschiffere?
Se flere spørgsmål og svar i EITC/IS/CCF Classical Cryptography Fundamentals