Puncte:1

Integritate în timpul utilizării CBC

drapel cl

Avem un corp pe care vrem să-l criptăm folosind CBC și adăugăm la acel corp un bloc de text cunoscut pe ambele părți. newBody = corp + bloc cunoscut acum criptăm newBody folosind o cheie cunoscută de ambele părți, apoi transferăm textul criptat pe un fir către persoana B. cipherText = encrypt_using_cbc(newBody) Dacă persoana b decriptează CipherText și obține ultimul bloc identic, poate avea încredere în datele pe care le-a decriptat (integritatea datelor)?

Puncte:3
drapel cn

Nu. Un om de la mijloc care corupe un bloc dintr-un mesaj criptat CBC poate „realinia” în blocul următor.

Lăsa $E$ fie funcția de criptare bloc. Lăsa $P_1, P_2, P_3$ fi trei blocuri de date. Criptarea CBC a $P_1 || P_2 || P_3$ cu IV $C_0$ este $C_0 || C_1 || C_2 || C_3$ Unde $$ \begin{align} C_1 &= E(P_1 \oplus C_0) \ C_2 &= E(P_2 \oplus C_1) \ C_3 &= E(P_3 \oplus C_2) \ \end{align} $$ Lăsa $M$ fi un bloc diferit de zero. Să inserăm această perturbare în al doilea bloc de text simplu: $C_2 = E((P_2 \oplus M) \oplus (C_1 \oplus M))$. Trimite textul cifrat $(C_1 \oplus M) || C_2 || C_3$. Se decriptează la $P'_1 || (P_2 \oplus M) || P_3$. „Valoarea de verificare”; $P_3$ este același, dar două blocuri precedente au fost corupte. Un atacator poate aplica o modificare arbitrară unui bloc de text simplu cunoscut, fără să cunoască cheia sau vreo pereche suplimentară de text simplu/cifrat, atâta timp cât nu îi deranjează să corupeze blocul anterior într-un mod pe care nu îl poate controla.

Nici utilizarea unui hash al datelor din ultimul bloc nu este sigură.

Puncte:1
drapel in

Atacatorul poate schimba orice bloc de text cifrat, cu excepția ultimelor două. Decriptarea ultimului bloc este definită ca $P_n = C_{n-1} \oplus D_k(C_n)$ unde ultimul bloc este bloc $n$.

Atacul va produce un text clar confuz pentru blocurile modificate și va întoarce biții la locația similară a biților din blocurile următoare. Cantitatea de text cifrat poate fi, de asemenea, scurtată sau mărită după bunul plac, atâta timp cât ultimele două blocuri nu sunt modificate. Dacă atacatorul poate controla IV-ul, atunci este, de asemenea, posibil să răstoarne orice bit din primul bloc - presupunând că nu este ultimul sau pen-ultimul bloc.

Deci nu, aceasta nu este o idee grozavă. Este posibil să ghiciți că nu văzând că puteți efectua decriptarea paralelă pe CBC: puteți începe decriptarea în orice moment atâta timp cât cunoașteți textul cifrat până la bloc înainte.

Apoi, din nou, ar fi fost mai rău dacă ați fi ales modul CTR, în care atacatorul poate schimba orice pic după bunul plac, indiferent de ceea ce este în „blocul” final. Ambele moduri te-ar face, de asemenea, vulnerabil împotriva atacurilor oracolului în text clar, care ar putea afecta și confidențialitatea.


Dacă sunteți interesat de acest tip de lucruri, poate doriți să aruncați o privire la modul (bidirecțional) Infinite Garble Extension, cunoscut și sub numele de IGE și biIGE. Dar rețineți că de cele mai multe ori utilizarea unui MAC este calea de urmat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.