# RC4

En criptografia, RC4 (Rivest Cipher 4, també conegut com ARC4 o ARCFOUR, que significa suposat RC4, vegeu més avall) és un xifratge de flux. Tot i que és notable per la seva senzillesa i velocitat en el programari, s'han descobert múltiples vulnerabilitats a RC4, que el fan insegur. És especialment vulnerable quan no es descarta l'inici del flux de claus de sortida, o quan s'utilitzen claus no aleatòries o relacionades. Els usos especialment problemàtics de RC4 han donat lloc a protocols molt insegurs com el WEP.
A 2015, there is speculation that some state cryptologic agencies may possess the capability to break RC4 when used in the TLS protocol. IETF has published RFC 7465 to prohibit the use of RC4 in TLS; Mozilla and Microsoft have issued similar recommendations.
S'han fet diversos intents per enfortir RC4, en particular Spritz, RC4A, VMPC i RC4$^+$.

## Història

RC4 va ser dissenyat per Ron Rivest de RSA Security el 1987. Tot i que oficialment s'anomena "Rivest Cipher 4", l'acrònim RC s'entén alternativament com a "Codi de Ron" (vegeu també RC2, RC5 i RC6).
RC4 era inicialment un secret comercial, però el setembre de 1994, una descripció d'ell es va publicar de manera anònima a la llista de correu de Cypherpunks. Aviat es va publicar al grup de notícies sci.crypt, on va ser trencat en pocs dies per Bob Jenkins. A partir d'aquí, es va estendre a molts llocs d'Internet. Es va confirmar que el codi filtrat era genuí, ja que es va trobar que la seva sortida coincideix amb la del programari propietari que utilitza RC4 amb llicència. Com que l'algoritme és conegut, ja no és un secret comercial. El nom RC4 és una marca registrada, de manera que RC4 sovint es coneix com a ARCFOUR o ARC4 (que significa suposat RC4) per evitar problemes de marca registrada. RSA Security mai ha llançat oficialment l'algoritme; Rivest, però, s'ha enllaçat amb l'article de la Viquipèdia en anglès sobre RC4 a les seves pròpies notes de curs el 2008 i va confirmar la història de RC4 i el seu codi en un article de 2014 d'ell.
RC4 va passar a formar part d'alguns protocols i estàndards de xifratge d'ús habitual, com WEP el 1997 i WPA el 2003/2004 per a targetes sense fil; i SSL el 1995 i el seu successor TLS el 1999, fins que RFC 7465 el 2015 va prohibir per a totes les versions de TLS, a causa dels atacs RC4 debilitant o trencant RC4 utilitzat a SSL/TLS. Els principals factors de l'èxit de RC4 en una gamma tan àmplia d'aplicacions han estat la seva velocitat i simplicitat: les implementacions eficients tant en programari com en maquinari eren molt fàcils de desenvolupar.

## Descripció

RC4 genera un flux pseudoaleatori de bits (un flux de claus). Com amb qualsevol xifratge de flux, aquests es poden utilitzar per al xifratge combinant-lo amb el text pla utilitzant la disjunció exclusiva; el desxifrat es realitza de la mateixa manera (ja que exclusiva o amb dades donades és una involució). Això és similar al pad d'un sol cop, excepte que s'utilitzen bits pseudoaleatoris generats, en lloc d'un flux preparat.
Per generar el flux de claus, el xifratge utilitza un estat intern secret que consta de dues parts:
* Una permutació dels 256 bytes possibles (indicat com "S" a continuació).
* Dos punters d'índex de 8 bits (indicats "i" i "j").
La permutació s'inicia amb una clau de longitud variable, normalment entre 40 i 2048 bits, utilitzant l'algoritme de programació de claus (KSA). Un cop fet això, el flux de bits es genera mitjançant l'algorisme de generació pseudo-aleatoria (PRGA).

## Descripció

RC4 genera un flux pseudoaleatori de bits (un flux de claus). Com amb qualsevol xifratge de flux, aquests es poden utilitzar per al xifratge combinant-lo amb el text pla utilitzant la disjunció exclusiva; el desxifrat es realitza de la mateixa manera (ja que exclusiva o amb dades donades és una involució). Això és similar al pad d'un sol cop, excepte que s'utilitzen bits pseudoaleatoris generats, en lloc d'un flux preparat.
Per generar el flux de claus, el xifratge utilitza un estat intern secret que consta de dues parts:
* Una permutació dels 256 bytes possibles (indicat com "S" a continuació).
* Dos punters d'índex de 8 bits (indicats "i" i "j").
La permutació s'inicia amb una clau de longitud variable, normalment entre 40 i 2048 bits, utilitzant l'algoritme de programació de claus (KSA). Un cop fet això, el flux de bits es genera mitjançant l' algorisme de generació pseudo-aleatoria (PRGA).

## Protocols basats en RC4

* WEP
* TKIP (algorisme per defecte per a WPA, però es pot configurar per utilitzar AES-CCMP en comptes de RC4)
* Xifratge del protocol BitTorrent
* Microsoft Office XP (implementació insegura ja que nonce no canvia quan es modifiquen els documents)
* Xifratge punt a punt de Microsoft
* Seguretat de la capa de transport/Capa de sòcols segurs (era opcional i després es va prohibir l'ús de RC4 a RFC 7465)
* Secure Shell (opcionalment)
* Protocol d'escriptori remot (opcionalment)
* Kerberos (opcionalment)
* SASL Mechanism Digest-MD5 (opcionalment, històric, obsolet a RFC 6331)
* Gpcode. AK , un virus informàtic de principis de juny de 2008 per a Microsoft Windows, que pren els documents com a ostatges per obtenir un rescat enfosquint-los amb xifratge RC4 i RSA-1024
* PDF
* Skype (en forma modificada)
Quan un protocol està marcat amb "(opcionalment)", RC4 és un dels múltiples xifrats que el sistema es pot configurar per utilitzar.

## Referències

* ↑ John Leyden. «That earth-shattering NSA crypto-cracking: Have spooks smashed RC4?» (en anglès). The Register, 06-09-2013.
* ↑ «Mozilla Security Server Side TLS Recommended Configurations» (en anglès). Mozilla. [Consulta: 3 gener 2015].
* ↑ «Security Advisory 2868725: Recommendation to disable RC4» (en anglès). Microsoft, 12-11-2013. [Consulta: 4 desembre 2013].
* ↑ «Rivest FAQ» (en anglès).
* ↑ «Manual Pages: arc4random» (en anglès), 05-06-2013. [Consulta: 2 febrer 2018].
* ↑ «6.857 Computer and Network Security Spring 2008: Lectures and Handouts» (en anglès).