Когда ноутбук или смартфон при перемещении между точками доступа зависает на 2–5 секунд с обрывом звонка по Wi-Fi, одна из вероятных причин — отсутствие перехода по PMK кэшу: клиент вынужден проходить полную аутентификацию заново вместо мгновенного переключения по сохранённому ключу. Механизм кэширования парных мастер-ключей (Pairwise Master Key) был придуман именно для того, чтобы сократить время переподключения с секунд до десятков миллисекунд.
В этой статье разберём, что такое PMK и PMKID, как работает кэширование ключей при роуминге, чем оно отличается от 802.11r и почему в реальных сетях быстрый переход часто не срабатывает. Материал ориентирован на тех, кто настраивает бесшовный Wi-Fi в офисе, доме с несколькими точками доступа или разбирается в логах беспроводной сети.
Что такое PMK и зачем нужен его кэш
PMK (Pairwise Master Key) — это главный ключ, который вырабатывается в результате аутентификации клиента в защищённой сети WPA2/WPA3. В сетях с 802.1X (Enterprise) он формируется после успешной проверки на RADIUS-сервере, а в сетях с WPA2-PSK — вычисляется из парольной фразы и имени сети (SSID). Из PMK затем в ходе четырёхстороннего рукопожатия (4-way handshake) выводятся сеансовые ключи шифрования трафика.
Проблема в том, что получение PMK — самая долгая часть подключения. Особенно в Enterprise-сетях: обмен EAP-пакетами с RADIUS-сервером может занимать заметное время, и всё это время клиент фактически «слеп и глух». Чтобы не повторять полную аутентификацию при каждом переходе между точками доступа, клиент и точка сохраняют PMK в кэше.
Ключ в кэше идентифицируется через PMKID — хэш-идентификатор, вычисляемый из PMK, MAC-адресов клиента и точки доступа. При повторном подключении клиент просто сообщает PMKID в кадре ассоциации, и если точка находит соответствующую запись у себя, полная аутентификация пропускается — сразу начинается рукопожатие.
Переход по PMK кэшу — это повторное использование ранее полученного мастер-ключа по его идентификатору PMKID, что позволяет пропустить полную аутентификацию при переподключении к точке доступа.
Как происходит переход по PMK кэшу пошагово
Механика перехода выглядит следующим образом. Клиент, уже имеющий сохранённый PMK от предыдущей сессии с данной точкой доступа, отправляет запрос на ассоциацию (Reassociation Request), в котором в элементе RSN указывает PMKID. Точка доступа ищет этот идентификатор в своём кэше ключей.
Если запись найдена и не истёк её срок жизни (PMK cache lifetime, настраиваемый параметр), точка подтверждает использование кэшированного ключа, и стороны сразу переходят к четырёхстороннему рукопожатию для выработки свежих сеансовых ключей. Важно понимать: сам PMK при этом не передаётся по воздуху — по сети ходит только его идентификатор.
Если записи нет или она устарела, точка отклоняет попытку быстрого перехода, и клиент вынужден начинать полную аутентификацию с нуля. Именно этот момент и наблюдается в логах как задержка при роуминге.
- 🔑 Клиент вычисляет PMKID из сохранённого PMK и MAC-адресов сторон.
- 📡 PMKID передаётся точке доступа в кадре (Re)Association Request.
- 🔍 Точка ищет PMKID в локальном кэше ключей.
- ✅ При совпадении — сразу 4-way handshake без полной аутентификации.
- ❌ При промахе — откат на полную процедуру подключения.
PMK кэширование против OKC и 802.11r: в чём разница
Классическое PMKID-кэширование работает только при возврате к той же самой точке доступа, где клиент уже аутентифицировался. Для перехода между разными точками одной сети оно само по себе не помогает — у новой точки нет нужного PMK. Здесь появляются два расширения механизма.
OKC (Opportunistic Key Caching), иногда называемый проактивным кэшированием ключей, — нестандартизированный, но широко реализованный подход: контроллер или сами точки доступа заранее распределяют производный PMK между всеми точками одной сети, чтобы клиент мог перейти на любую из них по кэшу. Поведение OKC зависит от конкретного вендора и прошивки, поэтому перед включением стоит свериться с документацией именно вашего оборудования.
802.11r (Fast Transition) — официальный стандарт быстрого роуминга, который формализует распространение ключей по домену мобильности и позволяет подготовить ключи к следующей точке ещё до разрыва текущего соединения. По сути, 802.11r — это стандартизованное и более предсказуемое развитие той же идеи кэширования ключей.
| Механизм | Область действия | Стандарт | Типичное применение |
|---|---|---|---|
| PMKID-кэширование | Возврат к той же точке | 802.11i | Любые сети WPA2/WPA3 |
| OKC | Между точками одной сети | Нестандартный (вендорский) | Корпоративные сети без 802.11r |
| 802.11r (FT) | Домен мобильности | IEEE 802.11r | VoWiFi, склады, офисы с роумингом |
| 802.11k/v | Подсказки клиенту, куда переходить | IEEE 802.11k/v | Дополнение к любому из вариантов |
⚠️ Внимание: включение 802.11r может нарушить работу старых клиентских устройств, которые не понимают расширенные элементы FT в кадрах. Перед активацией быстрого роуминга на «боевой» сети протестируйте совместимость со всеми типами клиентов — особенно с устаревшими терминалами сбора данных, принтерами и IoT-устройствами.
Почему переход по кэшу не срабатывает
На практике быстрый переход часто отказывает, и клиент молча уходит в полную аутентификацию. Признаки в логах точки доступа или контроллера обычно выглядят как отсутствие PMKID в запросе клиента либо как «cache miss» на стороне точки. Разберём типовые причины.
Первая группа причин — на стороне клиента. Некоторые драйверы и операционные системы вообще не отправляют PMKID при повторном подключении или очищают кэш ключей при любом разрыве. Поведение зависит от конкретного чипа, версии драйвера и ОС, поэтому универсальной настройки здесь нет — проверять нужно на конкретной связке «устройство + драйвер».
Вторая группа — на стороне инфраструктуры:
- ⏱️ Истёк срок жизни записи в кэше (PMK lifetime) — ключ уже удалён.
- 🔄 Точка доступа была перезагружена, и кэш обнулился.
- 🏷️ Разные SSID или разные настройки безопасности на точках — кэш к ним неприменим.
- 🧩 Несогласованные настройки: на части точек включён OKC/FT, на части — нет.
- 📦 Переполнение кэша на точке с большим числом клиентов.
⚠️ Внимание: смешанная конфигурация, когда на соседних точках доступа по-разному настроены параметры безопасности или быстрого перехода, — одна из самых коварных причин нестабильного роуминга. Клиент может успешно переходить в одну сторону и «залипать» в другую. Все точки одной сети должны иметь идентичные настройки безопасности.
Как проверить и настроить переход по PMK кэшу
Диагностику стоит начинать с захвата трафика. Вам понадобится адаптер, поддерживающий режим мониторинга, и анализатор вроде Wireshark. В кадрах Association/Reassociation Request найдите элемент RSN и проверьте, присутствует ли там поле PMKID Count с ненулевым значением и сам идентификатор. Если клиент PMKID не отправляет — проблема на его стороне.
Далее проверьте сторону инфраструктуры. В веб-интерфейсе или CLI контроллера/точки доступа найдите настройки, относящиеся к кэшированию ключей и быстрому роумингу. Названия параметров у разных вендоров отличаются (PMK caching, OKC, Fast Transition, Fast Roaming), поэтому точный путь в меню смотрите в документации своей модели.
# Пример фильтра Wireshark для поиска кадров ассоциации:
wlan.fc.type_subtype == 0x00 || wlan.fc.type_subtype == 0x02
☑️ Диагностика перехода по PMK кэшу
После внесения изменений тестируйте переход реальным перемещением с устройством между зонами покрытия, фиксируя время разрыва. Для голосовых вызовов по Wi-Fi комфортным считается переключение без заметной паузы в разговоре; точные пороги зависят от требований вашего приложения.
При тестировании роуминга используйте непрерывный ping с малым интервалом или активный голосовой вызов — так потери пакетов при переходе видны нагляднее, чем по индикатору уровня сигнала.
Безопасность: что нужно знать о PMKID
Тема PMKID получила известность и с другой стороны: существует метод атаки на сети WPA/WPA2-PSK, при котором злоумышленник запрашивает у точки доступа PMKID и затем офлайн подбирает пароль. Это возможно, потому что PMKID вычисляется из данных, связанных с парольной фразой. Сама по себе атака не взламывают сеть мгновенно, но упрощает перебор слабых паролей.
Практические выводы здесь стандартны для гигиены беспроводной сети. Используйте длинный случайный пароль — атака перебором против него теряет смысл. По возможности переходите на WPA3, где применяется SAE-рукопожатие, устойчивое к офлайн-подбору. В корпоративном сегменте предпочтителен режим Enterprise с 802.1X, где компрометация одного пароля не раскрывает всю сеть.
Техническая деталь
почему PMKID позволяет подбирать пароль:PMKID вычисляется как HMAC-SHA1 от PMK с добавлением строки "PMK Name" и MAC-адресов точки и клиента. В сетях WPA-PSK мастер-ключ PMK выводится напрямую из парольной фразы и SSID через PBKDF2. Поэтому, зная PMKID, SSID и оба MAC-адреса, атакующий может проверять кандидатные пароли офлайн: вычислять PMK из очередного пароля, затем PMKID — и сравнивать с перехваченным значением.
Когда кэширования недостаточно
Даже идеально работающий переход по PMK кэшу не решает вопрос «куда и когда переходить». Решение о роуминге всегда принимает клиент, и часто он держится за слабый сигнал дальней точки до последнего. Здесь кэширование ключей нужно дополнять другими механизмами.
Стандарты 802.11k (отчёты о соседних точках) и 802.11v (подсказки клиенту о переходе) помогают устройству быстрее находить кандидата на роуминг и не сканировать весь эфир. В контроллерных решениях дополнительно применяются пороги RSSI и принудительное отключение «залипших» клиентов. Комплексный подход — k/v/r плюс корректное кэширование ключей — даёт наиболее предсказуемый результат.
Переход по PMK кэшу ускоряет только этап аутентификации. Для полноценного бесшовного роуминга его нужно сочетать с 802.11k/v для выбора точки и с согласованными настройками безопасности на всём покрытии.
Часто задаваемые вопросы
В чём разница между PMK и PMKID?
PMK — это сам мастер-ключ, секретное значение, из которого выводятся сеансовые ключи шифрования. PMKID — только его хэш-идентификатор, который передаётся по воздуху и позволяет точке доступа найти нужный PMK в кэше. По PMKID нельзя восстановить сам ключ напрямую.
Работает ли PMK-кэширование в домашних сетях WPA2-PSK?
Да, базовое PMKID-кэширование применимо и к PSK-сетям — оно часть стандарта 802.11i. Но в домашней сети с одной точкой доступа выгода невелика, а для роуминга между несколькими точками потребуется поддержка OKC или 802.11r как со стороны точек, так и со стороны клиентов.
Почему после включения 802.11r часть устройств перестала подключаться?
Некоторые старые клиенты не распознают элементы Fast Transition в кадрах и отказываются связываться с такой сетью. Это известная проблема совместимости. Решения: обновить драйверы устройств, включить режим совместимости (adaptive/mixed), если он предусмотрен вашим оборудованием, или создать отдельный SSID без FT для устаревших клиентов.
Как понять, что переход прошёл по кэшу, а не по полной аутентификации?
Самый надёжный способ — анализ захваченных кадров: при переходе по кэшу в Reassociation Request присутствует PMKID, а в обмене отсутствуют кадры полной EAP-аутентификации. Косвенный признак — резкое сокращение времени переподключения по сравнению с «холодным» подключением.
Опасно ли кэширование PMK с точки зрения безопасности?
Само кэширование безопасно: PMK не передаётся по сети, хранится ограниченное время и защищён на стороне точки. Риск связан лишь с тем, что в PSK-сетях PMKID теоретически позволяет офлайн-подбор слабого пароля. Длинный случайный пароль и WPA3 нейтрализуют эту угрозу.