Когда ноутбук или смартфон при перемещении между точками доступа зависает на 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, что позволяет пропустить полную аутентификацию при переподключении к точке доступа.