En criptografía , RC4 (también conocido como ARC4 o ARCFOUR , que significa RC4 supuesto, véase más abajo) es un cifrado de flujo . Si bien destaca por su simplicidad y velocidad en el software, se han descubierto múltiples vulnerabilidades en RC4, lo que lo hace inseguro. [ 3 ] [ 4 ] Es especialmente vulnerable cuando no se descarta el inicio del flujo de claves de salida , o cuando se utilizan claves no aleatorias o relacionadas. Los usos particularmente problemáticos de RC4 han dado lugar a protocolos inseguros como el obsoleto protocolo WEP, utilizado históricamente para proteger las redes WiFi. [ 5 ]
Desde hace tiempo se especula que algunas agencias criptológicas estatales podrían tener la capacidad de romper RC4 cuando se utiliza en el protocolo TLS . [ 6 ] En respuesta, el IETF publicó el RFC 7465 para prohibir el uso de RC4 en TLS; [ 3 ] Mozilla y Microsoft han emitido recomendaciones similares. [ 7 ] [ 8 ]
Se han realizado varios intentos para fortalecer RC4, en particular Spritz, RC4A, VMPC y RC4 + .
Historia
RC4 es un cifrado de flujo diseñado por Ronald Rivest de RSA Security en 1987. Según Rivest, las letras RC significan "Ron's Code" (Código de Ron), [ 9 ] aunque generalmente se le conoce simplemente como RC4. La misma convención de nomenclatura se aplica a RC2, RC5 y RC6.
RC4 fue inicialmente un secreto comercial , pero en septiembre de 1994, una descripción del mismo se publicó anónimamente en la lista de correo Cypherpunks . [ 10 ] Pronto se publicó en el grupo de noticias sci.crypt , donde Bob Jenkins lo descifró en cuestión de días . [ 11 ] Desde allí, se extendió a muchos sitios de Internet. Se confirmó la autenticidad del código filtrado, ya que se descubrió que su resultado coincidía con el de un software propietario que utilizaba RC4 con licencia. Dado que el algoritmo es conocido, ya no es un secreto comercial. El nombre RC4 está registrado como marca comercial, por lo que a menudo se le denomina ARCFOUR o ARC4 (que significa supuesto RC4 ) [ 12 ] para evitar problemas de marca registrada. RSA Security nunca ha publicado oficialmente el algoritmo; sin embargo, Rivest ha incluido un enlace al artículo de la Wikipedia en inglés sobre RC4 en sus apuntes de curso en 2008 [ 13 ] y confirmó la historia de RC4 y su código en un artículo de 2014. [ 14 ]
RC4 se integró en algunos protocolos y estándares de cifrado de uso común, como WEP en 1997 y WPA en 2003/2004 para tarjetas inalámbricas; y SSL en 1995 y su sucesor TLS en 1999, hasta que fue prohibido para todas las versiones de TLS en 2015 por la RFC 7465 , debido a que los ataques RC4 debilitaban o vulneraban RC4 utilizado en SSL/TLS. Los principales factores del éxito de RC4 en una gama tan amplia de aplicaciones han sido su velocidad y simplicidad: las implementaciones eficientes tanto en software como en hardware eran muy fáciles de desarrollar.
Descripción
RC4 genera una secuencia de bits pseudoaleatorios (una secuencia de claves ). Al igual que con cualquier cifrado de flujo, esta se puede usar para el cifrado combinándola con el texto plano mediante la operación OR exclusiva bit a bit ; el descifrado se realiza de la misma manera (ya que la operación OR exclusiva con datos dados es una involución ). Esto es similar al cifrado de un solo uso , excepto que se utilizan bits pseudoaleatorios generados, en lugar de una secuencia preparada.
Para generar la secuencia de claves, el cifrador utiliza un estado interno secreto que consta de dos partes:
- Una permutación de los 256 bytes posibles (denominados "S" a continuación).
- Dos punteros de índice de 8 bits (denominados "i" y "j").
La permutación se inicializa con una clave de longitud variable , generalmente entre 40 y 2048 bits, utilizando el algoritmo de programación de claves (KSA). Una vez completado este paso, se genera la secuencia de bits mediante el algoritmo de generación pseudoaleatoria (PRGA).
Algoritmo de programación de claves (KSA)
El algoritmo de programación de claves se utiliza para inicializar la permutación en el array "S". "keylength" se define como el número de bytes en la clave y puede estar en el rango 1 ≤ keylength ≤ 256, típicamente entre 5 y 16, lo que corresponde a una longitud de clave de 40 a 128 bits. Primero, el array "S" se inicializa con la permutación identidad . Luego, S se procesa durante 256 iteraciones de manera similar al PRGA principal, pero también mezcla bytes de la clave al mismo tiempo. Tenga en cuenta que muchas claves diferentes, como 'Text' y 'TextText', dan como resultado el mismo cifrado.
para i de 0 a 255 S[i] := i fin para j := 0 para i de 0 a 255 j := (j + S[i] + key[i mod keylength]) mod 256 Intercambiar valores de S[i] y S[j] fin para
Algoritmo de generación pseudoaleatoria (PRGA)

Durante tantas iteraciones como sean necesarias, el PRGA modifica el estado y genera un byte del flujo de claves. En cada iteración, el PRGA:
- incrementos i ;
- busca el i -ésimo elemento de S , S[ i ] , y lo agrega a j ;
- intercambia los valores de S[ i ] y S[ j ] , luego usa la suma S[ i ] + S[ j ] (módulo 256) como un índice para obtener un tercer elemento de S (el valor de flujo de clave K a continuación);
- Luego, se realiza una operación OR exclusiva a nivel de bits ( XOR ) con el siguiente byte del mensaje para producir el siguiente byte, ya sea de texto cifrado o de texto plano.
Cada elemento de S se intercambia con otro elemento al menos una vez cada 256 iteraciones.
i := 0 j := 0 mientras GenerandoSalida: i := (i + 1) mod 256 j := (j + S[i]) mod 256 Intercambiar valores de S[i] y S[j] t := (S[i] + S[j]) mod 256 K := S[t] Salida K fin mientras
De esta forma, se produce una secuencia de K[0], K[1], ... que se combinan mediante XOR con el texto plano para obtener el texto cifrado . Por lo tanto, ciphertext[ l ] = plaintext[ l ] ⊕ K[ l ] .
Generadores de números aleatorios basados en RC4
Varios sistemas operativos incluyen arc4randomuna API originada en OpenBSD que proporciona acceso a un generador de números aleatorios basado originalmente en RC4. La API no permite la inicialización, ya que la función se inicializa a sí misma usando /dev/random . El uso de RC4 se ha eliminado gradualmente en la mayoría de los sistemas que implementan esta API. Las páginas man para el nuevo arc4random incluyen el acrónimo inverso "A Replacement Call for Random" para ARC4 como mnemotécnico, ya que proporcionaba mejores datos aleatorios que la función rand() original y altamente insegura basada en un generador de números pseudoaleatorios congruenciales lineales con un estado interno de 32 bits. [ 15 ] [ 16 ] [ 17 ]
Varios ataques a RC4 son capaces de distinguir su salida de una secuencia aleatoria . [ 18 ] Como resultado, el uso de ARC4 arc4randomfue finalmente reemplazado por mejores generadores de números pseudoaleatorios:
- En OpenBSD 5.5, publicado en mayo de 2014,
arc4randomse modificó para usar el cifrado de flujo superior ChaCha20 . [ 19 ] [ 20 ] Las implementaciones de arc4random en FreeBSD y NetBSD [ 21 ] [ 22 ] también usan ChaCha20. - Linux normalmente usa glibc , que no ofreció arc4random hasta 2022. En su lugar, una biblioteca separada, libbsd, ofrece la función; se actualizó para usar ChaCha20 en 2016. [ 23 ] En 2022, glibc agregó su propia versión de arc4random , también basada en ChaCha20. [ 24 ]
- Según las páginas del manual que se incluyen con el sistema operativo, en la versión de 2017 de los sistemas operativos macOS e iOS , Apple reemplazó RC4 por AES en su implementación de arc4random.
Los nuevos generadores de números aleatorios propuestos a menudo se comparan con el generador de números aleatorios RC4. [ 25 ] [ 26 ]
Implementación
Muchos cifradores de flujo se basan en registros de desplazamiento con retroalimentación lineal (LFSR), que, si bien son eficientes en hardware, lo son menos en software. El diseño de RC4 evita el uso de LFSR y es ideal para la implementación por software, ya que solo requiere manipulación de bytes. Utiliza 256 bytes de memoria para el arreglo de estado, S[0] a S[255], k bytes de memoria para la clave, key[0] a key[k−1], y las variables enteras i, j y K. La reducción modular de un valor módulo 256 se puede realizar con una operación AND bit a bit con 255 (lo que equivale a tomar el byte de menor orden del valor en cuestión).
Vectores de prueba
Estos vectores de prueba no son oficiales, pero resultan útiles para cualquiera que esté probando su propio programa RC4. Las claves y el texto plano están en formato ASCII , mientras que la secuencia de claves y el texto cifrado están en formato hexadecimal .
Seguridad
A diferencia de un cifrado de flujo moderno (como los de eSTREAM ), RC4 no requiere un nonce independiente junto con la clave. Esto significa que, si se va a utilizar una única clave a largo plazo para cifrar de forma segura múltiples flujos, el protocolo debe especificar cómo combinar el nonce y la clave a largo plazo para generar la clave de flujo para RC4. Un enfoque para abordar esto es generar una clave RC4 "nueva" mediante el hash de una clave a largo plazo con un nonce . Sin embargo, muchas aplicaciones que utilizan RC4 simplemente concatenan la clave y el nonce; la debilidad del esquema de claves de RC4 da lugar a ataques de clave relacionada , como el ataque de Fluhrer, Mantin y Shamir (conocido por romper el estándar WEP ). [ 27 ]
Debido a que RC4 es un cifrado de flujo , es más maleable que los cifrados de bloques comunes . Si no se utiliza junto con un código de autenticación de mensajes (MAC) robusto, el cifrado es vulnerable a un ataque de inversión de bits . El cifrado también es vulnerable a un ataque de cifrado de flujo si no se implementa correctamente. [ 28 ]
Cabe destacar, sin embargo, que RC4, al ser un cifrado de flujo, fue durante un tiempo el único cifrado común inmune [ 29 ] al ataque BEAST de 2011 contra TLS 1.0 . El ataque explota una debilidad conocida en la forma en que se utiliza el modo de encadenamiento de bloques de cifrado con todos los demás cifrados compatibles con TLS 1.0, que son todos cifrados de bloques.
En marzo de 2013, Isobe, Ohigashi, Watanabe y Morii [ 30 ] , así como AlFardan, Bernstein, Paterson, Poettering y Schuldt, propusieron nuevos escenarios de ataque que utilizan nuevos sesgos estadísticos en la tabla de claves RC4 [ 31 ] para recuperar texto plano con un gran número de cifrados TLS. [ 32 ] [ 33 ]
El uso de RC4 en TLS está prohibido por el RFC 7465, publicado en febrero de 2015.
Sesgos de Roos y reconstrucción clave a partir de permutaciones
En 1995, Andrew Roos observó experimentalmente que el primer byte del flujo de claves está correlacionado con los tres primeros bytes de la clave, y los primeros bytes de la permutación después del KSA están correlacionados con alguna combinación lineal de los bytes de la clave. [ 34 ] Estos sesgos permanecieron sin explicación hasta 2007, cuando Goutam Paul, Siddheshwar Rathi y Subhamoy Maitra [ 35 ] demostraron la correlación flujo de claves-clave y, en otro trabajo, Goutam Paul y Subhamoy Maitra [ 36 ] demostraron las correlaciones permutación-clave. Este último trabajo también utilizó las correlaciones permutación-clave para diseñar el primer algoritmo para la reconstrucción completa de la clave a partir de la permutación final después del KSA, sin ninguna suposición sobre la clave o el vector de inicialización . Este algoritmo tiene una probabilidad constante de éxito en un tiempo, que es la raíz cuadrada de la complejidad de la búsqueda exhaustiva de la clave. Posteriormente, se han realizado muchos otros trabajos sobre la reconstrucción de claves a partir de estados internos de RC4. [ 37 ] [ 38 ] [ 39 ] Subhamoy Maitra y Goutam Paul [ 40 ] también demostraron que los sesgos de tipo Roos persisten incluso cuando se consideran índices de permutación anidados, como S[S[i]] o S[S[S[i]]] . Este tipo de sesgos se utilizan en algunos de los métodos de reconstrucción clave posteriores para aumentar la probabilidad de éxito.
Salidas sesgadas del RC4
La secuencia de claves generada por RC4 está sesgada en diversos grados hacia ciertas secuencias, lo que la hace vulnerable a ataques de distinción . El mejor ataque de este tipo se debe a Itsik Mantin y Adi Shamir , quienes demostraron que el segundo byte de salida del cifrado estaba sesgado hacia cero con una probabilidad de 1/128 (en lugar de 1/256). Esto se debe a que si el tercer byte del estado original es cero y el segundo byte no es igual a 2, entonces el segundo byte de salida siempre es cero. Dicho sesgo puede detectarse observando solo 256 bytes. [ 18 ]
Souradyuti Paul y Bart Preneel de COSIC demostraron que el primer y el segundo byte del RC4 también estaban sesgados. El número de muestras necesarias para detectar este sesgo es de 2²⁵ bytes. [ 41 ]
Scott Fluhrer y David McGrew también mostraron ataques que distinguían la secuencia de claves del RC4 de una secuencia aleatoria dado un gigabyte de salida. [ 42 ]
La caracterización completa de un solo paso de RC4 PRGA fue realizada por Riddhipratim Basu, Shirshendu Ganguly, Subhamoy Maitra y Goutam Paul. [ 43 ] Considerando todas las permutaciones, demostraron que la distribución de la salida no es uniforme dados i y j, y como consecuencia, la información sobre j siempre se filtra en la salida.
Ataque de Fluhrer, Mantin y Shamir
En 2001, Fluhrer , Mantin y Shamir hicieron un descubrimiento nuevo y sorprendente : en todas las posibles claves RC4, las estadísticas de los primeros bytes del flujo de clave de salida son fuertemente no aleatorias, lo que filtra información sobre la clave. Si el nonce y la clave a largo plazo se concatenan simplemente para generar la clave RC4, esta clave a largo plazo se puede descubrir analizando una gran cantidad de mensajes cifrados con ella. [ 44 ] Este y otros efectos relacionados se utilizaron posteriormente para romper el cifrado WEP ("wired equal privacy") utilizado en las redes inalámbricas 802.11 . Esto provocó una carrera por encontrar un reemplazo basado en estándares para WEP en el mercado 802.11 y condujo al esfuerzo IEEE 802.11i y WPA . [ 45 ]
Los protocolos pueden defenderse de este ataque descartando la porción inicial del flujo de claves. Este algoritmo modificado se denomina tradicionalmente "RC4-drop[ n ]", donde n es el número de bytes iniciales del flujo de claves que se descartan. El valor predeterminado de SCAN es n = 768 bytes, pero un valor conservador sería n = 3072 bytes. [ 46 ]
El ataque de Fluhrer, Mantin y Shamir no se aplica a SSL basado en RC4, ya que SSL genera las claves de cifrado que utiliza para RC4 mediante hash, lo que significa que diferentes sesiones SSL tienen claves no relacionadas. [ 47 ]
El ataque de Klein
En 2005, Andreas Klein presentó un análisis del cifrado de flujo RC4, mostrando más correlaciones entre el flujo de claves RC4 y la clave. [ 48 ] Erik Tews , Ralf-Philipp Weinmann y Andrei Pychkine utilizaron este análisis para crear aircrack-ptw, una herramienta que descifra RC4 de 104 bits utilizado en WEP de 128 bits en menos de un minuto. [ 49 ] Mientras que el ataque de Fluhrer, Mantin y Shamir utilizó alrededor de 10 millones de mensajes, aircrack-ptw puede romper claves de 104 bits en 40 000 tramas con una probabilidad del 50 %, o en 85 000 tramas con una probabilidad del 95 %.
Problema combinatorio
Itsik Mantin y Adi Shamir plantearon por primera vez en 2001 un problema combinatorio relacionado con el número de entradas y salidas del cifrado RC4. Según este problema, de los 256 elementos totales en el estado típico de RC4, si solo se conocen x elementos ( x ≤ 256) (y se puede asumir que todos los demás elementos están vacíos), entonces el número máximo de elementos que se pueden producir de forma determinista también es x en las siguientes 256 rondas. Esta conjetura fue refutada en 2004 con una demostración formal proporcionada por Souradyuti Paul y Bart Preneel . [ 50 ]
Ataque de Royal Holloway
En 2013, un grupo de investigadores de seguridad del Information Security Group de Royal Holloway, Universidad de Londres, informó de un ataque que puede ser efectivo utilizando solo 2³⁴ mensajes cifrados. [ 51 ] [ 52 ] [ 53 ] Si bien aún no es un ataque práctico para la mayoría de los propósitos, este resultado es lo suficientemente cercano a uno como para haber llevado a especular que es plausible que algunas agencias criptológicas estatales ya tengan mejores ataques que hagan que RC4 sea inseguro. [ 6 ] Dado que una gran cantidad de tráfico TLS en 2013 usó RC4 para evitar ataques a cifrados de bloques que usan encadenamiento de bloques de cifrado , si existieran estos hipotéticos mejores ataques, entonces el cifrado TLS típico sería inseguro contra tales atacantes en una gran cantidad de escenarios prácticos. [ 6 ]
En marzo de 2015, investigadores de Royal Holloway anunciaron mejoras en su ataque, proporcionando un ataque 2 26 contra contraseñas cifradas con RC4, como se usa en TLS. [ 54 ]
ataque al bar mitzvá
En la conferencia Black Hat Asia 2015, Itsik Mantin presentó otro ataque contra SSL utilizando el cifrado RC4. [ 55 ] [ 56 ]
NO MÁS ataques
En 2015, investigadores de seguridad de la KU Leuven presentaron nuevos ataques contra RC4 en TLS y WPA-TKIP . [ 57 ] Denominado ataque de Explotación de Monitoreo y Recuperación de Numerosas Ocurrencias (NOMORE), es el primer ataque de este tipo que se demostró en la práctica. Su ataque contra TLS puede descifrar una cookie HTTP segura en 75 horas. El ataque contra WPA-TKIP puede completarse en una hora y permite a un atacante descifrar e inyectar paquetes arbitrarios.
Variantes RC4
Como se mencionó anteriormente, la debilidad más importante de RC4 radica en la programación de claves insuficiente; los primeros bytes de la salida revelan información sobre la clave. Esto se puede corregir simplemente descartando una parte inicial del flujo de salida. [ 58 ] Esto se conoce como RC4-drop N , donde N suele ser un múltiplo de 256, como 768 o 1024.
Se han realizado varios intentos para fortalecer RC4, en particular Spritz, RC4A, VMPC y RC4 + .
RC4A
Souradyuti Paul y Bart Preneel han propuesto una variante de RC4, a la que llaman RC4A. [ 59 ]
RC4A utiliza dos arreglos de estado S1 y S2 , y dos índices j1 y j2 . Cada vez que se incrementa i , se generan dos bytes:
- Primero, el algoritmo RC4 básico se realiza utilizando S1 y j1 , pero en el último paso, S1[ i ]+S1[ j1 ] se busca en S2 .
- En segundo lugar, la operación se repite (sin incrementar i de nuevo) en S2 y j2 , y se obtiene como salida S1[S2[ i ]+S2[ j2 ]] .
Por lo tanto, el algoritmo es:
Todas las operaciones aritméticas se realizan módulo 256. i := 0 j1 := 0 j2 := 0 mientras GenerandoSalida: i := i + 1 j1 := j1 + S1[i] Intercambiar los valores de S1[i] y S1[j1] produce S2[S1[i] + S1[j1] ]. j2 := j2 + S2[i] Intercambiar valores de S2[i] y S2[j2] salida S1[S2[i] + S2[j2] ] finmientras
Aunque el algoritmo requiere el mismo número de operaciones por byte de salida, presenta un mayor paralelismo que RC4, lo que podría suponer una mejora en la velocidad.
Aunque más fuerte que RC4, este algoritmo también ha sido atacado, y Alexander Maximov [ 60 ] y un equipo de NEC [ 61 ] desarrollaron formas de distinguir su salida de una secuencia verdaderamente aleatoria.
VMPC
La composición de permutación modificada variablemente (VMPC) es otra variante de RC4. [ 62 ] Utiliza una programación de claves similar a la de RC4, con j := S[(j + S[i] + key[i mod keylength]) mod 256] iterando 3 × 256 = 768 veces en lugar de 256, y con 768 iteraciones adicionales opcionales para incorporar un vector inicial. La función de generación de salida opera de la siguiente manera:
Todas las operaciones aritméticas se realizan módulo 256. i := 0 mientras GenerandoSalida: j := S[j + S[i]] Salida S[S[S[j]] + 1] Intercambiar S[i] y S[j] ( b := S[j]; S[j] := S[i]; S[i] := b) ) i := i + 1 fin mientras
Esto fue atacado en los mismos artículos que RC4A, y se puede distinguir dentro de 2 38 bytes de salida. [ 63 ] [ 61 ]
RC4 +
RC4 + es una versión modificada de RC4 con una programación de clave de tres fases más compleja (que tarda aproximadamente tres veces más que RC4, o lo mismo que RC4-drop512), y una función de salida más compleja que realiza cuatro búsquedas adicionales en la matriz S para cada byte de salida, lo que tarda aproximadamente 1,7 veces más que el RC4 básico. [ 64 ]
Todas las operaciones aritméticas módulo 256. << y >> son desplazamiento a la izquierda y a la derecha, ⊕ es OR exclusivo mientras GeneratingOutput: i := i + 1 a := S[i] j := j + a Intercambiar S[i] y S[j] ( b := S[j]; S[j] := S[i]; S[i] := b; ) c := S[i<<5 ⊕ j>>3] + S[j<<5 ⊕ i>>3] salida (S[a+b] + S[c⊕0xAA]) ⊕ S[j+b] finmientras
Este algoritmo no ha sido analizado en profundidad.
Spritz
En 2014, Ronald Rivest dio una charla y fue coautor de un artículo [ 14 ] sobre un rediseño actualizado llamado Spritz. Un acelerador de hardware de Spritz se publicó en Secrypt, 2016 [ 65 ] y muestra que, debido a las múltiples llamadas anidadas necesarias para producir bytes de salida, Spritz funciona bastante lento en comparación con otras funciones hash como SHA-3 y la mejor implementación de hardware conocida de RC4.
Al igual que otras funciones esponja , Spritz se puede utilizar para construir una función hash criptográfica, un generador de bits aleatorios determinista ( DRBG ), un algoritmo de cifrado que admita el cifrado autenticado con datos asociados (AEAD), etc. [ 14 ]
En 2016, Banik e Isobe propusieron un ataque que puede distinguir Spritz del ruido aleatorio. [ 66 ] En 2017, Banik, Isobe y Morii propusieron una solución simple que elimina el elemento distintivo en los dos primeros bytes del flujo de claves, lo que requiere solo un acceso a memoria adicional sin disminuir sustancialmente el rendimiento del software. [ 67 ]
Protocolos basados en RC4
- WEP
- TKIP (algoritmo predeterminado para WPA , pero se puede configurar para usar AES-CCMP en lugar de RC4)
- Cifrado del protocolo BitTorrent
- Microsoft Office XP (implementación insegura ya que el nonce permanece sin cambios cuando se modifican los documentos [ 68 ] )
- Cifrado punto a punto de Microsoft
- Seguridad de la capa de transporte / Capa de sockets seguros (era opcional y luego se prohibió el uso de RC4 en RFC 7465)
- Secure Shell (opcional)
- Protocolo de escritorio remoto (opcional)
- Kerberos (opcionalmente)
- Resumen del mecanismo SASL -MD5 (opcionalmente, histórico , obsoleto en RFC 6331)
- Skype (en forma modificada) [ 69 ]
Cuando un protocolo está marcado con "(opcionalmente)", RC4 es uno de los múltiples cifrados que el sistema puede configurar para usar.
Véase también
- TEA , Block TEA, también conocido como eXtended TEA y Corrected Block TEA : una familia de cifradores de bloques que, al igual que RC4, están diseñados para ser muy sencillos de implementar.
- Estándar de cifrado avanzado
- CipherSaber
Referencias
- ↑ P. Prasithsangaree; P. Krishnamurthy (2003). Análisis del consumo de energía de los algoritmos RC4 y AES en redes LAN inalámbricas (PDF) . GLOBECOM '03. IEEE. Archivado del original (PDF) el 3 de diciembre de 2013.
- ↑ "Pruebas de rendimiento de Crypto++ 5.6.0" . Consultado el 22 de septiembre de 2015 .
- 1 2 Andrei Popov (febrero de 2015). Prohibición de conjuntos de cifrado RC4 . IETF . doi : 10.17487/RFC7465 . RFC 7465 .
- ↑ Lucian Constantin (14 de mayo de 2014). "Microsoft continúa con su plan de eliminación gradual del cifrado RC4 con las actualizaciones de seguridad de .NET" . ComputerWorld .
- ↑ J. Katz; Y. Lindell (2014), Introducción a la criptografía moderna , Chapman and Hall/CRC, pág. 77 .
- 1 2 3 John Leyden (6 de septiembre de 2013). "Ese criptograma de la NSA que sacude la tierra: ¿Han descifrado los espías RC4?" . The Register .
- ↑ "Configuraciones recomendadas de TLS del lado del servidor de seguridad de Mozilla" . Mozilla . Consultado el 3 de enero de 2015 .
- ↑ "Aviso de seguridad 2868725: Recomendación de deshabilitar RC4" . Microsoft. 12 de noviembre de 2013. Consultado el 4 de diciembre de 2013 .
- ↑ "Preguntas frecuentes sobre Rivest en csail.mit.edu" .
- ↑ "Gracias Bob Anderson" . Cypherpunks (Lista de correo). 9 de septiembre de 1994. Archivado del original el 22 de julio de 2001. Consultado el 28 de mayo de 2007 .
- ↑ Bob Jenkins (15 de septiembre de 1994). "Re: RC4 ?" . Grupo de noticias : sci.crypt . Usenet: 359qjg$55v$1@mhadg.production.compuserve.com .
- ↑ "Páginas del manual: arc4random" . 5 de junio de 2013. Consultado el 2 de febrero de 2018 .
- ↑ "6.857 Seguridad Informática y de Redes Primavera 2008: Clases y Materiales" .
- 1 2 3 Rivest, Ron; Schuldt, Jacob (27 de octubre de 2014). "Spritz: un cifrado de flujo y función hash esponjosa similar a RC4" (PDF) . Recuperado el 26 de octubre de 2014 .
- ↑ "FIPS PUB 160 para sistemas de información - Lenguaje de programación C" (PDF) . nvlpubs.nist.gov . Instituto Nacional Estadounidense de Estándares. 14 de diciembre de 1989. pág. 155. Consultado el 22 de diciembre de 2025 .
- ↑ Selinger, Peter. "El generador de números pseudoaleatorios GLIBC" . www.mscs.dal.ca. Consultado el 22 de diciembre de 2025 .
- ^ "arc4random(3)" . OpenBSD.
- 1 2 Itsik Mantin; Adi Shamir (2001). Un ataque práctico a Broadcast RC4 (PDF) . FSE 2001. págs. 152–164 . doi : 10.1007/3-540-45473-X_13 .
- ↑ "OpenBSD 5.5" . Consultado el 21 de septiembre de 2014 .
- ↑ deraadt , ed. (21 de julio de 2014). "libc/crypt/arc4random.c" . Referencia cruzada de BSD, OpenBSD src/lib/ . Recuperado el 13 de enero de 2015.
Generador de números aleatorios basado en ChaCha para OpenBSD
. - ↑ riastradh, ed. (16 de noviembre de 2014). "libc/gen/arc4random.c" . Referencia cruzada de BSD, NetBSD src/lib/ . Recuperado el 13 de enero de 2015.
API arc4random(3) heredada de OpenBSD reimplementada usando el PRF ChaCha20, con estado por hilo.
- ↑ "arc4random – Páginas del manual de NetBSD" . Archivado del original el 6 de julio de 2020. Consultado el 6 de enero de 2015 .
- ↑ "Actualización del módulo arc4random de OpenBSD y LibreSSL" . Consultado el 6 de enero de 2016 .
- ↑ "La biblioteca GNU C finalmente agrega funciones arc4random para Linux" . www.phoronix.com .
- ↑ Bartosz Zoltak. "VMPC-R: Generador de números pseudoaleatorios criptográficamente seguro, alternativa a RC4" . ¿2010?
- ↑ Chefranov, AG "Mejora del período RC4 del generador de números pseudoaleatorios" . 2006.
- ↑ "Respuesta de seguridad de RSA a las debilidades en el algoritmo de programación de claves de RC4" . RSA Laboratories. 1 de septiembre de 2001.
- ↑ Sklyarov, Dmitry (2004). Claves ocultas para el acceso no autorizado y las intrusiones en software . A-List Publishing. págs. 92–93 . ISBN 978-1931769303.
- ↑ "ssl - ¿Cifrados más seguros para usar con BEAST? (Exploit de TLS 1.0) He leído que RC4 es inmune" . serverfault.com .
- ↑ Isobe, Takanori; Ohigashi, Toshihiro (10–13 de marzo de 2013). "Seguridad del cifrado de flujo RC4" . Universidad de Hiroshima. Archivado del original el 1 de noviembre de 2014. Recuperado el 27 de octubre de 2014 .
- ↑ Pouyan Sepehrdad; Serge Vaudenay; Martin Vuagnoux (2011). «Descubrimiento y explotación de nuevos sesgos en RC4». Áreas selectas en criptografía . Notas de clase en ciencias de la computación. Vol. 6544. págs. 74–91 . doi : 10.1007/978-3-642-19574-7_5 . ISBN 978-3-642-19573-0.
- ↑ Green, Matthew (12 de marzo de 2013). "Ataque de la semana: RC4 está parcialmente roto en TLS" . Cryptography Engineering . Recuperado el 12 de marzo de 2013 .
- ↑ Nadhem AlFardan; Dan Bernstein; Kenny Paterson; Bertram Poettering; Jacob Schuldt. "Sobre la seguridad de RC4 en TLS" . Royal Holloway University of London. Archivado del original el 15 de marzo de 2013. Recuperado el 13 de marzo de 2013 .
- ↑ Andrew Roos. Una clase de claves débiles en el cifrado de flujo RC4. Dos publicaciones en sci.crypt, message-id 43u1eh$1j3@hermes.is.co.za y 44ebge$llf@hermes.is.co.za, 1995.
- ↑ Goutam Paul, Siddheshwar Rathi y Subhamoy Maitra. Sobre el sesgo no despreciable del primer byte de salida de RC4 hacia los tres primeros bytes de la clave secreta. Actas del Taller Internacional sobre Codificación y Criptografía (WCC) 2007, páginas 285–294 y Revista Designs, Codes and Cryptography, páginas 123–134, vol. 49, n.º 1-3, diciembre de 2008.
- ↑ Goutam Paul y Subhamoy Maitra. La permutación tras la programación de claves RC4 revela la clave secreta. SAC 2007, páginas 360–377, vol. 4876, Lecture Notes in Computer Science , Springer.
- ↑ Eli Biham y Yaniv Carmeli. Reconstrucción eficiente de claves RC4 a partir de estados internos. FSE 2008, páginas 270–288, vol. 5086, Lecture Notes in Computer Science, Springer.
- ↑ Mete Akgun, Pinar Kavak, Huseyin Demirci. Nuevos resultados sobre el algoritmo de programación de claves de RC4. INDOCRYPT 2008, páginas 40–52, vol. 5365, Lecture Notes in Computer Science, Springer.
- ↑ Riddhipratim Basu, Subhamoy Maitra, Goutam Paul y Tanmoy Talukdar. Sobre algunas secuencias del índice pseudoaleatorio secreto j en la programación de claves RC4. Actas del 18.º Simposio Internacional sobre Álgebra Aplicada, Algoritmos Algebraicos y Códigos Correctores de Errores (AAECC), 8-12 de junio de 2009, Tarragona, España, páginas 137-148, vol. 5527, Lecture Notes in Computer Science, Springer.
- ↑ Subhamoy Maitra y Goutam Paul. Nueva forma de sesgo de permutación y fuga de clave secreta en bytes de flujo de claves de RC4. Actas del 15.º Taller de Cifrado Rápido de Software (FSE), 10-13 de febrero de 2008, Lausana, Suiza, páginas 253-269, vol. 5086, Lecture Notes in Computer Science, Springer.
- ↑ Souradyuti Paul ; Bart Preneel . Análisis de estados predictivos no fortuitos del generador de secuencia de claves RC4 (PDF) . Indocrypt 2003. págs. 52–67 .
- ↑ Scott R. Fluhrer; David A. McGrew. Análisis estadístico del supuesto generador de secuencias de claves RC4 (PDF) . FSE 2000. págs. 19–30 . Archivado del original (PDF) el 2 de mayo de 2014.
- ^ Basu, Riddhipratim; Ganguly, Shirshendu; Maitra, Subhamoy; Paul, Goutam (2008). "Una caracterización completa de la evolución del algoritmo de generación pseudoaleatoria RC4" . Revista de criptología matemática . 2 (3): 257– 289. doi : 10.1515/JMC.2008.012 . S2CID 9613837 .
- ↑ Fluhrer, Scott R.; Mantin, Itsik; Shamir, Adi (2001). "Debilidades en el algoritmo de programación de claves de RC4" . Selected Areas in Cryptography : 1–24 . Archivado del original el 2 de junio de 2004.
- ↑ "Tecnología provisional para la seguridad de redes LAN inalámbricas: WPA reemplazará a WEP mientras la industria desarrolla un nuevo estándar de seguridad" .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "RC4-drop(nbytes) en la base de datos de nombres de algoritmos criptográficos estándar " .
- ↑ Rivest, Ron. "Respuesta de seguridad de RSA a las debilidades en el algoritmo de programación de claves de RC4" .
- ↑ A. Klein, Ataques al cifrado de flujo RC4, Diseños, códigos y criptografía (2008) 48:269–286.
- ↑ Erik Tews, Ralf-Philipp Weinmann, Andrei Pyshkin. Rompiendo WEP de 104 bits en menos de un minuto .
- ↑ Souradyuti Paul y Bart Preneel , Una nueva debilidad en el generador de secuencia de claves RC4 y un enfoque para mejorar la seguridad del cifrado . Cifrado rápido de software – FSE 2004, págs. 245–259.
- ↑ John Leyden (15 de marzo de 2013). "La criptografía de las cookies HTTPS se desmorona de nuevo en manos de los expertos en estadística" . The Register .
- ↑ AlFardan; et al. (8 de julio de 2013). "Sobre la seguridad de RC4 en TLS y WPA" (PDF) . Grupo de Seguridad de la Información, Royal Holloway, Universidad de Londres. Archivado del original (PDF) el 22 de septiembre de 2013. Recuperado el 6 de septiembre de 2013 .
- ↑ "Sobre la seguridad de RC4 en TLS y WPA" . Grupo de Seguridad de la Información, Royal Holloway, Universidad de Londres. Archivado del original el 15 de marzo de 2013. Consultado el 6 de septiembre de 2013 .
- ↑ "RC4 debe morir" . Archivado del original el 18 de marzo de 2015. Consultado el 17 de marzo de 2015 .
- ↑ "Informes – 26 y 27 de marzo" . 2015. Consultado el 19 de noviembre de 2016 .
- ↑ "Ataques a SSL al usar RC4" (PDF) . 2015. Consultado el 19 de noviembre de 2016 .
- ↑ Mathy Vanhoef; Frank Piessens (9 de agosto de 2015). "RC4 NOMORE: Explotación de monitoreo y recuperación de numerosas ocurrencias" .
- ↑ Ilya Mironov (1 de junio de 2002), "(Not So) Random Shuffles of RC4" , Advances in Cryptology – CRYPTO 2002 (PDF) , Lecture Notes in Computer Science, vol. 2442, Springer-Verlag, pp. 304–319 , doi : 10.1007/3-540-45708-9_20 , ISBN 978-3-540-44050-5, Archivo de preimpresiones de criptología: Informe 2002/067 , consultado el 4 de noviembre de 2011
- ↑ Souradyuti Paul ; Bart Preneel (2004), "Una nueva debilidad en el generador de secuencia de claves RC4 y un enfoque para mejorar la seguridad del cifrado" , Cifrado rápido de software, FSE 2004 , Lecture Notes in Computer Science, vol. 3017, Springer-Verlag, pp. 245–259 , doi : 10.1007/978-3-540-25937-4_16 , ISBN 978-3-540-22171-5Consultado el 4 de noviembre de 2011.
- ↑ Alexander Maximov (22 de febrero de 2007), Dos ataques de distinción lineal contra VMPC y RC4A y debilidad de la familia de cifrados de flujo RC4 , Cryptology ePrint Archive: Informe 2007/070 , consultado el 4 de noviembre de 2011.
- ^ Yukiyasu Tsunoo; Teruo Saito; Hiroyasu Kubo; Maki Shigeri; Tomoyasu Suzaki; Takeshi Kawabata (2005), El ataque distintivo más eficiente contra VMPC y RC4A (PDF)
- ↑ Bartosz Zoltak (2004), "VMPC One-Way Function and Stream Cipher" (PDF) , Fast Software Encryption, FSE 2004 (PDF) , Lecture Notes in Computer Science, vol. 3017, Springer-Verlag, pp. 210–225 , CiteSeerX 10.1.1.469.8297 , doi : 10.1007/978-3-540-25937-4_14 , ISBN 978-3-540-22171-5Consultado el 4 de noviembre de 2011.
- ↑ "CryptoLounge: RC4A" . Archivado del original el 1 de octubre de 2011. Consultado el 4 de noviembre de 2011 .
- ↑ Subhamoy Maitra; Goutam Paul (19 de septiembre de 2008), "Análisis de RC4 y propuesta de capas adicionales para un mejor margen de seguridad" , Progress in Cryptology - INDOCRYPT 2008 (PDF) , Lecture Notes in Computer Science, vol. 5365, Springer-Verlag, pp. 27–39 , CiteSeerX 10.1.1.215.7178 , doi : 10.1007/978-3-540-89754-5_3 , ISBN 978-3-540-89753-8, Archivo de preimpresiones de criptología: Informe 2008/396 , consultado el 4 de noviembre de 2011
- ↑ Debjyoti Bhattacharjee; Anupam Chattopadhyay. "Acelerador de hardware para Spritz de cifrado de flujo" (PDF) . Secrypt 2016. Consultado el 29 de julio de 2016 .
- ↑ Banik, Subhadeep; Isobe, Takanori (20 de marzo de 2016). «Criptoanálisis del cifrado de flujo Spritz completo». En Peyrin, Thomas (ed.). Cifrado de software rápido . Lecture Notes in Computer Science. Vol. 9783. Springer Berlin Heidelberg. pp. 63–77 . doi : 10.1007/978-3-662-52993-5_4 . ISBN 9783662529928. S2CID 16296315 .
- ↑ Banik, Subhadeep; Isobe, Takanori; Morii, Masakatu (1 de junio de 2017). "Análisis y mejoras del cifrado de flujo Spritz completo" . IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences . E100.A (6): 1296– 1305. Bibcode : 2017IEITF.100.1296B . doi : 10.1587/transfun.E100.A.1296 . hdl : 10356/81487 .
- ↑ Hongjun Wu, "El mal uso de RC4 en Microsoft Word y Excel". https://eprint.iacr.org/2005/007
- ↑ "Se expone parcialmente el procedimiento de cifrado de Skype" . www.h-online.com. Archivado del original el 11 de julio de 2010. Consultado el 8 de julio de 2010 .
Lecturas adicionales
- Paul, Goutam; Subhamoy Maitra (2011). Cifrado de flujo RC4 y sus variantes . CRC Press. ISBN 9781439831359.
- Schneier, Bruce (1995). «Capítulo 17: Otros cifradores de flujo y generadores de secuencias aleatorias reales» . Criptografía aplicada: protocolos, algoritmos y código fuente en C (2.ª ed.). Wiley. ISBN 978-0471117094.
Enlaces externos
- Publicación original del algoritmo RC4 en la lista de correo de Cypherpunks , versión archivada.
- RFC 4345 – Modos Arcfour mejorados para el protocolo de capa de transporte Secure Shell (SSH)
- RFC 6229 – Vectores de prueba para el cifrado de flujo RC4
- RFC 7465 – Prohibición de conjuntos de cifrado RC4
- Kaukonen; Thayer. Un algoritmo de cifrado de flujo "Arcfour" . IETF . ID draft-kaukonen-cipher-arcfour-03.
- Entrada para RC4 en SCAN (Nomenclatura estándar de algoritmos criptográficos)
- Ataques a RC4 en Wayback Machine (archivado el 21 de febrero de 2015)
- Respuesta de seguridad de RSA a las vulnerabilidades en el algoritmo de programación de claves de RC4 en Wayback Machine (archivado el 18 de noviembre de 2016)
- RC4 en WEP
- Seguridad del algoritmo WEP en la Wayback Machine (archivado el 19 de enero de 2020)
- Fluhrer; Mantin; Shamir (verano-otoño de 2002). "Ataques a RC4 y WEP" . CryptoBytes . 5 (2). Archivado del original (PostScript) el 2 de enero de 2015.
- Cifrados de flujo
- Cifrados de flujo rotos
- Generadores de números pseudoaleatorios
- Cifrados gratuitos