Según tengo entendido, así es como funciona WPA2 para redes domésticas:
- PSK (clave precompartida) se usa para generar PMK (clave maestra en pares), que se usa junto con ANonce (AP Nonce) para crear PTK (clave en transitorios en pares).
- PTK se divide en KCK (Clave de confirmación de clave, 128 bits), KEK (Clave de cifrado de clave, 128 bits) y TEK (Clave de cifrado temporal, 128 bits).
- KCK se usa para construir MAC en los paquetes EAPOL 2,3 y 4.
- KEK se utiliza para cifrar algunos datos enviados al cliente (por ejemplo, GTK).
- TEK se usa para cifrar el tráfico entre el cliente y el AP, más tarde durante la sesión.
Ahora el protocolo de enlace WPA de 4 vías:
- AP envía ANonse (AP Nonce) al cliente, que es básicamente un Entero aleatorio de 256 bits.
- El cliente usa ANonce y PMK para generar PTK (clave transitoria de par a par) y envía CNonce (cliente nonce) y MAC.
- AP envía MAC y GTK (clave temporal de grupo) al cliente.
- El cliente envía ACK con MAC.
Ahora, ¿cómo funciona el craqueo de un apretón de manos (por ejemplo, un ataque de diccionario) si no se usa todo el PTK (KCK y KEK se usan durante el apretón de manos, pero TEK no)? Entiendo que las palabras del diccionario se usan como PSK para generar PMK y Anonce (que también se captura en el protocolo de enlace) para generar PTK, pero ¿cómo puedo saber cuándo PTK es correcto cuando nunca se usa 1/3 de la clave?