RC4 (ARCFOUR) — voogkrüptimise algoritm, ajalugu ja turvariskid
Krüptograafias on RC4 (tuntud ka kui ARC4 või ARCFOUR ehk Alleged RC4, vt allpool) üks ajalooliselt enim kasutatud tarkvaralisi voogkoode. Seda on kasutatud paljudes tuntud protokollides ja toodetes, näiteks Secure Sockets Layer (SSL/TLS) Interneti-liikluse kaitseks ja WEP traadita võrkude kaitseks, kuid tänapäeval peetakse RC4-i mitmel põhjusel ebaturvaliseks ja see on enamikes kaasaegsetes rakendustes keelatud.
Ajalugu ja litsents
RC4-i lõi Ron Rivest (RSA Security) 1987. aastal. Kuigi ametlik nimi on "Rivest Cipher 4", nimetatakse RC-lühendit vahel ka "Roni koodiks" (vt ka RC2, RC5 ja RC6). Algupärast RC4-i hoiti pikka aega ärisaladusena, kuni selle kirjeldus postitati 1994. aasta septembris Cypherpunks'i postiloendisse ning levis seejärel sci.crypt newsgroupi ja paljudele veebisaitidele. Koodi vastavus litsentsitud RC4-i väljundile kinnitas selle ehtsust. Kuna algoritm sai avalikuks, ei olnud ta enam ärisaladus, kuid nimi "RC4" on endiselt kaitstud kaubamärgiga, mistõttu dokumendis viidatakse tihti ARCFOUR/ARC4-ile (alleged RC4), et vältida kaubamärgiga seotud probleeme.
Miks RC4 levis
RC4 populaarsuse taga olid eelkõige selle liigne lihtsus ja kiirus. Algoritmi on kerge nii tarkvaras kui ka riistvaras teostada, see nõuab vähe mälu ja on efektiivne väikestes protsessorites. Need omadused viisid RC4 laialdase kasutamiseni erinevates protokollides.
Kuidas RC4 töötab (lühike tehniline ülevaade)
RC4 on voogkrüptosüsteem: see genereerib pseudojuhusliku bittide või baitide voo (võtmevoo), mida XOR‑itakse selgesõnaga, et saada krüpteeritud tekst.
Peamised sammud on:
- Võtme pikendus ja algseadistus ehk KSA (Key-Scheduling Algorithm). KSA loob 256‑baitise permutatsiooni S algvektorist, kasutades sisendvõtit (võtme pikkus tavaliselt 40 kuni 256 bitti).
- Pseudosuvalise voo generaator ehk PRGA (Pseudo-Random Generation Algorithm). PRGA kasutab S‑vektorit ja lihtsaid swap‑operatsioone, et genereerida võtmevoogu baitide kaupa. Iga väljundbaiti XOR‑itakse selgesõnaga, et saada krüpteeritud tekst.
Lihtsustatult: S on massiiv [0..255], KSA segab massiivi võtme abil ja PRGA toodab iga sammu jooksul ühe väljaandmisebaidi läbi indekseite liigutuste ja vahetuste ning valiku S[(S[i]+S[j]) mod 256].
Kasutus ja levimus
RC4 on olnud osa mitmest laialt kasutatavast krüpteerimisprotokollist ja -standardist, sh WEP ja mõnedes varasemates versioonides WPA (täpsemalt TKIP), samuti algupärases TLS/SSL‑i rakendustes. Põhjused olid eelkõige tagumine ühilduvus ja jõudlus. Siiski selgusid erinevad nõrkused, mis muutsid RC4 reale kriitiliseks valikuks.
Turvariskid ja tuntud rünnakud
RC4 ei vasta mitmel viisil krüptograafide poolt turvalisele salakirjale kehtestatud standarditele. Peamised probleemid:
- Tõsised algusbiasid (keystream biases): RC4 võtmevoo algusbaidid ei ole juhuslikult jaotunud — mõned väärtused esinevad sagedamini. See võimaldab statistikapõhiseid rünnakuid, eriti kui samas võtme‑/IV‑kombinatsioonis krüpteeritakse palju teadaolevat või korduvat sisu.
- FMS‑rünnak ja WEPi murdmine: Fluhrer, Mantin ja Shamir (2001) näitasid, et WEP‑is kasutatud võtmelaienduse mustrid koos lühikeste ja korduvate IV‑idega võivad lubada võtme taastamist. See oli peamine põhjus, miks WEPi ei peeta turvaliseks ja see on asendatud turvalisemate lahendustega.
- Muud statistilised rünnakud: Ajavahemikul pärast FMS‑i leiti mitmeid muid ebatäpsusi ja bias'e (näiteks Mantin ja teised), mis võimaldasid esialgsete baitide kaudu leida osa selgesõnast või nüüvil olla lähtepunktiks man-in-the-middle tüüpi rünnakutele.
- TLS/HTTPS probleemid: 2013. aastal näidati välja mitu reaalse maailma rünnakut, mis kasutasid RC4i vigu TLS‑i krüpteeritud seansside sisu osaliseks taastamiseks. Selliste uurimuste ja reaalse maailma riskide tõttu kiideti lõpuks standardites ja brauserites RC4 keelustamine heaks (vt RFC 7465, 2015).
Rünnakud on eriti tõenäolised, kui väljastatud võtmevoo algust ei eemaldata (st esimesed baidid sisaldavad tugevaid bias'e) või kui ühte võtmevoogu kasutatakse kaks korda (võtmete/IV‑ide kordumine). Seetõttu on mõned RC4 kasutamise viisid osutunud väga ebaturvalisteks krüptosüsteemideks, näiteks WEP.
Levinud ja katsetatud leevendusmeetmed
Mõned ajutised meetmed on püüdnud vähendada RC4 nõrkusi, kuid need ei paranda algoritmi põhistruktuuri:
- Alguse väljalangetamine (RC4-drop‑N): jätta võtmevoo esimesed N baidi (nt 256 või 1024) kasutamata, et mööduda tugevamatest algusbiasidest. See vähendab mõningaid riske, kuid ei kõrvalda kõiki bias'e ega rünnakute võimalusi.
- Võtme kordumatuse tagamine: kindlasti unikalsed võtmed/IV‑d iga seansi või paketiga, vältimaks võtmevoo kordumist.
- Rakenduse tasandi piirangud: mitte krüpteerida palju teadaolevat või korduvat sisu sama võtmega; siiski sageli ebapraktiline.
Kuid üldiselt peetakse need vaid ajutisteks abinõudeks: RC4 struktuursed nõrkused jätkuvad ja seetõttu ei ole RC4 soovitatav uusates süsteemides.
Standardid ja keelustamine
Tugevate teadustööde ja reaalse maailma rünnakute tõttu hakkasid standardiorganisatsioonid ja brauserid RC4‑i välja viima. Eriti märkimisväärne oli RFC 7465 (2015), mis soovitab RC4 keelata TLS‑i kontekstis. Tänapäeval on enamik kaasaegseid brausereid ja serveripoolsed stackid RC4‑i vaikimisi tugi eemaldanud või selle keelustanud.
Soovitused ja alternatiivid
Kui on vaja turvalist voogkrüpteerimist või üldist andmete kaitset, on soovitatav kasutada kaasaegseid algoritme ja režiiime, mis on krüptograafiliselt analüüsitud ja laialdaselt aktsepteeritud. Levinumad alternatiivid on:
- AES‑GCM (Galois/Counter Mode) — pakub konfidentsiaalsust ja autentimist ning on tänapäeval üks levinumaid valikuid TLS‑i ja muudes protokollides.
- AES‑CCM — sobib piiratud keskkondades, kus on vaja nii krüpteerimist kui autentimist.
- ChaCha20‑Poly1305 — voogkrüptor ChaCha20 koos autentimisega Poly1305, kiire ja turvaline alternatiiv, eriti ressursipiiratud seadmetes või kui riistvaraline AES‑tugi puudub.
Kokkuvõte
RC4 oli oma ajastul tähtis ja levinuim voogkrüptor tänu lihtsusele ja kiirusele, kuid aja jooksul avastatud strukturaalsed nõrkused — eelkõige keystreami bias'e ja võtme‑/IV‑probleemid — muutsid selle tänapäevaste turvanõuetega kokku sobimatuks. Tänapäeval ei soovitata RC4‑i kasutada uutes rakendustes; selle asemel tuleks valida tugevamad ja standardiseeritud krüptograafilised moodused nagu AES‑GCM või ChaCha20‑Poly1305. Esialgsete andmete (esimeste baitide) välajätmine võib mõnevõrra parandada turvalisust, kuid see ei ole piisav asend täielikult turvatud algoritmile.
RC4 kasutamist ja levikut mõjutasid ka juriidilised aspektid: kui algoritm sai teadaolevaks, ei olnud see enam ärisaladus, kuid nimi jäi kaitstud kaubamärgiga, mistõttu dokumentides kasutatakse sageli nimetust ARCFOUR/ARC4.
RC4-põhised krüptosüsteemid
- WEP
- WPA
- BitTorrent protokolli krüpteerimine
- Microsoft Point-to-Point krüpteerimine
- Secure Sockets Layer (valikuliselt)
- Secure Shell (valikuliselt)
- Kaugtöölaua klient (RDC üle RDP)
- Kerberos (valikuliselt)
- SASL-mehhanism Digest-MD5 (valikuliselt)
- Gpcode.AK, 2008. aasta juuni alguses Microsofti Windowsi arvutiviirus, mis võtab dokumendid pantvangi lunaraha saamiseks, varjates neid RC4 ja RSA-1024 krüpteerimisega.
Kui krüptosüsteem on märgitud "(valikuliselt)", on RC4 üks mitmest krüptosüsteemist, mida süsteem saab kasutada.
Seotud leheküljed
- Täiustatud krüpteerimisstandard
- Andmete krüpteerimise standard (DES)
- DES-X
- eSTREAM - ELi poolt läbiviidav uute voogkoodide hindamine.
- TEA, Block TEA, tuntud ka kui eXtended TEA ja Corrected Block TEA - plokkšifrite perekond, mis on sarnaselt RC4-ga loodud nii, et neid oleks väga lihtne rakendada.
- Triple DES (TDES)
Küsimused ja vastused
K: Mis on RC4?
V: RC4 (tuntud ka kui ARC4 või ARCFOUR ehk Alleged RC4) on tarkvaraline voošifreering, mida kasutatakse populaarsetes protokollides nagu Secure Sockets Layer (SSL) ja WEP.
K: Kes lõi RC4?
V: RC4 lõi Ron Rivest (RSA Security) 1987. aastal.
K: Kuidas sai algoritm avalikuks?
V: Algoritm sai avalikuks, kui see 1994. aasta septembris postitati Cypherpunks'i postiloendisse ja seejärel levis paljudele veebisaitidele Internetis.
K: Kas RC4 on kaubamärgiga kaitstud?
V: Jah, nimi "RC4" on kaitstud kaubamärgiga.
K: Mis on kaks põhjust, miks seda on laialdaselt kasutatud?
V: Kaks peamist põhjust, mis on aidanud seda kasutada nii paljudes rakendustes, on selle kiirus ja lihtsus. RC4 kasutamist nii tarkvaras kui ka riistvaras on äärmiselt lihtne arendada.
K: Kuidas krüpteerimisalgoritm töötab?
V: Krüpteerimisalgoritm algab erineva võtmepikkusega, tavaliselt vahemikus 40 kuni 256 bitti, kasutades võtmepikendusalgoritmi (KSA). Kui see on lõpetatud, luuakse krüpteeritud bittide voog, kasutades pseudosrandom-genereerimise algoritmi (PRGA).
K: Kas RC4 on uute rakenduste jaoks turvaline?
V: Ei, sest selle ründamiseks on palju meetodeid, mistõttu seda ei soovitata kasutada uutes rakendustes.