Почему обмен ключами стрекоз требует охоты и клевания?
Схема обмена ключами стрекозы (используемая в WPA3) подверглась критике, потому что способ выбора генератора группы эллиптических кривых («охота и клевание») является алгоритмом с непостоянным временем, что делает его уязвимым для атак по побочным каналам.
У меня вопрос: зачем вообще используется охота и клевание?
Предположим, что существует известный генератор $G$ для группы простого размера, то $G^P$ также будет генератором той же группы (если $P$не кратно размеру группы). С участием$P$ будучи числом, полученным из пароля (как и в случае со схемой стрекозы), таким образом можно получить генератор столь же случайный и непредсказуемый, как при охоте и клевании, не так ли?
В чем ошибка в этом рассуждении?
Ответы
В чем ошибка в этом рассуждении?
Проблема в том, что злоумышленник может протестировать несколько паролей с помощью одного и того же обмена, что приведет к потере свойств PAKE, которых мы пытались достичь.
Со стрекозой честная сторона выбирает секретные ценности $p, m$, и выводит значения $s = p+m$ и $P = -m \cdot SKE$, где $SKE$ это «секретный ключевой элемент», то есть тот, который вы предлагаете получить $SKE = [password]G$ (Я пишу это в аддитивной нотации, потому что «охота и клевание» вступает в игру в Dragonfly, только если вы используете эллиптические кривые).
Тогда честная сторона получает ценности $s'$ и $P'$ с другой стороны (злоумышленника), а затем вычисляет секретный ключ:
$$H( p( P' + s' \cdot SKE ))$$
и затем отправляет зашифрованное сообщение на основе этого ключа (то есть, если злоумышленник каким-то образом угадывает тот же ключ, он может расшифровать сообщение и, таким образом, подтвердить ключ).
С вашим предложением злоумышленник будет знать дискретный журнал любого SKE, то есть значение $x$ ул $xG = SKE$. Итак, что может сделать злоумышленник (получив от честных пиров$s, P$ значения) выбирается произвольно $s', P'$ значений (для которых он знает дискретный журнал $P' = p'G$) и отправьте их, а затем получите зашифрованный пароль на основе значения, вычисленного честной стороной.
Затем для каждого пароля в его словаре вычисляется соответствующий $SKE$ и $xG = SKE$ а затем вычисляет:
$$H( (p'+s'x)(sG + x^{-1}P))$$
Если предположение для SKE было правильным, это тот же секретный ключ, который вычислил честная сторона и который можно проверить.
Можно увидеть, что это то же самое, потому что, если SKE - это значение, которое использовала честная сторона, тогда $pG = sG + x^{-1}P$ и $p' + s'x$ дискретный журнал $P' + s' \cdot SKE$
Злоумышленник может выполнить все эти вычисления для каждого пароля в своем словаре, поэтому он может проверить каждый пароль в результате одного обмена.
Теперь DragonFly не должен использовать «охоту и клевание»; Существуют и другие известные преобразования хэш-кривой, которые преобразуют пароль в точку EC таким образом, что вы не можете вычислить дискретный журнал. Однако DragonFly нужно использовать какой-то такой метод ...