WPA2: ¿Cómo funciona este algoritmo? Seguridad Wi-Fi

Publicado por Diego Córdoba en

Hoy haré una breve introducción y funcionamiento del protocolo de de autenticación y privacidad WPA2 para aprender por qué puede ser vulnerable a algunos ataques.

Este artículo forma parte de la Serie sobre Criptografía Aplicada publicada en este blog. Pueden visitar el índice de la serie para acceder a todo el contenido.


El protocolo IEEE 802.11i-2004, o mas conciso, 802.11i, e una modificación del original 802.11 implementado como WPA2, o WiFi Protected Access 2. Este estándar especifica mecanismos de seguridad en redes inalámbricas, reemplazando la cláusula de autenticación y privacidad del estandar original.

Este estándar dejó obsoleto al viejo WEP (wireless equivalent privacy), mientras que estos mecanismos fueron agregados también al estándar publicado como IEEE 802.11-2007.

Reemplazando a WEP

802.11i viene a reemplazar al viejo y conocido WEP, que mostró muchas vulnerabilidades. El protocolo WPA (Wireless Protected Access) había sido introducido por la WI-FI Alliance como una solución intermedia a las inseguridades de WEP.

WPA implementa un subconjuto de borradores del 802.11i, el llamado RSN (Robust Security Network – Red de seguridad robusta), y además, el WPA2 hace uso del algoritmo de cifrado simétrico de bloques AES (Advanced Encryption Standard), mientras que tanto WEP como WPA utilizaban al cifrador simétrico de

Funcionamiento del protocolo

WPA2 mejoró la versión anterior con dos nuevos protocolos:

  • 4-way handshake – negociación de 4 mensajes
  • Group key handshake – negociación de clave de grupo

Estos protocolos utilizan el servicio de autenticación y control de acceso descrito en el estándar IEEE 802.1X para establecer y cambiar apropiadamente las claves criptográficas.

EL RSN es una red de seguridad que solo permite la creación de asociaciones robustas de seguridad, o RSNAs (Robust security network associations), un tipo de asociación utilizada por un par de estaciones si el procedimiento de autenteicación entre ambas incluye el 4-way handshake.

El estándar también provee dos protocolos de integridad y confidencialidad de datos de RSNA, TKIP y CCMP.

El proceso inicial de autenticación es llevado a cabo o utilizando una PSK (pre-shared key) o siguiendo el intercambio EAP a través de las definiciones del IEEE 802.1X, también conocido como EAPOL, que requiere la presencia de un servicio de autenticación.

Este proceso asegura que un cliente es autenticado con el AP o router (Access Point). Después de la autenticación de PSK o EAP, se genera una clave secreta compartida, llamada PMK (pairwise master key). La PMK es generada desde una contraseña que es establecida a través de una función Hash (específicamente, PBKDF2-SHA1). En un sistema de PSK, la PMK es realmente la misma PSK seteada por el usuario. Si el sistema autentica con EAP, la PMK es generada desde los parámetros provistos por el servidor de autenticación.

El 4-way handshake de WPA2

El handshake de 4 caminos está diseñado de modo que el AP, o authenticator, y el cliente inalámbrico, o supplicant, puedan independientemente proveer al otro la clave que conocen para el PSK/PMK, sin comprometerla, por supuesto.

En vez de enviar la clave al otro nodo, el AP y el cliente cifran un mensaje para el otro, que solo puede ser descifrado con la PMK que han compartido, y si el mensaje puede ser descifrado satisfactoriamente, esto provee información de la PMK.

El handshake de 4-way es crítico para la protección de la PMK de APs maliciosos, por ejemplo, un atacante que intente falsear el SSID del AP original… de modo que el cliente nunca le «dice» al AP su PMK.

La PMK es generada luego de toda la sesión, y debería ser expuesta lo menos posible al medio. No obstante, las claves para cifrar el tráfico sí deben ser enviadas. El handshake de 4-way es utilizado para establecer otra clave, llamada PTK (pairwise Transient Key). La PTK es generada por concatenación de algunos atributos:

  • La PMK
  • Un número de un solo uso (NONCE) del AP: Anonce.
  • Un número de un solo uso del cliente: Cnonce.
  • La dirección MAC del AP
  • La dirección MAC del cliente.

El producto se utiliza como entrada a una función pseudo-random.

Además, el handshake de 4 caminos también produce una clave temporal de grupo, llamada GTK (Group Temporal key), utilizada para descifrar mensajes broadcast y multicast.

El intercambio real del 4-way handshake son los siguientes, y todos viajan en forma de tramas EAPOL-key:

  1. El AP envía un valor nonce al cliente. Este valor se llama Anonce. El cliente genera su propio nonce, llamado Cnonce, y ahora tiene todos los atributos para construir la PTK.
  2. El cliente envía su propio Cnonce al AP junto con un código de integridad de mensaje, o MIC, que permite verificar la autenticidad. Es, en realidad, un HMAC (Hash message authentication code) o, específicamente aquí, MAIC (message authentication and integrity code).
  3. El AP construye y envía al cliente la GTK o clave de grupo, y una secuencia de números acompañada de con otro MIC. Esta secuencia de números será utilizada en la siguiente trama broadcast o multicast, de modo que al recibirla, el cliente puede ejecutar una detección básica de replay.
  4. El cliente envía finalmente una confirmación, o acknowledge (ACK) al AP.
wpa2 wpa wifi wireless security infosec wep cipher

Generación de otras claves

La Pairwise Transient Key o PTK, de 64 bytes de longitud, se divide en cinco claves distintas:

  1. 16B de la clave de confirmación EAPOL-Key (KCK – EAPOL-Key Confirmation Key), utilizada para calcular el MIC en mensaje EAPOL-Key de WPA.
  2. 16B de la clave de cifrado del EAPOL-Key (KEK – EAPOL-Key Encryption Key), utilizada por el AP para cifrar los datos adicionales enviados al cliente, por ejemplo, el RSN o la GTK.
  3. 16B de la clave temporal (TK – Temporal Key), utilizada para cifrar o descifrar paquetes de datos unicast.
  4. 8B para la clave de autenticación del MIC para los paquetes enviados desde el AP al cliente.
  5. 8B para la clave de autenticación del MIC para los paquetes enviados desde el cliente al AP.

La Group Temporal key o GTK, de 32B, se divide en tres claves separadas:

  1. 16B para la clave de cifrado GTK, utilizada para cifrar y descifrar tráfico de datos multicast y broadcast.
  2. 8B para la clave de autenticación del MIC para los paquetes enviados desde el AP en multicast/broadcast.
  3. 8B para la clave de autenticación del MIC para los paquetes recibidos por el AP en multicast/broadcast.

Cabe aclarar que las claves MIC de autenticación para tráfico saliente y entrante del AP solo se usan si la red está utilizando cifrado de datos TKIP.

El handshake de la clave de grupo

La GTK utilizada en la red podría necesitar actualizarse luego de un tiempo de expiración. Cuando un dispositivo deja la red, la GTK también necesita actualizarse. Esto es para evitar que el dispositivo siga recibiendo tráfico multicast y broadcast desde el AP.

Para manejar esta actualización de la GTK, el estándar 802.11i define el Group Key Handshake, que consiste en un handshake de 2 pasos (2-way handshake):

  1. El AP envía la nueva GTK a cada cliente en la red. La GTK es cifrada usando la KEK asignada al cliente, y protege los datos de modificaciones utilizando el MIC.
  2. El cliente envía al AP un acuse de recibo / ACK por la nueva clave GTK recibida.

Algunas cuestiones de seguridad

WPA2 es inseguro en alguno de estos casos:

Contraseña débil

Las claves de autenticación de WPA y WPA2 son vulnerables a password cracking por fuerza bruta, por lo que se recomienda siempre claves de alrededor de 20 caracteres.

Spoofing de tráfico WPA y descifrado

Mathy Vanhoef, quien además descubrió recientemente el ataque KRACK mencionado mas abajo, junto con Frank Piessens, demostraron que, mediante un port scanner apuntado a un cliente que utilice WPA-TKIP, es posible inyectar en su conexión paquetes arbitrarios con al menos 112B de paylod, y demostraron cómo descifrar paquetes arbitrarios, lo que puede ser utilizado para robar sesiones TCP de la víctima, permitiendo al atacante inyectar, por ejemplo, código javascript malicioso.

WPS Pin recovery

En Diciembre de 2011 Stefan ViehBök descubrió esta vulnerabilidad en el WiFi Protected Setup. Esto permite a un atacante remoto recuperar el PIN de WPS, y con el, en unas pocas horas, obtener la contraseña WPA/WPA2. Si se puede, es recomendable desactivar la característica de WPS del router. Lo peor, el PIN de WPS suele venir escrito en la etiqueta del router, y muchos routers no permiten modificarlo en el caso de que haya sido comprometido.

MS-CHAPv2

Este protocolo de autenticación de Microsoft cuenta con un amplio repertorio de vulnerabilidades graves, entre las que se encuentran el acceso a las contraserñas por fuerza bruta. Con decir que en el 2012 la seguridad de MS-CHAPv2 se redujo a romper una sola clave DES (Data Encryption Standard), un algoritmo de cifrado simétrico de bloques ya obsoleto.

Hole196

Esta es una vulnerabilidad del protocolo WPA2 que abusa de la GTK. Ella puede ser utilizada para conducir a ataques de MITM (Man In The Middle) y DoS (Denial of Service). No obstante, se asume que el atacante ya está autenticado contra el AP y así puede acceder a la GTK generada.

Lack of forward secrecy

WPA no provee PFS (Perfect Forward Secrecy), lo que significa que si un atacante descubre el PSK, puede descifrar todos los paquetes WIFI cifrados, tanto los futuros, como los pasados, que hayan sido recolectados por el atacante con un sniffer. WPA solo protege a los usuarios de atacantes que no tienen acceso a la contraseña de autenticación, no protege a un usuario de un ataque proveniente de otro usuario de la red WiFi. Es recomendable, por este punto, siempre utilizar SSL/TLS en las comunicaciones, o VPN.

Predictable Group Temporal Key (GTK)

En el 2016 se demostró que WPA y WPA2 contienen un generador numérico aleatorio inseguro. Los investigadores mostraron que, si un fabricante implementa un generador random determinado, un atacante será capaz de predecir el GTK que se supone que es generado aleatoriamente por el AP.

KRACK attack

En octubre de este año, 2017, se descubrió una nueva vulnerabilidad en WPA2, llamada KRACK, un acrónimo de Key Reinstallation AttaCK, y que hemos explicado en detalle en: KRACK y WPA2: detalles técnicos y recomendaciones


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador