Stream cipher

Inden for kryptografi er en stream cipher en symmetrisk nøglecipher, hvor bits i klartekst kombineres med en pseudo-tilfældig cipherbitstrøm (keystream) ved hjælp af en eksklusiv-eller-operation (xor). I en stream cipher krypteres klartekstcifrene én ad gangen, og transformationen af de på hinanden følgende cifre varierer under krypteringstilstanden. Et alternativt navn er en tilstandschiffer, da krypteringen af hvert enkelt ciffer afhænger af den aktuelle tilstand. I praksis er cifrene typisk enkelte bits eller bytes.

Stream ciphers repræsenterer en anden tilgang til symmetrisk kryptering end blokcifre. Blokchiffrer opererer med store blokke af fast længde. Stream ciphers udføres typisk med en højere hastighed end block ciphers og har lavere krav til hardwaren. Stream ciphers kan imidlertid være udsat for alvorlige sikkerhedsproblemer, hvis de anvendes forkert; f.eks. må den samme starttilstand aldrig anvendes to gange.

En stream cipher anvender en meget mindre og mere praktisk kryptografisk nøgle, f.eks. 128 bit-nøgler. På grundlag af denne nøgle genererer den en pseudorandom nøglestrøm, som kan kombineres med klartekstcifrene på samme måde som en engangskrypteringsalgoritmen. Men fordi nøglestrømmen er pseudorandom og ikke virkelig tilfældig, kan den sikkerhed, der er forbundet med one-time pad'en, ikke anvendes, og det er meget muligt for en stream cipher at være fuldstændig usikker.

Hvordan fungerer nøglestrømsgeneratoren i A5/1, en LFSR-baseret stream cipher, der bruges til at kryptere mobiltelefonsamtaler.Zoom
Hvordan fungerer nøglestrømsgeneratoren i A5/1, en LFSR-baseret stream cipher, der bruges til at kryptere mobiltelefonsamtaler.

Typer af stream ciphers

En stream cipher genererer på hinanden følgende elementer i nøglestrømmen på grundlag af en intern tilstand. Denne tilstand opdateres på to måder:

  1. Hvis tilstanden ændres uafhængigt af klartekst- eller ciphertext-meddelelserne, klassificeres cipheret som en synkron stream cipher.
  2. Hvis tilstanden opdateres på grundlag af tidligere ændringer af ciffertekstcifrene, klassificeres cifferet som en selvsynkroniserende stream ciphers.

Synkrone stream ciphers

I en synkron strømchiffer genereres en strøm af pseudo-tilfældige tal uafhængigt af klartekst- og ciffertekstmeddelelserne og kombineres derefter med klarteksten (for at kryptere) eller med cifferteksten (for at dekryptere). I den mest almindelige form anvendes binære cifre (bits), og nøglestrømmen kombineres med klarteksten ved hjælp af eksklusiv eller-operationen (XOR). Dette kaldes en binær additiv stream cipher.

I en synkron stream cipher skal afsender og modtager være synkrone, for at dekrypteringen kan lykkes. Hvis der tilføjes eller fjernes cifre fra meddelelsen under transmissionen, går synkroniseringen tabt. For at genoprette synkroniseringen kan man systematisk prøve forskellige forskydninger for at opnå den korrekte dekryptering. En anden fremgangsmåde er at markere den krypterede tekst med markører på regelmæssige punkter i output.

Hvis et ciffer imidlertid beskadiges under transmissionen, og ikke tilføjes eller går tabt, er det kun et enkelt ciffer i klarteksten, der påvirkes, og fejlen forplanter sig ikke til andre dele af meddelelsen. Denne egenskab er nyttig, når transmissionsfejlprocenten er høj; den gør det dog mindre sandsynligt, at fejlen vil blive opdaget uden yderligere mekanismer. Desuden er synkrone stream ciphers på grund af denne egenskab meget modtagelige for aktiveangreb - hvis en angriber kan ændre et ciffer i cifferteksten, kan han måske foretage forudsigelige ændringer af den tilsvarende bit i klarteksten; f.eks. kan en ændring af en bit i cifferteksten få den samme bit til at blive vendt (Toggled) i klarteksten.

Selvsynkroniserende stream ciphers

Selvsynkroniserende stream ciphers er en anden teknik, der bruger en del af de foregående N ciffertekstcifre til at beregne nøglestammen. Sådanne ordninger er også kendt som asynkrone stream ciphers eller ciphertext autokey (CTAK). Idéen om selvsynkronisering blev patenteret i 1946 og har den fordel, at modtageren automatisk synkroniserer sig med nøglestrømsgeneratoren efter at have modtaget N ciffertekstcifre, hvilket gør det nemmere at genoprette, hvis cifre falder bort eller tilføjes til meddelelsesstrømmen. Enkeltcifrede fejl har en begrænset effekt, idet de kun påvirker op til N klartekstcifre. Det er noget vanskeligere at udføre aktive angreb på selvsynkroniserende stream ciphers end på synkrone modstykker.

Et eksempel på en selvsynkroniserende stream cipher er en blokcipher i cipher-feedback-tilstand (CFB).

Lineær feedback-skifteregister-baserede stream ciphers

Binære stream ciphers er ofte konstrueret ved hjælp af lineære feedback-skifteregistre (LFSR), fordi de let kan implementeres i hardware og hurtigt kan analyseres matematisk. Det er imidlertid ikke tilstrækkeligt at anvende LFSR'er alene for at opnå god sikkerhed. Der er blevet udviklet forskellige ordninger for at øge sikkerheden ved LFSR'er.

Ikke-lineære kombinationsfunktioner

Da LFSR'er i sagens natur er lineære, er en teknik til at fjerne lineariteten at føre udgangene fra en gruppe af parallelle LFSR'er ind i en ikke-lineær boolsk funktion for at danne en kombinationsgenerator. Forskellige egenskaber ved en sådan kombinationsfunktion er vigtige for at sikre sikkerheden i den resulterende ordning, f.eks. for at undgå korrelationsangreb.

Klokkestyret generatorer

Normalt trinreguleres LFSR'er regelmæssigt. En teknik til at indføre ikke-linearitet er at lade LFSR'en clockes uregelmæssigt, styret af output fra en anden LFSR. Sådanne generatorer omfatter stop-and-go generatoren, vekslende tringeneratoren og krympningsgeneratoren.

Stop-and-go generatoren (Beth og Piper, 1984) består af to LFSR'er. Den ene LFSR clockes, hvis den anden LFSR's output er en "1", ellers gentager den sit tidligere output. Dette output kombineres derefter (i nogle versioner) med output fra en tredje LFSR, der clockes med en regelmæssig hastighed.

Krympningsgeneratoren anvender en anden teknik. Der anvendes to LFSR'er, som begge clockes regelmæssigt på følgende måde:

  1. Hvis output fra den første LFSR er "1", bliver output fra den anden LFSR output fra generatoren.
  2. Hvis output fra den første LFSR er "0", kasseres output fra den anden, og generatoren udsender ingen bit.

Denne teknik lider under timingangreb på den anden generator, da udgangens hastighed er variabel på en måde, der afhænger af den anden generators tilstand. Dette kan forbedres ved at buffere output.

Filtergenerator

En anden metode til at forbedre sikkerheden i en LFSR er at overføre hele tilstanden i en enkelt LFSR til en ikke-lineær filtreringsfunktion.

Andre design

I stedet for en lineær drivanordning kan man anvende en ikke-lineær opdateringsfunktion. Klimov og Shamir foreslog f.eks. trekantede funktioner (T-funktioner) med en enkelt cyklus på n bitord.

Sikkerhed

For at være sikker skal perioden for nøglestrømmen (antallet af cifre, der udgives, før strømmen gentager sig selv) være tilstrækkelig stor. Hvis sekvensen gentages, kan de overlappende ciphertexter tilpasses til hinanden "i dybden", og der findes teknikker, som gør det muligt at udtrække klarteksten fra ciphertexter, der er genereret ved hjælp af disse metoder.

Anvendelse

Stream ciphers anvendes ofte i applikationer, hvor klartekst kommer i mængder af ukendt længde, som f.eks. i sikre trådløse forbindelser. Hvis en blokchiffer skulle anvendes i denne type applikationer, ville designeren være nødt til at vælge enten transmissionseffektivitet eller implementeringskompleksitet, da blokchiffrer ikke direkte kan arbejde med blokke, der er kortere end deres blokstørrelse. Hvis en 128-bit blokchiffer f.eks. modtager separate 32-bit blokke af klartekst, skal tre fjerdedele af de overførte data polstres. Block ciphers skal anvendes i ciphertext stealing eller residual block termination mode for at undgå padding, mens stream ciphers eliminerer dette problem ved at operere på den mindste transmitterede enhed (normalt bytes).

En anden fordel ved stream ciphers i militær kryptografi er, at cipher stream kan genereres af en krypteringsenhed, der er underlagt strenge sikkerhedsforanstaltninger, og derefter sendes til andre enheder, f.eks. et radiosæt, som udfører xor-operationen som en del af deres funktion. Den anden enhed kan være designet til brug i mindre sikre miljøer.

RC4 er den mest udbredte stream cipher i software; andre omfatter: Andre er: A5/1, A5/2, Chameleon, FISH, Helix, ISAAC, MUGI, Panama, Phelix, Pike, SEAL, SOBER, SOBER-128 og WAKE.

RC4 er et af de mest udbredte stream cipher-designs.Zoom
RC4 er et af de mest udbredte stream cipher-designs.

Sammenligning af Stream Ciphers

StreamCipher

CreationDate

Hastighed
(cyklusser/byte)

(bits)

Angreb

Effektivt
Nøglelængde

Initialiseringsvektor

InternalState

Bedst kendt

Beregningskompleksitet

A5/1

1989

Stemme (Wphone)

54

114

64

Aktiv KPA ELLER
Afvejning af tid og hukommelse i
KPA

~2 sekunder OR239.91

A5/2

1989

Stemme (Wphone)

54

114

64?

Aktiv

4,6 millisekunder

FISH

1993

Ret hurtigt (Wsoft)

Kæmpe

Angreb med kendt klartekst

211

Korn

Før 2004

Hurtig

80

64

160

Nøgleafledning

243

HC-256

Før 2004

4 (WP4)

256

256

65536

ISAAC

1996

2.375 (W64-bit)
-4.6875 (
W32-bit)

8-8288 normalt
40-256

N/A

8288

(2006) Første runde svag intern statsopdeling

4.67×101240 (2001)

MUGI

1998-2002

128

128

1216

N/A (2002)

~282

PANAMA

1998

2

256

128?

1216?

Hashkollisioner (2001)

282

Phelix

Før 2004

op til 8 (Wx86)

256 + en 128-bit nonce

128?

Differential (2006)

237

Gedde

1994

0,9 x FISH (Wsoft)

Kæmpe

N/A (2004)

N/A (2004)

Py

Før 2004

2.6

8-2048?
normalt 40-256?

64

8320

Kryptoanalytisk teori (2006)

275

Kanin

2003-feb

3,7(WP3)-9,7(WARM7)

128

64

512

N/A (2006)

N/A (2006)

RC4

1987

Imponerende

8-2048 normalt
40-256

8

2064

Shamir initialbytes-nøgleafledning OR KPA

213 OR 233

Salsa20

Før 2004

4.24 (WG4) -11
.84 (
WP4)

128 + en 64-bit nonce

512

512 + 384 (nøgle+IV+indeks)

Differential (2005)

N/A (2005)

Scream

2002

4 - 5 (Wsoft)

128 + en 128-bit nonce

32?

64-bit rundfunktion

SEAL

1997

Meget hurtig (W32-bit)

32?

SNOW

Før 2003

Meget godt (W32-bit)

128 ELLER 256

32

SOBER-128

2003

op til 128

Smedje af beskeder

2−6

SOSEMANUK

Før 2004

Meget godt (W32-bit)

128

128

Trivium

Før 2004

4 (Wx86) - 8 (WLG)

80

80

288

Brute force-angreb (2006)

2135

Turing

2000-2003

5.5 (Wx86)

160

VEST

2005

42 (WASIC) -64 (WFPGA)

Variabel sædvanligvis
80-256

Variabel sædvanligvis
80-256

256 - 800

N/A (2006)

N/A (2006)

VÆK

1993

Hurtig

8192

CPA & CCA

Sårbar

StreamCipher

CreationDate

Hastighed
(cyklusser/byte)

(bits)

Angreb

Effektivt
Nøglelængde

Initialiseringsvektor

InternalState

Bedst kendt

Beregningskompleksitet

Relaterede sider

  • eSTREAM

Spørgsmål og svar

Spørgsmål: Hvad er en stream cipher?


Svar: En stream cipher er en symmetrisk nøglecipher, hvor klartekstbits kombineres med en pseudo-tilfældig cipherbitstrøm (keystream) ved hjælp af en eksklusiv-eller-operation (xor).

Sp: Hvordan adskiller den sig fra blokchifre?


Svar: Stream ciphers udføres typisk med højere hastighed end block ciphers og har lavere hardwarekrav. Block ciphers opererer med store blokke af fast længde, mens stream ciphers krypterer cifre et ad gangen, og transformationen af de på hinanden følgende cifre varierer under krypteringstilstanden.

Spørgsmål: Hvilken type nøgler bruger den?


Svar: Stream ciphers anvender meget mindre og mere bekvemme kryptografiske nøgler, f.eks. 128 bit-nøgler.

Spørgsmål: Hvordan genererer den nøglestrømmen?


Svar: Nøglestrømmen genereres på grundlag af den anvendte kryptografiske nøgle på samme måde som ved engangs-pad-krypteringsalgoritmen. Men da nøglestrømmen er pseudotilfældig og ikke virkelig tilfældig, kan den sikkerhed, der er forbundet med engangskoden, ikke anvendes.

Spørgsmål: Hvorfor må man aldrig bruge den samme starttilstand to gange?


Svar: Hvis man bruger den samme starttilstand to gange, kan det føre til alvorlige sikkerhedsproblemer, da det gør det lettere for angribere at dekryptere data uden at kende eller have adgang til din kryptografiske nøgle.

Sp: Er der nogen risiko forbundet med at bruge stream ciphers?


A: Ja, hvis de bruges forkert eller uden at tage de rette forholdsregler, er der risiko forbundet med at bruge stream ciphers, da de kan være helt usikre, hvis de ikke håndteres korrekt.

AlegsaOnline.com - 2020 / 2023 - License CC3