
Am 2. Juni stellte Eric Biggers (Ingenieur bei Google) neue Implementierungen von AES-XTS vor, die eine erheblich höhere Leistung für Intel/AMD-Prozessoren mithilfe neuer Code-Sets wie AES-NI + AVX, VAES + AVX2, VAES + AVX10/256 und VAES + AVX10/512 bieten.
Der AES-NI GCM-Code ersetzt den zuvor von Intel geschriebenen und behebt bestehende identifizierte Probleme:
„Dieses Update-Paket fügt VAES und AVX512/AVX10 eine Implementierung von AES-GCM (Galois/Counter-Modus) hinzu, was die Leistung von AES-GCM um bis zu 162 % steigert. Darüber hinaus ersetzt es den alten AES-NI GCM-Code von Intel durch einen neuen Code, der etwas schneller ist und eine Reihe von Problemen behebt, einschließlich der enormen Dateigröße von über 250 KB. Weitere Einzelheiten finden Sie in den Fehlerbehebungen.“
Der endgültige Zustand des x86_64 AES-GCM Assemblercodes besteht darin, dass wir zwei Assemblerdateien erhalten: eine generiert AES-NI-Code mit AVX oder ohne, und die andere erzeugt VAES-Code mit AVX512/AVX10 mit 256-Bit- oder 512-Bit-Vektoren. Unterstützung für einzelnes VAES (ohne AVX512/AVX10) fehlt. Dies unterscheidet sich etwas von dem, was ich mit AES-XTS gemacht habe, wo eine Datei AVX- und AVX512/AVX10-Code generiert, einschließlich des Codes, der nur VAES (ohne AVX512/AVX10) verwendet, und die andere Datei generiert nur Code, der von AVX abweicht. Dennoch scheint dies derzeit die richtige Wahl für jeden bestimmten Algorithmus zu sein, da die Einschränkung auf 16 SIMD-Registern und 128-Bit-Vektoren zu einigen erheblich unterschiedlichen Konstruktionslösungen in AES-GCM geführt hat, jedoch nicht im gleichen Maße wie bei AES-XTS. Prozessoren, die nur mit VAES ausgestattet sind, scheinen ebenfalls ein vorübergehendes Phänomen zu sein, daher sollten wir möglicherweise nicht zu viel Aufwand in die Unterstützung dieser Kombination stecken.
Quelle: linux.org.ru
