În acest capitol, vom discuta despre diferitele moduri de funcționare ale unui cifru de bloc. Acestea sunt reguli de procedură pentru un cifru bloc generic. În mod interesant, diferitele moduri au ca rezultat obținerea unor proprietăți diferite care se adaugă la securitatea cifrului în bloc subiacent.
Un cifru în bloc procesează blocurile de date de dimensiune fixă. De obicei, dimensiunea unui mesaj este mai mare decât dimensiunea blocului. Prin urmare, mesajul lung este împărțit într-o serie de blocuri de mesaje secvențiale, iar cifrul operează cu aceste blocuri unul câte unul.
Modul Carte electronică de coduri (ECB – Electronic Code Book)
Acest mod este o modalitate foarte simplă de procesare a unei serii de blocuri de mesaje enumerate secvențial.
Operațiune
-
Utilizatorul ia primul bloc de text în clar și îl criptează cu cheia pentru a produce primul bloc de text cifrat.
-
El ia apoi al doilea bloc de text în clar și urmează același proces cu aceeași cheie și așa mai departe.
Modul ECB este determinist, adică, dacă blocurile de text în clar P1, P2,…, Pm sunt criptate de două ori cu aceeași cheie, blocurile de text cifrat de ieșire vor fi aceleași.
De fapt, pentru o cheie dată din punct de vedere tehnic, putem crea o carte de coduri de texte cifrate pentru toate blocurile de text în clar posibile. Criptarea ar presupune atunci doar căutarea textului în clar necesar și selectarea textului cifrat corespunzător. Astfel, operațiunea este analogă cu atribuirea cuvintelor de cod într-o carte de coduri și, prin urmare, primește un nume oficial – modul de operare Electronic Codebook (ECB). Acesta este ilustrat după cum urmează –
Analysis of ECB Mode
În realitate, orice date de aplicație au, de obicei, informații parțiale care pot fi ghicite. De exemplu, intervalul de salarizare poate fi ghicit. Un text cifrat din ECB poate permite unui atacator să ghicească textul în clar prin încercări și erori dacă mesajul în clar este în limite previzibile.
De exemplu, dacă se știe că un text cifrat din modul ECB criptează o cifră de salariu, atunci un număr mic de încercări va permite unui atacator să recupereze cifra respectivă. În general, nu dorim să folosim un cifru determinist și, prin urmare, modul ECB nu ar trebui să fie utilizat în majoritatea aplicațiilor.
Modul CBC (Cipher Block Chaining)
Modul de operare CBC oferă dependență de mesaj pentru generarea textului cifrat și face ca sistemul să fie nedeterminist.
Operare
Operarea modului CBC este descrisă în următoarea ilustrație. Etapele sunt următoarele –
-
Încarcă vectorul de inițializare (IV) pe n biți în registrul superior.
-
XOR blocul de text în clar pe n biți cu valoarea datelor din registrul superior.
-
Criptează rezultatul operației XOR cu cifrul bloc subiacent cu cheia K.
-
Alimentați blocul de text cifrat în registrul superior și continuați operația până când toate blocurile de text în clar sunt procesate.
-
Pentru decriptare, datele IV sunt XOR cu primul bloc de text cifrat decriptat. Primul bloc de text cifrat este, de asemenea, introdus în registrul care înlocuiește IV pentru decriptarea următorului bloc de text cifrat.
Analiza modului CBC
În modul CBC, blocul de text în clar curent este adăugat la blocul de text cifrat anterior, iar apoi rezultatul este criptat cu cheia. Decriptarea este astfel procesul invers, care implică decriptarea textului cifrat curent și apoi adăugarea blocului de text cifrat anterior la rezultat.
Vantajul CBC față de ECB este că schimbarea IV duce la un text cifrat diferit pentru un mesaj identic. În ceea ce privește dezavantajul, eroarea de transmisie se propagă la alte câteva blocuri în timpul decriptării datorită efectului de înlănțuire.
Merită menționat faptul că modul CBC stă la baza unui mecanism bine cunoscut de autentificare a originii datelor. Astfel, acesta prezintă un avantaj pentru acele aplicații care necesită atât criptare simetrică, cât și autentificare a originii datelor.
Modul CFB (ipher Feedback (CFB) Mode
În acest mod, fiecare bloc de text cifrat este „realimentat” în procesul de criptare pentru a cripta următorul bloc de text în clar.
Funcționare
Funcționarea modului CFB este descrisă în următoarea ilustrație. De exemplu, în prezentul sistem, un bloc de mesaje are o dimensiune de „s” biți, unde 1 < s < n. Modul CFB necesită un vector de inițializare (IV) ca bloc de intrare aleatoriu inițial de n biți. Nu este necesar ca IV să fie secret. Etapele de funcționare sunt următoarele: –
-
Încărcați IV în registrul superior.
-
Criptați valoarea datelor din registrul superior cu ajutorul cifrului bloc subiacent cu cheia K.
-
Prelevați doar un număr „s” de biți cei mai semnificativi (biți din stânga) de la ieșirea procesului de criptare și faceți XOR cu blocul de mesaj în clar de „s” biți pentru a genera un bloc de text cifrat.
-
Se introduce blocul de text cifrat în registrul superior prin deplasarea datelor deja prezente spre stânga și se continuă operațiunea până când toate blocurile de text în clar sunt procesate.
-
În esență, blocul de text cifrat anterior este criptat cu cheia, iar apoi rezultatul este XOR cu blocul de text în clar curent.
-
Se urmează pași similari pentru decriptare. IV prestabilit este încărcat inițial la începutul decriptării.
Analiza modului CFB
Modul CFB diferă semnificativ de modul ECB, textul cifrat corespunzător unui anumit bloc de text în clar nu depinde doar de acel bloc de text în clar și de cheie, ci și de blocul de text cifrat anterior. Cu alte cuvinte, blocul de text cifrat depinde de mesaj.
CFB are o caracteristică foarte ciudată. În acest mod, utilizatorul decriptează textul cifrat folosind doar procesul de criptare al cifrului în bloc. Algoritmul de decriptare al cifrului bloc subiacent nu este utilizat niciodată.
Aproape, modul CFB convertește un cifru bloc într-un tip de cifru de flux. Algoritmul de criptare este utilizat ca un generator de flux de chei pentru a produce un flux de chei care este plasat în registrul de jos. Acest flux de chei este apoi XOR cu textul în clar, ca în cazul unui cifru de flux.
Prin convertirea unui cifru de bloc în cifru de flux, modul CFB oferă unele dintre proprietățile avantajoase ale unui cifru de flux, păstrând în același timp proprietățile avantajoase ale unui cifru de bloc.
Pe de altă parte, eroarea de transmisie se propagă din cauza schimbării blocurilor.
Modul OFB (Output Feedback)
implică realimentarea blocurilor succesive de ieșire ale cifrului bloc subiacent. Aceste blocuri de feedback furnizează șiruri de biți pentru a alimenta algoritmul de criptare care acționează ca generator al fluxului de chei, ca și în cazul modului CFB.
Fluxul de chei generat este supus unei combinații XOR cu blocurile de text în clar. Modul OFB necesită un IV ca bloc de intrare aleatoriu inițial de n biți. IV nu trebuie neapărat să fie secret.
Operațiunea este descrisă în următoarea ilustrație –
Modul Counter (CTR)
Poate fi considerat ca o versiune bazată pe contor a modului CFB fără feedback. În acest mod, atât emițătorul, cât și receptorul trebuie să aibă acces la un contor fiabil, care calculează o nouă valoare partajată de fiecare dată când se schimbă un bloc de text cifrat. Acest contor partajat nu este neapărat o valoare secretă, dar provocarea constă în faptul că ambele părți trebuie să mențină contorul sincronizat.
Operațiune
Atât criptarea cât și decriptarea în modul CTR sunt reprezentate în următoarea ilustrație. Etapele funcționării sunt –
-
Încărcarea valorii inițiale a contorului în registrul superior este aceeași atât pentru emițător cât și pentru receptor. Acesta joacă același rol ca și IV în modul CFB (și CBC).
-
Criptează conținutul contorului cu cheia și plasează rezultatul în registrul de jos.
-
Preia primul bloc de text în clar P1 și îl face XOR cu conținutul registrului de jos. Rezultatul acestei operații este C1. Trimiteți C1 la receptor și actualizați contorul. Actualizarea contorului înlocuiește feedback-ul textului cifrat în modul CFB.
-
Continuați în acest mod până când ultimul bloc de text în clar a fost criptat.
-
Decriptarea este procesul invers. Blocul de text cifrat este XOR cu ieșirea din conținutul criptat a valorii contorului. După decriptarea fiecărui bloc de text cifrat, contorul este actualizat ca și în cazul criptării.
Analiză a modului counter
Nu are dependență de mesaj și, prin urmare, un bloc de text cifrat nu depinde de blocurile de text în clar anterioare.
Ca și modul CFB, modul CTR nu implică procesul de decriptare al cifrului în bloc. Acest lucru se datorează faptului că modul CTR utilizează de fapt cifrul bloc pentru a genera un flux de chei, care este criptat cu ajutorul funcției XOR. Cu alte cuvinte, modul CTR convertește, de asemenea, un cifru de bloc într-un cifru de flux.
Dezavantajul serios al modului CTR este că necesită un contor sincron la emițător și receptor. Pierderea sincronizării duce la recuperarea incorectă a textului în clar.
Cu toate acestea, modul CTR are aproape toate avantajele modului CFB. În plus, nu propagă deloc eroarea de transmisie.
.