Modul de criptare bloc AEAD

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 27 mai 2020; verificările necesită 2 modificări .

Modurile de criptare bloc AEAD ( ing.  Criptare autentificată cu date asociate , „ criptare autentificată cu date atașate”) este o clasă de moduri de criptare bloc în care o parte a mesajului este criptată, o parte rămâne deschisă și întregul mesaj este autentificat . Ideea unei astfel de clase de criptare a fost propusă pentru prima dată de Charanjit Jutla în 2000 [1] . În prezent sunt propuse mai multe moduri de criptare AEAD: modul OCB (de la OCB2), modul CCM , modul EAX , modul CWC și modul GCM . Acesta din urmă este un standard NIST din 2007 [2] .

Depanare

Există algoritmi care permit autentificarea și criptarea - criptare autentificată (denumită în continuare AE), cu toate acestea, nu prevăd posibilitatea de a atașa text simplu (date asociate), ceea ce apare, în special, dacă este necesară atașarea unui adresa IP la un mesaj . În general, datele text simplu sunt adesea necesare pentru a transmite anteturi, adrese, porturi, versiuni de protocol și alte date necesare pentru a decide cum ar trebui procesat sau trimis textul cifrat. Adesea, aceste date trebuie autentificate rămânând publice pentru ca dispozitivele de procesare să gestioneze corect aceste mesaje. Există dorința de a modifica schema AE prin adăugarea unei inserții de imitație (MAC) la aceasta pentru autentificarea datelor deschise și de a obține o schemă AEAD „ieftin”. Cu toate acestea, soluțiile evidente „naive”, dintre care exemple le vom lua în considerare mai jos, se dovedesc a fi ineficiente.

De exemplu, trebuie să trimiteți un mesaj M , un antet deschis H , este selectat un mod de criptare AE E și o funcție MAC. Apoi, dacă E(M) și H sunt transmise , atunci H va fi neautentificat. Dacă transmitem E(M||H) și H , lungimea mesajului transmis va fi mai mare decât cea inițială (deoarece se va efectua operația de criptare H , care nu este necesară în această sarcină ), același lucru se poate spune pentru cazul transmisiei H , E(M) , MAC( H||E(M)) (deoarece E(M) este deja autentificat și utilizarea MAC este intensivă în resurse).

Important, atât schemele AE, cât și schemele AEAD necesită utilizarea unui nonce . Acest lucru este necesar pentru a asigura securitatea semantică (imposibilitatea unui atacator, atunci când folosește în mod repetat o schemă sub aceeași cheie, pentru a obține relații între segmente de mesaje criptate), precum și pentru a proteja împotriva unui atac de reluare , în care un atacator, deghizat ca utilizator legitim, retrimite un mesaj. Este responsabilitatea expeditorului să genereze un nonce și să îl folosească o singură dată. Pentru a face acest lucru, puteți utiliza, de exemplu, un contor.

Metode de implementare

Există două moduri fundamental diferite de a implementa modul de criptare AEAD. Primul implică utilizarea criptării bloc și uzurparea identității. În acest caz, proiectantul schemei AEAD poate alege orice cifru bloc și funcția pentru a obține inserția imitată, folosind și un nonce. A doua cale este un fel de transformare a schemei AE. Cerințele pentru ultima metodă rămân aceleași: circuitul nu trebuie să încetinească semnificativ și nu trebuie să introducă noi vulnerabilități . Securitatea și fiabilitatea acestor abordări a fost dovedită în articolul lui Charanjit S. Jutla „Moduri de criptare cu integritate a mesajelor aproape libere”, cu condiția ca nonce să nu fie reutilizat și funcția hash H să fie sigură criptografic.

Metode de implementare a modului AEAD folosind un cifru bloc și inserare de uzurpare

Există două modalități de a obține modul AEAD folosind un cifru bloc și de a imita inserarea: mai întâi prin criptarea mesajului, apoi prin autentificare (encrypt-then-mac) sau în ordine inversă (mac-then-encrypt).

Encrypt-then-mac

În această variantă, mesajul M este mai întâi criptat folosind nonce N, apoi antetul H și mesajul criptat sunt autentificate de MAC cu același nonce.

Mac-then-encrypt

Ca mai sus, dar în ordine inversă: mai întâi, se creează o falsificare MAC din antetul H, nonce N și text simplu M, iar apoi mesajul M este criptat cu falsificarea primită folosind același nonce N.

Metode de implementare a modului AEAD cu schema AE

După cum se arată mai sus, nu este posibil să atașați eficient text simplu autentificat la un mesaj construit în schemă AE folosind metode primitive. Cu toate acestea, au fost propuse următoarele două metode [1] .

Nefurt

Să existe o schemă AE care utilizează un nonce de n biți, iar o aplicație care utilizează această schemă trebuie să folosească doar n2 biți (n2 < n). Apoi h = n - n2 biți liberi pot fi utilizați pentru a stoca date deschise. Această schemă are o limită a dimensiunii datelor deschise, dar de multe ori acest lucru este suficient. Lăsați algoritmul să aibă un nonce de 128 de biți, iar aplicația folosește doar 16, apoi rămân 112 biți pentru date deschise, ceea ce este adesea suficient (de exemplu, o adresă în protocolul IPv4 necesită 32 de biți).

Traducerea textului cifrat

Această metodă de conversie a unei scheme AE într-o schemă AEAD se bazează pe operația de adăugare logică (XOR) , în timp ce dacă o operație este efectuată pe șiruri de lungimi diferite, atunci cea mai scurtă este umplută cu zerouri nesemnificative, de exemplu : .

Această metodă include următoarele operații: se folosește o schemă AE pentru a cripta mesajul cu cheia K și a obține un text cifrat intermediar CT, apoi se aplică o funcție hash pentru a obține deplasarea Δ și, în final, se obține textul cifrat final prin aplicarea operație de adăugare logică Δ la ultimii biți CT. Rețineți că, dacă antetul este un șir gol, schema AEAD rezultată este transferată în schema de criptare AE originală. Dacă antetul rămâne neschimbat în timpul sesiunii, atunci deplasarea Δ poate fi calculată în avans, ceea ce are un efect pozitiv asupra timpului de criptare - operația de adăugare logică rămasă este ușor de implementat (inclusiv în hardware).

Să definim schema AEAD rezultată mai strict după cum urmează:

Adică, presupunând că , calculăm Δ cu o lungime de τ biți, criptăm M și efectuăm operația de adăugare logică a ultimilor τ biți cu Δ.

Această metodă are următoarele avantaje:

Cu toate acestea, dezavantajul metodei este necesitatea de a folosi două taste K și K'.

Algoritmi AEAD

De exemplu, descriem câțiva algoritmi AEAD. Două dintre ele se bazează pe AES GCM, două dintre ele se bazează pe AES CCM. Unul dintre algoritmii din fiecare pereche folosește o cheie de 128 de biți, celălalt folosește o cheie de 256 de biți.

AEAD AES 128 GCM

Acest algoritm folosește AES-128 ca cifru bloc, folosind cheia, nonce, mesajul și antetul ca intrare. Lungimea antetului este de 16 octeți. Textul cifrat este generat prin adăugarea unei etichete de autentificare la textul cifrat intermediar primit ca rezultat al criptării GCM. Cerințele privind dimensiunea de intrare și de ieșire sunt după cum urmează:

Astfel, textul cifrat este cu 16 octeți mai lung decât mesajul deschis inițial.

AEAD AES 256 GCM

Algoritmul este complet similar cu cel anterior, cu excepția utilizării unei chei de 32 de octeți și AES-256 GCM.

AEAD AES 128 CCM

Similar cu cel precedent, cu excepția utilizării modului CCM în loc de GCM, în timp ce:

Ca și în cazul GCM, textul cifrat este cu 16 octeți mai lung decât mesajul original.

AEAD AES 256 CCM

Algoritmul este complet similar cu cel anterior, cu excepția utilizării unei chei de 32 de octeți și AES-256 GCM.

Note

  1. 1 2 Jutla, Charanjit S. (01-08-2000) „Moduri de criptare cu integritate a mesajelor aproape libere” Arhivat la 19 august 2012 la Wayback Machine . Arhiva Cryptology ePrint: Raport 2000/039. IACR . Accesat 2013-03-16
  2. ^ NIST Special Publication 800-38D Arhivat 5 august 2011 la Wayback Machine , noiembrie 2007, Recommendation for BlockCipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC.

Link -uri