
Pe 2 iunie, Eric Biggers (inginer de la Google) a prezentat noi implementări AES-XTS pentru o performanță mult mai mare a procesorilor Intel/AMD, folosind noi seturi de instrucțiuni AES-NI + AVX, VAES + AVX2, VAES + AVX10/256 și VAES + AVX10/512.
Codul AES-NI GCM înlocuiește versiunea anterioară, scrisă de Intel, și elimină problemele existente identificate:
„Această serie de actualizări adaugă în VAES și AVX512/AVX10 implementarea AES-GCM (modul Galois/Counter), ceea ce îmbunătățește performanța AES-GCM cu până la 162%. De asemenea, înlocuiește vechiul cod AES-NI GCM de la Intel cu un nou cod care este puțin mai rapid și corectează o serie de probleme, inclusiv dimensiunea uriașă a fișierului binar, care depășește 250 KB. Detalii pot fi găsite în corecții.
Starea finală a codului assembler x86_64 AES-GCM este că obținem două fișiere assembler: unul generează cod AES-NI cu sau fără AVX, iar celălalt generează cod VAES cu AVX512/AVX10 folosind vectori de 256 sau 512 biți. Nu există suport pentru VAES singular (fără AVX512/AVX10). Acest lucru este puțin diferit față de ceea ce am realizat cu AES-XTS, unde un fișier generează cod AVX și AVX512/AVX10, inclusiv cod care utilizează doar VAES (fără AVX512/AVX10), iar celălalt fișier generează doar cod diferit de AVX. Totuși, în prezent, aceasta pare a fi alegerea corectă pentru fiecare algoritm specific, având în vedere că restricția de 16 registre SIMD și vectori de 128 biți a dus la unele decizii de design considerabil diferite în AES-GCM, dar nu atât de mult pentru AES-XTS. Procesorii livrați doar cu VAES par a fi, de asemenea, un fenomen temporar, așa că poate nu ar trebui să ne străduim prea mult să menținem această combinație.”
Sursa: linux.org.ru
