Stream cipher

Inom kryptografi är ett stream cipher ett symmetriskt nyckelchiffer där klartextbitar kombineras med en pseudorandomisk chifferbitsström (keystream) med hjälp av en exklusiv-or-operation (xor). I ett stream cipher krypteras klartextsiffrorna en i taget, och omvandlingen av på varandra följande siffror varierar under krypteringstillståndet. Ett alternativt namn är en state cipher, eftersom krypteringen av varje siffra är beroende av det aktuella tillståndet. I praktiken är siffrorna vanligtvis enskilda bitar eller bytes.

Stream ciphers är en annan metod för symmetrisk kryptering än block ciphers. Blockchiffrer arbetar med stora block av fast längd. Stream ciphers körs vanligtvis med högre hastighet än block ciphers och har lägre krav på hårdvara. Stream ciphers kan dock vara känsliga för allvarliga säkerhetsproblem om de används på fel sätt; exempelvis får samma starttillstånd aldrig användas två gånger.

En stream cipher använder sig av en mycket mindre och bekvämare kryptografisk nyckel, till exempel 128 bitar. Med hjälp av denna nyckel genereras en pseudorandomisk nyckelström som kan kombineras med klartextsiffrorna på ett liknande sätt som vid en engångsblock-krypteringsalgoritmen. Eftersom nyckelströmmen är pseudorandomisk och inte riktigt slumpmässig kan den säkerhet som är förknippad med engångsblocket inte tillämpas, och det är fullt möjligt att en stream cipher är helt osäker.

Hur nyckelflödesgeneratorn i A5/1 fungerar, ett LFSR-baserat strömchiffer som används för att kryptera samtal i mobiltelefoner.Zoom
Hur nyckelflödesgeneratorn i A5/1 fungerar, ett LFSR-baserat strömchiffer som används för att kryptera samtal i mobiltelefoner.

Typer av strömchiffer

En stream cipher genererar på varandra följande element i nyckelströmmen baserat på ett internt tillstånd. Detta tillstånd uppdateras på två sätt:

  1. Om tillståndet ändras oberoende av meddelandet i klartext eller chiffertext klassificeras chiffret som ett synkront strömchiffer.
  2. Om tillståndet uppdateras på grundval av tidigare ändringar av chiffertextens siffror klassificeras chiffret som en självsynkroniserande strömchiffer.

Synkrona strömchiffer

I ett synkront strömchiffer genereras en ström av pseudo slumpmässiga siffror oberoende av meddelandet med klartext och chiffertext, och kombineras sedan med klartexten (för att kryptera) eller med chiffertexten (för att dekryptera). I den vanligaste formen används binära siffror (bitar), och nyckelströmmen kombineras med klartexten med hjälp av XOR-operationen (exclusive or). Detta kallas binärt additivt strömsiffer.

I ett synkront strömchiffer måste avsändaren och mottagaren vara synkrona för att dekrypteringen ska lyckas. Om siffror läggs till eller tas bort från meddelandet under överföringen förloras synkroniseringen. För att återställa synkroniseringen kan man systematiskt prova olika förskjutningar för att få en korrekt dekryptering. Ett annat tillvägagångssätt är att markera chiffertexten med markörer vid regelbundna punkter i utdata.

Om en siffra däremot skadas under överföringen, snarare än läggs till eller försvinner, påverkas endast en enda siffra i klartexten och felet sprider sig inte till andra delar av meddelandet. Denna egenskap är användbar när överföringsfelprocenten är hög, men gör det mindre sannolikt att felet upptäcks utan ytterligare mekanismer. På grund av denna egenskap är synkrona strömchiffrar dessutom mycket känsliga för aktivaattacker - om en angripare kan ändra en siffra i chiffertexten, kan han kanske göra förutsägbara ändringar av motsvarande bit i klartext; till exempel, om en bit i chiffertexten vänds, får samma bit att vändas (Toggled) i klartexten.

Självsynkroniserande strömchiffrar

Självsynkroniserande stream ciphers är en annan teknik som använder en del av de föregående N chiffertexterna för att beräkna nyckelströmmen. Sådana system är också kända som asynkrona stream ciphers eller ciphertext autokey (CTAK). Idén om självsynkronisering patenterades 1946 och har den fördelen att mottagaren automatiskt synkroniserar sig med nyckelströmgeneratorn efter att ha tagit emot N chiffertextsiffror, vilket gör det lättare att återställa om siffror tappas bort eller läggs till i meddelandeströmmen. Fel med en enda siffra har begränsad effekt och påverkar endast upp till N klartextsiffror. Det är något svårare att utföra aktiva attacker på självsynkroniserande strömchiffrar än på synkrona motsvarigheter.

Ett exempel på ett självsynkroniserande strömchiffer är ett blockchiffer i cipher-feedback-läge (CFB).

Linjär återkoppling av skiftregisterbaserade strömchiffrar

Binära strömsiffror konstrueras ofta med hjälp av linjära återkopplade skiftregister (LFSR) eftersom de lätt kan implementeras i hårdvara och snabbt kan analyseras matematiskt. Det räcker dock inte att använda enbart LFSR för att ge god säkerhet. Olika system har utformats för att öka säkerheten hos LFSR.

Icke-lineära kombinationsfunktioner

Eftersom LFSR:er är linjära i sig är en teknik för att ta bort linjäriteten att mata utgångarna från en grupp parallella LFSR:er till en icke-linjär boolesk funktion för att bilda en kombinationsgenerator. Olika egenskaper hos en sådan kombinationsfunktion är viktiga för att garantera säkerheten hos det resulterande systemet, t.ex. för att undvika korrelationsattacker.

Klockstyrda generatorer

LFSR:erna är normalt stegvisa. En metod för att införa icke-linjäritet är att låta LFSR:n klockas oregelbundet, vilket styrs av utgången från en andra LFSR. Sådana generatorer är bland annat stop-and-go generatorn, generatorn för växlande steg och krympningsgeneratorn.

Stop-and-go generatorn (Beth och Piper, 1984) består av två LFSRs. Den ena LFSR:n klockas om den andra LFSR:ns utgång är en "1", annars upprepar den sin tidigare utgång. Detta resultat kombineras sedan (i vissa versioner) med resultatet från en tredje LFSR som klockas med en regelbunden hastighet.

Skrumpningsgeneratorn använder en annan teknik. Två LFSRs används, som båda klockas regelbundet på följande sätt:

  1. Om den första LFSR:ns utgång är "1" blir den andra LFSR:ns utgång generatorns utgång.
  2. Om resultatet av den första LFSR:n är "0", förkastas resultatet av den andra och ingen bit skickas ut av generatorn.

Denna teknik lider av tidsattacker mot den andra generatorn, eftersom utgångshastigheten är variabel på ett sätt som beror på den andra generatorns tillstånd. Detta kan förbättras genom att buffra utgången.

Filtergenerator

En annan metod för att förbättra säkerheten hos en LFSR är att överföra hela tillståndet hos en enda LFSR till en icke-linjär filtreringsfunktion.

Andra konstruktioner

I stället för en linjär drivanordning kan man använda en icke-linjär uppdateringsfunktion. Klimov och Shamir föreslog t.ex. triangulära funktioner (T-funktioner) med en enda cykel på n bitord.

Säkerhet

För att vara säker måste perioden för nyckelströmmen (antalet siffror som skrivs ut innan strömmen upprepas) vara tillräckligt lång. Om sekvensen upprepas kan de överlappande chiffertexterna anpassas till varandra "på djupet", och det finns tekniker som gör det möjligt att extrahera klartexten från chiffertexter som genererats med dessa metoder.

Användning

Stream ciphers används ofta i tillämpningar där klartext kommer i mängder av okänd längd, som i säkra trådlösa anslutningar. Om en blockchiffer skulle användas i denna typ av tillämpning måste konstruktören välja antingen överföringseffektivitet eller komplexitet i genomförandet, eftersom blockchiffer inte direkt kan arbeta med block som är kortare än deras blockstorlek. Om ett 128-bitars blockchiffer till exempel tar emot separata 32-bitars block av klartext, behöver tre fjärdedelar av de överförda uppgifterna fyllas på. Blockchiffer måste användas i läget för stöld av chiffertext eller avslutande av resterande block för att undvika stoppning, medan strömchiffer eliminerar detta problem genom att arbeta med den minsta överförda enheten (vanligtvis byte).

En annan fördel med stream ciphers inom militär kryptografi är att chifferströmmen kan genereras av en krypteringsenhet som omfattas av strikta säkerhetsåtgärder och sedan matas till andra enheter, t.ex. en radioapparat, som utför xor-operationen som en del av sin funktion. Den andra enheten kan vara utformad för att användas i mindre säkra miljöer.

RC4 är den mest använda stream cipher i mjukvara; andra inkluderar: Andra är A5/1, A5/2, Chameleon, FISH, Helix, ISAAC, MUGI, Panama, Phelix, Pike, SEAL, SOBER, SOBER-128 och WAKE.

RC4 är en av de mest använda stream cipher-konstruktionerna.Zoom
RC4 är en av de mest använda stream cipher-konstruktionerna.

Jämförelse av strömskeppsfunktioner

StreamCipher

CreationDate

Hastighet
(cykler/byte)

(bitar)

Attack

Effektivt
Nyckellängd

Initialiseringsvektor

InternalState

Mest kända

Beräkningskomplexitet

A5/1

1989

Röst (Wphone)

54

114

64

Aktiv KPA OR
KPA Avvägning mellan tid och minne

~2 sekunder OR239.91

A5/2

1989

Röst (Wphone)

54

114

64?

Aktiv

4,6 millisekunder

FISK

1993

Ganska snabbt (Wsoft)

Stor

Attack med känd text

211

Korn

Före 2004

Snabbt

80

64

160

Nyckelavledning

243

HC-256

Före 2004

4 (WP4)

256

256

65536

ISAAC

1996

2,375 (W64-bit)
-4,6875 (
W32-bit)

8-8288 vanligtvis
40-256

N/A

8288

(2006) Första omgången Svaga interna staters avledning i första omgången

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öre 2004

upp till 8 (Wx86)

256 + en 128-bitars nonce

128?

Differential (2006)

237

Gädda

1994

0,9 x FISH (Wsoft)

Stor

N/A (2004)

N/A (2004)

Py

Före 2004

2.6

8-2048?
vanligtvis 40-256?

64

8320

Kryptanalytisk teori (2006)

275

Kanin

2003-feb

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

128

64

512

N/A (2006)

N/A (2006)

RC4

1987

Imponerande

8-2048 vanligtvis
40-256

8

2064

Shamir Initial-Bytes Key-Derivation OR KPA

213 OR 233

Salsa20

Före 2004

4.24 (WG4) -11
.84 (
WP4)

128 + en 64-bitars nonce

512

512 + 384 (nyckel+IV+index)

Differential (2005)

N/A (2005)

Scream

2002

4 - 5 (Wsoft)

128 + en 128-bitars nonce

32?

64-bitars runda funktion

SEAL

1997

Mycket snabb (W32-bit)

32?

SNOW

Före 2003

Mycket bra (W32-bit)

128 ELLER 256

32

SOBER-128

2003

upp till 128

Meddelande smedja

2−6

SOSEMANUK

Före 2004

Mycket bra (W32-bit)

128

128

Trivium

Före 2004

4 (Wx86) - 8 (WLG)

80

80

288

Brute force-attack (2006)

2135

Turing

2000-2003

5.5 (Wx86)

160

VEST

2005

42 (WASIC) -64 (WFPGA)

Variabel vanligen
80-256

Variabel vanligen
80-256

256 - 800

N/A (2006)

N/A (2006)

WAKE

1993

Snabbt

8192

CPA OCH CCA

Sårbar

StreamCipher

CreationDate

Hastighet
(cykler/byte)

(bitar)

Attack

Effektivt
Nyckellängd

Initialiseringsvektor

InternalState

Mest kända

Beräkningskomplexitet

Relaterade sidor

  • eSTREAM

Frågor och svar

F: Vad är en stream cipher?


S: Ett stream cipher är ett symmetriskt nyckelchiffer där klartextbitar kombineras med en pseudotillfällig chifferbitsström (keystream) med hjälp av en exklusiv-or (xor)-operation.

F: Hur skiljer det sig från blockchiffer?


S: Stream ciphers körs vanligtvis med högre hastighet än block ciphers och har lägre hårdvarukrav. Blockchiffrer arbetar med stora block av fast längd, medan strömchiffrer krypterar siffror en i taget och omvandlingen av på varandra följande siffror varierar under krypteringstillståndet.

F: Vilken typ av nycklar används?


S: Stream ciphers använder sig av mycket mindre och bekvämare kryptografiska nycklar, t.ex. 128-bitars nycklar.

F: Hur genereras nyckelströmmen?


S: Nyckelströmmen genereras baserat på den kryptografiska nyckel som används, på samma sätt som vid en engångskodningsalgoritmen. Men eftersom nyckelströmmen är pseudoallvarlig och inte riktigt slumpmässig kan den säkerhet som är förknippad med engångsblocket inte tillämpas.

F: Varför får man aldrig använda samma starttillstånd två gånger?


S: Att använda samma starttillstånd två gånger kan leda till allvarliga säkerhetsproblem eftersom det gör det lättare för angripare att dekryptera data utan att känna till eller ha tillgång till din kryptografiska nyckel.

F: Finns det någon risk med att använda strömchiffer?


S: Ja, om de används felaktigt eller utan att vidta lämpliga försiktighetsåtgärder finns det en risk förknippad med att använda stream ciphers eftersom de kan vara helt osäkra om de inte hanteras på rätt sätt.

AlegsaOnline.com - 2020 / 2023 - License CC3