RC4 šifrs (ARC4/ARCFOUR) — apraksts, darbība un drošības problēmas
Padziļināta RC4 (ARC4/ARCFOUR) apraksts — darbība, ievainojamības, WEP/TLS riski un drošas alternatīvas kriptogrāfijā.
Kriptogrāfijā RC4 (pazīstams arī kā ARC4 vai ARCFOUR, kas nozīmē Alleged RC4, sk. tālāk) ir viens no visizplatītākajiem programmatūras plūsmas šifriem. To izmanto tādos populāros protokolos kā Secure Sockets Layer (SSL) (lai aizsargātu interneta datplūsmu) un WEP (lai aizsargātu bezvadu tīklus).
RC4 ir pazīstams ar to, ka ir vienkāršs un ātrs, taču uzbrukumi var notikt, ja netiek noņemts izejas atslēgas plūsmas sākums vai viena atslēgas plūsma tiek izmantota divreiz; daži RC4 izmantošanas veidi var pārvērsties par ļoti nedrošām kriptosistēmām, piemēram, WEP.
RC4 1987. gadā izveidoja Rons Rivests no RSA Security. Oficiālais nosaukums ir "Rivesta šifrs 4", bet saīsinājums RC apzīmē arī "Rona kodu" (sk. arī RC2, RC5 un RC6).
RC4 pirmo reizi tika izveidots kā komercnoslēpums, bet 1994. gada septembrī tā apraksts tika publicēts Cypherpunks adresātu sarakstā. Drīz vien tas tika publicēts sci.crypt ziņu grupā un no turienes - daudzās interneta vietnēs. Tika apstiprināts, ka kods ir īsts (nevis viltots), jo tā izvades rezultāti sakrita ar patentētas programmatūras, kas izmanto licencētu RC4, izvades rezultātiem. Tā kā algoritms ir zināms, tas vairs nav komercnoslēpums. Tomēr nosaukums "RC4" ir aizsargāts ar preču zīmi. Lai izvairītos no iespējamām problēmām ar preču zīmi, RC4 bieži dēvē par "ARCFOUR" vai "ARC4" (kas nozīmē "Alleged RC4", jo RSA nekad nav oficiāli publicējusi algoritmu). Tas ir kļuvis par daļu no dažiem plaši izmantotiem šifrēšanas protokoliem un standartiem, tostarp WEP un WPA bezvadu kartēm un TLS.
Divi galvenie iemesli, kas palīdzēja to izmantot tik plašā lietojumprogrammu klāstā, ir tās ātrums un vienkāršība. RC4 lietojumi gan programmatūrā, gan aparatūrā ir ļoti viegli izstrādājami.
Kā darbojas RC4
RC4 ir simetrisks plūsmas šifrs — tas ģenerē pseudo‑nejaušu atslēgas plūsmu, kuru XOR operācijā pielieto ar atklāto tekstu, lai iegūtu šifrētu tekstu. Dešifrēšana notiek vienādi — vēlreiz uz XOR pielieto to pašu atslēgas plūsmu.
Algoritmu veido divas daļas:
- Atslēgu plānošanas algoritms (KSA) — sākotnēji izveido 256 baitus garu stāvokļa masīvu S, aizpildītu ar vērtībām 0..255, un sajauc šo masīvu, izmantojot dotu atslēgu (parasti 40–256 bitu garu). KSA rezultātā iegūst sākotnējo stāvokli PRGA.
- Pseidonorādījuma ģenerēšanas algoritms (PRGA) — no iepriekš sagatavotā S masīva iteratīvi ģenerē izlasi baitu, kas veido atslēgas plūsmu. Katru iterāciju tie maina S saturu un izvada vienu baitu, kuru aplikšana ar XOR pret atklāto tekstu sniedz šifrēto tekstu.
Vienkāršots algoritma apraksts (koncepcija):
- KSA: inicializē S[0..255] = 0..255, j = 0; tad for i = 0..255: j = (j + S[i] + K[i mod keylen]) mod 256; swap(S[i], S[j]).
- PRGA: inicializē i = 0, j = 0; iterē: i = (i + 1) mod 256; j = (j + S[i]) mod 256; swap(S[i],S[j]); output b = S[(S[i] + S[j]) mod 256].
- Katru izvadīto baitu b XOR ar atklāto datu baitu dod šifrēto rezultātu.
Šis vienkāršais mehānisms skaidro RC4 ātrumu un vieglo implementāciju, jo operācijas ir vienkāršas permutācijas un XOR.
Drošības problēmas un reāli uzbrukumi
RC4 daudzējādā ziņā neatbilst modernajiem drošības standartiem un tam ir vairākas strukturālas vājības:
- Uzvedības aizspriedumi (biases): RC4 izlaidei nav ideāli vienmērīgas sadales; īpaši sākotnējie izvadbaiti rāda statistiskas novirzes, kuras iespējams izmantot, lai vāktu informāciju par atslēgu vai atklāto tekstu. Šīs novirzes ļāva attīstīt praktiskus uzbrukumus.
- KSA saistītās vājības: KSA konstrukcija rada tā sauktos "vājos IV" (initialization vectors), kas tika izmantoti, lai atklātu daļu no statiskās atslēgas, kas īpaši kritiski bija WEP protokolā.
- Atkārtota atslēgas plūsmas izmantošana: ja viena atslēga (vai atslēgas plūsma) tiek lietota divreiz, tas noved pie vienkārša novērotāja iespējas iegūt informāciju (divreiz lietota plūsma rada XOR starp diviem atklātajiem tekstiem).
Konkrēti zināmie un plaši publicētie uzbrukumi:
- Fluhrer, Mantin un Shamir (FMS, 2001) demonstrēja kā, izmantojot milzīgu daudzumu pakešu ar īpašiem IV, var iegūt WEP statisko atslēgu — tas padarīja WEP par nelietojamu prakses standartu.
- Mantin un Shamir un citi pētnieki atrada vairākas statistiskas novirzes RC4 izlaides sākumā, tas deva iespēju atsevišķos gadījumos atjaunot daļas no šifrētā satura vai atslēgas.
- AlFardan, Bernstein, et al. (ap 2013) un citi parādīja praktiskas metodes, kā izmantojot ilgstošu trafika novērošanu, atklāt sīkus datus no TLS savienojumiem, ja tika izmantots RC4. Rezultātā 2015. gadā TLS telpā RC4 lietošana tika noteikti nosodīta — piemēram, RFC 7465 aizliedz RC4 lietošanu TLS.
Praktiski seku piemēri:
- WEP — pamatā salauzts, viegli uzbrūcams īsā laika posmā, galvenokārt dēļ īsām IV vērtībām un sliktas atslēgu miksēšanas; nav drošs ne parastu, ne uzņēmuma līmeņa lietojumu.
- WPA un TKIP — tika ieviestas kā pagaidu alternatīvas WEP, izmantojot dažādas atslēgu jaukšanas metodes, lai samazinātu FMS kļūdu; tomēr arī TKIP un RC4 risinājumi ir deprecēti mūsdienu drošības rekomendācijās.
- TLS — ilgstoši tika atbalstīts savienojumu saderībai, bet, ņemot vērā saglabājošās statistiskās vājības, RC4 TLS kanālos ir aizliegts vai kategorizēts kā nedrošs sarežģītos kontekstos.
Mitigācijas un ieteikumi
Ir bijušas dažas mēģinājumu mazināt RC4 vājības, taču tie nodrošina tikai ierobežotu aizsardzību:
- Drop‑N (piem., RC4‑drop256) — atmet pirmos N baitus no ģenerētās atslēgas plūsmas, lai izvairītos no sākotnējo baišu izteiktajām novirzēm. Tas samazina daļu uzbrukumu efektivitātes, taču neizlabo fundamentālās statistikas novirzes un parasti netiek uzskatīts par pietiekamu risinājumu.
- Asa atslēgu politika — nekad nedrīkst atkārtoti lietot identisku atslēgu/IV kombināciju (tas ir īpaši nozīmīgi WEP/TKIP kontekstā), bet šī prasība nav bijusi pietiekama, lai padarītu RC4 drošu.
Labākā prakse mūsdienās ir pilnībā atteikties no RC4 un pāriet uz moderniem, pārbaudīti drošiem plūsmas vai bloku šifriem ar autentifikāciju, piemēram:
- AES‑GCM (šifrēšana + autentifikācija vienā; plaši pieņemts un drošs moderniem tīkla protokoliem)
- ChaCha20‑Poly1305 (ļoti ātrs plūsmas šifrs ar autentifikāciju, īpaši piemērots programmatūras realizācijām un mobilajām ierīcēm)
Ja jāstrādā ar novecojušām sistēmām vai protokoliem, kur RC4 joprojām parādās, ieteikumi ir:
- Nekavējoties plānot migrāciju uz moderniem šifrēšanas risinājumiem.
- Neļaut RC4 kā prioritāru vai noklusējuma algoritmu TLS/SSL savienojumos; disable RC4 ciphers (pēckā mazināt iespējas praktiskiem uzbrukumiem).
- Neuzticēties vienkāršām mitigācijām (piem., tikai drop‑N), jo tās nesniedz garantētu drošību pret statistiskajiem uzbrukumiem.
Secinājums
RC4 ir ievērojams vēsturē kā ātrs un vienkāršs plūsmas šifrs, kas iegūla daudzu standartu implementācijās. Tomēr vairākas fundamentālas struktūras vājības un praktiski uzbrukumi ir pierādījuši, ka RC4 nav pietiekami drošs mūsdienu lietojumiem. Mūsdienu kriptogrāfijas vadlīnijas iesaka izvairīties no RC4 un izmantot drošākus algoritmus, piemēram, AES‑GCM vai ChaCha20‑Poly1305.
RC4 tehniskais apraksts un vēsture turpina būt svarīga nozināt par kriptogrāfijas attīstību un par to, kā statistiskas vājības var pārvērsties praktiskos uzbrukumos. Tomēr, ja drošība ir būtiska, RC4 nav pareizā izvēle.
Uz RC4 balstītas kriptosistēmas
- WEP
- WPA
- BitTorrent protokola šifrēšana
- Microsoft Point-to-Point šifrēšana
- Secure Sockets Layer (pēc izvēles)
- Secure Shell (pēc izvēles)
- Attālās darbvirsmas klients (RDC pār RDP)
- Kerberos (pēc izvēles)
- SASL mehānisms Digest-MD5 (pēc izvēles)
- Gpcode.AK, 2008. gada jūnija sākumā Microsoft Windows datorvīruss, kas, aizsedzot dokumentus ar RC4 un RSA-1024 šifrēšanas metodi, kļūst par ķīlniekiem, lai saņemtu izpirkuma maksu.
Ja kriptosistēma ir atzīmēta ar "(pēc izvēles)", RC4 ir viens no vairākiem šifrēšanas veidiem, ko sistēmā var iestatīt.
Saistītās lapas
- Uzlabotais šifrēšanas standarts
- Datu šifrēšanas standarts (DES)
- DES-X
- eSTREAM - jaunu plūsmas šifru novērtēšana, ko veic ES.
- TEA, Block TEA, pazīstams arī kā eXtended TEA un Corrected Block TEA - bloku šifru saime, kas, tāpat kā RC4, ir izstrādāta tā, lai būtu ļoti vienkārši īstenojama.
- Trīskāršais DES (TDES)
Jautājumi un atbildes
J: Kas ir RC4?
A: RC4 (pazīstams arī kā ARC4 vai ARCFOUR, kas nozīmē Alleged RC4) ir programmatūras plūsmas šifrs, ko izmanto tādos populāros protokolos kā Secure Sockets Layer (SSL) un WEP.
J: Kas radīja RC4?
A: RC4 1987. gadā radīja Ron Rivest no RSA Security.
J: Kā algoritms kļuva publiski pieejams?
A: Algoritms kļuva publiski pieejams, kad 1994. gada septembrī to publicēja Cypherpunks pasta sarakstē, un pēc tam tas izplatījās daudzās interneta vietnēs.
J: Vai RC4 ir aizsargāts ar preču zīmi?
A: Jā, nosaukums "RC4" ir aizsargāts ar preču zīmi.
J: Kādi ir divi iemesli, kāpēc tas ir plaši izmantots?
A: Divi galvenie iemesli, kas ir veicinājuši tā izmantošanu tik plašā lietojumu klāstā, ir tā ātrums un vienkāršība. RC4 lietojumus gan programmatūrā, gan aparatūrā ir ļoti viegli izstrādāt.
J: Kā šifrēšanas algoritms darbojas?
A: Šifrēšanas algoritms sākas ar dažādu atslēgas garumu, parasti no 40 līdz 256 bitiem, izmantojot atslēgas plānošanas algoritmu (KSA). Kad tas ir pabeigts, šifrēto bitu plūsma tiek izveidota, izmantojot pseidonaradikuma ģenerēšanas algoritmu (PRGA).
J: Vai RC4 tiek uzskatīts par drošu jauniem lietojumiem?
A: Nē, jo ir daudz metožu, kā tam uzbrukt, tāpēc to nav ieteicams izmantot jaunos lietojumos.
Meklēt