CBC-MAC

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În criptografie , un bloc înlănțuirea Mesaj Cod de autentificare Cifru, abreviat CBC-MAC, este o tehnică pentru construirea unui cod de autentificare mesaj folosind un cifru bloc. Mesajul este criptat cu un algoritm de cifrare a blocurilor în modul CBC pentru a crea un lanț de blocuri în care fiecare dintre ele depinde de cifrarea blocului anterior. Această interdependență asigură că o modificare a oricărui bit al textului simplu va provoca o schimbare în blocul criptat final care nu poate fi prezis sau calculat fără a cunoaște cheia de criptare.

Pentru a calcula CBC-MAC al mesajului m, m este criptat în modul CBC cu vectorul de inițializare la zero. Figura de mai jos arată calculul CBC-Mac al unui mesaj împărțit în blocuri folosind o cheie secretă k și un cifru bloc E.

Cbc mac.png

Securitate cu mesaje de lungime fixă ​​și variabilă

Dacă cifrul bloc utilizat este sigur, CBC-MAC este sigur pentru mesajele cu lungime fixă. Cu toate acestea, în sine, nu este sigur pentru mesajele cu lungime variabilă.

Această etichetă este codul CBC-MAC al unui mesaj , și a indicat eticheta cu , un atacator care cunoaște perechi de etichete-mesaj Și poate genera un al treilea mesaj a cărui etichetă coincide cu .

poate fi obținut după cum urmează:

Calculul CBC-MAC pentru mesaj procedează după cum urmează:

  1. se calculează MAC până la , care este echivalent cu :
  2. se calculează MAC-ul blocului , XORing valoarea obținută la pasul 1 cu primul bloc modificat de și apoi trimiterea rezultatului la cifrul bloc: pentru proprietățile cele două etichete sunt anulate, contribuția de la MAC calculat până acum:
  3. continuând din , continuăm cu calculul MAC pe blocurile rămase , care deci coincide cu MAC-ul din : obținându-se astfel și, prin urmare, că eticheta de coincide cu .

Această problemă nu poate fi rezolvată prin adăugarea unui bloc de lungime a mesajului (de exemplu, cu întărirea Merkle-Damgård ).

În cazul mesajelor cu lungime variabilă, se recomandă utilizarea unui alt mod de operare, de exemplu CMAC sau HMAC , pentru a proteja integritatea mesajelor cu lungime variabilă.

Folosind aceeași cheie pentru a cripta și autentifica

O greșeală obișnuită este reutilizarea aceleiași chei pentru criptare CBC și CBC-MAC. Deși reutilizarea cheii în scopuri diferite nu este în general recomandată, în acest caz particular greșeala duce la un atac spectaculos.

Să presupunem că un utilizator criptează un mesaj în modul CBC folosind un IV și obținerea următorului text cifrat: , unde este . În plus, generează codul CBC-MAC pentru IV și pentru mesaj: .

Acum, un atacator poate schimba fiecare bit înainte de ultimul bloc iar codul MAC va fi în continuare valid. Motivul este că (acesta este de fapt motivul pentru care oamenii fac această greșeală atât de frecvent - poate crește performanța cu un factor de doi). Dacă nu se schimbă ultimul bloc, echivalența rămâne valabil, deci codul CBC-MAC este corect.

Acest exemplu arată, de asemenea, că un CBC-MAC nu poate fi folosit ca o funcție unilaterală rezistentă la coliziune: având o cheie, este banal să creezi un mesaj diferit care generează același cod.

Elemente conexe

Referințe

Criptare Portal de criptografie : Accesați intrările Wikipedia care se ocupă de criptografie