Cifru de flux

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Funcționarea unui A5 / 1 , un cod de flux bazat pe registre de traducere de feedback liniar (LFSR) utilizat pentru a cripta conversațiile de pe telefoanele mobile GSM

În criptografie, un cod de flux (numit și cifru de caractere ) este un cifru simetric în care simbolurile ( biții ) care codifică textul clar sunt criptate independent unul de celălalt și în care transformarea simbolurilor ulterioare variază în funcție de procesul de criptare. Un alt termen folosit pentru un astfel de cifru este cifrul de stat, un termen care ne amintește că cifrul fiecărui simbol depinde de starea curentă. De obicei, în practică, simbolurile sunt biți sau octeți unici.

Caracteristici

Cifrele de flux sunt o abordare diferită a criptării simetrice decât cifrele de bloc : acestea asigură o transformare specifică care nu se schimbă de la bloc la bloc pe blocuri mari succesive de simboluri. În realitate, această distincție nu este întotdeauna clară: unele moduri de operare ale cifrelor de blocuri efectuează un cifru de bloc primitiv în așa fel încât efectul său să corespundă cu cel al unui cifru de flux. Cifrele de flux rulează de obicei mai repede decât cifrele de bloc și utilizează hardware mai puțin complex. Pe de altă parte, cifrele de flux pot fi susceptibile la probleme grave de securitate dacă nu sunt utilizate corect: de exemplu, consultați articolul Atacuri la cifrele de flux ; în special, aceeași stare de pornire nu trebuie folosită niciodată de două ori.

Documentele de la Agenția Națională de Securitate folosesc uneori termenul de algoritmi de tip combinator ( algoritmii de apelare) pentru a desemna algoritmi care utilizează o funcție adecvată pentru a combina un flux de text simplu cu un generator de numere pseudo-aleatorii ( generator de numere pseudo-aleatorii sau PRNG).

Inspirație vagă din tamponul unic

Cifrele de flux pot fi văzute ca aproximări ale unui cifru teoretic necompromisibil, blocul unic (OTP), din care un exemplu bine cunoscut este cifrul Vernam . OTP folosește o secvență cheie de simboluri complet aleatorii . Secvența cheii este combinată cu simbolul text simplu, câte unul, pentru a forma textul cifrat. Claude E. Shannon a demonstrat în 1949 că acest sistem este teoretic sigur. Cu toate acestea, secvența cheii trebuie să aibă (cel puțin) aceeași lungime ca și textul clar și trebuie să fie generată aleatoriu. Acest lucru face ca sistemul să fie foarte dificil de implementat în practică și, în consecință, OTP nu este utilizat pe scară largă, cu excepția aplicațiilor critice.

Un cifru de flux folosește o cheie mult mai mică și mult mai convenabilă, de exemplu 128 de biți. Pe baza acestei chei, generează o secvență de chei pseudo-aleatorii care poate fi combinată cu simboluri în text simplu în același mod ca și OTP. Cu toate acestea, acest lucru are un cost: întrucât secvența de chei este doar pseudo-aleatorie, și nu cu adevărat aleatorie, dovada securității asociate cu OTP nu mai este valabilă: este într-adevăr posibil ca un cod de flux să fie complet nesigur.

Tipuri de cifrări de flux

Un cifru de flux generează elemente succesive ale secvenței de chei pe baza stării interne. Această stare este în esență actualizată în două moduri: dacă starea se schimbă indiferent de textul clar sau de mesajul criptat, cifrul este clasificat ca fiind sincron . În schimb, un flux de cifrare auto-sincronizator actualizează starea pe baza simbolurilor de text cifrate anterioare.

Cifrări de flux sincron

Într-un flux de cifrare sincron, o secvență de simbol pseudo-aleatorie este generată independent de textul clar și de mesajele de text cifrat și apoi combinată cu textul clar (pentru a cripta) sau cu textul cifrat (pentru a decripta). În cea mai obișnuită formă, se utilizează simboluri binare (biți), iar secvența de chei este combinată cu textul clar folosind operația exclusivă sau (XOR) aplicată pe biți, care este o operație cunoscută a fi simetrică și reversibilă. Aceasta se numește cifrare de flux sincronă aditivă .

Într-un cod de flux sincron, expeditorul și receptorul trebuie să țină pasul perfect pentru ca decriptarea să fie corectă. Dacă simbolurile sunt adăugate sau eliminate din mesaj în timpul transmiterii, sincronizarea se pierde. Pentru a recupera sincronizarea, puteți încerca diferite poziții în text până când se obține decriptarea corectă. O altă abordare este de a marca textul cifrat cu markeri la poziții prestabilite în text.

În cele din urmă, dacă un simbol este corupt în timpul transmiterii, mai degrabă decât adăugat sau pierdut, este afectat doar un simbol din textul clar și eroarea nu se propagă în alte părți ale mesajului. Această proprietate este utilă atunci când frecvența erorilor de comunicare este mare; cu toate acestea, acest lucru face mai dificilă detectarea erorii fără mecanisme suplimentare. Mai mult, datorită acestei proprietăți, cifrele de flux sincrone sunt deosebit de sensibile la atacurile active - dacă un atacator poate reuși să schimbe un simbol în textul cifrat, el poate fi capabil să inducă modificări previzibile simbolului text simplu; de fapt, datorită caracteristicilor operatorului XOR, inversarea unui bit în textul cifrat determină automat inversarea aceluiași bit în textul clar.

Cifrări de flux auto-sincronizate

O altă abordare folosește unele dintre N simbolurile textului cifrat anterior pentru a calcula secvența cheii. Astfel de scheme sunt cunoscute sub numele de cifrări de flux auto-sincronizate , cifrări de flux asincrone sau autokey cu text cifrat (CTAK) . Ideea de autosincronizare a fost brevetată în 1946 ( ( EN ) US 2.405.400 , United States Patent and Trademark Office , Statele Unite ale Americii. ), Și are avantajul că receptorul se va sincroniza automat cu cheia generatorului de secvență după primirea de N simboluri text cifrate, facilitând recuperarea în cazul în care simbolurile sunt pierdute sau adăugate la mesaj. Erorile unui singur simbol au un efect limitat, deoarece se referă la cel mult N simboluri cu text simplu. De asemenea, este mai dificil să lansezi atacuri active asupra cifrelor de flux auto-sincronizate decât asupra omologilor lor sincroni.

Un exemplu de cifrare a fluxului de autosincronizare este cifrul de blocare a cifrelor (CFB).

Implementări

Pictogramă lupă mgx2.svg Același subiect în detaliu: Registrul de schimbare a feedback-ului liniar .
RC4 este unul dintre cele mai utilizate cifre de flux.

Cea mai urmată abordare este de a utiliza un LFSR ca generator de numere pseudo-aleatorii, modificat în mod adecvat pentru a reduce liniaritatea intrinsecă cât mai mult posibil: avantajul considerabil al acestei implementări este rentabilitatea considerabilă.

În loc de un dispozitiv de ghidare liniară, o altă modalitate este de a utiliza o funcție de actualizare neliniară. De exemplu, Klimov și Shamir au propus o funcție triunghiulară (funcții T) cu un singur ciclu pe blocuri de n biți.

Siguranță

Pictogramă lupă mgx2.svg Același subiect în detaliu: atacurile de cifrare a fluxului .

Pentru a fi sigur, perioada secvenței cheii, adică numărul de simboluri în ieșire înainte ca secvența să se repete, trebuie să fie suficient de mare. Dacă secvența se repetă, atunci textul cifrat care se suprapune poate fi aliniat unul la altul „în profunzime” și există tehnici prin care în aceste condiții textul clar poate fi extras. Acesta este un pericol real: de exemplu, cifrarea blocului Data Encryption Standard (DES) ar putea funcționa inițial într-un parametru variabil (OFB). Cu toate acestea, pentru multe alegeri ale acestor parametri, secvența rezultată a avut o perioadă de doar 2 32 - pentru multe aplicații, această perioadă este prea mică. De exemplu, dacă criptarea se efectuează la o rată de 1 megabyte pe secundă , o secvență din perioada 2 32 se va repeta după aproximativ 8,5 minute.

Adopţie

Cifrele de flux sunt adesea utilizate în aplicații în care textul simplu are o lungime necunoscută a priori - de exemplu, într-o rețea fără fir . Dacă s-ar utiliza un cifru de bloc în acest tip de aplicație, proiectantul ar trebui să aleagă între eficiența transmisiei și complexitatea implementării, deoarece cifrele de blocuri nu pot funcționa în mod natural pe blocuri mai mici decât o dimensiune fixă ​​a blocului. De exemplu, dacă un cod de bloc pe 128 de biți a primit rafale separate de text clar pe 32 de biți, s-ar adăuga trei sferturi din datele transmise pentru a extinde textul la lungimea necesară ( umplutură ). Cifrele de blocuri trebuie folosite în modurile de furt de text cifrat sau de reziliere a blocurilor reziduale pentru a evita umplerea, în timp ce cifrele de flux elimină problema prin operarea naturală pe cea mai mică unitate transmisibilă (în general octeți).

Un alt avantaj al cifrelor de flux din criptografia militară este că fluxul de cifre poate fi generat pe o unitate fizică separată care poate fi supusă unor măsuri de securitate stricte și poate fi furnizat altor dispozitive, de exemplu. către un dispozitiv radio, care, printre celelalte funcții ale sale, se ocupă de executarea operației XOR. Un astfel de dispozitiv din aval poate fi proiectat și operat într-un mod de siguranță mai puțin strict.

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

Bibliografie

  • Matt JB Robshaw (1995): Raport tehnic Cifrări de flux TR-701, versiunea 2.0 , RSA Laboratories, în PDF
  • Thomas Beth, Fred Piper: Generatorul Stop-and-Go în EUROCRYPT 1984 pp. 88-92

Elemente conexe

linkuri externe