Набор патчей для ускорения шифрования/дешифрования AES-GCM
2 июня Эрик Биггерс (инженер из Google) представил новые реализации AES-XTS для гораздо более высокой производительности процессоров Intel/AMD с помощью новых наборов кода AES-NI + AVX, VAES + AVX2, VAES + AVX10/256 и VAES + AVX10/512.
Код AES-NI GCM заменяет собой предыдущий, написанный Intel, и устраняет существующие выявленные проблемы:
«Этот набор обновлений добавляет в VAES и AVX512/AVX10 реализацию AES-GCM (режим Galois/Counter), что повышает производительность AES-GCM до 162%. Кроме того, он заменяет старый код AES-NI GCM от Intel на новый. код, который немного быстрее и исправляет ряд проблем, включая огромный размер двоичного файла, превышающий 250 КБ. Подробности см. В исправлениях.
Конечным состоянием ассемблерного кода x86_64 AES-GCM является то, что мы получаем два ассемблерных файла: один генерирует код AES-NI с AVX или без него, а другой генерирует код VAES с AVX512/AVX10 с 256-битными или 512-битными векторами. В нём отсутствует поддержка одиночного VAES (без AVX512/AVX10). Это немного отличается от того, что я сделал с AES-XTS, где один файл генерирует код AVX и AVX512/AVX10, включая код, использующий только VAES (без AVX512/AVX10), а другой файл генерирует только код, отличный от AVX. Однако, на данный момент это кажется правильным выбором для каждого конкретного алгоритма, учитывая то, что ограничение до 16 SIMD-регистров и 128-битных векторов привело к некоторым существенно отличающимся конструктивным решениям в AES-GCM, но не настолько для AES-ХТС. Процессоры, поставляемые только с VAES, также кажутся временным явлением, поэтому нам, возможно, не следует слишком стараться поддерживать эту комбинацию».
>>> Подробности в официальной рассылке разработчиков ядра