Patch-Set zur Beschleunigung der AES-GCM-Verschlüsselung/Entschlüsselung

Patch-Set zur Beschleunigung der AES-GCM-Verschlüsselung/Entschlüsselung

Am 2. Juni stellte Erik Biggers (Ingenieur bei Google) neue Implementierungen von AES-XTS vor, die eine deutlich höhere Leistung der Intel/AMD-Prozessoren mit neuen Befehlssätzen AES-NI + AVX, VAES + AVX2, VAES + AVX10/256 und VAES + AVX10/512 ermöglichen.

Der AES-NI GCM-Code ersetzt den vorher von Intel geschriebenen und behebt bestehende, identifizierte Probleme:

„Dieses Update-Paket fügt in 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 neuen Code, der etwas schneller ist und eine Reihe von Problemen behebt, einschließlich der enormen Größe der Binärdatei, die 250 KB überschreitet. Einzelheiten finden Sie in den Korrekturen.

Der endgültige Zustand des x86_64 AES-GCM-Assemblercodes besteht darin, dass wir zwei Assemblerdateien erhalten: Eine, die AES-NI-Code mit oder ohne AVX generiert, und eine andere, die VAES-Code mit AVX512/AVX10 mit 256-Bit- oder 512-Bit-Vektoren generiert. Sie unterstützt keinen einzelnen VAES (ohne AVX512/AVX10). Dies unterscheidet sich ein wenig von dem, was ich mit AES-XTS gemacht habe, wo eine Datei AVX- und AVX512/AVX10-Code generiert, einschließlich Code, der nur VAES verwendet (ohne AVX512/AVX10), während die andere Datei nur von AVX abweichenden Code generiert. Allerdings scheint es für jeden einzelnen Algorithmus eine richtige Wahl zu sein, da die Beschränkung auf 16 SIMD-Register und 128-Bit-Vektoren zu einigen deutlich unterschiedlichen Konstruktionsentscheidungen bei AES-GCM geführt hat, jedoch nicht so sehr bei AES-XTS. Prozessoren, die nur mit VAES ausgestattet sind, scheinen ebenfalls ein vorübergehendes Phänomen zu sein, sodass wir möglicherweise nicht zu viel versuchen sollten, diese Kombination zu unterstützen.“

Quelle: linux.org.ru

60GB SSD 8Gb DDR4