RC4 (Ron's Code 4, Rivest Cipher 4, ARC4, ARCFOUR) on RSA Laboratoriesin (nykyisin RSA Security) työntekijän Ronald Rivestin 1987 suunnittelema salausalgoritmi. RC4 on symmetrinen jonosalaaja, joka salaa tiedon yksi tavu kerrallaan. Algoritmi on nopea ja se perustuu vaihtelevan mittaiseen salaiseen avaimeen.
Alussa RC4 -avain oli rajoitettu vain 40 bittiin USA:n vientirajoitusten vuoksi, mutta nykyään sitä saa käyttää Suomessakin 64- ja 128-bittisinä (Wassenaarin sopimus). Teoriassa on mahdollista käyttää avaimia yhdestä bitistä 2048:aan asti.
RC4 on kaupallisesti laajasti käytössä mm. Lotus Notesissa, Oracle SQL:ssä, Microsoft Windowsissa sekä SSL-protokollassa. Algoritmi on tarkoin varjeltu salaisuus, mutta kryptoanalyytikot ovat onnistuneet purkamaan sen. RC4 on toteutettu mm. ilmaisessa OpenSSL-ohjelmistokirjastossa.
RC4:n murrettavuudesta johtuvien huolien vuoksi se on asetettu käyttökieltoon.[1][2]
IETF on kieltänyt algoritmin käytön TLS-salauksessa (RFC 7465).
Myös Mozilla ja Microsoft kieltäneet algoritmin käytön.[3][4]
Tuntematon henkilö vuosi 9. syyskuuta 1994 RC4:n lähdekoodin internetiin.
Tutkijat ovat löytäneet myös pari ongelmaa esimerkiksi RC4:n KSA:sta. KSA on tekniikka, joka pidentää avaimen generaattorin tilaksi - RC4:n kohdalla 256 luvun permutaatioksi. KSA:ssa vaihtelua ei ole tarpeeksi: juuri alustetun generaattorin tila on liitettävissä samankaltaisella avaimella alustettuun tilaan. Tämä johtaa avainvirran ensimmäisten tavujen samankaltaisuuteen samankaltaisilla avaimilla. Mikäli alustusvektori vain liitetään salaisen avaimen perään, avain on mahdollista selvittää seuraamalla suurta määrää viestejä. Tämä ongelma yleensä väistetään ohittamalla avainvirran ensimmäiset tavut. RC4-salausavaimen voi murtaa myös uudella PTW-hyökkäyksellä joka tarkkailee RC4-virran kulkua. PTW-hyökkäys on käytössä mm. aircrack-ng:llä.
RC4 on käytännössä näennäissatunnaislukugeneraattori (Pseudo-Random Number Generator, PRNG). Se siis luo isoja satunnaislukuja annettujen avainten perusteella. Salattu teksti saadaan yhdistämällä satunnaisluku ja salattava teksti XOR-operaatiolla.
Koska sama satunnaisluku syntyy aina samalla avaimella, tekstin purkaminen onnistuu samalla tekniikalla (kaksi XOR-operaatiota samalla satunnaisluvulla tietysti kumoavat toisensa).
|