Voy a hacer un pequeño aporte
Primero como ya dijo Unravel WEP usa el algoritmo de encriptacion RC4 con claves de 64 bits. Estos 64 bits están formados por 24 bits correspondientes al vector de inicialización más 40 bits de la clave secreta(lo que ingresas manualmente). El vector de inicialización (IV) es generado dinámicamente y debería ser diferente para cada trama. El objetivo perseguido con el IV es cifrar con claves diferentes para que un posible atacante no pueda capturar suficiente tramas cifrados con la misma clave y terminar finalmente deduciendo la clave.
Bueno veamos porque WEP es tan insegura
...
Como ya explico Unravel el estándar 802.11 no especifica cómo manejar el IV; se indica que debería cambiarse en cada trama para mejorar la privacidad, pero no obliga a ello. Queda abierta a los fabricantes la cuestión de cómo variar el IV en sus productos. De aqui que la mayoria optan por una solución sencilla: cada vez que arranca la tarjeta de red, se fija el IV a 0 y se incrementa en 1 para cada trama. Esto ocasiona que las primeras combinaciones de IVs y clave secreta se repitan muy frecuentemente.
Por otro lado, el número de IVs diferentes no es demasiado elevado (2^24=16 millones aprox.
), por lo que terminarán repitiéndose en cuestión de minutos u horas
. El tiempo será menor cuanto mayor sea la carga de la red. Más aún, si tenemos en cuenta que cada estación utiliza la misma clave secreta.
WEP seria "la mejor seguridad" si IV no se repitiese nunca pero como podemos darnos cuenta esto es imposible en WEP. La cantidad de veces que se repite un mismo IV dependerá de la implementación elegida para variar el IV por el fabricante (secuencial, aleatoria, etc.) y de la carga de la red.
La longitud de 24 bits para el IV forma parte del estándar y no puede cambiarse; existen implementaciones con claves de 128 bits (lo que se conoce como WEP2), sin embargo, en realidad lo único que se aumenta es la clave secreta (104 bits) pero el IV se conserva con 24 bits. El aumento de la longitud de la clave secreta no soluciona la debilidad del IV.
Si se han capturado varias tramas con igual IV, es decir, con igual keystream, solo se necesita conocer el mensaje sin cifrar de una de ellas, haciendo el XOR entre un mensaje sin cifrar y el mismo cifrado, nos dará el keystream para ese IV. Conociendo el keystream asociado a un IV, se puede descifrar todas las tramas que usen el mismo IV (Explicado ya por nuestro amigo Unravel). El problema es entonces conocer un mensaje sin cifrar, aunque esto no es tan complicado, porque existen tráficos predecibles o bien, se pueden provocar
(mensajes ICMP de solicitud y respuesta de eco, confirmaciones de TCP, etc.).