Computación e Informática

Recepción: 11 Septiembre 2016
Aprobación: 16 Marzo 2017
Resumen: En este trabajo se describe una interesante vía para la detección de la existencia de entradas de colisión en el algoritmo de cifrado en flujo RC4 basado en el criterio estricto de avalancha y se discuten los resultados obtenidos en comparación con las debilidades y ataques reportados sobre el RC4 que plantean la existencia de una fuerte correlación entre los parámetros de entrada y salida del algoritmo.
Palabras clave: criterio estricto de avalancha, entradas de colisión, correlación estadística, RC4.
Abstract: This paper describes an interesting way for the detection of the colliding entries existence in the RC4 stream cipher algorithm based in the strict avalanche criterion and the results obtained are discussed in comparison with the reported weaknesses and attacks on the RC4 that raise the existence of a strong correlation between the parameters of Input and output of the algorithm.
Keywords: strict avalanche criterion, colliding entries, statistical correlation, RC4.
1. Introducción
El desarrollo continuo de las redes de comunicación, en particular de la Internet, abre nuevas posibilidades para el intercambio de información. Al mismo tiempo, son cada vez mayores las amenazas a la seguridad de la información que se transmite, por lo que ha sido necesario entonces, la creación de diferentes mecanismos, dirigidos a garantizar la integridad, confidencialidad y autenticidad de los documentos electrónicos.
Entre las herramientas más utilizadas se encuentra la criptografía. Actualmente existen propuestas muy interesantes de algoritmos de cifrado (Schneier, 1996) para garantizar la confidencialidad de la información y entre estos se encuentran los algoritmos de cifrado en flujo. El algoritmo RC4 (Mantin, 2001) (Paul & Maitra, 2012) se ha destacado, particularmente, por su amplio uso en diferentes protocolos y aplicaciones (SSL, WEP) (Fluhrer, Mantin, & Shamir, 2002).
A través de los años este algoritmo ha sido extensamente evaluado y analizado en la literatura, encontrando varias propiedades interesantes y algunas debilidades en el proceso de la inicialización. Algunas de estas expresan que existen entradas distintas que pueden generar sucesiones de salida correlacionadas. Esta propiedad es llamada colisiones entre entradas (Wallach & Grosul, 2000)(Matsui, 2009)(Chen & Miyaji, 2011).
En este trabajo se describen estos criterios y algunas valoraciones estadísticas publicadas acerca de las debilidades del RC4 y se confirman en la práctica mediante la propuesta de una interesante vía para la detección de la correlación existente entre los parámetros de entrada y salida del RC4.
2. Descripción el algoritmo RC4
El algoritmo RC4 opera en palabras binarias de longitud n, en la práctica n = 8 (Mantin, 2001)(Paul & Maitra, 2012). En cada iteración el RC4 produce una salida que puede tomar cualquiera de los N = 2n posibles valores. Para n = 8, el algoritmo consta de una permutación S del conjunto {0,…, 255} y dos variables i y j de un byte cada una, utilizadas como indicadores a los elementos de S. Inicialmente, las dos variables, i y j, se inicializan en cero y la permutación en la identidad (Mantin, 2001)(Paul & Maitra, 2012).
El funcionamiento del RC4 se divide en dos algoritmos (Mantin, 2001)(Paul & Maitra, 2012), tal y como se ilustra en la Fig. 1:
- El algoritmo de esquema de llaves (Key Scheduling Algorithm, KSA), el cual construye una permutación S a partir de una entrada K (llave) y la permutación inicial.
- El algoritmo generador pseudoaleatorio (Pseudo Random Generator Algorithm, PRGA), utilizado para generar como salidas sucesiones de bytes de longitud deseada.

Con cada byte de salida producido por el PRGA, el estado interno del RC4 es actualizado.
Al comparar KSA y PRGA se observa que la única diferencia está en la manera de incrementar la variable j, añadiéndole un byte de la entrada en cada iteración, teniendo en cuenta la longitud de la entrada.
El KSA genera una permutación de inicio (estado inicial) para el PRGA a partir del parámetro de entrada de bytes y la permutación inicial (identidad). Una vez que el estado inicial es obtenido, este es utilizado por el PRGA. El propósito del PRGA es generar la sucesión de salida, en este caso en bytes.
Su implementación es extremadamente sencilla y rápida, y está orientado a generar secuencias en unidades de un byte, además de permitir entradas de diferentes longitudes
3. Debilidades del algoritmo RC4
Entre las debilidades encontradas al algoritmo RC4 están las colisiones entre entradas relacionadas de tal manera que la distancia de Hamming entre ambas es uno, introducidas por Grosul y Wallach (Wallach & Grosul, 2000), luego ampliado por Matsui (Matsui, 2009) y generalizado en (Chen & Miyaji, 2011).
Matsui (Matsui, 2009) estudia las denominadas "entradas de colisión" del RC4 que crean el mismo estado inicial y generan el mismo flujo de byte pseudoaleatorio. Su principal aporte en este trabajo es motivado por el hecho de que hasta ese momento (2009) solo era observable la existencia de entradas de colisión cuando el tamaño de la entrada en el algoritmo RC4 era muy grande (Matsui, 2009), es decir, se desconocía la existencia de colisiones entre entradas para tamaños cortos. Los pares de entradas de colisión para tamaños de entrada grande fueron expuestos en el 2000 por Grosul y Wallach (Wallach & Grosul, 2000) al obtener para tamaños de entrada cercanos a los 256 bytes salidas de cientos de bytes similares sustancialmente.
El número total de posibles estados iniciales del RC4 es 256! 21684 y debido a esto Matsui (Matsui, 2009) plantea que, en el RC4, deben existir entradas de colisión si el tamaño de la entrada excede los ⌊1684/8⌋= 210 bytes.
No obstante, obtiene como resultado que un par de entradas relacionadas de longitud fija arbitraria y menor tamaño puede conducir a entradas de colisión y muestra como ejemplo un par de entradas de colisión de 24 bytes. También demuestra que es muy probable que el RC4 tenga un par de entradas de colisión incluso si el tamaño de entrada es menor de 20 bytes y propone un algoritmo recursivo para la búsqueda de entradas de colisión.
Luego, Chen y Miyaji en (Chen & Miyaji, 2011) realizan una generalización de los resultados de Matsui a través de los siguiente puntos:
Formalizan los pares de entradas de colisión en el RC4 en dos amplios patrones de entradas de colisión, a los cuales denominan patrón Transitional y patrón Self-Absorbing, y plantean que todos los pares de entradas de colisión conocidos actualmente pueden ser categorizados en uno de estos dos patrones.
Analizan y explican las relaciones entre la probabilidad de una entrada de colisión, la longitud de la entrada y la distancia de Hamming, que proporcionan pares de entradas de colisión.
4. Detección de correlación en el RC4
En este trabajo se utiliza una prueba estadística propuesta en (M. Capó, Legón, Cuellar, & Sosa, 2016), basada en el criterio estricto de avalancha (strict avalanche criterion, SAC) (Adams & Tavares, 1990), para medir el nivel de correlación existente entre las salidas del algoritmo RC4 correspondientes a entradas que solo difieren en un bit.
Un algoritmo de cifrado en flujo es la especificación de un algoritmo de generación de números pseudoaleatorios el cual se puede asociar a una función
, la cual recibe n bits de entrada y tiene m bits de salida. En caso de que la salida del generador no sea de tamaño se iterará hasta alcanzar dicha longitud de salida.
Esta prueba está basada en el cambio de un bit en cada uno de los índices de una entrada prefijada y aplicar el criterio estricto de avalancha entre la entrada original y cada una de las obtenidas al variar un bit para medir la correlación entre sus respectivas salidas. Es decir, asociar la existencia de entradas de colisión a la cantidad de componentes de las salidas que varían al alterar los índices y que provocan salidas correlacionadas.

Como se tienen m observaciones el número esperado de fallos, número de veces se espera se rechace H0 , es α · m.
5. Análisis Experimental
Para la realización de los experimentos se implementó el algoritmo referenciado para dos pares de parámetros (n, m), tomando (n = 20, m = 20) y (n = 256, m = 256) respectivamente, para constatar los resultados referenciados.
Al aplicar la prueba al algoritmo criptográfico RC4 en el caso de n = 20 y m =20 se observó que en la mayoría de los casos se acepta la hipótesis nula como se muestra en la Tabla 1.
Con un nivel de significancia α = 0,01 el número esperado de componentes para los cuales se rechaza la hipótesis nula es aproximadamente = 1.60 para cada uno de los 20∙8=160 cambios en un bit. En este caso se escogió aceptar la hipótesis nula si n1 ≤ 2.

Esto determina que en promedio este algoritmo posee buena confusión para estos parámetros. Además, se puede notar que si las entradas son seleccionadas al azar no es fácil obtener pares que cumplan las características de (Matsui, 2009)(Chen & Miyaji, 2011).

No obstante, para los parámetros n = 256 y m = 256 se obtuvo que en la mayoría de los casos se rechaza la hipótesis nula como se muestra en la Tabla 2.
Con un nivel de significancia el número esperado
de componentes para los cuales se rechaza la hipótesis nula es aproximadamente
para cada uno de los 256∙8 = 2048 cambios en un bit. Aquí se decidió aceptar la hipótesis nula si
.
Por ejemplo, solo en 412 de los cambios se obtuvo que 21 o menos componentes no satisfacen la hipótesis nula.

Es realmente difícil ilustrar la cantidad de componente rechazados en cada uno de los cambios de bit debido al volumen de trabajo. No obstante, mediante el siguiente gráfico es posible tener una panorámica sobre cómo se comportó en cada uno de los cambios el número de fallos.

Algo a resaltar, de los resultados mostrados en la figura anterior, es el rechazo de la hipótesis nula que a partir del cambio en el bit 1800 (byte 225 de la entrada) en adelante, llegando a tomar valores desfavorables en el cambio de los últimos 48 bits. En la siguiente tabla se muestra el comportamiento en los últimos 16 cambios de bit.

Los resultados alcanzados constatan lo obtenido anteriormente en (Wallach & Grosul, 2000)(Matsui, 2009)(Chen & Miyaji, 2011). Es decir, para entradas
que se diferencian solo en una posición y dicha diferencia es 1 (
), cuando t se acerca a la longitud de hay un mayor chance de que exista una alta correlación entre las sucesiones de salida.
De esta manera, esta prueba estadística permite la detección de la existencia de entradas de colisión en el algoritmo de cifrado en flujo RC4, midiendo el nivel de correlación existente entre sus salidas.
6. Conclusiones y Trabajo Futuro
En este trabajo se expusieron los resultados de aplicar al algoritmo de cifrado en flujo RC4 una prueba estadística propuesto en (M. Capó, Legón, Cuellar, & Sosa, 2016) para determinar la dependencia entre las sucesiones de salida de generadores de números pseudoaleatorios y los valores de entrada determinados de forma tal que solo se diferencian en un bit.
La prueba propuesta es capaz de detectar la presencia de anomalías en la dependencia estadística entre las entradas y las salidas del RC4 tal y como se observa en la Fig. 3. incluso para muestras pequeñas.
Los resultados prácticos alcanzados corroboran la dificultad de hallar entradas de colisión para entradas de longitud 20. Mientras para entradas con una longitud cercana a la longitud máxima 256 es posible encontrar sin mucho esfuerzo computacional este tipo de entradas.
Como próximo trabajo en esta línea los autores se proponen generalizar el método de manera que se pueda evaluar la dependencia estadística con respecto a entradas con más de un bit de diferencia. Además, el estudio de los valores óptimos de los parámetros (n, m), que determinan el tamaño de muestra, para obtener un resultado más preciso, que se ajuste mejor a la calidad real de los algoritmos a evaluar. Estos parámetros pueden determinar el buen rendimiento y la rigurosidad de esta prueba, como ilustran los resultados obtenidos en (Tsang, Hui, Chow, & Chong) para la conocida prueba de colisiones propuesta por Knuth (Knuth, 1985).
Referencias
Adams, C., & Tavares, S. (1990). The Structured Design of Cryptographically Good S-boxes.
Chen, J., & Miyaji, A. (2011). Generalized Analysis on Key Collisions of Stream Ciphers RC4.
Fluhrer, S., Mantin, I., & Shamir, A. (2002). Attacks on RC4 and WEP.
Knuth, D. (1985). The Art of Computer Programming (Volume 2).
M. Capó, E., Legón, C., Cuellar, O., & Sosa, G. (2016). Evaluation of Input - Output Statistical Dependence PRNGs by SAC. International Conference on Software Process Improvement (CIMPS). IEEE Digital Library.
Mantin, I. (2001). Analysis of the stream ciphers RC4.
Matsui, M. (2009). Key Collisions of the RC4 Stream Cipher.
Paul, G., & Maitra, S. (2012). RC4 Stream Ciphers and its Variants. Discrete Mathematics and Its Applications.
Schneier, B. (1996). Applied Cryptography.
Tsang, W., Hui, L., Chow, K., & Chong, C. (n.d.). Tuning the Collision Test for Stringency.
Wallach, D., & Grosul, A. (2000). A Related-Key Cryptanalysis of RC4. Rice University: Technical Report TR-00-358, Department of Computer Science.
Notas de autor