Estructura y funcionamiento de WPA2: handshake, claves y transmisión de paquetes | RodrionCyber
WiFi Security Dificultad: Media

Estructura y funcionamiento de WPA2: handshake, claves y transmisión de paquetes

✍️ Hugo ⏱️ 12 min de lectura
Imagen destacada del artículo

WPA2-PSK es el estándar de seguridad WiFi más extendido en redes domésticas y pequeñas empresas. A diferencia de WEP o WPA-TKIP, emplea AES en modo CCM (CCMP) para cifrar cada paquete, lo que lo hace considerablemente más robusto. Sin embargo, entender cómo funciona internamente es clave tanto para defenderlo como para comprender por qué los ataques de diccionario siguen siendo una amenaza real cuando la contraseña es débil.

Clave del artículo La diferencia fundamental entre WPA y WPA2 no está en cómo se deriva la PMK (eso es idéntico), sino en el protocolo de cifrado posterior: WPA usa TKIP (RC4), WPA2 usa CCMP (AES). Esta distinción es la que hace a WPA2 criptográficamente sólido.

Preparación inicial — Derivación de la PMK

La contraseña WPA2 (passphrase) nunca se usa directamente para cifrar tráfico. Primero se transforma en una clave de 256 bits llamada PMK (Pairwise Master Key) mediante una función de derivación lenta e iterativa:

PMK = PBKDF2-HMAC-SHA1(passphrase, SSID, 4096 iteraciones, 256 bits)

Passphrase

Contraseña WPA2 definida por el usuario (8–63 caracteres ASCII).

SSID como salt

El nombre de la red actúa como salt, haciendo que la misma contraseña genere PMKs distintas en redes diferentes.

4096 iteraciones

Número fijo por estándar. Dificulta enormemente los ataques de fuerza bruta offline.

Salida: 256 bits

32 bytes que conforman la PMK. Permanece estática mientras no cambie la contraseña.

Relevancia en ataques La PMK es idéntica en WPA y WPA2. Capturar el 4-Way Handshake permite realizar ataques de diccionario offline recalculando la PMK para cada candidato de contraseña y comparando el MIC resultante. Por eso la fortaleza de la passphrase es crítica.

4-Way Handshake — Negociación de claves

El 4-Way Handshake es el proceso que permite al AP y al cliente derivar claves de sesión únicas y verificar mutuamente que ambos conocen la PMK, sin transmitirla nunca por el aire. Se transporta mediante el protocolo EAPOL (EAP over LAN).

Mensaje 1 — AP → Cliente

El punto de acceso envía el ANonce (un número aleatorio de 32 bytes) y su dirección MAC. Con esta información el cliente ya puede calcular la PTK sin necesidad de más intercambios.

Mensaje 2 — Cliente → AP

El cliente genera su propio SNonce y calcula la PTK combinando:

PTK = PRF(PMK, ANonce, SNonce, MAC_AP, MAC_Cliente)

El cliente devuelve el SNonce junto a un MIC (Message Integrity Code) calculado con la KCK, que permite al AP verificar que el cliente conoce la PMK correcta. Capturar M1 y M2 es suficiente para realizar un ataque de diccionario offline.

Mensaje 3 — AP → Cliente

El AP calcula la misma PTK por su parte, genera la GTK (Group Temporal Key) para cifrar tráfico broadcast/multicast, y la envía cifrada con la KEK junto a otro MIC.

Mensaje 4 — Cliente → AP

El cliente verifica el MIC, confirma la recepción, instala PTK y GTK. A partir de este momento comienza el cifrado de datos con CCMP.

AP → Cliente: ANonce + MAC del AP

Cliente → AP: SNonce + MIC (KCK). El cliente ya tiene la PTK calculada.

AP → Cliente: GTK cifrada con KEK + MIC. El AP confirma la PTK.

Cliente → AP: Confirmación de instalación. Comienza el tráfico cifrado.

EAPOL — El protocolo del handshake

EAPOL (Extensible Authentication Protocol over LAN) es el protocolo que transporta todos los mensajes del 4-Way Handshake. Cada uno de los cuatro mensajes es una trama EAPOL-Key.

Transporta nonces

ANonce y SNonce viajan en las tramas EAPOL-Key sin cifrar.

Transporta MICs

El MIC calculado con la KCK permite verificar la autenticidad de cada mensaje.

Transporta la GTK

La GTK va cifrada con la KEK dentro del mensaje M3.

Relevancia en auditorías

Capturar M1+M2 permite ataques offline. En WPA2, un PMKID permite atacar sin handshake completo.

Claves derivadas de la PTK

La PTK ocupa 64 bytes y se divide en tres sub-claves con funciones distintas:

Sub-clave Tamaño Función
KCK — Key Confirmation Key 16 bytes Calcula el MIC de las tramas EAPOL para verificar integridad
KEK — Key Encryption Key 16 bytes Cifra la GTK antes de enviarla al cliente (mensaje M3)
TK — Temporal Key 16 bytes Cifra el tráfico de datos unicast con AES-CCMP
WPA2 vs WPA-TKIP En WPA2-CCMP no existe Michael. El algoritmo Michael era el código de integridad de WPA-TKIP. En WPA2, la integridad la proporciona directamente el MIC de CCM incluido dentro de CCMP.

Clave de grupo — GTK

La GTK (Group Temporal Key) es la clave que protege el tráfico dirigido a todos los clientes de la red (broadcast y multicast). A diferencia de la PTK, que es única por pareja AP-cliente, la GTK es compartida por todos los dispositivos conectados.

  • La genera el AP a partir de una GMK (Group Master Key) interna.
  • Se distribuye a cada cliente cifrada con su KEK individual durante el mensaje M3.
  • Se renueva periódicamente o cuando un cliente abandona la red.
  • Protege tramas como ARPs broadcast o paquetes DHCP.

Generación de clave por paquete — CCMP

WPA2 usa AES en modo CCM (Counter with CBC-MAC), llamado CCMP. A diferencia de WEP o TKIP, no reutiliza nunca el mismo keystream para dos paquetes distintos. Para cada paquete unicast se genera un contexto único mediante un Packet Number (PN) de 48 bits:

Se incrementa el PN (Packet Number) de 48 bits. Nunca se repite.

Se construye un nonce combinando: MAC del emisor + PN + campos del estándar 802.11i.

AES-CCM usa la TK (o GTK) + nonce en modo CTR para generar el keystream único del paquete.

Clave efectiva = TK/GTK + nonce (MAC emisor + PN)

Construcción y cifrado del paquete CCMP

Qué se protege

  • Payload (datos): se cifran completamente.
  • Cabeceras 802.11 relevantes (AAD): no se cifran, pero sí se autentican mediante el MIC.

Cálculo del MIC de integridad

MIC = CBC-MAC_AES(TK, AAD + datos)

Cifrado del bloque de datos + MIC

ciphertext = (datos + MIC) XOR keystream_AES_CTR(TK, nonce)

Estructura del paquete final

[ Cabecera 802.11 (en claro, autenticada por MIC) ] [ Encabezado CCMP: PN (48 bits) | Key ID | Flags — en claro ] [ Payload cifrado: datos + MIC ← cifrado con AES-CTR ]
Sin ICV separado A diferencia de WEP (que usaba un CRC-32 lineal y manipulable), en CCMP no existe un ICV independiente. La integridad la garantiza el MIC de 8 bytes generado por CBC-MAC, que está cifrado junto al payload y no puede alterarse sin conocer la TK.

Recepción y verificación

Al recibir el paquete, el receptor realiza los siguientes pasos para verificar tanto la confidencialidad como la integridad:

Lee el PN del encabezado CCMP y verifica que es mayor que el último PN recibido. Si es igual o menor, descarta el paquete (protección anti-replay).

Reconstruye el nonce usando MAC del emisor y el PN recibido.

Genera el mismo keystream AES-CTR con la TK compartida y el nonce.

Descifra el payload: datos + MIC = ciphertext XOR keystream

Recalcula el MIC sobre las cabeceras autenticadas (AAD) y los datos descifrados.

Compara el MIC calculado con el MIC recibido (descifrado). Si coinciden, el paquete es válido y se entrega a las capas superiores.

✅ MIC coincide

Paquete aceptado. Confidencialidad, integridad y autenticidad verificadas.

❌ MIC no coincide

Paquete descartado silenciosamente. Indica modificación o replay.

❌ PN repetido

Paquete descartado. Protección contra ataques de repetición.

Hugo — WPA2-PSK es robusto criptográficamente, pero su talón de Aquiles sigue siendo la passphrase. Si la contraseña es débil o está en un diccionario, basta capturar el 4-Way Handshake (o un PMKID) para intentar crackearla offline con herramientas como aircrack-ng, hashcat o john. Una passphrase larga y aleatoria elimina prácticamente este riesgo.