Puncte:2

Validarea etichetei de autentificare AES GCM între două implementări diferite

drapel nl

Sunt puțin confuz cu privire la modul de validare a etichetei de autentificare între două implementări AES GCM diferite.

O implementare (din partea mea) este în Java. Celălalt, nu știu.

În implementarea mea, textul simplu este criptat cu doFinal funcţie. Adac vectorul de inițializare rezultatului.

Înțeleg că eticheta de autentificare este adăugată la sfârșitul mesajului criptat, iar când îl decriptează, Java îl verifică automat.

https://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html Dacă este utilizat un mod AEAD, cum ar fi GCM/CCM, eticheta de autentificare este anexat în cazul criptării, sau verificat în cazul decriptare.

Date

IV: b943f312250e7fb1f29dea93
Text cifrat (etichetă de 128 de biți adăugată): 3745a778189b041b9c452359066a9a745715f214599d010790ee8866e531d5bfe6352e
Cheie: e08ef62a4908460742b4f80b14fb452d

Intrebarea mea este: Ar trebui să poată verifica eticheta de la cealaltă parte, indiferent de implementarea/furnizorul cripto pe care îl folosesc?

Mulțumesc

Puncte:2
drapel in

Da, eticheta de autentificare este specificată complet în specificațiile GCM. Unde este plasat este de altfel lipsit de importanță - locația nu influențează valorile biților etichetei de autentificare.

Dacă celălalt algoritm implementare separă gestionarea etichetelor de autentificare - așa cum probabil ar trebui - atunci acest lucru ar trebui luat în considerare în timpul criptării și decriptării.

  • Pentru a respecta implementarea Java, este necesar să adăugați eticheta la textul cifrat după criptare. De obicei, este posibil să dimensionați inteligent un buffer sau să utilizați o implementare de streaming, astfel încât să nu fie necesară copierea etichetei.

  • Pentru verificare, poate fi necesară extragerea acestuia din coada textului cifrat. De obicei, este posibil să faci simplu indicați-o totuși, în buffer-ul care deține textul cifrat; în acest caz nu este necesară copierea sau redimensionarea.


Este necesar ca parametrii de configurare GCM (tipul și dimensiunea IV/nonce, dimensiunea etichetei de autentificare) să fie conveniți anticipat de ambele părți, fie prin specificarea lor direct în protocol, fie prin alegerea unui set predefinit de parametri de configurare în timpul rulării.

Aceasta înseamnă că dimensiunea etichetei de autentificare ar trebui să fie cunoscută în avans. Deci, ar trebui să fie posibil să găsiți eticheta de autentificare odată ce dimensiunea textului cifrat a fost stabilită. Desigur, nimic nu vă împiedică să includeți dimensiunea textului cifrat în protocol; este bine să includeți, să zicem, un indicator de dimensiune de 32 de biți (de obicei, o valoare big endian nesemnată de 32 de biți) în antetul protocolului dumneavoastră. În acest fel, este posibil să găsiți eticheta de autentificare fără a avea întregul ciphertext / text simplu în memoria sistemului - presupunând că implementarea nu necesită ca utilizatorul să efectueze criptarea / decriptarea dintr-o dată.

Evident, ambele părți trebuie să folosească aceleași date suplimentare autentificate (AAD) pentru verificarea etichetei.


De obicei, se recomandă păstrarea etichetei de autentificare la dimensiunea maximă de 128 de biți (dimensiunea blocului algoritmului AES și dimensiunea câmpului Galois al GHASH). Implementarea Oracle Java are această dimensiune implicită. Deci, în acest caz, ultimii 16 octeți ai textului cifrat (extins) formează eticheta de autentificare.

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.