FACULTAD DE INGENIERIA Y SISTEMAS Tema: Investigar el algoritmo de RC4 Alumno: Jonathan Fabricio Olmedo Galindo Carrera: Ingenieria en Ciencias de la Computación Maestro: Elmer Elias Chanchan Materia: Criptografía y seguridad de redes Fecha: 24-03-2021 Introducción Dentro de la criptografía RC4 o ARC4 es el sistema de cifrado de flujo Stream cipher más utilizado y se usa en algunos de los protocolos más populares como Transport Layer Security (TLS/SSL) (para proteger el tráfico de Internet) y Wired Equivalent Privacy (WEP) (para añadir seguridad en las redes inalámbricas). RC4 fue excluido enseguida de los estándares de alta seguridad por los criptógrafos y algunos modos de usar el algoritmo de criptografía RC4 lo han llevado a ser un sistema de criptografía muy inseguro, incluyendo su uso WEP. No está recomendada su aplicación en proyectos nuevos; sin embargo, algunos sistemas basados en RC4 son lo suficientemente seguros para un uso común. Historia algoritmo de RC4 El algoritmo de criptografía RC4 fue diseñado por Ronald Rivest de la RSA Security en el año 1987, su nombre completo es Rivest Cipher 4, teniendo el acrónimo RC un significado alternativo al de Ron's Code utilizado para los algoritmos de cifrado RC2, RC5 y RC6. Inicialmente el algoritmo era un secreto registrado, pero en septiembre de 1994 una descripción del algoritmo fue distribuida anónimamente en una lista de correo de Cypherpunks. Enseguida pasó al grupo de noticias sci.crypt y de allí a numerosos sitios de Internet, dejando así de ser secreto; sin embargo RC4 aún es una marca registrada. Actualmente la implementación no oficial de RC4 es legal, pero no puede utilizarse bajo el nombre de RC4. Por este motivo, y con el fin de evitar problemas legales a raíz de la marca registrada, a menudo podemos verlo nombrado como ARCFOUR, ARC4 (Alleged-RC4). RSA Security nunca ha liberado de manera oficial el algoritmo de su RC4. RC4 es parte de los protocolos de cifrado más comunes como WEP, TLS y WPA para tarjetas inalámbricas. Los factores principales para el éxito de RC4 y su aplicación en tan amplio rango de aplicaciones han sido su increíble velocidad y su simplicidad. La implementación eficiente en software y en hardware fueron muy simples de desarrollar. RC4 es un protocolo sorprendentemente simple que emplea 2 algoritmos: 1-Key Scheduling Algorithm (KSA) y 2- Pseudo-Random Generation Algorithm (PRGA), cada uno de los cuales usa un estado interno secreto: 8-por-8 S-box, que es un arreglo con los 256 posibles bytes permutados y dos índices de 8 bits ("i" y "j" en el código siguiente). El KSA genera la permutación en el S-Box basándose en una clave de longitud variable ("keylength", entre 40 y 2048 bits). Cifrado y descifrado (explicación paso a paso) El algoritmo es muy simple, este consiste en cifrar un mensaje mediante una operación xor byte a byte entre éste y una secuencia de clave cuyos bytes van cambiando dinámicamente durante la cifra. Para generar dicha secuencia cifrante, se cuenta con dos rutinas conocidas como KSA (Key Scheduling Algorithm) y PRGA (Pseudo-Random Generation Algorithm). 1. Inicialice el vector de estado S (256 bytes, utilizado como semilla 1 para la generación de flujo de claves). En orden ascendente, asigne 0,1,2,3,4,5,6 ..., 254,255 a cada byte 2. Clave inicial (ingresada por el usuario), cualquier longitud. Si la longitud de entrada es inferior a 256 bytes, rotará hasta que esté llena. Por ejemplo, la clave de entrada es 1,2,3,4,5, luego complete 1,2,3,4,5,1,2,3,4,5 1,2,3,4,5 Se obtiene un vector T de 256 bytes del proceso de rotación anterior (utilizado como semilla 2 para la generación de flujo de claves) 3. Iniciar la operación de reemplazo del vector de estado S (usado para interrumpir la semilla inicial 1) Sigue las reglas a continuación Desde el byte cero, ejecute 256 veces para asegurarse de que se procesa cada byte El vector de estado S procesado de esta manera es casi aleatorio. 4. Finalmente, la generación y el cifrado del flujo de claves. Supongamos que mi número de bytes de texto plano es datalength = 1024 bytes (por supuesto, puede ser cualquier número de bytes) i=0; j=0; mientras que (datalength -) {// es equivalente a 1024 ejecuciones, la secuencia de claves generada de esta manera también es de 1024 bytes El descifrado es como se escribió anteriormente, y XOR dos veces es el texto original, por lo que siempre que la secuencia de claves se reanude, XOR obtendrá el texto original. Bibliografía Pasos del principio de cifrado RC4. (2020). programador clic. https://programmerclick.com/article/2081772559/ Wikipedia contributors. (2021, 4 marzo). RC4. Wikipedia. https://en.wikipedia.org/wiki/RC4 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. Mantin, I. (2001). Analysis of the stream ciphers RC4. Matsui, M. (2009). Key Collisions of the RC4 Stream Cipher.