
No dia 2 de junho, Eric Biggers (engenheiro do Google) apresentou novas implementações do AES-XTS para um desempenho significativamente superior nos processadores Intel/AMD, utilizando novos conjuntos de instruções AES-NI + AVX, VAES + AVX2, VAES + AVX10/256 e VAES + AVX10/512.
O código AES-NI GCM substitui a versão anterior, escrita pela Intel, e resolve problemas existentes identificados:
"Este conjunto de atualizações adiciona ao VAES e AVX512/AVX10 a implementação do AES-GCM (modo Galois/Counter), que melhora o desempenho do AES-GCM em até 162%. Além disso, ele substitui o antigo código AES-NI GCM da Intel por um novo que é um pouco mais rápido e corrige diversos problemas, incluindo o tamanho excessivo do binário, que supera 250 KB. Detalhes podem ser encontrados nas correções."
O estado final do código assembly x86_64 AES-GCM é que obtemos dois arquivos de assembly: um gera código AES-NI com AVX ou sem ele, e o outro gera código VAES com AVX512/AVX10 utilizando vetores de 256 ou 512 bits. Ele não suporta VAES isolado (sem AVX512/AVX10). Isso é um pouco diferente do que eu fiz com o AES-XTS, onde um arquivo gera código AVX e AVX512/AVX10, incluindo código que utiliza apenas VAES (sem AVX512/AVX10), enquanto o outro arquivo gera apenas código que é diferente de AVX. No entanto, neste momento, isso parece a escolha correta para cada algoritmo específico, considerando que a limitação a 16 registradores SIMD e vetores de 128 bits levou a algumas decisões de design significativamente diferentes no AES-GCM, mas não tanto no AES-XTS. Processadores que são fornecidos apenas com VAES também parecem ser um fenômeno temporário, então talvez não devêssemos nos esforçar muito para manter essa combinação."
Fonte: linux.org.ru
