En publicaciones anteriores se ha venido hablando sobre los conceptos básicos en redes inalámbricas y se ha hecho un especial énfasis en las vulnerabilidades existentes en las redes que utilizan WEP como algoritmo para el cifrado de datos. Sin lugar a dudas WEP no es seguro desde ningún punto de vista y aunque existan algunos mecanismos que puedan hacerlo un poco más resistente a determinados ataques, existía una clara necesidad de crear un nuevo mecanismo para el cifrado de paquetes inalámbricos de forma robusta, segura y eficiente. Es aquí donde entra en juego WPA y WPA2, como reemplazos mucho más óptimos y seguros que cualquier implementación de WEP.

WPA son las siglas de Wifi Protected Access y se encuentra implementado en siguiendo el estándar IEEE 802.11i (casi en su totalidad), sin embargo no se trata de una solución “a largo plazo” de hecho, WPA se trata de una solución intermedia que permita realizar la transición entre WEP y WPA, solamente WPA2 es una solución que se ha diseñado para ser “a largo plazo” y se encuentra diseñada para los dispositivos inalámbricos más recientes (aquellos que soporten el estándar IEEE 802.11). Como puede extraerse de las lineas anteriores WPA y WPA2 NO SON iguales (aunque algunas personas los mencionen de forma indistinta como si se tratasen de la misma solución). A continuación se destacan las principales diferencias entre WPA y WPA2.

WPA

WPA2

Solución intermedia que sirve de transición entre WEP y WPA

Solución definitiva (a largo plazo) que soporta completamente el estándar IEEE 802.11i

No requiere ningún cambio en el hardware utilizado, ya que “hereda” directamente de WEP. Esto quiere decir, que si un dispositivo ha utilizado WEP anteriormente, éste soportará WPA. Solamente será requerido la actualización del firmware.

Requiere un cambio en el dispositivo de hardware utilizado para que soporte WPA2 y las características del estándar IEEE 802.11i. Esto quiere decir que si un dispositivo ha utilizado anteriormente WEP posiblemente no soportará WPA2 y sea requerido utilizar un hardware (tarjeta de red) más moderna.

Usa TKIP que se encuentra basado en WEP, pero implementa algunas características de seguridad adicionales que le hacen bastante llamativo y difícil de crackear.

Usa CCMP el cual se encuentra basado en AES el cual es sustancialmente más seguro que cualquiera de las implementaciones basadas en WEP existentes.

Ahora bien, tanto WPA como WPA2 tienen dos tipos distintos de ediciones, los cuales son Personal y Enterprise, que como se podrá intuir, son simplemente para el uso personal en redes domesticas y para el uso empresarial en redes con un número de clientes mayor. La edición personal utiliza PSK (Pre-Shared Key) mientras que para la edición empresarial existe un protocolo que en teoría es más sofisticado y seguro llamado 802.1x-radius.

Ahora bien, del mismo modo que anteriormente se ha explicado la estructura de los paquetes wireless que viajan por una red, los paquetes con cifrados WPA/WPA2 tienen campos que permiten identificar características propias de la red, toda esta información se encuentra en los Beacon Frames que son enviados desde el AP, tal y como se enseña en la siguiente imagen.

 

Como se puede apreciar en la imagen anterior, el Beacon Frame, contiene toda la información que necesita el cliente para saber que parámetros de configuración debe aplicar para realizar una conexión. Tal y como se ha visto, los mecanismos de cifrado empleados para en envío de paquetes por un canal multicast o unicast es TKIP mientras que el mecanismo de cifrado empleado para la autenticación de usuarios es PSK todos estos valores siempre se encuentran localizados en fragmentos con nombre “Tag interpretation” los cuales se encuentran en la sección de “Tagged Parameters” del paquete wireless. En el caso anterior, se trata de un AP con WPA habilitado, en el caso de que el AP tenga WPA2, los campos que contendrá el AP serán similares a los de la siguiente imagen:

 

En la imagen anterior, se puede apreciar que también existen campos del tipo “Tag Information” sin embargo en estos casos los valores son distintos, como se puede ver los mecanismos de cifrado empleados para en envío de paquetes por un canal multicast o unicast es AES en lugar de TKIP (el cual es el mecanismo en WPA). Además la estructura principal donde se encuentran estos valores es RSD (Robust Security Network)

Todos estos valores son aplicables únicamente en la versión Personal de WPA y WPA2 ya que en la versión Enterprise, estos campos y su funcionamiento cambia un poco.

Conceptos básicos sobre WPA Pre-Shared Key (PSK)

Como se recordará de publicaciones anteriores, el proceso de comunicación que se lleva a cabo entre un cliente y un AP consiste en el intercambio de una serie de paquetes Probe Request (cliente), Probe Response (AP), Authentication Request (client), Authentication Response (AP), Association Request (client) y Association Response (AP). Hasta este punto un cliente se encontraría asociado con un AP y posteriormente vendría el intercambio de paquetes de datos entre el cliente y el AP, estos datos se cifran /descifran utilizando una clave WEP estática que es conocida tanto por el cliente como por el AP y durante toda la sesión en la que el cliente intercambia paquetes de datos con el AP esta misma clave es utilizada para cifrar y descifrar todos y cada uno de los paquetes intercambiandos (sin importar el tipo de paquete). Es aquí donde comienza una de la mejoras que se han implementado en WPA para mejorar el mecanismo empleado por WEP, ya que en WPA, la clave compartida que se utiliza en WEP es ELIMINADA y para cifrar cualquier paquete de datos en clientes y AP es empleado un mecanismo de generación de clave dinámica entre cliente y AP, esto simplemente significa que para cada sesión entre clientes y el AP, se utiliza un par de claves distinto a los de los demás clientes, dado que este comportamiento es altamente aleatorio, los ataques que eran comúnmente empleados en WEP, ya no son validos bajo este escenario dinámico.

Ahora bien, lo que es realmente interesante de esto, es saber como se genera de forma dinámica dichas claves, pues bien, este proceso se lleva a cabo gracias al algoritmo PBKDF2 la implementación de este algoritmo permite la generación de lo que comúnmente se conoce como Pre-Shared Key (PSK) y se trata de un algoritmo que se basa en una clave de entre 8 y 63 caracteres (que es la que normalmente se suele establecer cuando un AP tiene protección WPA) la cual es tomada como parámetro y finalmente con dicho valor se genera de forma aleatoria una nueva PSK. El algoritmo PBKDF2 en su implementación interna(sin entrar en demasiados detalles) toma 5 parámetros que son

  1. El passphrase (la clave del AP seleccionada por el administrador del router)

  2. El SSID

  3. La longitud de dicho SSID

  4. Número de veces que el passphrase será codificado (hashed) 4096

  5. La longitud de la clave PSK (256)

Con estos parámetros el algoritmo genera una clave PSK de una longitud de 256 caracteres la cual será utilizada para cifrar y descifrar paquetes de datos. Este mismo procedimiento es llevado a cabo tanto en los clientes (que en el contexto de WPA son conocidos como Supplicants) como en AP (que en el contexto de WPA son conocidos como Authenticators). Es importante comprender esto ultimo, ya que normalmente en muchos de los documentos disponibles en internet sobre WPA/WPA2 a los clientes se les suele llamar Supplicants y a los AP se les suele llamar Authenticator, es solamente una cuestión de terminología, sin embargo estos términos son equivalentes a lo que conocemos como clientes y AP.

Todo lo que se ha descrito en las lineas anteriores puede resumirse brevemente con la siguiente imagen:

 

Ahora bien, hasta este punto solamente se tiene un par de claves PSK que serán utilizadas en el Supplicant y en Authenticator, ahora llega el momento de intercambiar paquetes de datos entre ambas entidades utilizando dichas claves PSK. Este procedimiento se es conocido como 4-Way Handshake que se resume con los siguientes pasos:

  1. El Authenticator envía un mensaje al supplicant con un valor generado aleatoriamente utilizando su clave PSK (se trata simplemente de un valor arbitrario sin ningún tipo de significado especial), este mensaje es conocido como un Authenticated nonce o simplemente Anonce dado que este mensaje contiene un campo llamado nonce cuyo valor es el texto generado aleatoriamente con la clave PSK del Authenticator, tal y como se enseña en la siguiente imagen correspondiente a una captura con wireshark

    También existe el campo Replay Counter que es un indicador que le permite saber al Authenticator y al Supplicant el número de paquetes que se han enviado anteriormente.

  2. Posteriormente, el Supplicant recibe dicho mensaje y genera otro mensaje llamado Snonce (Supplicant nonce) que es básicamente del mismo tipo que el paquete Anonce recibido solamente que contiene un nonce distinto (que en este caso es texto un texto arbitrario generado aleatoriamente utilizando la clave PSK del supplicant).

  3. Con la información presentada hasta el paso anterior, el Supplicant procede a crear lo que es conocido como Pairwise Transient Key (PTK) este paso es sumamente importante y es justo donde el lector debe prestar mayor atención, principalmente porque es aquí donde esta la “magia” de PSK y la generación dinámica de claves (que es lo que en un principio se ha implementado para mejorar la seguridad de WEP contra ataques bastante difundidos). Las PTK son las claves generadas en cada paquete intercambiado entre el Supplicant y el Authenticator y son generadas utilizando la Paiwise Master Key (PMK), pero no os asustéis, se trata de la misma clave PSK generada desde el paso 1. Es decir, que cada PTK es dinámicamente generada por las PSK del supplicant y el authenticator.

  4. El procedimiento de generación de la clave PTK es realmente importante, por este motivo es necesario comprenderlo, en este paso, la PTK es generada por la PMK utilizando una función de generación aleatoria de claves PTK que toma como parámetros

    1. PMK, que como ya se ha indicado es la PSK generada por ambas entidades (Supplicant y Authenticator) utilizando el algoritmo PBKDF2.

    2. Anonce, Como se ha indicando anteriormente, el paquete generado por el Authenticator que contiene un texto aleatorio cifrado con su clave PSK.

    3. Snonce, Como se ha indicado anteriormente, el paquete generado por el Supplicant que contiene un texto aleatorio cifrado con su clave PSK.

    4. MAC del Authenticator

    5. MAC del Supplicant

  5. Ahora, el supplicant procede a enviar un paquete al Authenticator con el mensaje Snonce y un campo MIC (Campo cifrado utilizando el mecanismo de cifrado Michael) que permite realizar el chequeo de integridad y consistencia del paquete, este campo es generado por el supplicant utilizando la PTK y la PMK. La siguiente imagen de captura enseña claramente como los campos WPA Key MIC y Nonce

  6. Con el paquete enviado anteriormente por el Supplicant, el Authenticator ahora procede a derivar la clave PTK dado que ahora conoce los campos necesarios para hacer el calculo: PMK (que es la misma para el Supplicant y el Authenticator), Anonce, Snonce y las direcciones MAC del Authenticator y el Supplicant.

  7. Ahora bien, una vez el Authenticator a podido generar el PTK con los campos recibidos del paquete anterior (con el campo Snonce) intenta generar el campo MIC dado que cuenta con la misma PTK y PSK que el Supplicant, el MIC generado por el Authenticator y el Supplicant deben de ser el mismo, en tal caso envía un mensaje al Supplicant del tipo “Key Installation” este mensaje puede verse con la “Flag” del tipo “Install Flag” la cual puede apreciarse en el tercer paquete intercambiado en el proceso de autenticación, tal como muestra la siguiente imagen de una captura con wireshark

    En este caso, “Comrend” es el Authenticator, ya que este mensaje es enviado desde el Access Point.

    NOTA: En el caso de que el chequeo del MIC falle (el valor calculado por el Authenticator no corresponde con el valor enviado por el Supplicant) el Autenticator inmediatamente finaliza el proceso enviando un paquete de DeAuthentication.

  8. Finalmente el Supplicant envía un mensaje de “Key Install Acknowledgement” el cual es simplemente una confirmación que se envía al authenticator para que en esta sesión de intercambio de paquetes, se utilice la misma PTK generada en el cliente y el AP. Este paquete simplemente contiene un campo “Key ACK” con un valor de 0 indicando que es el ultimo mensaje enviado en el proceso de autenticación entre el Supplicant y el Authenticator

Este es todo el procedimiento de autenticación, entre el Supplicant y el Authenticator, sin embargo, dado que todo se comprende mejor con imágenes….

 

Esto es todo (por ahora) se trata de una introducción bastante completa a los conceptos básicos sobre WPA y WPA2, no obstante, en próximas publicaciones se intentará profundizar un poco más sobre el funcionamiento de WPA/WP2 y algunas técnicas de hacking/cracking existentes actualmente.