Como probablemente ya sepa, las empresas utilizan la privacidad equivalente por cable (WEP) para proteger sus conexiones inalámbricas de ataques de detección. Probablemente también hayas escuchado que no es muy seguro. En la primera parte de esta serie de 2 partes explicaré el funcionamiento interno de WEP y lo seguiré el próximo mes con por qué es inseguro.
Como probablemente ya sepa, las empresas utilizan la privacidad equivalente por cable (WEP) para proteger sus conexiones inalámbricas de ataques de detección. Probablemente también hayas escuchado que no es muy seguro. En la primera parte de esta serie de 2 partes explicaré el funcionamiento interno de WEP y lo seguiré el próximo mes con por qué es inseguro.
¿Necesito WEP en absoluto?
Un usuario auténtico, Bob usa su computadora portátil para revisar su cuenta de Gmail todos los días. Tiene una tarjeta inalámbrica en su computadora portátil que detecta automáticamente el punto de acceso inalámbrico (WAP) de su ISP al otro lado de la calle. Una vez que esté conectado al WAP, puede seguir adelante y revisar su correo electrónico. Alice es una usuaria astuta que no quiere pagar al ISP por el acceso a Internet. Sin embargo, sabe que el ISP al otro lado de la calle tiene un punto de acceso al que cualquiera puede conectarse y acceder a Internet. Conecta su computadora portátil y pronto está descargando música de Internet. WEP fue diseñado para garantizar que los usuarios se autentiquen antes de usar los recursos, para bloquear a Alice y permitir a Bob. Veamos cómo hace esto.
Cómo funciona WEP
WEP utiliza el algoritmo RC4 para cifrar los paquetes de información a medida que se envían desde el punto de acceso o la tarjeta de red inalámbrica. Tan pronto como el punto de acceso recibe los paquetes enviados por la tarjeta de red del usuario, los descifra.
Cada byte de datos se cifrará utilizando una clave de paquete diferente. Esto asegura que si un hacker logra descifrar esta clave de paquete, la única información que se filtra es la que está contenida en ese paquete.
La lógica de cifrado real en RC4 es muy simple. El texto plano es XOR-ed con una cadena de teclas infinitamente larga. La seguridad de RC4 proviene del secreto de la clave de paquete que se deriva de la cadena de claves.
¿Qué es una clave de paquete?
La clave de paquete se forma combinando una contraseña previamente compartida, una matriz de estados y un vector de inicialización (IV). Primero entendamos cada uno de estos términos:
Contraseña compartida previa: Todos los usuarios utilizan la misma contraseña compartida previa para cada paquete que se transmite.
Array de estados: Es una serie de números que son codificados y luego utilizados por RC4 para construir la secuencia de claves.
Vector de inicialización (IV): El IV es un número aleatorio de 3 bytes generado por el ordenador. Se adjunta o se anexa al texto cifrado y se envía al receptor que quita el IV antes de descifrar el texto cifrado.
El algoritmo RC4 consta de 2 partes principales:
El Algoritmo de programación de claves: El proceso KSA implica crear una matriz de estados codificada . Esta matriz de estados ahora se utilizará como entrada en la segunda fase, llamada fase PRGA.
El algoritmo de generación Pseudoaleatoria: La matriz de estados del proceso KSA se utiliza aquí para generar un flujo de clave final. Cada byte del flujo de claves generado es entonces Xor’ed con el byte de texto plano correspondiente para producir el texto cifrado deseado.
Algoritmo de programación de claves
El IV se calcula utilizando una matriz de estados y las propiedades de la contraseña previamente compartida. Esto se logra creando una matriz de valores iguales al índice que desea usar en el algoritmo. El índice para WEP por defecto es 256. Los componentes necesarios para la KSA son los valores de las variables i y j, el valor de índice, la contraseña previamente compartida y su longitud. El algoritmo que utiliza estos valores para generar un flujo de claves final se describe a continuación.
Inicialización:
For i=0 ... index-1
S=i
J=0
Codificar:
For i=0 ... index-1
J = j + state + K
Swap(state , state)
Un bucle se ejecuta primero de 0 a index-1 para inicializar la matriz de estados con valores de 0 a index. Por ejemplo. Si index = 4, la matriz de estados se rellenará con valores de 0 a 3. Por lo tanto, los valores de la matriz serán los siguientes:
s=0 s=1 s=2 s=3
El valor de j se establece en 0. Luego se inicia otro bucle. Para cada vez que pasa por el bucle, se calcula el valor de j, y el valor de la matriz mantenido en estado se intercambia por el valor mantenido en estado .
Algoritmo de generación pseudoaleatoria (PRGA)
Un generador de números pseudoaleatorios (PRNG) es un algoritmo que genera una secuencia aleatoria de números. La PRGA es responsable de crear los valores de transmisión utilizados para cifrar el texto plano, que se basa en la matriz de estados, la salida de la KSA . A continuación se describe la metodología que sigue el PRGA.
Inicialización:
I=0 j=0 index=4
Algoritmo de generación
I=(i+1) mod index
J=(j+state) mod index
Swap(state, state)
Z=state + statemod index]
El valor de transmisión se crea mediante un bucle a través del algoritmo para cada byte del paquete. Las variables i y j se inicializan a 0. Para cada paquete se calcula el valor de j, y el valor de matriz mantenido en estado se intercambia por el valor mantenido en estado . La salida z se calcula entonces para cada paquete. Al final del proceso tenemos una corriente PRGA.
La secuencia PRGA es entonces Xor’ed con el texto plano para generar texto cifrado que se transmite a la otra parte.
Un ejemplo
Ilustremos los conceptos anteriores en forma de ejemplo. El texto plano que se va a cifrar es PRUEBA. La contraseña que se utilizará aquí es 6258. Los valores iniciales de nuestra variable son los siguientes:
i=0 j=0 password=6258 pass length=4 index=4
Siguiendo el algoritmo obtenemos:
Paso-1
State array: State=0 State=1 State=2 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 6 mod 4 = 2
Swap(State , State) = Swap(0,2)
State=2 State=1 State=0 State=3
Paso-2
i=1 j=2
State array: State=2 State=1 State=0 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 5 mod 4 = 1
Swap(State, State) = Swap(1,0)
State=2 State=0 State=1 State=3
Paso 3
i=2 j=1
State array: State=2 State=0 State=1 State=3
Password: K=6 K=2 K=5 K=8
j = + K]mod 4 = 7 mod 4 = 3
Swap(State, State) = Swap(1,3)
State=2 State=0 State=3 State=1
Paso 4
i=3 j=3
State array: State=2 State=0 State=3 State=1
Password: K=6 K=2 K=5 K=8
j = +K]mod 4 = 12 mod 4 = 0
Swap(State, State) = Swap(1,2)
State=1 State=0 State=3 State=2
Final State Array: State=1 State=0 State=3 State=2
Una vez que la matriz de estados KSA está lista, se inicializa el procedimiento PRGA. El procedimiento es el siguiente:
Initially i=0 j=0
K=6 K=2 K=5 K=8
Primer Bucle:
State=1 State=0 State=3 State=2
i=1 j=0+State=0+0=0
Swap(State, State) = Swap(0,1)
State=0 State=1 State=3 State=2
z = State + State mod 4] = State = 1
z1 = 00000001
Segundo Bucle:
State=0 State=1 State=3 State=2
i=2 j=0+State=3
Swap(State, State) = Swap(3,2)
State=0 State=1 State=2 State=3
z = State + State mod 4] = State = 1
z2 = 00000001
Tercer bucle:
State=0 State=1 State=2 State=3
i=3 j=3+State=6 mod 4 = 2
Swap(State,State) = Swap(3,2)
State=0 State=1 State=3 State=2
z = State + State] mod 4 = State = 1
z3=00000001
Cuarto Bucle:
State=0 State=1 State=3 State=2
i=4 j=2+State=2+State = 2+State = 2
Swap(State,State) = Swap(State,State) = Swap(0,3)
State=3 State=1 State=0 State=2
z4 = State + State] = State +
State] = State = 2
z4=00000010
Las salidas z1-z4 al final de cada bucle deben ser Xor’ed con el ASCII de cada carácter de texto plano que en nuestro caso es TEST. Por lo tanto, el texto cifrado para la PRUEBA de texto sin formato será el siguiente:
T xor z1 = 01010100 xor 00000001 = 01010101 = U
E xor z2 = 01000101 xor 00000001 = 01000100 = D
S xor z3 = 01010011 xor 00000001 = 01010010 = R
T xor z4 = 01010100 xor 00000010 = 01010110 = U
La PRUEBA de palabras cuando se encripta con WEP es UDRU.
Este artículo fue solo una introducción a WEP y al procedimiento exacto en el que se realiza el cifrado en WEP. En la siguiente parte abordaremos la pregunta que es más importante en sus mentes: «¿Por qué WEP es inseguro? ¿A qué riesgos estoy expuesto si uso WEP?»