Spørgsmålet om, hvorvidt praktiske strømcifre distribuerer en virkelig tilfældig nøgle, er involveret i grundlæggende kryptografiske principper, især med hensyn til sondringen mellem teoretiske konstruktioner som engangskoden og virkelige algoritmer designet til mulig implementering. Besvarelse af dette spørgsmål kræver afklaring af flere begreber: hvad der menes med en "virkelig tilfældig nøgle", hvordan strømcifre genererer deres nøglestrømme, og hvordan disse sammenlignes med egenskaberne og sikkerhedsgarantierne for engangskoden.
En ægte tilfældig nøgle refererer, i informationsteoretiske termer, til en bitstreng, hvor hver bit vælges uafhængigt og ensartet tilfældigt. En sådan nøgle er uforudsigelig og ikke-reproducerbar af nogen modstander. Engangskoden, arketypen for perfekt hemmeligholdelse, bruger en nøgle, der er lige så lang som meddelelsen, valgt ægte tilfældigt og kun brugt én gang. Hver bit af klarteksten kombineres (normalt via XOR) med den tilsvarende bit af nøglen, hvilket giver krypteret tekst, der beviseligt er informationsteoretisk sikker, dvs. umulig at nå nul med uendelige beregningsressourcer.
Praktiske strømchiffere, såsom RC4, Salsa20 og familien af chiffere standardiseret i eSTREAM og af NIST, er designet til at være beregningsmæssigt sikre og effektive til brug i virkelige systemer. Deres struktur involverer typisk en kort hemmelig nøgle med fast længde - normalt 128 eller 256 bit - der bruges som input til en algoritme, der udvider denne nøgle til en lang pseudotilfældig nøglestrøm, som derefter XOR-behandles med klarteksten for at producere chifferteksten.
Nøglestrømmen i praktiske strømchiffere er ikke fuldstændig tilfældig. I stedet er den pseudotilfældig: genereret deterministisk fra den hemmelige nøgle af chifferens interne tilstandsopdateringsmekanisme. Denne proces er reproducerbar og, vigtigst af alt, deterministisk; den samme nøgle og initialiseringsvektor (hvis brugt) giver altid den samme nøglestrøm. Kvaliteten af pseudotilfældigheden måles ved effektive modstanderes manglende evne til at skelne nøglestrømmen fra en virkelig tilfældig sekvens, givet manglende kendskab til nøglen.
Forskellen har vidtrækkende sikkerhedsmæssige konsekvenser. Engangskoden's perfekte hemmeligholdelse skyldes, at nøglen både er lige så lang som beskeden og virkelig tilfældig, hvilket gør enhver mulig klartekst lige så sandsynlig for en given krypteringstekst. I modsætning hertil tilbyder praktiske strømkrypteringer beregningsmæssig sikkerhed - hvilket betyder, at deres sikkerhed hviler på den beregningsmæssige umulighed at gendanne nøglen eller skelne nøglestrømmen fra tilfældig uden nøglen. Hvis en modstander har ubegrænset beregningskraft, eller hvis krypteringen er brudt på grund af en fejl eller svaghed, kollapser systemets sikkerhed.
For at illustrere kan man overveje et praktisk eksempel med RC4, en klassisk strømkryptering. RC4 tager en 128-bit nøgle og initialiserer dens interne permutationstilstand. Nøglestrømmen genereres ved gentagne gange at opdatere denne tilstand og udsende bytes afledt af den. Selvom outputtet forekommer tilfældigt for observatører, der mangler nøglen, bestemmes det i sidste ende udelukkende af den oprindelige nøgle og algoritmen. Skulle nøglen nogensinde gentages (som i den berygtede WEP-protokolfejl), eller hvis der observeres tilstrækkeligt output, bliver angreb, der udnytter statistiske bias eller intern tilstandsgendannelse, mulige.
Et andet moderne eksempel er strømkrypteringskoden ChaCha20, som accepterer en 256-bit nøgle og en nonce for at producere en nøglestrøm. Designet af ChaCha20 sigter mod at modstå kendte kryptanalytiske angreb, og outputtet består strenge statistiske tests for tilfældighed. Nøglestrømmen er dog stadig pseudotilfældig: hvis den samme nøgle og nonce genbruges, genereres den samme nøglestrøm; hvis algoritmen kompromitteres, kan outputtet skelnes fra tilfældigt, eller værre endnu, nøglen kan gendannes.
Den praktiske umulighed af sikkert at distribuere og administrere ægte tilfældige nøgler med en meddelelseslængde gør engangs-pad umulig uden for nichescenarier. I modsætning hertil er strømcifre konstrueret til at tillade sikker genbrug af nøgler på tværs af mange meddelelser, idet de udnytter antagelsen om, at ingen modstander effektivt kan gendanne nøglen eller skelne den pseudotilfældige nøglestrøm fra ægte tilfældige data. Afvejningen er afhængighed af beregningsmæssig hårdhed snarere end informationsteoretiske garantier.
I kryptografiske termer er sikkerheden ved praktiske strømchiffere formaliseret af konceptet om uadskillelighed. Lad en modstander få orakeladgang til enten (a) strømchifferens output under en hemmelig nøgle eller (b) en virkelig tilfældig streng af samme længde. Chifferen betragtes som sikker, hvis modstanderen ikke, i polynomisk tid, kan skelne mellem disse to med en sandsynlighed, der er betydeligt bedre end tilfældig gæt. Dette er en meget svagere garanti sammenlignet med den perfekte hemmeligholdelse af engangskoden.
For at opsummere de vigtigste forskelle gennem eksempler:
1. Engangs PadAlice og Bob deler en 1 gigabyte lang, tilfældig nøgle, som de bruger til at kryptere en besked på 1 gigabyte. Krypteringsteksten afslører absolut ingen information om klarteksten, uanset modstandernes ressourcer. Nøglefordeling er flaskehalsen, da nøglen skal være mindst lige så lang som beskeden og aldrig genbruges.
2. Praktisk strømkryptering (f.eks. ChaCha20)Alice og Bob deler en 256-bit hemmelig nøgle. For hver besked vælger Alice en unik nonce og bruger ChaCha20 til at generere en nøglestrøm, der krypterer beskeden med XOR. Nøglestrømmen kan ikke skelnes fra tilfældig til enhver polynomiel tidsmodstander, forudsat at ChaCha20 forbliver ubrudt. Hvis den samme nøgle og nonce nogensinde genbruges, kompromitteres sikkerheden.
Det er værd at bemærke, at nogle systemer forsøger at bygge bro mellem ægte tilfældighed og praktisk anvendelighed ved at bruge kryptografisk sikre pseudotilfældige talgeneratorer (CSPRNG'er) podet fra miljøstøj eller hardwaremæssige tilfældige kilder. Men når entropi fra den fysiske verden er blevet udvundet til et frø, er generatorens output stadig pseudotilfældigt, ikke ægte tilfældigt i informationsteoretisk forstand.
Praktiske strømchiffere distribuerer ikke en virkelig tilfældig nøgle eller nøglestrøm. De udvider en kort, håndterbar nøgle til en lang pseudotilfældig sekvens, der beregningsmæssigt ikke kan skelnes fra tilfældig, forudsat at chifferet forbliver sikkert, og nøglen er hemmelig. Alene engangskoden opnår perfekt hemmeligholdelse ved at distribuere en virkelig tilfældig nøgle med en beskedlængde, men på bekostning af upraktiske krav til nøglehåndtering og distribution. I virkelige kryptografiske systemer er sikkerhed i sidste ende begrænset af antagelserne om beregningsmæssig hårdhed og fraværet af kryptanalytiske gennembrud, ikke af perfekt tilfældighed.
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