Эта проблема появилась в прошлой экзаменационной работе.
В протоколах PAKE (обмен ключами с аутентификацией паролем) $А$ и $В$ аутентифицировать каждый
другой, зная общий пароль, который слишком слаб, чтобы позволить злоумышленнику попробовать
повторные догадки, чтобы попытаться найти его, зная, как одно сообщение протокола было
построен. Нет криптографической подписи или альтернативного общего секрета или доверенного
третья сторона, которую они могут использовать. Такой протокол обычно работает следующим образом:
• Фаза 1: $А$ и $В$ обмениваться данными, которые они создали для этого сеанса, и значениями
они вычислили из этого и собственного предполагаемого значения пароля $p_{AB}$.
Обратите внимание, что если они A и B, они оба будут знать одно и то же $p_{AB}$ но если один или
оба они подделывают значения, которые они принимают, вероятно, будут разными. От
эти вычисления они оба получают ключ $k_A$ или же $k_B$, что будет то же самое, если их
значения пароля были одинаковыми.
¢ Фаза 2: Они сравнивают $k_A$ и $k_B$ путем обмена сообщениями, которые позволяют им
чтобы увидеть, согласны ли они, но не раскрывать $k_A$ или же $k_B$ миру, и не позволяйте ни
стороны думать, что они согласны, когда это не так.
Почему следует $А$ не отправлять, как часть этого протокола, $ хэш (p_ {AB}, N) $, куда $N$ одноразовый номер известен
к $В$ пока она не уверена, что $В$ не самозванец и действительно знает $p_{AB}$? Расширьте это до
общее руководство о том, какие сообщения формы хэш($Х$) не следует отправлять из $А$ к
$В$ куда $Х$ включает в себя $p_{AB}$ в его построении.
Теперь подумайте о реализации только Фазы 2. Как можно использовать хеширование для достижения
цель Этапа 2, таким образом, что если $А$ или же $В$ на самом деле разговаривал с самозванцем
с другим паролем в Фазе 1, самозванец не может манипулировать сообщениями, чтобы
заставить ее или его думать, что протокол завершен успешно.
Моя попытка:
а) $А$ не следует отправлять, $ хэш (p_ {AB}, N) $ как самозванец $I_B$ может повторно использовать один и тот же одноразовый номер и отправить $ хэш (p_ {AB}, N) $ вернуться к А, притворившись, что знает пароль $p_{AB}$
б) $Х$ не должно быть $p_{AB}$ (самостоятельно). Он также должен содержать некоторую идентификацию для каждого пользователя, уникальную для того, что отправляет другой пользователь, т.е. если Алиса отправит $хэш(X_1)$ и Боб отправляет $ хэш (X_2) $, $X_1 \neq X_2$. Этого достаточно? Я не могу думать ни о чем другом.
c) Для реализации фазы 2 заставьте Алису отправить $хэш(E_{k_A}(Алиса|k_A))$ и Боб отправить $хэш(E_{k_B}(Боб|k_B))$. Где $E_k$ это функция шифрования, зашифрованная с использованием ключа $к$. Это правильно?