Vulnerabilidades del cifrado WEP
 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.
Explotando la reutilización del keystream.
Una vez localizados dos paquetes con el mismo IV se pueden aplicar varios métodos para recuperar el texto plano.
Conocido el texto en plano de uno de los mensajes es muy sencillo acceder a los contenidos del otro.
Hay muchas formas de obtener candidatos plausibles de texto plano.
Muchos  campos del tráfico IP son predecibles, ya que los protocolos utilizados  usan estructuras de mensaje perfectamente conocidas.
Por ejemplo,  las secuencias de entrada a sistemas son bastante uniformes para la  mayor parte de los usuarios, y también lo son los contenidos (la palabra  Password: como mensaje de bienvenida), que pueden ser utilizados para  ataques a la clave.
Otro ejemplo podría consistir en la  posibilidad de reconocer por análisis de tramas de tráfico y longitud  una librería compartida que estuviese siendo transferida en un sistema  de red. Esto suministraría una gran cantidad de texto plano conocido que  permitiría su utilización para realizar un ataque al keystream por  reutilización.
Es posible provocar la transmisión de textos  planos conocidos enviandolos directamente al terminal móvil desde un  ordenador conectado a internet en manos del agresor.
El agresor  también puede enviar correo electrónico a usuarios y esperar que lo  descarguen por medio del enlace inalámbrico. Enviar correo no solicitado  (spam, en argot) puede ser un buen método para hacer esto sin levantar  sospechas.
A veces obtener texto plano conocido puede ser incluso  más sencillo. Un punto de acceso que probamos emitía paquetes broadcast  de modo cifrado y no cifrado cuando la opción de controlar el acceso a  la red estaba desactivada. En este caso, un agresor con una tarjeta  802.11 puede transmitir broadcasts al punto de acceso (que serán  aceptados, porque el control de acceso está desactivado) y observar su  forma cifrada durante la retransmisión. Es inevitable que esto suceda en  una subred que contiene una mezcla de clientes WEP con otros sin  soporte para cifrado, ya que los paquetes broadcast deben llegar a todos  y cada uno de los clientes; no hay forma de evitar esta técnica para  recoger texto plano conocido.
En definitiva, incluso sin conocer  ningún texto plano es posible analizar, por medio de suposiciones,  posibles textos planos susceptibles de ser transmitidos que puedan  desembocar en la obtención del la clave privada.
Diccionarios de descifrado.
Una  vez que se obtiene el texto plano de un mensaje se puede aislar el  valor del keystream, ya sea por análisis de IVs o por otros métodos.
Es posible usar este keystream para descifrar cualquier otra trama que utilice un mismo IV.
Dado  que las claves secretas compartidas k son cambiadas ocasionalmente, el  agresor, acumulando datos, puede construir una tabla de keystreams que  correspondan a distintas IV.
Una vez que se tiene la tabla, es posible descifrar inmediatamente cada texto cifrado con muy poco esfuerzo.
Esto  es independiente de la longitud de la clave de cifrado, ya que el  tamaño del diccionario depende del tamaño de IV, que está prefijado en  24 bits.
Es más, el diccionario del agresor puede hacerse más  práctico aprovechando el comportamiento de las tarjetas PCMCIA que ponen  el vector IV a 0 cada vez que son reiniciadas.
Puesto que en los  casos más comunes las tarjetas son iniciadas al menos una vez al día, el  agresor puede limitarse a construir un diccionario centrado sólo en los  primeros miles de IVs, lo que le permitirá descifrar la mayoría de los  paquetes que circulen a través del punto de acceso.
En una red con numerosos clientes 802.11 las colisiones en los primeros miles de IV’s serán abundantes.
Gestión de claves
El estándar 802.11 no especifica cómo llevar a cabo la distribución de claves.
Depende de un mecanismo externo para poblar la matriz de cuatro claves compartida globalmente.
Cada mensaje contiene un campo identificador de clave especificando el índice de la matriz que se utiliza para el cifrado.
El  estándar también permite asociar una clave específica de la matriz para  cada estación móvil; sin embargo, está práctica no es habitual. La  mayoría de las instalaciones usan una única clave para la toda red.
Esto  perjudica severamente la seguridad del sistema, ya que las contraseñas  están almacenadas en los terminales clientes. Con técnicas de hacking  habituales pueden ser robadas fácilmente.
La reutilización de una  clave única por muchos usuarios ayuda también a convertir los ataques  en algo más práctico, porque aumenta la posibilidad de colisión de IVs.
La  posibilidad de una colisión casual aumenta proporcionalmente con número  de usuarios, y si además tenemos en cuenta que las tarjetas PCMCIA  establecen a 0 el vector IV cada vez que son reiniciadas todos los  usuarios reutilizarán keystreams correspondientes a un pequeño rango de  IVs.
El hecho de que muchos usuarios compartan las mismas claves  también significa que es difícil sustituir esta información, porque  resulta comprometido ponerla en boca de todos.
Además esto no será  habitual puesto que cambiar una clave requiere que todos y cada uno de  los usuarios reconfiguren su adaptador inalámbrico.
En la  práctica estimamos que puedan pasar meses, o incluso más tiempo, antes  de que se cambien las claves privadas, lo que permite al potencial  agresor disponer de una generosa cantidad de tiempo para buscar  instancias de reutilización de keystreams.