Acum că am înțeles securitatea unui text simplu ales, haideți să construim scheme de criptare
care reprezintă text simplu securizat. O primă astfel de schemă de criptare va fi denumită
înlănțuirea cifru bloc. Așadar uite cum funcționează înlănțuirea cifru bloc.
Înlănțuirea cifru bloc este o metodă de a folosi cifrul bloc pentru a obține un text simplu
securizat. În special, ne referim la un mod denumit înlănțuirea cifru bloc
cu un IV aleator. CBC înseamna înlănțuirea cifru bloc. Așadar să presupunem că avem un cifru bloc -
EB este un cifru bloc. Acum să definim CBC astfel încât să fie următoarea
schemă de criptare. Când i se cere algoritmului de criptare să cripteze
mesajul M, primul lucru pe care îl va face este să aleagă un iV aleator,
iar acesta este exact primul bloc a unui cifru bloc. Deci IV este un cifru bloc.
În cazul AES, IV ar fi de 16 biți. Iar atunci când
rulăm algoritmul, IV-ul pe care l-am ales va fi XOR
cu primul bloc al textului simplu. Rezultatul obținut va fi
criptat utilizând cifrul bloc și ceea ce se obține din primul bloc al textului cifrat.
Iar acum vine partea de înlănțuire unde vom folosi primul bloc
al textului cifrat pentru a crea un al doilea bloc de text. Astfel aplicăm XOR
celor două, iar criptarea lor devine al doilea cifru bloc.
Și tot așa în continuare. Acesta este înlănțuirea cifru bloc. Puteți vedea că
fiecare cifru bloc este înlănțuit și XOR-at în următorul text bloc
iar textul cifru final va fi esențial pentru IV - IV-ul inițial
pe care îl alegem împreună cu blocurile de text. Menționez că IV semnifica
Vector de Inițializare. Vom utiliza acest termen destul de mult.
De fiecare dată când va trebui să alegem ceva la întâmplare, la începutul
schemei de criptare vom denumi acel ceva IV, pentru vectorul de inițializare. Observați
ca cifrul text este mai lung decât textul simplu deoarece
acesta include si IV-ul cifrului text, care cuprinde randomizarea
utilizată pentru criptare. Prima întrebare este cum decriptăm
rezultatul criptării CBC. Să vă reamintesc că atunci când
criptăm primul bloc mesaj , XOR-ăm cu IV, criptăm
rezultatul și astfel obținem blocul cifru text. Să vă mai pun o întrebare
Cum decriptăm asta ? Pornind de la primul bloc cifru text cum recuperați
primul bloc original de text simplu ? Decriptarea este practic foarte asemănătoare criptării.
Am scris aici o schemă pentru decriptare, unde puteți vedea
că este același lucru, cu excepția faptului că XOR este în partea de jos, în loc să fie in partea de sus și
am taiat IV-ul, ca parte a procesului de decriptare. Astfel a rezultat
mesajul original. IV-ul a fost eliminat
prin algoritmul de decriptare. Următoarea teoremă vă va arăta
că de fapt modul de criptare CBC cu IV aleator este securizat semantic
împotriva unui atac cu text simplu. Să vă explic mai pe larg.
Dacă pornim cu PRP, cifrul bloc E, care este definit
ca parte din spațiul X, vom avea algoritmul Ecbc care preia mesajul
cu lungimea L și rezulta cifrul text cu lungimea L+1. Apoi
presupunem că avem un adversar care testeaza q texte simple. Astfel putem face afirmația
că pentru orice adversar de acest tip care atacă Ecbc
există un adversar care atacă PRP, cifrul bloc cu relația
între cei doi algoritmi. Cu alte cuvinte, avantajul algoritmului A
contra schemei de criptare este mai mic decât avantajul algoritmului B
contra PRP-ului original, la care se adaugă reziduuri.