Компания Google представила три новые реализации хеш-функций: быстрая реализация SipHash-AVX2, быстрая криптографически стойкая псевдослучайная функция SipTreeHash и полностью новая хэш-функция HighwayHash. Хэш-функции написаны на языке C++ с использованием intrinsics для обеспечения распараллеливания обработки данных с использованием инструкций AVX-2 и изначально рассчитаны на противостояние атакам типа hashDoS (трата чрезмерных ресурсов при обработке значений, вызывающих коллизии). Код хэш-функций открыт под лицензией Apache 2.0.
Реализация SipHash-AVX2 полностью совместима на уровне выдаваемых значений с оригинальным SipHash, но в 1.5 раза быстрее, чем ранее доступный вариант, оптимизированный с использованием инструкций SSE4.1. Модификация SipTreeHash, кроме инструкций AVX2, использует хэширование на основе деревьев j-lanes, позволяющих одновременно в несколько параллельных потоков обрабатывать входные данные (ввод разбивается на 8-байтовые пакеты, которые обрабатываются параллельно). SipTreeHash в 3 раза быстрее чем исходный SipHash, за исключением случаев с расчётом хэшей для мелких наборов данных (на данных, меньше 96 байт, SipTreeHash медленнее SipHash).
В хэш-функции HighwayHash применяется новый метод смешивания входных данных, используя минимум AVX-2 инструкций умножения и переставления. По мнению инженеров Google получившаяся хэш-функция является криптографически надёжной, но для полного подтверждения стойкости возможно требуется проверка при помощи дополнительных новых методов криптоанализа. При обработке больших входных данных эффективность HighwayHash достигает 0.3 процессорных цикла на байт, но и на небольших данных HighwayHash также остаётся эффективнее SipHash. Например, при обработке блоков в 1 KiB HighwayHash в 7 раз быстрее чем исходный SipHash, а пропускная способность на CPU Xeon E5-1650 v3 3.5 GHz составляет 11.3 GB/s (SipHash — 1.7 GB/s, SipTreeHash — 4.8 GB/s).
