Stream Cipher vs Block Cipher | Cifrul de stat vs Cifrul bloc
În criptografie, cifrurile flux și cifrurile bloc sunt doi algoritmi de criptare/decriptare care aparțin familiei de cifruri cu cheie simetrică. De obicei, un cifru ia un text simplu ca intrare și produce un text cifrat ca ieșire. Cifrurile bloc criptează blocul de biți cu lungime fixă folosind o transformare nevariabilă. Cifrurile de flux criptează fluxuri de biți cu lungimi diferite și utilizează transformari diferite pentru fiecare bit.
Ce este un Stream Cipher?
Cifurile de flux aparțin familiei de cifruri cu cheie simetrică. Cifrurile flux combină biți de text simplu cu un flux de biți de cifrare pseudoaleatoare cu utilizarea operației XOR (exclusiv-sau). Cifrurile în flux criptează cifrele în text simplu una câte una cu transformări diferite pentru cifre succesive. Deoarece criptarea fiecărei cifre depinde de starea curentă a motorului de cifrare, cifrurile de flux sunt cunoscute și ca cifruri de stare. În mod obișnuit, biți/mușcături unici sunt utilizați ca cifre simple. Pentru a evita problemele de securitate, trebuie să vă asigurați că aceeași stare de pornire nu este utilizată de mai multe ori. Cel mai utilizat cod de flux este RC4.
Ce este un cifr de bloc?
Un cifru bloc este un alt cifr cu cheie simetrică. Cifrurile bloc operează pe blocuri (grupuri de biți) cu lungime fixă. Cifrurile bloc folosesc o transformare fixă (nevariabilă) pentru toate cifrele din bloc. De exemplu, atunci când un text simplu bloc de x biți (împreună cu o cheie secretă) este furnizat ca intrare în motorul de cifrare bloc, acesta produce blocul de x biți de text cifrat corespunzător. Transformarea reală depinde de cheia secretă. În mod similar, algoritmul de decriptare recuperează blocul original de x biți de text simplu folosind blocul de x biți de text cifrat și cheia secretă de mai sus ca intrare. În cazul în care mesajul de intrare este prea lung în comparație cu dimensiunea blocului, acesta va fi defalcat în blocuri și aceste blocuri vor fi criptate (individual) folosind aceeași cheie. Cu toate acestea, deoarece se folosește aceeași cheie, fiecare secvență repetată în textul simplu devine aceeași secvență repetată în textul cifrat, iar acest lucru ar putea cauza probleme de securitate. Cifrurile de bloc populare sunt DES (Standard de criptare a datelor) și AES (Standard de criptare avansată).
Care este diferența dintre un Stream Cipher și un Block Cipher?
Deși atât cifrurile de flux, cât și cele bloc aparțin familiei de cifruri de criptare simetrice, există câteva diferențe cheie. Cifrurile bloc criptează blocuri de biți cu lungime fixă, în timp ce cifrurile de flux combină biți de text simplu cu un flux de biți de cifrare pseudoaleatoare folosind operația XOR. Chiar dacă cifrurile bloc folosesc aceeași transformare, cifrurile flux folosesc transformări diferite în funcție de starea motorului. Cifrele în flux se execută de obicei mai rapid decât cifrurile bloc. În ceea ce privește complexitatea hardware, cifrurile de flux sunt relativ mai puțin complexe. Cifrurile în flux sunt preferința tipică față de cifrurile bloc atunci când textul simplu este disponibil în cantități variate (de exemplu, o conexiune wifi sigură), deoarece cifrurile bloc nu pot funcționa direct pe blocuri mai scurte decât dimensiunea blocului. Dar, uneori, diferența dintre cifrurile flux și cifrurile bloc nu este foarte clară. Motivul este că, atunci când se utilizează anumite moduri de operare, un cifru bloc poate fi folosit pentru a acționa ca un cifru flux, permițându-i să cripteze cea mai mică unitate de date disponibilă.