
Op 2 juni presenteerde Eric Biggers (ingenieur bij Google) nieuwe implementaties van AES-XTS voor veel hogere prestaties van Intel/AMD-processoren met behulp van nieuwe instructiesets AES-NI + AVX, VAES + AVX2, VAES + AVX10/256 en VAES + AVX10/512.
De AES-NI GCM-code vervangt de eerdere versie die door Intel is geschreven en lost de bestaande problemen op:
«Deze update voegt een implementatie van AES-GCM (Galois/Counter-modus) toe aan VAES en AVX512/AVX10, wat de prestaties van AES-GCM met 162% verbetert. Bovendien vervangt het de oude AES-NI GCM-code van Intel door een nieuwe code die iets sneller is en een aantal problemen oplost, waaronder de enorme binaire bestandsgrootte van meer dan 250 KB. Voor details zie de wijzigingen.
De eindtoestand van de x86_64 AES-GCM assemblercode is dat we twee assemblerbestanden krijgen: één genereert AES-NI code met of zonder AVX, en de andere genereert VAES-code met AVX512/AVX10 met 256-bits of 512-bits vectoren. Het mist ondersteuning voor enkele VAES (zonder AVX512/AVX10). Dit is iets anders dan wat ik deed met AES-XTS, waar één bestand AVX en AVX512/AVX10 code genereert, inclusief code die alleen VAES gebruikt (zonder AVX512/AVX10), en een ander bestand alleen code genereert die anders is dan AVX. Echter, op dit moment lijkt dit de juiste keuze te zijn voor elk specifiek algoritme, gezien het feit dat de beperking tot 16 SIMD-registers en 128-bits vectoren leidde tot enkele aanzienlijk verschillende ontwerpoplossingen in AES-GCM, maar niet zozeer voor AES-XTS. Processors die alleen met VAES worden geleverd, lijken ook een tijdelijke zaak te zijn, dus we moeten misschien niet te veel moeite doen om deze combinatie te ondersteunen.»
Bron: linux.org.ru
