
2 czerwca Eric Biggers (inżynier z Google) przedstawił nowe implementacje AES-XTS dla znacznie wyższej wydajności procesorów Intel/AMD z użyciem nowych zestawów kodów AES-NI + AVX, VAES + AVX2, VAES + AVX10/256 oraz VAES + AVX10/512.
Kod AES-NI GCM zastępuje poprzedni, napisany przez Intel, i eliminuje istniejące zidentyfikowane problemy:
„Ten zestaw aktualizacji dodaje do VAES i AVX512/AVX10 implementację AES-GCM (tryb Galois/Counter), co zwiększa wydajność AES-GCM o 162%. Ponadto zastępuje stary kod AES-NI GCM od Intela nowym kodem, który jest nieco szybszy i naprawia szereg problemów, w tym ogromny rozmiar pliku binarnego przekraczającego 250 KB. Szczegóły znajdują się w poprawkach.”
Końcowym stanem kodu asemblera x86_64 AES-GCM jest to, że otrzymujemy dwa pliki asemblerowe: jeden generuje kod AES-NI z AVX lub bez niego, a drugi generuje kod VAES z AVX512/AVX10 z 256-bitowymi lub 512-bitowymi wektorami. Nie obsługuje on pojedynczego VAES (bez AVX512/AVX10). To jest trochę inne niż to, co zrobiłem z AES-XTS, gdzie jeden plik generuje kod AVX i AVX512/AVX10, w tym kod wykorzystujący tylko VAES (bez AVX512/AVX10), a drugi plik generuje tylko kod nie będący AVX. Jednak w tej chwili wydaje się to właściwym wyborem dla każdego konkretnego algorytmu, biorąc pod uwagę, że ograniczenie do 16 rejestrów SIMD i 128-bitowych wektorów doprowadziło do niektórych zasadniczo różnych rozwiązań konstrukcyjnych w AES-GCM, ale nie w AES-XTS. Procesory dostarczane tylko z VAES wydają się również zjawiskiem tymczasowym, więc być może nie powinniśmy zbytnio starać się wspierać tę kombinację.”
Źródło: linux.org.ru
