Cifrado WEP (Wireless Equivalent Privacy).

Es un mecanismo de cifrado de datos utilizado por el protocolo de comunicación WiFi.
Tras este pretencioso nombre se esconde en realidad el algoritmo de cifrado de clave simétrica RC4.

RC4

RC4 es un algoritmo de cifrado de flujo. Los cifrados de flujo funcionan expandiendo una clave secreta (en el caso de WEP, una vector de inicialización(IV) público y una clave secreta) en una clave arbitrariamente larga de bits pseudo aleatorios (el keystream).

El cifrado se lleva a efecto aplicando or-exclusivos al texto plano P antes de enviarlo.
Simbólicamente, este proceso puede ser representado así:
A -> B: v,(P (+) RC4(iv, k));

El descifrado consiste sencillamente en invertir el proceso. Generar un keystream idéntico basado en la IV compartida y en la clave secreta, para después aplicar de nuevo la función XOR sobre el texto cifrado.

Además entran en juego unas sumas de chequeo que comprueban que el mensaje no ha sido alterado por el camino.

Como veremos con detalle, WEP adolece de varias vulnerabilidades severas de seguridad.

Estas vulnerabilidades dan lugar a cierto número de ataques, tanto activos como pasivos, que permiten escuchar y alterar conexiones inalámbricas.

Análisis seguridad WEP.

Como se demostró hace un par de años, el algoritmo RC4 sufre múltiples vulnerabilidades, entre las cuáles destacan las que permiten reducir la longitud efectiva del cifrado a 24 bits, en lugar de los 128 que se pueden definir como máximo en WEP.

Nótese que un cifrado de 64 no es la mitad de débil que uno de 128, sería uno de 127 bits.
2^128 / 2^1 = 2^ (128-1) = 2^127, con lo que uno de 24 es la mitad de la mitad de la mitad …etc de débil que uno de 128.

Reutilización del KeyStream.

Una debilidad bien conocida de los algoritmos de cifrado de flujo es que cifrando dos mensajes (P1, P2) con la misma clave (k) y vector IV se puede revelar información sobre ambos mensajes:

Si C1 = P1 (+) RC4(iv, k)
y C2 = P2 (+) RC4(iv, k)

entonces

C1 (+) C2 = (P1 (+) RC4(iv, k)) (+) (P2 (+) RC4(iv, k)) = P1 (+) P2

En otras palabras, aplicando XOR a los dos textos cifrados (C1 y C2) el keystream se cancela, y el resultado que obtenemos es el XOR de ambos textos planos (P1 (+) P2).

Esto nos brinda las siguientes posibilidades.

•Conocido el texto plano de uno de los mensajes, dispondremos inmediatamente del otro texto plano.

•Podremos recuperar P1 y P2 teniendo sólo P1 (+) P2, debido a la redundancia que habitualmente tienen los textos planos. Podemos buscar dos textos sobre los que, aplicados un XOR, resulten en el valor dado P1 (+) P2.

Disponiendo de n textos cifrados con el mismo keystream tendremos lo que comúnmente se denomina un problema de profundidad n. Descifrar el tráfico se facilita en tanto en cuando n aumente, ya que el resultado del XOR de cada par de textos planos puede ser calculado, y se conocen varias técnicas clásicas para resolver esta clase de problemas (análisis de frecuencias, etc).

Como vemos para que estos ataques tengan éxito necesitamos disponer de textos cifrados en los que alguna porción del keystream se haya utilizado más de una vez, y de un conocimiento parcial de parte del texto plano.

Para prevenir estos ataques, WEP utiliza un IV diferente por cada paquete transmitido, de este modo, cada paquete recibe un keystream diferente.

El problema es que el vector IV se incluye en la parte no cifrada de la transmisión, para que luego el receptor pueda descifrarlo, y está por tanto disponible también para los agresores, aunque la clave secreta siga siendo desconocida y mantenga la seguridad del keystream.
Una gestión inadecuada del vector IV, que implique su reutilización, provoca como consecuencia una reutilización de la clave keystream, puesto que generalmente la clave secreta compartida k no cambia.

Ya que los IVs son públicos, el duplicado de IVs puede ser fácilmente detectado por los posibles agresores.
Nos referiremos a estas reiteraciones de valores IV como colisiones.

El estándar WEP recomienda (pero no requiere) que IV cambie en cada paquete.
Sin embargo, no dice nada acerca de los mecanismos aconsejables para seleccionar IVs y, por esta razón, algunas implementaciones del sistema lo hacen precariamente.

Hay un gran número de las tarjetas PCMCIA que reestablecen IV a 0 cada vez que son reiniciadas, e incrementan IV en uno en cada paquete posterior.
Estas tarjetas se reinician automáticamente cada vez que se introducen en un portátil, algo que se espera pase a menudo.

En consecuencia, los keystream correspondientes a IVs de valor bajo son susceptibles de ser reutilizados muchas veces durante el tiempo de vida de la clave privada.

Peor aún, el vector IV utilizado en WEP tiene una longitud predefinida de tan sólo 24 bits, está prácticamente garantizando que se usará un mismo IV en múltiples mensajes.

Un cálculo rápido muestra que un punto de acceso ocupado que transmita paquetes de 1500 bytes a una media de 5Mbps de ancho de banda (la velocidad máxima correpondería a 11Mbs) agotará todos los valores posibles de IV en menos de doce horas.

Incluso en instalaciones con menor ocupación de canal, un agresor paciente puede encontrar duplicados fácilmente.

Hay otros detalles de implementación pueden provocar iteraciones del keystream más frecuentemente.
Una implementación que utilizase un IV aleatorio para cada paquete produciría una colisión cada 5000 paquetes aproximadamente, que se resumen en tan sólo varios minutos de transmisión.

Pero lo peor de todo es que el estándar 802.11 no exige que IV cambie en cada paquete, lo que podría permitir el uso de un IV idéntico en todos los paquetes sin que ello suponga una disconformidad con la norma estándar.

Creditos: Unravel

ANTRAX