Рейтинг:1

Безопасна ли такая взаимная аутентификация?

флаг in

Ниже приведена реальная проблема. В стандартном протоколе клиенты могут подключаться к серверу, используя взаимную 4-проходную аутентификацию по незащищенному каналу TCP:

  • pass-1: Клиент отправляет случайный вызов C на сервер
  • pass-2: сервер отвечает, отправляя случайный вызов S клиенту
  • pass-3: Клиент готовит res(S, K) и отправляет его S
  • pass-4: Сервер отвечает клиенту с помощью res(C, K)

res(.) — это тег GCM-GMAC, который зависит от симметричного ключа K (фактически AES128, но здесь это может быть неуместно)

После успешной взаимной аутентификации клиент и сервер могут продолжать общаться в рамках так называемой «ассоциации», например. клиент может запросить некоторые данные с сервера.

введите описание изображения здесь

Однако что произойдет, если злоумышленник (не имеющий ключа) прослушивает сеть и запустит посредника, а также вредоносного клиента (красный). Когда настоящий клиент запускает pass-1 и отправляет C1 на сервер, в то же время плохой клиент отправляет C2. Сервер отвечает на оба запроса, но MitM удается внедрить S2 для отправки хорошему клиенту, который подготавливает res(S2) и отправляет его на сервер. Но MitM захватывает res(S2) и вводит его как pass-3 для отправки на сервер. Теперь сервер аутентифицирует плохого клиента и отправляет обратно res(C2), который просто игнорируется плохим клиентом. Таким образом, между плохим клиентом и сервером было установлено, казалось бы, взаимно аутентифицированное соединение.

введите описание изображения здесь

Интересно, действительно ли такая взаимная аутентификация эффективна?

Maarten Bodewes avatar
флаг in
В приведенных выше схемах ключи отсутствуют. Я не думаю, что ваша атака MitM возможна при правильном управлении ключами. Хуже того, без части управления ключами на вопрос, вероятно, нельзя будет ответить полностью, и мне не нравится, когда пользователям приходится угадывать, какие и какие типы ключей можно использовать. Пожалуйста, [отредактируйте] свой вопрос, чтобы включить ключи.
knaccc avatar
флаг es
Вы должны использовать сеансовый ключ, основанный на случайных данных как с клиента, так и с сервера, чтобы вы не были уязвимы для атаки воспроизведения. Вы также должны подумать об установлении и ротации ключа сеанса с течением времени (если сеансы выполняются долго), чтобы у вас была прямая секретность.
MichaelW avatar
флаг in
@Maarten Bodewes: я обновил картинки с помощью Ключа. Это просто предварительно общий ключ AES128, из которого GCM-GMAC создает тег: Res(S, K) = GMAC(S, K, IV) с вектором инициализации, который всегда увеличивается.
MichaelW avatar
флаг in
@knaccc: Этот протокол не является моим «изобретением» и его нельзя изменить. Я хочу просто понять.
knaccc avatar
флаг es
@MichaelW Вы говорите, что 128-битный ключ K напрямую используется в качестве ключа шифрования/дешифрования для сеанса, где шифрование выполняется с использованием AES128?
MichaelW avatar
флаг in
@knaccc: да, K используется для генерации тега, который используется для взаимной аутентификации, а также для шифрования/аутентификации сообщений после того, как такая сессия была установлена. Может быть, я не понимаю вашего вопроса.
knaccc avatar
флаг es
Если K напрямую используется в качестве ключа AES128 для сеансовой связи, а не создается новый симметричный ключ на основе K, C1 и S1, то атака MITM может просто дождаться полной аутентификации сеанса, а затем смонтировать повторную атаку, где она отправляет копию ранее обнаруженного зашифрованного запроса, чтобы заставить сервер что-то сделать. Поэтому я бы не считал сеансовые связи должным образом аутентифицированными.
MichaelW avatar
флаг in
@knaccc: сообщения запроса могут быть дополнительно прикреплены к тегу аутентификации; этот тег зависит от вектора инициализации, который каждый раз должен быть разным и не повторяться (на самом деле существует счетчик, который каждый раз увеличивается). Таким образом, простой повтор будет заблокирован сервером.
knaccc avatar
флаг es
Если вы не привязываете сеансовый ключ к задачам аутентификации и не используете аутентифицированное шифрование, то вы нарушаете Криптографический принцип Doom https://moxie.org/2011/12/13/the-cryptographic-doom-principle. HTML
MichaelW avatar
флаг in
хммм... после установки аутентифицированного сеанса всегда используется один и тот же общий ключ. Однако существует так называемый счетчик кадров, который необходимо каждый раз увеличивать и который входит в вектор инициализации для GCM-GMAC. Это немного в стороне от моего первоначального вопроса, но в любом случае я прочитаю статью, потому что она выглядит интересной.

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

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