Рейтинг:1

Насколько быстр GHASH и что он делает?

флаг tf
Tom

Я прочитал здесь:

https://www.researchgate.net/publication/220335697_GCM_GHASH_and_Weak_Keys

как работает GHASH. Итак, у нас есть $м$ 128-битные блоки $Х_{я}$ и мы вычисляем в $GF(2^{128})$:

$Y_{m} = \sum_{i=1}^{m} X_{i} \times H^{m-i+1}$

$Ч$ является ключом. Я вижу прямо там, что $Ч$ возводится во власть? Есть ли способ сделать это быстро в $GF(2^{128})$ или это просто стандартное возведение в степень по модулю с быстрым возведением в степень? Я думал, что есть одно умножение в $GF(2^{128})$ на одном 128-битном блоке, но если $Ч$ возводится во власть, есть многое другое.

Насколько быстр сам GHASH по сравнению с AES? Я имею в виду, сможет ли AES достичь $n$ циклов на байт, насколько быстро работает только GHASH? Сопоставима ли производительность GHASH с одним умножением в $GF(2^{128})$ на каждые 128 бит открытого текста или это сильно сложно?

forest avatar
флаг vn
Насколько быстро это зависит от аппаратных возможностей. Это может быть очень быстро, если процессор имеет [`pclmulqdq`](https://www.felixcloutier.com/x86/pclmulqdq).
Tom avatar
флаг tf
Tom
@forest мой вопрос был о GHASH с pclmulqdq, потому что сегодня это кажется стандартной реализацией GCM. Я знаю, что это может быть быстро, но скажем, AES может выполнять 1 цикл на байт, сколько GHASH занимает в этом 1 цикле на байт?
forest avatar
флаг vn
https://crypto.stackexchange.com/a/60109/54184 показывает тесты с различными функциями аппаратного ускорения и без них для GHASH и AES в режиме CTR. AES с полным аппаратным ускорением достигает 5307,37 МБ/с. GHASH с полным аппаратным ускорением достигает 4795,76 МБ/с.
флаг us
Вы оцениваете многочлен, используя [метод Хорнера] (https://en.wikipedia.org/wiki/Horner%27s_method) — одно умножение и одно сложение для каждого коэффициента многочлена.
Tom avatar
флаг tf
Tom
@forest спасибо, есть интересные сравнения.
Tom avatar
флаг tf
Tom
Кстати, прав ли я, что если AES и GHASH сравнимы по производительности, то если мы объединим их в режиме GCM, вся система (AES-GCM) будет работать с половиной скорости, которую может достичь одна из них?
kelalaka avatar
флаг in
Обратите внимание, что современные инструкции процессора для GHASH тоже.
Maarten Bodewes avatar
флаг in
@ Том Не обязательно и даже не вероятно. Это может указывать на то, что количество циклов ЦП сопоставимо, но на современных ЦП много времени тратится на ввод-вывод — загрузку данных в различные уровни кэш-памяти и регистров ЦП.
forest avatar
флаг vn
@Tom Современные процессоры имеют очень глубокие конвейеры и могут эффективно выполнять несколько инструкций одновременно, если они оба не требуют использования одних и тех же исполнительных блоков (т. Е. Они не вызывают конфликтов портов) и пока ни одна инструкция не зависит от другой закончив первым. AES-NI и CLMUL работают на разных исполнительных устройствах (порт 0 и порт 5 соответственно на Skylake, см. Таблицу 11.1 в [документе Agner Fog по оптимизации микроархитектуры ЦП] (https://www.agner.org/optimize/microarchitecture.pdf) ), поэтому они будут выполняться одновременно.
forest avatar
флаг vn
Для справки: на старом ЦП сервера Ivy Bridge с поддержкой AES-NI и CLMUL скорость 128-битного AES в режиме CTR составляет 3205 МБ/с, в режиме GCM — 935,8 МБ/с, а в необработанном GHASH — 1328 МБ/с ( все в блоках по 16 КиБ, протестировано с OpenSSL 1.1.1n). Вы можете видеть, что он должен выполняться одновременно.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.