Algoritmii de criptare precum Blowfish, AES, RC4, DES și Seal sunt implementați într-una din cele două categorii de cifrări. Care sunt avantajele / dezavantajele pentru tipul de cifre?
Răspuns
În timp ce ambele sunt cifre simetrice, cifrele flux se bazează pe generarea unui flux de chei criptograpic „infinit” și utilizarea acestuia pentru a cripta un bit sau octet la un moment dat (similar cu padul unic), în timp ce cifrele de blocuri funcționează pe bucăți mai mari de date (adică blocuri) la un moment dat, combinând deseori blocuri pentru securitate suplimentară (de exemplu, AES în modul CBC).
- Cifrele de flux sunt de obicei mai rapide decât blocul, dar acesta are propriul preț.
- Cifrele de blocuri necesită de obicei mai multă memorie, deoarece funcționează pe bucăți mai mari de date și au adesea „report” de la blocurile anterioare, întrucât, deoarece cifrele de flux funcționează doar pe câțiva biți la un moment dat, acestea au cerințe de memorie relativ scăzute (și, prin urmare, mai ieftine de implementat în scenarii limitate, cum ar fi dispozitive încorporate, firmware și hardware special.) .
- Cifrele de flux sunt mai dificil de implementat corect și sunt predispuse la slăbiciuni bazate pe utilizare – întrucât principiile sunt similare cu blocul unic, fluxul de chei are cerințe foarte stricte. Pe de altă parte, că ” De obicei este partea dificilă și poate fi descărcată de ex o cutie externă.
- Deoarece cifrele de blocuri criptează un bloc întreg la un moment dat (și au în plus moduri de „feedback” care sunt cele mai recomandate), acestea sunt mai susceptibile la zgomot în transmisie, adică dacă deranjați o parte din date, restul este probabil de nerecuperat. În timp ce, cu fluxurile de cifre, octeții sunt criptați individual, fără conexiune cu alte bucăți de date (în majoritatea cifrelor / modurilor), și au adesea suport pentru întreruperi pe linie.
- De asemenea, cifrele de flux nu oferă protecție de integritate sau autentificare, în timp ce unele cifre de bloc (în funcție de mod) pot oferi protecție de integritate, pe lângă confidențialitate.
- Datorită tuturor celor de mai sus , cifrele de flux sunt de obicei cele mai bune pentru cazurile în care cantitatea de date este fie necunoscută, fie continuă – cum ar fi fluxurile de rețea. Blocarea cifrelor, pe de altă parte, sau mai utilă atunci când cantitatea de date este pre-cunoscută – cum ar fi un fișier, câmpuri de date sau protocoale de solicitare / răspuns, cum ar fi HTTP unde lungimea mesajului total este cunoscută deja la început.
Comentarii
- Al doilea glonț nu este corect. Diferența de memorie datorată ” reportului ” de la blocurile anterioare este neglijabilă și mult mai mică decât diferența de memorie de la algoritm la algoritm ( de exemplu, comparați RC4, cu 256 de octeți de stare internă, cu AES, cu 0 octeți de stare internă în unele implementări). Ultimul glonț atrage distincții false și este un sfat rău.
- @ D.W. Al doilea glonț a fost ” vorbind în general „, așa cum se întâmplă în mod obișnuit (dar accept că nu este strict corect).
- @DW ai vreo bază pentru comentariul tău despre ultimul glonț? Unde este distincția falsă și de ce spuneți că acesta este un sfat prost?
- da, am o bază pentru comentariul meu cu privire la ultimul glonț. Pare pur și simplu confuz. Cifrele de blocuri sunt bune pentru streaming de date; vezi, de exemplu, modul CBC, modul CTR etc., pentru diferite moduri de funcționare care funcționează bine cu transmiterea de date. Cifrele bloc nu sunt limitate la cazurile în care cantitatea de date este cunoscută în prealabil. Nu ‘ nu știu niciun motiv pentru care să consider că cifrele de flux sunt mai bune decât cifrele de bloc pentru streaming de date (în ciuda numelui).
- D.W. este corect: cuvântul ‘ Flux ‘ din Stream Cipher reflectă faptul că există un flux de chei – un flux de biți care este combinat cu text simplu pentru produce textul cifrat. Nu reflectă compoziția în text simplu. Evident, acesta este un detaliu care confundă deseori dezvoltatorii și inginerii cu care aceștia din urmă sunt de obicei implicați. Cifrele de blocuri pot fi folosite pentru a manipula textul simplu în flux. De asemenea, adesea confuz este faptul că cifrele de blocuri pot fi utilizate ca flux de cifrare cu un mod de operare adecvat și atunci când dimensiunea blocului este atomică (de exemplu, 1 octet).
Răspuns
Un bloc cifrat este un algoritm versatil care implementează o cheie- permutarea dependentă a valorilor care sunt secvențe ale unui număr fix de biți (numite „blocuri”). Poate fi folosit pentru diferite roluri în multe tipuri de protocoale criptografice. Un astfel de rol este criptarea în bloc a fluxurilor lungi de date; pentru a realiza un astfel de lucru, cifrul de bloc trebuie utilizat cu un mod adecvat de funcționare (alias „mod de înlănțuire”), cel tradițional fiind CBC și modul mai nou la modă fiind CTR.
Un cifru de flux este un algoritm specializat în scopul criptării în bloc a fluxurilor lungi de date. Ideea este că, prin renunțarea la versatilitatea cifrului de bloc, ar fi posibil să se creeze un algoritm mai eficient (adică ceva care criptează datele mai repede ).
Ambele cifre de bloc cu un mod de criptare orientat spre flux și cifrele de flux, pot avea probleme de securitate dacă aceeași cheie este utilizată de două ori, pentru două fluxuri distincte, fără a avea un Vector de inițializare suficient, unic / aleatoriu . Pentru criptarea CBC, IV trebuie să fie o nouă secvență uniformă aleatorie de biți, de aceeași dimensiune decât un bloc, pentru fiecare mesaj nou. Cifrele de flux bune acceptă, de asemenea, un IV. Un cifru de flux tradițional numit RC4 este fără IV (specificația sa nu specifică unde sau cum ar putea fi inserat un IV), ceea ce a dus la multă haos și a dat o nume rău pentru conceptul de cifrări de flux.
Pentru cifrări de flux mai noi, mai sigure (și mai rapide), consultați portofoliul eSTREAM . Acești algoritmi au trecut printr-o analiză destul de amănunțită de mulți criptografi și sunt considerați „destul de siguri”.
Un cifru de flux poate fi convertit într-un Generator de numere Pseudorandom prin criptarea unei secvențe lungi de octeți cu valoarea zero. De fapt, multe (dar nu toate) cifrele de flux funcționează intern fiind PRNG, generând o secvență lungă de octeți pseudo-aleatori dependenți de cheie, care ulterior este combinată (prin XOR bit) cu datele de criptat (sau decriptat), deci criptarea zero octeți este atunci echivalentă cu omiterea completă a XOR. Prin urmare, cifrele de flux sunt adesea folosite ca PRNG personalizate.
Comentarii
- Ați uitat să menționați care este, în general, mai sigur (flux vs bloc).
- Nu am uitat, deoarece afirmația nu are sens general. Atât cifrele bloc, cât și cifrele fluxului pot oferi o securitate adecvată, dacă sunt aplicate corect și nu au ‘ t slăbiciuni structurale.
- ” versatilitatea cifrului bloc ” Am probleme cu această parte. Ce face ca un cifru de bloc să fie inerent mai versatil? Cifrele bloc pot fi utilizate pentru a cripta și autentifica ambele fluxuri (de ex. TLS) sau date în pachete (de ex. ESP) și aceleași pentru cifrele de flux (de ex. TLS sau DTLS). Există cazuri în care un cifru de flux pare mai ” natural ” (de exemplu, criptarea audio) sau un cifru de bloc pare mai ” natural ” (de exemplu, criptarea discurilor), dar nu văd ‘ nu văd o mulțime de lacune în aplicațiile rezonabile pentru oricare dintre ele.
Răspuns
Un avantaj al cifrelor de flux care nu au fost menționate anterior este că nu „Nu aveți nevoie de umplutură (cifrele de blocuri funcționează pe blocuri complete, deci dacă nu aveți suficiente date trebuie să mai generați cumva). Și surpriză (nu chiar, criptografia este câmpul în care Murphy este peste tot), se poate realiza umplerea greșit, așa cum se exemplifică de exemplu în Atacuri practice de oracle de umplere .
De asemenea, securitatea cifrelor de bloc depinde destul de mult de modul lor de funcționare, încă văd BCE folosit ici și colo uneori și nu este mult mai bun decât niciun cripto a Toți.
Practic nu poți spune că unul este mai bun decât celălalt, trebuie să te uiți la un criptosistem complet pentru a face o judecată de securitate.
Comentarii
- la primul dvs. paragraf: există moduri de funcționare pentru cifrele bloc care nu au nevoie de ‘ care necesită umplere, fie: de exemplu, modul CTR. Deci, acesta nu este un avantaj unic pentru cifrele de flux. Dar +1 la ultimul dvs. paragraf – bine spus!
- Ei bine, eu ‘ spun că CTR și OFB sunt construcții pentru a face un flux de cifrare dintr-un bloc de cifrare. Că ‘ este un alt lucru grozav cu cifrele bloc, acestea pot fi ușor folosite ca blocuri de construcție pentru alte lucruri, fie că sunt cifre de flux sau hash-uri unidirecționale. Cifrele de flux nu sunt atât de versatile.
- Ați uitat să menționați care este, în general, mai sigur (flux vs bloc).
- Niciunul nu este mai sigur din fire, este ‘ este într-adevăr modul în care le folosiți.
Răspundeți
Cifrele de flux criptează datele cu text simplu cu un flux aleatoriu de biți (de obicei cu un XOR deoarece poate fi inversat cu ușurință). Dacă aveți date pe 128 de biți, veți utiliza un strem psedurandom pe 128 de biți (cheia dvs.) pentru a cripta.
Block Cifers criptează datele textului simplu un bloc la un moment dat cu aceeași transformare (pe baza cheii ).Deci, aveți datele dvs. pe 128 de biți, cifrul le împarte în blocuri (cum ar fi 4 blocuri de 32 de biți) și aplicați aceeași transformare fiecărui bloc obținând 4 blocuri criptate, care combinate vor forma criptograma finală.
Desigur, din această cauză Block Cyphers sunt mai sigure, dar costisitoare de utilizat în ceea ce privește complexitatea hardware implicată. Cifrele de flux sunt mai rapide și „ieftine”, dar pot fi susceptibile la probleme de securitate dacă sunt implementate incorect.
Comentarii
- Ultimul paragraf conține o serie de erori de fapt. Cifrele bloc nu sunt mai sigure în general și nici nu sunt neapărat mai grave în hardware. Cifrele de flux nu sunt neapărat mai rapide sau mai ieftine.
- @DW: cu toate acestea, cifrele de flux sunt de obicei mai rapide sau mai ieftine decât cifrele de bloc, deoarece ‘ este afacerea: un algoritm mai puțin versatil comercializat pentru performanțe îmbunătățite. Un cod de flux care se întâmplă să fie mai lent și mai scump decât AES / CTR pur și simplu nu se obișnuiește deloc.
- Ați uitat să menționați care este, în general, mai sigur (flux vs bloc).
Răspuns
Datele (lucrurile care trebuie criptate) apar de obicei în fluxuri. Pentru a-l cripta, trebuie să folosim un cod de flux, adică un algoritm de criptare adecvat pentru utilizarea pe un flux de date. Un flux este o secvență de biți (sau octeți) de lungime arbitrară, variabilă sau nespecificată.
Cele mai bune cifre pe care le-am inventat până acum sunt de obicei cifre bloc. Un cifru de bloc este capabil să cripteze un singur bloc de date de dimensiuni fixe; și, prin dovezile din jurul nostru, se pare că este mai ușor să construim cifre de bloc bune decât cifre de flux.
O veste bună, totuși. Folosind un anumit cifru de bloc în anumite tipare (un „mod de funcționare”), și cu ajutorul unor strategii de umplere specifice, putem transforma orice cifru de bloc într-un flux de cifrare! Asta înseamnă că putem folosi cifrele mai bune, care sunt cifrele bloc, pentru a cripta orice date, majoritatea fiind furnizate în fluxuri.
Comentarii
- a doua propoziție pare înșelătoare. Puteți cripta date de streaming folosind un cifru bloc, utilizând oricare dintre mai multe moduri standard de funcționare: de exemplu, modul CBC, modul CTR etc. AES-CBC este încă un cifru bloc. De fapt, aproape fiecare mod de operare standard pentru cifrele bloc acceptă deja transmiterea de date. Mai mult, un cifru bloc nu este sigur fără un mod de operare, deci ‘ nu este ca un mod de operare este un lucru opțional de care aveți nevoie doar atunci când doriți să criptați datele de streaming .