RC4 - srautinė šifra: kas tai, kaip veikia ir saugumo trūkumai
Sužinokite, kas yra RC4 srautinė šifra, kaip ji veikia, jos privalumus, kritines saugumo spragas (WEP/TLS rizikos) ir rekomendacijas saugiam naudojimui.
Kriptografijoje RC4 (dar žinomas kaip ARC4 arba ARCFOUR, reiškiantis tariamą RC4, žr. toliau) yra vienas iš labiausiai paplitusių programinių srautinių šifrų. Jis buvo plačiai naudojamas tokiose populiariuose protokoluose kaip "Secure Sockets Layer" (SSL) ir vėliau TLS (interneto duomenų srautui apsaugoti) bei WEP (belaidžiams tinklams apsaugoti). RC4 išsiskiria paprastumu ir dideliu greičiu, todėl ilgą laiką buvo patrauklus tiek programinės, tiek techninės įrangos sprendimams.
Kaip veikia RC4
RC4 yra simetrinė srautinė šifra, kuri generuoja pseudoatsitiktinį raktų srautą (keystream), o šis srautas yra XOR'inamas su atvirkštiniu (plain) tekstu, kad gautų užšifruotą duomenų srautą. Algoritmas susideda iš dviejų pagrindinių etapų:
- Rakto išdėstymo algoritmas (KSA) – inicializuojama 256 baitų permutacija S (reikšmės 0–255). Naudojant vartotojo raktą (dažniausiai 40–256 bitų ilgio) permutacija maišoma pagal paprastą taisyklę, kad S būtų priklausoma nuo rakto.
- Pseudo-atsitiktinių skaičių generavimo algoritmas (PRGA) – iš paruoštos permutacijos S generuojamas raktų srautas po vieną baitą: atliekami indekso i ir j atnaujinimai, keičiami S elementai ir imamas S[t] (kur t priklauso nuo i ir j) – tai yra kintamasis išėjimo baitas. Kiekvienas tas baitas XOR'inamas su atitinkamu atviros informacijos baitu, kad gauti užšifruotą baitą.
Supaprastintai, KSA: inicializuojama S = [0..255], j=0; for i=0..255: j = (j + S[i] + key[i mod keylen]) mod 256; swap(S[i], S[j]). PRGA: i=j=0; kiekvienam baitui: i = (i+1) mod 256; j = (j + S[i]) mod 256; swap(S[i], S[j]); t = (S[i] + S[j]) mod 256; output = S[t].
Istorija ir prieinamumas
RC4 1987 m. sukūrė Ronas Rivestas iš "RSA Security". Nors oficialus jo pavadinimas yra "Rivesto šifras 4", RC santrumpa taip pat dažnai aiškinama kaip "Rono kodas" (taip pat žr. RC2, RC5 ir RC6). Pirmą kartą RC4 buvo laikomas komercine paslaptimi, tačiau 1994 m. rugsėjį jo aprašymas buvo paskelbtas "Cypherpunks" pašto sąraše ir vėliau plito internete. Buvo patvirtinta, kad paskelbtas kodas atitinka licencijinio RC4 išvestį, todėl algoritmas nebėra slaptas. Tačiau pavadinimas "RC4" yra apsaugotas prekės ženklu, todėl dažnai naudojami variantai "ARCFOUR" arba "ARC4".
Saugumo trūkumai ir žinomi išpuoliai
Per pastaruosius dešimtmečius buvo atskleista daugybė RC4 silpnųjų vietų. Dėl jų RC4 nėra laikomas pakankamai saugiu ir nerekomenduojamas naudoti naujose sistemose. Svarbiausios problemos:
- Pradinių išvesties baitų šališkumas: RC4 pirmieji baitai (iš karto po KSA) nėra tolygiai paskirstyti, todėl gali būti išnaudojami norint atspėti rakto baitus. Šią problemą išnaudojo Fluhrer, Mantin ir Shamir (FMS) ataka, būtina ir lemiama WEP žlugimui.
- IV ir rakto pakartojimai (WEP problema): WEP concatenavo 24 bitų inicializacijos vektorių (IV) su paslėptu raktu ir tai lėmė daug pasikartojimų bei trumpo periodiškumo problemų. Pasikartojant raktų srautui arba naudojant panašius IV, galima atkurti raktą arba išgaudyti duomenis.
- Statistinės išvesties šališkumai: vėlesni tyrimai (pvz., Mantin ir Shamir, Klein ir kt.) parodė sudėtingesnes baitų koreliacijas ilgesnėje išvestyje, leidžiančias atakuoti ilgesnes žinomas ar nuolatines reikšmes.
- Susiję raktai ir tolesnės atakos: egzistuoja atakos, kurios išnaudoja rakto pakartojimus arba susijusius raktus, kad gautų pilną raktą arba atskleistų slaptą informaciją.
- Praktinės pasekmės: dėl aukščiau išvardintų trūkumų WEP buvo praktiškai nulaužtas ir tapo nepatikimu. Dėl RC4 išvesties šališkumų buvo įmanoma atkurti tikrus tekstus TLS seansų metu, todėl vėliau RC4 palaikymas TLS buvo atsisakytas (pvz., RFC 7465 draudžia RC4 TLS).
Konkrečios atakos ir pavyzdžiai
- FMS ataka (2001) – išnaudoja tam tikrus IV ir KSA ypatumus, leidusius greitai atkurti WEP raktą iš pakankamai daug užkoduotų paketų.
- IBEIS / koreliacijos atakos – Mantin, Shamir, Klein ir kiti parodė, kad net ilgesnės išvesties dalys turi statistinių nukrypimų nuo idealaus atsitiktinumo, leidžiančių atakuoti protokolus, kurie leakina daug srautų baitų ar naudoja tą patį raktą daug kartų.
- TLS praktinės atakos – 2013–2015 m. tyrimai parodė, kad RC4 gali leisti atkurti kai kurias TLS seanso slaptas reikšmes, todėl daug naršyklių ir serverių RC4 palaikymą panaikino, o RFC 7465 uždraudė RC4 TLS protokoluose.
Kaip sumažinti riziką (mitigacijos) ir kodėl jos nepakanka
Yra keli būdai, kuriais bandoma sumažinti RC4 trūkumus, tačiau nė viena priemonė nėra visiškai patikima:
- Pradinių baitų atmetimas (RC4-dropN) – iš pradinio raktų srauto pašalinami pirmieji N baitų (pvz., 768 arba 1024 baitai). Tai sumažina kai kurių ankstyvųjų šališkumų poveikį, tačiau nepašalina visų statistinių šališkumų bei nėra standartinis ir patikrintas ilgalaikio sprendimas.
- Niekada nepakartoti raktų/IV – svarbu, kad vienas raktas ar raktų kombinacija nebūtų naudojama kelis kartus. Tačiau daugelyje sistemų (pvz., WEP) praktiškai negalima užtikrinti pakankamai ilgo unikalaus IV, todėl problema išlieka.
- Ilgesni raktai – didesnis raktas nepašalina pradinio išvesties šališkumo problemos ir neapsaugo nuo statistinių atakų bei KSA klaidų.
Todėl apskritai RC4 laikomas nepakankamu saugumui daugelyje taikymų ir geriau rinktis modernesnius algoritmus.
Praktinės pasekmės ir rekomendacijos
- Venkite RC4 naujuose projektuose – RC4 neturėtų būti naudojamas naujų protokolų ar produktų kūrime.
- TLS/SSL ir naršyklės – daug naršyklių ir serverių atsisakė RC4 palaikymo; RFC 7465 (2015) oficialiai draudžia RC4 TLS. Jei vis dar turite senų sistemų, planuokite perėjimą nuo RC4.
- Alternatyvos – vietoj RC4 rekomenduojama naudoti saugesnius ir plačiai priimtus sprendimus, pvz., AES-GCM (blokinis šifras su srautine autentifikacija) arba ChaCha20-Poly1305 (efektyvi alternatyva ypač programinei įrangai ir mobiliems įrenginiams).
- Jei negalima iš karto atsisakyti RC4 – kartu taikykite papildomas saugumo priemones, bet supraskite, kad tai laikini sprendimai; planuokite visišką migraciją prie modernaus algoritmo.
Išvada
RC4 buvo svarbus istorinis srautinės šifravimo etapas dėl savo greičio ir paprastumo, tačiau dėl daugybės atrastų šališkumų, praktiškų atakų (ypač WEP) ir tolesnių saugumo problemų jis laikomas pasenusiame ir nesaugioje pozicijoje. Šiuolaikinėse sistemose rekomenduojama naudoti patikrintus, modernesnius algoritmus, tokius kaip AES-GCM arba ChaCha20-Poly1305, o esamose sistemose – kuo greičiau pereiti nuo RC4.
RC4 pagrįstos kriptosistemos
- WEP
- WPA
- "BitTorrent" protokolo šifravimas
- "Microsoft" taško į tašką šifravimas
- "Secure Sockets Layer" (pasirinktinai)
- "Secure Shell" (pasirinktinai)
- Nuotolinio darbalaukio klientas (RDC per RDP)
- "Kerberos" (pasirinktinai)
- SASL mechanizmas Digest-MD5 (pasirinktinai)
- Gpcode.AK - 2008 m. birželio pradžioje "Microsoft Windows" skirtas kompiuterinis virusas, kuris už išpirką paima dokumentus įkaitais, užšifruodamas juos RC4 ir RSA-1024 šifravimo priemonėmis.
Jei kriptosistema pažymėta "(pasirinktinai)", RC4 yra vienas iš kelių šifrų, kuriuos galima nustatyti naudoti sistemoje.
Susiję puslapiai
- Išplėstinis šifravimo standartas
- Duomenų šifravimo standartas (DES)
- DES-X
- eSTREAM - ES atliekamas naujų srautinių šifrų vertinimas.
- TEA, blokinis TEA, taip pat žinomas kaip eXtended TEA ir Corrected Block TEA - blokinių šifrų šeima, kuri, kaip ir RC4, sukurta taip, kad ją būtų labai paprasta įgyvendinti.
- trigubas DES (TDES)
Klausimai ir atsakymai
K: Kas yra RC4?
A: RC4 (dar žinomas kaip ARC4 arba ARCFOUR, t. y. tariamasis RC4) yra programinis srautinis šifras, naudojamas populiariuose protokoluose, pavyzdžiui, SSL (Secure Sockets Layer) ir WEP.
K: Kas sukūrė RC4?
A.: RC4 1987 m. sukūrė Ronas Rivestas iš "RSA Security".
K: Kaip algoritmas tapo viešas?
A.: Algoritmas tapo viešas, kai 1994 m. rugsėjį buvo paskelbtas "Cypherpunks" adresatų sąraše, o vėliau paplito daugelyje interneto svetainių.
K: Ar RC4 yra apsaugotas prekių ženklu?
A.: Taip, pavadinimas "RC4" yra apsaugotas prekių ženklu.
K: Kokios dvi priežastys, kodėl jis buvo plačiai naudojamas?
A: Dvi pagrindinės priežastys, kurios padėjo jį naudoti tokiame dideliame skaičiuje taikomųjų programų, yra jo greitis ir paprastumas. RC4 naudojimą tiek programinėje, tiek techninėje įrangoje labai lengva kurti.
K: Kaip veikia šifravimo algoritmas?
A: Šifravimo algoritmas pradedamas nuo skirtingo ilgio rakto, paprastai nuo 40 iki 256 bitų, naudojant rakto išdėstymo algoritmą (KSA). Tai atlikus, šifruojamų bitų srautas sukuriamas naudojant pseudo-atsitiktinio generavimo algoritmą (PRGA).
Klausimas: Ar RC4 laikomas saugiu naujoms taikomosioms programoms?
Atsakymas: Ne, nes yra daugybė būdų jį atakuoti, todėl nerekomenduojama naudoti naujose programose.
Ieškoti