Как ключи согласовываются в wpa-eap?

Вопрос или проблема

Вопрос о PEAP-MSCHAPV2 на RADIUS.

После успешного выполнения MSCHAPV2 ключи извлекаются из TLS-контекста. Затем они отправляются на AP.

Клиент не смог подключиться к WiFi (или eapol и др.) с моим самодельным RADIUS Access-Accept.

Можете объяснить полную схему согласования ключей?

Исходный код RADIUS реализован на основе автоматов состояний, поэтому код сложно понять.

Я нашел пропущенный шаг. После Success-Response (от клиента) на phase2 мне нужно отправить пустое сообщение. То есть, пакет TLS-ASK необходим перед фазой 1 Success (от сервера).

Теперь это работает с Linux, Android (wpa_supplicant). Не работает с iOS…

Ответ или решение

Полное описание процесса переговоров ключей в WPA-EAP

При использовании протокола WPA-EAP (Wi-Fi Protected Access – Extensible Authentication Protocol) ключи шифрования играют ключевую роль в установлении безопасного соединения между клиентским устройством и точкой доступа. В этом ответе мы рассмотрим процесс переговоров ключей в контексте PEAP (Protected Extensible Authentication Protocol) с использованием MSCHAPv2 (Microsoft Challenge Handshake Authentication Protocol Version 2).

Этапы переговоров ключей

  1. Инициация соединения:
    Клиент начинает процесс подключения к сети Wi-Fi, посылая EAPOL (EAP over LAN) Start сообщение. Точка доступа (AP) отвечает EAP Request/Identity, запрашивая идентификационную информацию клиента.

  2. Передача учетных данных:
    Клиент отправляет свои аутентификационные данные, которые в случае использования PEAP могут включать вложенный EAP (в этом случае EAP-MSCHAPv2). После получения запроса от RADIUS-сервера, клиент выполняет аутентификацию, отправляя EAP Response/Identity и затем, в последующем шаге, EAP Response с данными для аутентификации MSCHAPv2.

  3. Аутентификация на уровне TLS:
    После получения ответных данных от клиента RADIUS-сервер инициирует создание безопасного канала TLS. В этом процессе устанавливается защищенное соединение между клиентом и сервером с помощью криптографических операций. После успешного выполнения всех шагов тайм-аут-сессии и подтверждения клиент отправляет EAP Response с кодом, подтверждающим успешность аутентификации.

  4. Извлечение ключей:
    После успешного завершения процесса аутентификации, ключи шифрования извлекаются из TLS-контекста. Эти ключи представляют собой KCK (Key Confirmation Key) и KEK (Key Encryption Key), которые впоследствии будут использоваться для создания ключей сеанса для шифрования трафика.

  5. Отправка ключей на точку доступа:
    Ключи, извлеченные из TLS-контекста, отправляются на точку доступа в ответе EAP, который помечен как Access-Accept. Это место критически важно, и проблемы в этом шаге могут привести к неудаче подключения клиента.

Ошибки и проблемы

В вашем вопросе был упомянут случай, когда подключение не происходило из-за отсутствия промежуточного шага — отправки пустого сообщения (TLS-ASK) от RADIUS-сервера перед успешной аутентификацией в первом фазе. Это может указывать на наличие состояния в конечном автомате, которое требует дополнительного сообщения для завершения процесса установления TLS, особенно в зависимости от конкретных реализаций RADIUS.

  • Проблемы с iOS:
    Необходимость отправки этого пустого сообщения может объяснять, почему ваше решение работает для Linux и Android с wpa_supplicant, но не функционирует на iOS. Apple устройства могут иметь другие ожидания относительно таймингов и сообщений в процессе аутентификации, и отсутствие этого промежуточного шага может привести к функциональным ошибкам.

Заключение

Правильное понимание и реализация процесса переговоров ключей в WPA-EAP являются основой для создания надежных и безопасных соединений. Ключи, извлеченные из TLS, играют критическую роль в шифровании пользовательского трафика, что обеспечивает защиту данных в беспроводных сетях. Отправка дополнительных сообщений, таких как TLS-ASK, может оказать значительное влияние на успех аутентификации и подключение некоторых клиентских устройств. При необходимости следует провести дальнейший анализ и отладку реализации RADIUS для обеспечения совместимости с различными операционными системами.

Оцените материал
Добавить комментарий

Капча загружается...