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.