WEP utiliza el algoritmo del cifrado RC4, que se conoce como cifrado de flujo. en el que se encriptan los datos realizando una operación lógica OR-Exclusiva entre los bytes y un generador pseudoaleatorio.
Este modo de operación le hace vulnerable a varios ataques, por ejemplo, si se intercepta dos textos cifrados con la misma llave, es posible obtener el XOR de los dos textos, El conocimiento de este XOR puede, mediante ataques estadísticos, recuperar los textos originales. Una vez que uno de los textos se sepa, es trivial recuperar todos los otros.

WEP tiene defensas para este tipo de ataques, por ejemplo un campo para cerciorase de la integridad de los datos, el IC. Para evitar cifrar dos textos con la misma key, se usa un vector de inicialización (iv) para aumentar la llave secreta compartida y generar así una llave RC4 distinta para cada paquete. Sin embargo este tipo de medidas son ejecutadas incorrectamente, como consecuencia de ello la seguridad es baja.

La comprovación de integridad esta implementada mediante el CRC-32 checksum que es linear, con lo que podemos la diferencia de bit entre dos CRCs, o sea q si tomamos un bit del mensaje podemos ajustar la suma de comprovación de manera que en el destino nos diga que el mensaje no ha sido alterado

El vector de inicialización (iv) és un campo de 24 bits que se envia en la parte del "cleartext" del un mensage, un vector tan pequeño nos asegura que la llave se va ha repetir en distintos mensages, por ejemplo un servidor que envia 1500 bytes a 11 Mbps, el espacio del vector se agotará tras 1500*8/(11*10^6)*2^24 ~ 18000 segundos, 5 horas, este tiempo normalmente será menor, puesto que los paquetes en ocasiones serán inferiores a 1500 bytes. Esto permite al atacante que recoja dos textos cifrados con la misma clave y realizando ataques estadísticos podra recuperar el texto original. Pues este error aún es mayor si se utiliza la misma llave para todas las estaciones móviles, esto supondra más colisiones del vector de inicialización.
Por ejemplo, tenemos una targeta PCMCIA que resetea el vector a 0 cada vez que la encendemos, y que en cada paquete que mandemos se incrementa a 1, pues si conetasemos 2 targetas al mismo tiempo y empezaramos a transmitir tambien al mismo tiempo... ya sabemos dos llaves identicas circulando por la red :), bueno pues en realidad es aun peor porque el estádar 802.11 dice que el cambio del vector de inicialización en cada paquete es opcional.

volver