Flux

În criptografie, un cifru de flux este un cifru cu cheie simetrică în care biții de text în clar sunt combinați cu un flux de biți de cifru pseudo-aleator (flux de chei) folosind o operație de tip xor (exclusiv-or). Într-un cifru de flux, cifrele de plaintext sunt criptate una câte una, iar transformarea cifrelor succesive variază în timpul stării de criptare. O denumire alternativă este cifrare de stare, deoarece criptarea fiecărei cifre depinde de starea curentă. În practică, cifrele sunt, de obicei, biți sau octeți unici.

Cifrele de flux reprezintă o abordare diferită de cifrarea simetrică față de cifrele în bloc. Cifrele în bloc operează pe blocuri mari de lungime fixă. Cifrele de flux se execută, de obicei, la o viteză mai mare decât cifrele în bloc și au cerințe hardware mai mici. Cu toate acestea, cifrele de flux pot fi susceptibile la probleme grave de securitate dacă sunt utilizate în mod incorect; de exemplu, în special, aceeași stare de pornire nu trebuie să fie utilizată niciodată de două ori.

Un cifru de flux utilizează o cheie criptografică mult mai mică și mai convenabilă, de exemplu chei de 128 de biți. Pe baza acestei chei, acesta generează un flux de chei pseudorandom care poate fi combinat cu cifrele din textul în clar într-un mod similar cu algoritmul de criptare cu un singur timp. Cu toate acestea, deoarece fluxul de chei este pseudo-aleator, și nu cu adevărat aleator, nu se poate aplica securitatea asociată cu one-time pad-ul și este foarte posibil ca un cifru de flux să fie complet nesigur.

Funcționarea generatorului de fluxuri de chei în A5/1, un cifru de flux bazat pe LFSR utilizat pentru criptarea conversațiilor de telefonie mobilă.Zoom
Funcționarea generatorului de fluxuri de chei în A5/1, un cifru de flux bazat pe LFSR utilizat pentru criptarea conversațiilor de telefonie mobilă.

Tipuri de coduri de flux

Un cifru de flux generează elemente succesive ale fluxului de chei pe baza unei stări interne. Această stare este actualizată în două moduri:

  1. În cazul în care starea se schimbă independent de mesajele de text în clar sau de text cifrat, cifrul este clasificat ca fiind un cifru de flux sincron.
  2. În cazul în care starea este actualizată pe baza modificărilor anterioare ale cifrelor din textul cifrat, cifrul este clasificat ca fiind un cifru de flux cu autosincronizare.

Cifre de flux sincrone

Într-un cifru de flux sincron, un flux de cifre pseudoaleatoare este generat independent de mesajele de text în clar și de text cifrat și apoi combinat cu textul în clar (pentru criptare) sau cu textul cifrat (pentru decriptare). În forma cea mai comună, se utilizează cifre(biți) binare, iar fluxul de chei este combinat cu textul în clar folosind operația exclusiv sau (XOR). Acest tip de cifrare se numește cifrare de flux aditiv binar.

Într-un cifru de flux sincron, expeditorul și receptorul trebuie să fie sincronizați pentru ca decriptarea să aibă succes. Dacă se adaugă sau se elimină cifre din mesaj în timpul transmiterii, se pierde sincronizarea. Pentru a restabili sincronizarea, se pot încerca sistematic diverse decalaje pentru a obține decriptarea corectă. O altă abordare constă în marcarea textului cifrat cu markeri în puncte regulate din text.

Cu toate acestea, dacă o cifră este coruptă în timpul transmiterii, în loc să fie adăugată sau pierdută, doar o singură cifră din textul în clar este afectată, iar eroarea nu se propagă la alte părți ale mesajului. Această proprietate este utilă atunci când rata de eroare de transmisie este ridicată; cu toate acestea, ea face mai puțin probabil ca eroarea să fie detectată fără mecanisme suplimentare. Mai mult, din cauza acestei proprietăți, cifrele de flux sincrone sunt foarte susceptibile la atacuriactive - dacă un atacator poate modifica o cifră din textul cifrat, ar putea fi capabil să facă modificări previzibile la bitul corespunzător din textul în clar; de exemplu, întoarcerea unui bit din textul cifrat face ca același bit să fie întors(Toggled) în textul în clar.

Cifre de flux cu auto-sincronizare

Cifrele de flux cu autosincronizare reprezintă o altă tehnică care utilizează o parte din cele N cifre anterioare ale textului cifrat pentru a calcula fluxul de chei. Astfel de scheme sunt cunoscute și sub denumirea de cifrare asincronă a fluxurilor sau de autoclave de cifrare a textului cifrat (CTAK). Ideea de autosincronizare a fost patentată în 1946 și are avantajul că receptorul se va sincroniza automat cu generatorul de flux de chei după ce primește N cifre de text cifrat, ceea ce facilitează recuperarea în cazul în care cifrele sunt eliminate sau adăugate la fluxul de mesaje. Erorile cu o singură cifră au un efect limitat, afectând doar până la N cifre de text în clar. Este oarecum mai dificil să se efectueze atacuri active asupra cifrului de flux autosincronizator decât asupra omologilor sincrone.

Un exemplu de cifru de flux cu autosincronizare este un cifru în bloc în modul de reacție a cifrului (CFB).

Cifre de flux bazate pe registre de deplasare cu reacție liniară

Cifrele de flux binar sunt adesea construite cu ajutorul registrelor de deplasare cu reacție liniară (LFSR), deoarece pot fi implementate cu ușurință în hardware și pot fi analizate rapid din punct de vedere matematic. Cu toate acestea, utilizarea exclusivă a LFSR-urilor este insuficientă pentru a asigura o bună securitate. Au fost concepute diverse scheme pentru a spori securitatea LFSR-urilor.

Funcții de combinare neliniară

Deoarece LFSR-urile sunt în mod inerent liniare, o tehnică de eliminare a liniarității este de a introduce ieșirile unui grup de LFSR-uri paralele într-o funcție booleană neliniară pentru a forma un generator de combinații. Diferite proprietăți ale unei astfel de funcții de combinare sunt importante pentru a asigura securitatea schemei rezultate, de exemplu, pentru a evita atacurile de corelație.

Generatoare controlate de ceas

În mod normal, LFSR-urile sunt trepte în mod regulat. O tehnică de introducere a neliniarității este de a face ca LFSR să fie sincronizat neregulat, controlat de ieșirea unui al doilea LFSR. Astfel de generatoare includ generatorul stop-and-go, generatorul de pași alternativi și generatorul de contracție.

Generatorul stop-and-go (Beth și Piper, 1984) este format din două LFSR. Un LFSR este sincronizat dacă ieșirea celui de-al doilea este un "1", în caz contrar repetă ieșirea anterioară. Această ieșire este apoi (în unele versiuni) combinată cu ieșirea unui al treilea LFSR care este sincronizat la o frecvență regulată.

Generatorul de micșorare folosește o tehnică diferită. Se utilizează două LFSR, ambele sincronizate în mod regulat în felul următor:

  1. Dacă ieșirea primului LFSR este "1", ieșirea celui de-al doilea LFSR devine ieșirea generatorului.
  2. În cazul în care ieșirea primului LFSR este "0", ieșirea celui de-al doilea este eliminată și generatorul nu emite niciun bit.

Această tehnică suferă de atacuri de sincronizare asupra celui de-al doilea generator, deoarece viteza de ieșire este variabilă într-un mod care depinde de starea celui de-al doilea generator. Acest lucru poate fi îmbunătățit prin tamponarea ieșirii.

Generator de filtre

O altă abordare pentru îmbunătățirea securității unui LFSR este de a trece întreaga stare a unui singur LFSR într-o funcție de filtrare neliniară.

Alte modele

În loc de un dispozitiv de acționare liniară, se poate utiliza o funcție de actualizare neliniară. De exemplu, Klimov și Shamir au propus funcții triunghiulare (T-Functions) cu un singur ciclu pe n cuvinte de biți.

Securitate

Pentru a fi sigură, perioada fluxului de chei (numărul de cifre emise înainte ca fluxul să se repete) trebuie să fie suficient de mare. Dacă secvența se repetă, atunci textele cifrate suprapuse pot fi aliniate unele față de altele "în profunzime" și există tehnici care permit extragerea textului în clar din textele cifrate generate prin aceste metode.

Utilizare

Cifrele de flux sunt adesea utilizate în aplicații în care textul în clar este prezentat în cantități de lungime necunoscută, cum ar fi în cazul conexiunilor wireless securizate. Dacă un cifru în bloc ar fi utilizat în acest tip de aplicație, proiectantul ar trebui să aleagă fie eficiența de transmisie, fie complexitatea implementării, deoarece cifrele în bloc nu pot funcționa direct pe blocuri mai scurte decât dimensiunea blocului lor. De exemplu, dacă un cifru în bloc de 128 de biți primește rafale separate de 32 de biți de text clar, trei sferturi din datele transmise au nevoie de umplutură. Cifrele bloc trebuie utilizate în modul de furt de text cifrat sau de terminare a blocului rezidual pentru a evita umplutura, în timp ce cifrele de flux elimină această problemă prin faptul că operează pe cea mai mică unitate transmisă (de obicei octeți).

Un alt avantaj al cifrului de flux în criptografia militară este că fluxul de cifru poate fi generat de un dispozitiv de criptare care face obiectul unor măsuri stricte de securitate, apoi poate fi transmis altor dispozitive, de exemplu un aparat de radio, care va efectua operația xor ca parte a funcției lor. Celălalt dispozitiv poate fi proiectat pentru a fi utilizat în medii mai puțin sigure.

RC4 este cel mai utilizat cifru de flux în software; altele includ: A5/1, A5/2, Chameleon, FISH, Helix, ISAAC, MUGI, Panama, Phelix, Phelix, Pike, SEAL, SOBER, SOBER-128 și WAKE.

RC4 este unul dintre cele mai utilizate modele de cifrare de flux.Zoom
RC4 este unul dintre cele mai utilizate modele de cifrare de flux.

Comparație de coduri de flux

StreamCipher

CreationDate

Viteză
(cicluri/byte)

(biți)

Atac

Efectiv
Lungime cheie

Vectorul de inițializare

InternalState

Cel mai bine cunoscut

Complexitate computațională

A5/1

1989

Voce (Wphone)

54

114

64

KPA activ OR
KPA Compromis timp-memorie KPA

~2 secunde OR239.91

A5/2

1989

Voce (Wphone)

54

114

64?

Activ

4,6 milisecunde

PEȘTE

1993

Destul de rapid (Wsoft)

Uriaș

Atac de tip plaintext cunoscut

211

Cereale

Înainte de 2004

Rapid

80

64

160

Cheia de derivare

243

HC-256

Înainte de 2004

4 (WP4)

256

256

65536

ISAAC

1996

2
.375
(W64-bit)
-4.6875
(W32-bit)

8-8288de obicei
40-256

N/A

8288

(2006) Prima rundă de decernare a stării interne slabe

4.67×101240 (2001)

MUGI

1998-2002

128

128

1216

N/A (2002)

~282

PANAMA

1998

2

256

128?

1216?

Ciocniri de hașiș (2001)

282

Phelix

Înainte de 2004

până la 8 (Wx86)

256 + un Nonce de 128 de biți

128?

Diferențial (2006)

237

Pike

1994

0,9 x FISH (Wsoft)

Uriaș

N/A (2004)

N/A (2004)

Py

Înainte de 2004

2.6

8-2048?de
obicei 40-256?

64

8320

Teoria criptanalitică (2006)

275

Iepurele

2003-Feb

3.7(WP3)-9.7(WARM7)

128

64

512

N/A (2006)

N/A (2006)

RC4

1987

Impresionant

8-2048de obicei
40-256

8

2064

Shamir initial-Bytes Key-Derivation OR KPA

213 OR 233

Salsa20

Înainte de 2004

4,24 (WG4) -11
,84
(WP4)

128 + un Nonce pe 64 de biți

512

512 + 384 (cheie+IV+index)

Diferențial (2005)

N/A (2005)

Țipă

2002

4 - 5 (Wsoft)

128 + un Nonce pe 128 de biți

32?

Funcția de rotunjire pe 64 de biți

SEAL

1997

Foarte rapid (W32-bit)

32?

ZĂPADĂ

Înainte de 2003

Foarte bun (W32-bit)

128 SAU 256

32

SOBER-128

2003

până la 128

Forja de mesaje

2−6

SOSEMANUK

Înainte de 2004

Foarte bun (W32-bit)

128

128

Trivium

Înainte de 2004

4 (Wx86) - 8 (WLG)

80

80

288

Atac prin forță brută (2006)

2135

Turing

2000-2003

5.5 (Wx86)

160

VEST

2005

42 (WASIC) -64 (WFPGA)

Variabilde obicei
80-256

Variabilde obicei
80-256

256 - 800

N/A (2006)

N/A (2006)

WAKE

1993

Rapid

8192

CPA & CCA

Vulnerabil

StreamCipher

CreationDate

Viteză
(cicluri/byte)

(biți)

Atac

Efectiv
Lungime cheie

Vectorul de inițializare

InternalState

Cel mai bine cunoscut

Complexitate computațională

Pagini conexe

  • eSTREAM

Întrebări și răspunsuri

Î: Ce este un cifru de flux?


R: Un cifru de flux este un cifru cu cheie simetrică în care biții de text în clar sunt combinați cu un flux de biți de cifru pseudoaleatoriu (flux de chei) folosind o operație de tip "exclusiv sau (xor)".

Î: Prin ce se deosebește acesta de cifrarea în bloc?


R: Cifrele în flux se execută de obicei la o viteză mai mare decât cele în bloc și au cerințe hardware mai mici. Cifrele în bloc operează pe blocuri mari de lungime fixă, în timp ce cifrele în flux criptează cifrele una câte una, iar transformarea cifrelor succesive variază în timpul stării de criptare.

Î: Ce tip de chei utilizează?


R: Cifrele de flux utilizează chei criptografice mult mai mici și mai convenabile, de exemplu chei de 128 de biți.

Î: Cum generează fluxul de chei?


R: Șirul de chei este generat pe baza cheii criptografice utilizate, într-un mod similar cu algoritmul de criptare one-time pad. Cu toate acestea, deoarece fluxul de chei este pseudoaleator și nu cu adevărat aleatoriu, nu se poate aplica securitatea asociată cu one-time pad-ul.

Î: De ce nu trebuie să folosiți niciodată aceeași stare de pornire de două ori?


R: Utilizarea aceleiași stări de pornire de două ori poate duce la probleme serioase de securitate, deoarece facilitează atacatorilor decriptarea datelor fără a cunoaște sau a avea acces la cheia dumneavoastră criptografică.

Î: Există vreun risc asociat cu utilizarea cifrului de flux?


R: Da, dacă sunt utilizate incorect sau fără a lua măsurile de precauție adecvate, există un risc asociat cu utilizarea cifrelor de flux, deoarece acestea pot fi complet nesigure dacă nu sunt tratate corespunzător.

AlegsaOnline.com - 2020 / 2023 - License CC3