# IEEE 802.11i-2004

IEEE 802.11i-2004 u 802.11i, para abreviar, es una enmienda o corrección al IEEE 802.11 original, implementado como Wi-Fi Protected Access II (WPA2). El proyecto de norma fue ratificado el 24 de junio de 2004. Esta norma especifica mecanismos de seguridad para redes inalámbricas, reemplazando la breve cláusula de autenticación y privacidad de la norma original con una cláusula de seguridad detallada. En el proceso, la enmienda desaprobó la Privacidad Equivalente por Cable (WEP), mientras que más tarde se incorporó al estándar IEEE 802.11-2007 publicado.

## Reemplazo de WEP

802.11i reemplaza la especificación de seguridad anterior, Wired Equivalent Privacy (WEP), que se demostró que tenía vulnerabilidades de seguridad. Acceso protegido Wi-Fi (WPA) había sido introducido previamente por Wi-Fi Alliance como una solución intermedia para las inseguridades de WEP. WPA implementó un subconjunto de un borrador de 802.11i. Entre ellas se añadió un protocolo de seguridad adicional llamado Temporal Key Integrity Protocol (TKIP). Wi-Fi Alliance se refiere a su implementación aprobada e interoperable del 802.11i completo como WPA2, también llamado RSN (Red de seguridad robusta). 802.11i hace uso del cifrado de bloques del Estándar de Cifrado Avanzado (AES), mientras que WEP y WPA usan el cifrado de flujo RC4.

## Operación de protocolo

IEEE 802.11i mejora IEEE 802.11-1999 al proporcionar una red de seguridad robusta (RSN) con dos protocolos nuevos: el protocolo del Handshaking de cuatro vías y el protocolo del Handshaking de la clave de grupo. Estos utilizan los servicios de autenticación y el control de acceso a puerto descritos en IEEE 802.1X para establecer y cambiar las claves criptográficas apropiadas. El RSN es una red de seguridad que solo permite la creación de asociaciones robustas de redes de seguridad (RSNA), que son un tipo de asociación utilizada por un par de estaciones (STA) si el procedimiento para establecer la autenticación o asociación entre ellas incluye el Handshaking de cuatro vías[4].
El estándar también proporciona dos protocolos de integridad y confidencialidad de datos de RSNA, TKIP y CCMP, siendo obligatoria la implementación de CCMP debido a que los mecanismos de confidencialidad e integridad de TKIP no eran tan robustos como los de CCMP. El principal motivo para añadir TKIP fue para dar soporte a la mayoría de los dispositivos antiguos que solo tenían soporte WEP.
El proceso de autenticación inicial se lleva a cabo utilizando una clave pre-compartida (PSK) o siguiendo un intercambio de EAP a través de 802.1X (conocido como EAPOL, que requiere la presencia de un servidor de autenticación). Este proceso asegura que la estación del cliente (STA) se autentique con el punto de acceso (AP). Después de la autenticación PSK o 802.1X, se genera una clave secreta compartida, llamada la clave maestra por pares (PMK). El PMK se deriva de una contraseña que se pasa por PBKDF2-SHA1 como la función hash criptográfica. En una red pre-compartida (red con clave pre-compartida), el PMK es realmente el PSK. Si se realizó un intercambio 802.1X EAP, el PMK se deriva de los parámetros EAP proporcionados por el servidor de autenticación.

### Handshaking de cuatro vías

El protocolo de Handshaking de cuatro vías está diseñado para que el punto de acceso (o autentificador) y el cliente inalámbrico (o suplicante) puedan demostrarse mutuamente que conocen el PSK / PMK, sin revelar la clave. En lugar de divulgar la clave, el punto de acceso (AP) y el cliente cifran mensajes entre sí -que solo pueden descifrarse utilizando el PMK que ya comparten- y si el descifrado de los mensajes fue exitoso, esto prueba el conocimiento del PMK. El Handshaking cuatro vías es fundamental para proteger el PMK de los puntos de acceso maliciosos, por ejemplo, el SSID de un atacante que se hace pasar por un punto de acceso real, para que el cliente nunca tenga que decirle al punto de acceso su PMK.
El PMK está diseñado para durar toda la sesión y debe exponerse lo menos posible; por lo tanto, se deben derivar las claves para encriptar el tráfico. Un Handshaking de cuatro vías se usa para establecer otra clave llamada clave transitoria por pares (PTK). El PTK se genera concatenando los siguientes atributos: PMK, AP nonce (ANonce), STA nonce (SNonce), dirección del punto de acceso MAC (AP MAC address) y dirección de la estación MAC (STA MAC address). El producto se somete a una función pseudoaleatoria. El Handshaking también produce GTK (Clave de grupo temporal), que se usa para descifrar el tráfico de multicast y broadcast.
Los mensajes reales intercambiados durante el protocolo de Handshaking se representan en la figura y se explican a continuación (todos los mensajes se envían como marcos clave EAPOL):
* El AP envía un valor nonce a la STA (ANonce). El cliente ahora tiene todos los atributos para construir el PTK.
* El STA envía su propio nonce-valor (SNonce) al AP junto con un Código de Integridad del Mensaje (MIC), incluyendo autentificación, el cual es realmente una Autentificación de Mensaje y Código de Integridad (MAIC).
* El AP construye y envía el GTK y un número de secuencia junto con otro MIC. Este número de secuencia se usará en el siguiente cuadro de multicast o transmisión, de modo que la STA receptora pueda realizar una detección de reproducción básica.
* El STA envía una confirmación al AP.
La STA envía una confirmación al AP. La clave transitoria por pares (64 bytes) se divide en cinco claves separadas:
* 16 bytes de clave de confirmación de la clave-EAPOL (KCK): se utiliza para calcular MIC en mensaje clave WAP EAPOL.
* 16 bytes de clave de encriptación de la clave-EAPOL (KEK): AP utiliza esta clave para cifrar datos adicionales enviados (en el campo 'Key Data' o ‘información clave’) al cliente (por ejemplo, el RSN IE o el GTK).
* 16 bytes de clave temporal (TK): se utiliza para encriptar / desencriptar paquetes de datos de unidifusión.
* 8 bytes de la clave Tx del autenticador de código de integridad de mensajes (MIC) de Michael: se utiliza para calcular MIC en paquetes de datos de unidifusión transmitidos por el AP.
* 8 bytes de la clave Rx del autenticador de código de integridad de mensajes (MIC) de Michael: Se utiliza para calcular MIC en paquetes de datos de unidifusión transmitidos por la estación.
La clave temporal del grupo (32 bytes) se divide en tres claves separadas:
* 16 bytes de clave de cifrado temporal de grupo: se utiliza para encriptar / desencriptar paquetes de datos de multicast y diffusion.
* 8 bytes de la clave Tx del autenticador de código de integridad de mensajes (MIC) de Michael: se utiliza para calcular MIC en paquetes de multicast y broadcast transmitidos por AP
* 8 bytes de la clave Rx del autenticador de código de integridad de mensajes (MIC) de Michael: actualmente no se utiliza, ya que las estaciones no envían tráfico de multicast
Las claves Tx / Rx del autenticador de código de integridad de mensajes de Michael en PTK y GTK solo se utilizan si la red está utilizando TKIP para encriptar los datos.
El Handshaking de cuatro vías ha demostrado ser vulnerable a KRACK.

### Handshaking de la clave de grupo

La clave temporal del grupo (GTK) utilizada en la red puede necesitar ser actualizada debido a la expiración de un temporizador preestablecido. Cuando un dispositivo abandona la red, el GTK también necesita ser actualizado. Esto es para evitar que el dispositivo reciba más mensajes de multicast o de broadcast desde el AP (punto de acceso).
Para manejar la actualización, 802.11i define un Handshaking de clave grupal que consiste en un Handshaking bidireccional:
* El AP envía el nuevo GTK a cada STA en la red. El GTK se cifra con la KEK asignada a esa STA, y protege los datos contra la manipulación, mediante el uso de un MIC.
* La STA reconoce el nuevo GTK y responde al AP.