Az RC4 (az angol Rivest cipher 4 vagy Ron kódjából ), más néven ARC4 vagy ARCFOUR ( állítólagos RC4 ) egy adatfolyam-rejtjel , amelyet széles körben használnak a számítógépes hálózatok különféle információbiztonsági rendszereiben (például SSL és TLS protokollokban , vezeték nélküli biztonsági algoritmusokban). WPAésWEP ).
A titkosítást az RSA Security fejlesztette ki, és használatához licenc szükséges .
Az RC4 algoritmus, mint minden adatfolyam titkosítás , egy pszeudo -véletlen bitgenerátor köré épül . A kulcs a generátor bemenetére íródik, és a kimeneten pszeudo-véletlen bitek kerülnek beolvasásra. A kulcs hossza 40 és 2048 bit között lehet [1] . A generált bitek egyenletes eloszlásúak .
A titkosítás fő előnyei:
Az RC4 nagyon sebezhető, ha:
Ezek a tényezők, valamint a használat módja bizonytalanná tehetik a kriptorendszert (például a WEP ).
Az RC4 adatfolyam titkosítót Ronald Rivest , az RSA Security készítette 1987 - ben . Az "RC4" rövidítés hivatalosan a "Rivest cipher 4" vagy a " Rivest cipher " rövidítése (a "4" a verziószám; lásd: RC2 , RC5 , RC6 ; Az RC1-et soha nem tették közzé; az RC3-at fejlesztették, de egy biztonsági rést találtak benne ), de gyakran a " Ron's code " (" Ron 's code ") rövidítésének tekintik [2] .
Hét évig a rejtjel üzleti titoknak számított, az algoritmus pontos leírását csak egy titoktartási megállapodás aláírása után közölték , de 1994 szeptemberében a leírását névtelenül elküldték a Cypherpunks levelezőlistájára [ 3] . Hamarosan megjelent az RC4 leírása a usenet " sci.crypt " hírcsoportban. Innen a forráskód az internet számos webhelyére eljutott . A közzétett algoritmus olyan titkosított szövegeket állított elő a kimeneten , amelyek megegyeztek az eredeti RC4 által előállított rejtjelezett szövegekkel. Az RC4 forráskód legális másolatainak tulajdonosai megerősítették az algoritmusok azonosságát a jelölések és a programstruktúra eltéréseivel.
Mivel ez az algoritmus ismert, már nem üzleti titok . Az "RC4" név azonban az RSA Security védjegye . A védjegytulajdonos esetleges követeléseinek elkerülése érdekében a titkosítást néha „ARCFOUR” vagy „ARC4” néven említik, ami az angolra utal. egy állítólagos RC4 egy "állítólagos" RC4 (mert az RSA Security hivatalosan nem tette közzé az algoritmust).
Az RC4 titkosítási algoritmust használják néhány széles körben használt titkosítási szabványban és protokollban (például WEP , WPA , SSL és TLS ).
Az RC4 a következőknek köszönhetően vált népszerűvé:
Az Egyesült Államokban az ajánlott kulcshossz háztartási használatra 128 bit. Az SPA ( s oftware publishers a ssociation ) és az Egyesült Államok kormánya között létrejött megállapodás lehetővé tette az RC4 titkosítók exportálását, legfeljebb 40 bites kulcshosszal. Az 56 bites kulcsokat amerikai cégek külföldi fióktelepei használhatják [4] .
Az adatfolyam titkosítási algoritmus magja egy függvényből áll - egy pszeudo-véletlen bitgenerátorból ( gamma ), amely kulcsbitek folyamát állítja elő (kulcsfolyam, gamma, pszeudo-véletlen bitsorozat) .
titkosítási algoritmus.
.
dekódoló algoritmus.
Az RC4 valójában a blokkméret által meghatározott algoritmusok osztálya (a továbbiakban S-box ). Az n paraméter az algoritmus szóhossza, és az S-box hosszát adja meg . Általában n = 8, de elemzési célból csökkentheti. A biztonság növelése érdekében azonban növelni kell ezt az értéket. Nincs ellentmondás az S-box méretének növelésére szolgáló algoritmusban . Az n növekedésével , mondjuk 16 bitig, az S-box elemei 65 536-ra válnak, és ennek megfelelően a kezdeti iterációs idő megnő. A titkosítási sebesség azonban megnő [5] .
Az RC4 belső állapotát egy 2 n méretű tömb és két számláló ábrázolja. A tömb S-box néven ismert , és a továbbiakban: S. Mindig tartalmazza a szó 2n lehetséges jelentésének permutációját. iA két számlálót és jelöli j.
Az RC4 inicializálása két részből áll:
Az algoritmus „kulcsütemező algoritmus” vagy „KSA” néven is ismert. Ez az algoritmus egy, a felhasználó által biztosított kulcsot használ, amely ben tárolódik és bájt Keyhosszúságú . LAz inicializálás a tömb kitöltésével kezdődik S, majd ezt a tömböt a kulcs által meghatározott permutációk keverik. Mivel csak egy műveletet hajtanak végre Sa -n, az állításnak meg kell állnia, hogy az Smindig ugyanazt az értékkészletet tartalmazza, amelyet a kezdeti inicializáláskor adtak meg ( S[i] := i ).
i - nél 0 -tól 255 -ig S[i] := i endfor j := 0 i - nél 0 -tól 255 -ig j := ( j + S[i] + Kulcs[ i mod L ] ) mod 256 // n = 8 ; 28 = 256 S[i] és S[j] felcserélése endforAz algoritmusnak ezt a részét pszeudo-véletlen sorrendgenerátornak nevezik ( p seudor andom generation a lgorithm , PRGA ) . Az RC4 kulcsfolyam-generátor módosítja a -ban tárolt értékeket . Egy RC4 ciklusban a kulcsfolyamból egy n bites szó kerül meghatározásra. A jövőben a kulcsszót modulo two-val egészítik ki azzal a nyílt szöveggel, amelyet a felhasználó titkosítani szeretne, és megkapja a titkosított szöveget. SK
én := 0 j := 0 míg generációs hurok: i := ( i + 1 ) mod 256 j := ( j + S[i] ) mod 256 S[i] és S[j] felcserélése t := ( S[i] + S[j] ) mod 256 K := S[t] generált pszeudo-véletlen szó K ( n = 8 esetén egy bájt generálódik) endwhileEllentétben a modern titkosításokkal (például az eSTREAM ), az RC4 nem használ nonce -t (az angol nonce - "szám, amelyet csak egyszer lehet használni" - egy szám, amelyet csak egyszer lehet használni) a kulcs mellett. Ez azt jelenti, hogy ha egy kulcsot kell használni több adatfolyam titkosításához, akkor magának az RC4-et használó titkosítási rendszernek kombinálnia kell az alkalmat és a hosszú távú kulcsot, hogy létrehozza az RC4 adatfolyam-kulcsát. Az egyik lehetséges megoldás egy új kulcs létrehozása az RC4 számára a hosszú távú kulcs és a nonce hash függvényével . Azonban sok RC4-et használó alkalmazás egyszerűen összefűzi a kulcsot és a nonce -t . Emiatt és az RC4-ben használt gyenge kulcsütemezés miatt az alkalmazás sebezhetővé válhat [6] [7] [8] . Ezért sok szoftvercég, például a Microsoft , elavulttá vált . Például a Microsoft .NET-keretrendszeréből hiányzik az RC4 megvalósítása.
Itt megvizsgáljuk a titkosítás elleni támadásokat és az ellenük való védekezés módszereit.
1995-ben Andrew Roos kísérletileg megfigyelte, hogy a kulcsfolyam első bájtja korrelál a kulcs első három bájtjával, és a permutáció első néhány bájtja a kulcsütemezési algoritmus ( eng . KSA ) után valamilyen lineáris kombinációval korrelál. kulcsbájtokból [9] . Ezeket a torzításokat 2007-ig nem sikerült bebizonyítani, amikor Paul, Rafi és Maitrae bebizonyította, hogy a kulcs és a kulcsfolyam összefügg. Ezenkívül Paul és Maitre bebizonyította a permutáció és a kulcs összefüggését. Az utóbbi munka kulcspermutáció korrelációt is használ az első teljes kulcs-helyreállítási algoritmus létrehozásához a KSA utáni utolsó permutációból, anélkül, hogy feltételezéseket tenne a kulcsról és az inicializálási vektorról ( IV , i nitial v ector ) . Ennek az algoritmusnak állandó a sikerének valószínűsége az idő múlásával, ami a nyers erő összetettségének négyzetgyöke. Az utóbbi időben sok munka történt a kulcs helyreállításán az RC4 belső állapotából.
2001-ben Fluhrer, Mantin és Shamir publikált egy tanulmányt az RC4 kulcsütemezésének sebezhetőségéről. Megmutatták, hogy a kulcsfolyam első bájtjai az összes lehetséges kulcs közül nem véletlenszerűek. Ezekből a bájtokból nagy valószínűséggel lehet információt szerezni a használt rejtjelkulcsról. És ha egy hosszú távú kulcsot és egy nonce - t egyszerűen összeragasztanak egy RC4 rejtjelkulcs létrehozásához, akkor ezt a hosszú távú kulcsot úgy kaphatjuk meg, ha kellően nagy számú, ezzel a kulccsal titkosított üzenetet elemezünk [10] . Ezt a sérülékenységet és néhány kapcsolódó hatást a WEP titkosítás megszakítására használták ki az IEEE 802.11 vezeték nélküli hálózatokon . Ez megmutatta a WEP mielőbbi lecserélésének szükségességét, ami egy új vezeték nélküli biztonsági szabvány, a WPA kifejlesztéséhez vezetett .
A kriptorendszer immunissá tehető ezzel a támadással szemben, ha eldobjuk a kulcsfolyam elejét. Így a módosított algoritmust "RC4-drop[n]"-nak hívják, ahol n a kulcsfolyam elejétől számított bájtok száma, amelyet el kell dobni. Használata javasolt n = 768, óvatos becslés: n = 3072[11] [12] .
A támadás az inicializálási vektor gyengeségén alapul . Az első pszeudo-véletlen szó és beviteli kulcs bájtjainak ismeretében , az álvéletlen szógeneráló algoritmus egy gyenge pontját felhasználva megkaphatjuk a beviteli kulcs bájtját. A lépések megismétlésével a teljes kulcsot megkapjuk. A WEP támadásakor a for alakja (B; 255; N), ahol - 3-tól 8-ig, és tetszőleges szám . Az N körülbelül 60 változatának meghatározásához körülbelül 4 millió csomagot kellene elfogni. [tíz]KmKeyKm + 1n = 8 IVBN
2005-ben Andreas Klein bemutatta az RC4 titkosítás elemzését, amelyben rámutatott a kulcs és az RC4 kulcsfolyam közötti szoros összefüggésre. Klein elemezte a támadásokat az első körben (hasonlóan a PMS-támadáshoz), a második körben és azok lehetséges fejlesztéseit. Néhány változtatást javasolt az algoritmusban is, hogy javítsa a titkosítás erősségét. Különösen azzal érvel, hogy ha megfordítja a ciklus irányát a kulcsütemezési algoritmusban, akkor a titkosítást ellenállóbbá teheti az olyan támadásokkal szemben, mint az FMS [1] .
2001-ben Adi Shamir és Itzhak Mantin voltak az elsők, akik kombinatorikus problémát vetettek fel az RC4 titkosítás lehetséges be- és kimeneteinek számával kapcsolatban. Ha a rejtjel belső állapotának összes lehetséges 256 eleméből ismertek xa ( x ≤ 256) állapotból származó elemek, akkor, ha feltételezzük, hogy a fennmaradó elemek nullák, akkor a determinisztikus algoritmussal maximálisan megkapható elemek száma a következő 256 kör is egyenlő x. 2004-ben ezt a feltevést Souradyuti Paul és Bart Preneel is bebizonyította [ 13 ] .
2015 nyarán Mathy Vanhoef és Frank Piessens a belgiumi Leuveni Egyetemről valódi támadást mutattak be a TLS protokoll ellen , amely az RC4-et használja a továbbított adatok titkosítására [14] . A hackelés ötlete a MITM elvén alapul . Az adatátviteli csatornába való beágyazással a támadó nagyszámú kérést generál a szerver felé, és válaszul arra kényszeríti, hogy cookie -kat küldjön vissza , ugyanazzal a kulccsal titkosítva. Körülbelül 9x2 27 ~ 230 { plaintext , ciphertext } párral a támadó 94%-os valószínűséggel tudta visszaállítani a kulcsot, és így a titkosított cookie -kat a Fluhrer-McGrew és az ABSAB statisztikai módszerei alapján. A gyakorlati idő kb. 52 óra volt, míg a demonstráció idején szükséges idő felső becslése kb. 72 óra [15] .
Korábban a rejtjelezett szöveg és a kulcs első bájtjainak korrelációján alapuló támadásokat vették számításba. Az algoritmus ilyen gyengeségei a rejtjelezett szöveg kezdeti részének elvetésével oldhatók meg [16] . Az első 256, 512, 768 és 1024 bájt biztonságos eldobása. A rejtjelezett szöveg kezdetére vonatkozó tanulmányokat végeztek annak kimutatására, hogy bizonyos számú első bájt megbízhatatlan, ami oda vezethet, hogy a támadó titkosítási kulcsot kap. Az RC4 számos olyan módosítását javasolták, amelyek az algoritmus használatakor a biztonság fokozását látják el: RC4A, VMPC , RC4+.
2004-ben Souradyuti Paul és Bart Preneel munkája látott napvilágot, amely az RC4A [17] módosítását javasolta .
Az RC4A esetében két S-boxot használunk egy helyett, mint az RC4-ben, S₁és jelöléssel S₂. Számukra két számlálót használnak, j₁ill j₂. Az RC4-hez hasonlóan a számlálót iegyes számban használjuk a teljes algoritmushoz. Az algoritmus végrehajtási elve változatlan marad, de számos különbség van:
Algoritmus:
én := 0 j₁ := 0 j₂ := 0 míg generációs hurok: i := i + 1 j₁ := ( j₁ + S₁[i] ) mod 256 S₂[i] és S₁[j₁] felcserélése I₂ := ( S1[i] + S1[jl] ) mod 256 kimenet := S₂[I₂] j₂ = ( j₂ + S₂[i] ) mod 256 S₂[i] és S₂[j₂] felcserélése I₁ = ( S2[i] + S₂[j2] ) mod 256 kimenet := S₁[I₁] endwhileEnnek az algoritmusnak a titkosítási sebessége párhuzamosítással növelhető .
2008-ban kidolgozták és javasolták az RC4+ módosítást. Subhamoy Maitra és Goutam Paul szerzők 3-szintű kódolással módosították az S-box (KSA+) inicializálását. Az álvéletlen szógeneráló algoritmus (PRGA+) [18] is módosult .
Algoritmus:
Minden aritmetikai műveletet a 256-os módban hajtunk végre. A "<<" és ">>" szimbólumok balra, illetve jobbra történő biteltolódást jelölnek . A "⊕" szimbólum az " exkluzív VAGY " műveletet jelöli , miközben a Generációs ciklus: i := i + 1 a := S[i] j := j + a b := S[j] S[i] := b (S[i] és S[j] felcserélve) S[j] := a c := S[i<<5⊕j>>3] + S[j<<5⊕i>>3] kimenet ( S[a+b] + S[c⊕0xAA] ) ⊕ S[ j+b ] endwhileSok adatfolyam titkosítás lineáris visszacsatolásos eltolási regisztereken ( LFSR ) alapul . Ez lehetővé teszi a titkosítás nagy hatékonyságú megvalósítását integrált áramkör formájában (hardveres megvalósítás), de megnehezíti az ilyen rejtjelek szoftveres megvalósítását. Mivel az RC4 titkosítás nem használja az LFSR-t, és bájtműveleteken alapul, célszerű szoftverben implementálni. Egy tipikus megvalósítás 8-16 gépi utasítást hajt végre szövegbájtonként , ezért a titkosítás szoftveres megvalósításának gyorsnak kell lennie [19] .
A "(változó)" szó azt jelenti, hogy az RC4 a rendszer által használható számos titkosítási algoritmus egyike.
Szimmetrikus titkosítási rendszerek | |
---|---|
Rejtjelfolyam adatfolyam | |
Feistel hálózat | |
SP hálózat | |
Egyéb |