Está en la página 1de 4

ATAQUE PRCTICO AL ALGORITMO RC4 Matemtico Siddhartha Estrella Gutirrez Facultad de Ciencias, UNAM. Eduardo Murrieta Cabrera Depto.

de Sper Cmputo DGSCA, UNAM. M. en C. Maria de Lourdes Guerrero Zarco Depto. de Matemticas, UNAM

1. El ALGORITMO DE CIFRADO RC4 En criptografa RC4 (ARCFOUR) es un cifrador simtrico de flujo diseado por Ron Rivest de RSA Security en 1987. Aunque en trminos oficiales de RSA el trmino RC4 son las iniciales de Rivest Cipher 4, el acrnimo RC es comnmente entendido como el cdigo de Ron. Tambin son del dominio pblico sus cifradores por bloque RC2 y RC5. RC4 fue inicialmente un algoritmo comercializado como secreto, esto quiere decir que, solo se tena acceso al binario del algoritmo y no se saba como estaba implementado ni su algoritmo terico; pero en septiembre de 1994 una descripcin de ste fue annimamente publicada en la lista de correo Cypherpunk. El algoritmo fue publicado rpidamente en el grupo de noticias de sci.crypt y de ah a muchos otros sitios en la Internet. Al publicarse el algoritmo ste dejo de comercializarse como algoritmo secreto. El nombre RC4 es una marca registrada. Al algoritmo se le llama tambin ARCFOUR para evitar problemas legales con la marca registrada, adems se ha convertido en parte comn de algunos protocolos de cifrado y estndares utilizados frecuentemente, incluyendo WEP y WAP para tarjetas wireless y SSL. RC4 es uno de los cifradores ms rpidos utilizados en aplicaciones serias y comerciales, siendo un cifrador de flujo, y como tal es bsicamente un generador de nmeros pseudo aleatorios inicializado desde una llave secreta por arriba de los 256 bytes (para el caso de ssl y para evitar el ataque Fluhrer, Martin, Shamir). El algoritmo RC4, genera una clave de flujo la cual es simplemente pasada por la funcin XOR para producir el flujo cifrado. Para descifrar se utiliza exactamente la misma funcin de cifrado. Una de las razones a las que debe su popularidad es su sencillez. El algoritmo puede ser memorizado y rpidamente implementado, adicionalmente es ideal para implementaciones de software, pues requiere solamente manipulaciones de longitudes de un byte. Utiliza 256 bytes de memoria para los estados del arreglo, de S[0] pasa a S[255] , n bytes de memoria para la llave, de la Key [0] pasando a travs de key [255], as como variables enteras i, j, k. n esta definida como el nmero de bytes en la llave y puede tener un rango de entre 1 < = n <= 255, pensando en aplicaciones comunes n =8 n =16 es comn (64 y 128 bits, respectivamente), en este estudio se utiliz n =5 que es una llave de 40 bits. El algoritmo RC4 consta de dos partes, el primero comienza con la inicializacin de la llave del algoritmo (KSA), que usa la llave para inicializar el nmero generador pseudo aleatorio. -----------------------------------------------------------------------------| j = 0 | | for i = 0 .. 255 | | S[i] = i | | for i =0 .. 255 | | j = (j + S[i]) + key [i mod key_length] ) mod 256 | ------------------------------------------------------------------------------Una vez que se ha inicializado ambos, cifrado y descifrado son ejecutados utilizando valores que salen a partir del estado de generacin. Este proceso, llamado Algoritmo de Generacin Pseudo Aleatoria (Pseudo-Random generation Algorithm PRGA) se desarrolla de la siguiente manera:

-----------------------------------------------------------------------| i = 0 | | j = 0 | | ciclo hasta que el mensaje entero sea cifrado descifrado | | i = (i + 1) mod 256 | | j = (j + S[i]) mod 256 | | swap (S[i], S[j]) | | k = S [(S[i] + S[j] ) mod 256] | |Salida del algoritmo XOR de k con el siguiente byte de entrada | ------------------------------------------------------------------------------2. NUESTRO TIPO DE ATAQUE Este ataque se realiz a partir de programas hechos en ANSI C con llamadas directas a las bibliotecas de Openssl (openssl/rc4.h) 3. PROGRAMA cifra40.c El programa realiza el cifrado con el algoritmo RC4 a 40 bits de un texto cualquiera contenido en un archivo de texto y lo introduce a un archivo llamado cifr el programa toma de la lnea de comandos el archivo a cifrar as como la palabra clave con la que ser cifrado. 4. PROGRAMA fuerza_bruta_a_40.c El programa realiza una bsqueda exhaustiva de las posibles llaves a 40 bits, es decir un ataque por fuerza bruta sobre la contrasea. Este programa busca todas las posibles combinaciones de llaves generndolas en la ejecucin hasta completar los 40 bits es decir hasta 5 caracteres, sta bsqueda incluye caracteres no imprimibles. Con cada clave el programa aplica el algoritmo al archivo cifrado y lo compara cada vez con el archivo en claro para cada clave hasta encontrar la clave correcta. Por medio de este mtodo se obtiene la clave con un 100% de certeza ya que se agotan todas las posibilidades para 40 bits que son el equivalente a 5 caracteres en cdigo ASCII. 5. ATAQUE PARALELIZADO Un programa al paralelizarlo nos ayuda a ejecutarlo en varios procesadores a la vez, por lo que se procedi a paralelizar el programa por_fuerza_bruta_a_40.c, este mtodo es utilizado para correr programas ya sea en una supercomputadora o en un cluster, en este caso el programa fue ejecutado en el cluster mixbaal cuyas caractersticas se pondrn ms adelante. La paralelizacin de un programa consta principalmente de fragmentar en pequeas partes las tareas que debe realizar el algoritmo del programa asignando las tareas fragmentadas a cada uno de los procesadores con los que se cuenta, por eso es importante saber el nmero de procesadores con los que se contar para la ejecucin del programa en un cluster para as poder fragmentar dichas tareas entre el numero de procesadores a ejecutarse. Esto nos ahorra tiempo de proceso ya que en teora si un procesador toma un tiempo fijo X en terminar una tarea, M procesadores iguales tomaran X/M en tiempo para realizar la misma tarea por lo que entre mas procesadores se tengan mas rpido se podr encontrar la solucin de un problema. 6. CARACTERSTICAS DEL CLUSTER

Un ambiente tipo UNIX o algn clon de este sistema. Compilado por compilador tipo ANSI C (gcc) Libreras de openssl (ssl/rc4.h) 24 puertos Sistema Operativo Red Hat 7.2 Compiladores y Lenguajes de Programacion GNU compiler 3.1 gcc g77 g++ The Portland Group 3.3-2 pgcc pgf77 pgf90 pgCC pgprof Intel C++ Compiler 6.0 iccbin ifcbin Absoft f77 f90 Perl 5.6.0 Depuradores Xpgdbg ddd 3.3 Bibliotecas Numericas Atlas Bibliotecas Paralelas mpich-1.2.4 pvm3 Herramientas de Uso General GNU Make 3.79.1 Plot graphs Gnuplot 7.0 Emacs 20.7-41 Tar 1.13.19-6 Zip 2.3-10 GNU Ghostscript 6.51 Sed 3.02-10 7. Resultados de los ataques por fuerza bruta con el algoritmo paralelizado. Para encontrar el tiempo aproximado de bsqueda de la clave se corri el programa un promedio de 240 horas (10 das) y se suspendi la corrida, de esta manera se vio la cantidad de operaciones que se ejecutaron por segundo y se calcul con ello el nmero total de posibles claves por la cantidad de tiempo tardado, lo que nos dio un tiempo estimado de 20 das. Datos de mixbaal: 256^4*10 claves en 1 proc: 1118124.24 s ~ 311 hrs ~ 13 das tiempo x clave : 1118124.24/(256^4*10)= 26.03E-6 s = 26.03 us tiempo x 256^5 claves : 26.03E-6 * 256^5 = 28,623,980 s ~ 477,066 min ~ 7,951 hr ~ 331 dias ~ 11 meses Por lo tanto solo se divide las cantidades anteriores entre el nmero de procesadores (16 en este caso) y se obtiene el tiempo real. 28,623,980 s / 16 = 1,788,998 s ~ 29,816 min ~ 496 hr ~ 20 dias. Con una clave a 8 bits la cual fue la letra a el programa tard 74 horas en 16 procesadores dando un total de: 74 hrs * 16 cpus = 1184 hrs de CPU La corrida inicio en Tue Jan 31 16:59:41 CST 2006 y termino en Fri Feb 3 19:13:17 CST 2006 Clave a T. CPU 57 horas ~ 2.7 das T. CPU total 1184 horas ~ 49 das T. Pared 74:13 horas ~ 3 das Con una clave a 40 bits que en realidad fue truncada los resultados fueron los siguientes: Las clave real fue ferrocarrilero pero como se utilizan solamente

los primeros 40 bits esta clave se trunca a los primeros 5 caracteres que tiene la clave, que es en este caso ferro, esta clave fue la que encontr el programa. Este programa comenz el Wed Feb 8 17:03:06 CST 2006 y termino en Tue Feb 28 08:58:45 CST 2006 por lo que tardo aproximadamente unos 20 das (un poco menos) en encontrar la clave de cifrado. Clave: ferro T. CPU: 471 hrs ~ 19 das T. CPU total: 7543 hrs ~ 314 das T. pared: 455:71 horas ~ 20 das El tiempo de pared es el tiempo real en que se tuvo que esperar para obtener el resultado, el tiempo de CPU es el tiempo que realmente se proceso el programa, el resto del tiempo lo ocup el procesador en ejecutar procesos del Sistema Operativo que es aproximadamente el 30% del total del tiempo de pared. A continuacin se muestra en la tabla R.1 el resumen de los tiempos aproximados reales segn las corridas con un procesador, el tiempo que tardaron con los 16 procesadores con los que se realizaron las corridas, as como una proyeccin a 32, 64 y 128 procesadores para poder tener una visin del tiempo que tardara un romperse una clave de estas dimensiones de manera real. Procesadores Clave con a Clave con ferro 1 16 32 49.33 das 4 das 2 das 324 das 29 das 10 das Tabla R.1 64 1 da 5 das 128 1/2 da 2.5 das

8. Discusin y Conclusiones El algoritmo RC4 es un buen algoritmo de cifrado, pero desgraciadamente los 40 bits utilizados para cifrar no son suficientes para mantener el secreto por ms de 20 das naturales en el cluster mixbaal. Este algoritmo a 40 bits es muy dbil y debe manejarse con precaucin los datos cifrados a esta cantidad de bits ya que, se tiene una falsa confianza de seguridad. El estndar internacional para la exportacin de cifrado para RC4 es de 40 bits por lo que se debe replantear el estndar internacional a no ser que por razones de seguridad nacional (dependiendo de cada nacin) se mantenga as el cifrado. Pero se debe mantener informados a los usuarios del riesgo que se corre al utilizar el algoritmo con tales caractersticas. La relacin de costo y rompimiento de llaves a 40 bits del algoritmo RC4 an es muy grande, ya que se requiere todava de varios procesadores para poder romper la llave de cifrado (en este caso 16) y de conocimientos mas profundos para poder armar un cluster estable, o tener una sper computadora con caractersticas similares a las de los clusters utilizados, para poder realizar una bsqueda exhaustiva del conjunto completo de llaves en un tiempo razonablemente pequeo. Cabe sealar que, esta investigacin es la primera en presentar las mtricas utilizadas para los ataques correspondientes, as como el cdigo fuente en ANSI C; y los resultados completos de las corridas, debido a que los artculos existentes del tema no las presentan.

También podría gustarte