RC4 (z anglického Rivest cipher 4 nebo Ron's code ), také známý jako ARC4 nebo ARCFOUR ( údajně RC4 ) je proudová šifra široce používaná v různých systémech zabezpečení informací v počítačových sítích (například v protokolech SSL a TLS , algoritmech bezdrátového zabezpečení Sítě WPAaWEP ).
Šifru vyvinula společnost RSA Security a k jejímu použití je zapotřebí licence .
Algoritmus RC4, stejně jako každá proudová šifra , je postaven na generátoru pseudonáhodných bitů . Klíč se zapíše na vstup generátoru a na výstupu se čtou pseudonáhodné bity. Délka klíče může být od 40 do 2048 bitů [1] . Generované bity mají rovnoměrné rozložení .
Hlavní výhody šifry:
RC4 je docela zranitelný, pokud:
Tyto faktory, stejně jako způsob, jakým se používá, mohou způsobit, že kryptosystém nebude bezpečný (jako je WEP ).
Proudovou šifru RC4 vytvořil v roce 1987 Ronald Rivest z RSA Security . Zkratka „RC4“ oficiálně znamená „Rivest cipher 4“ nebo „ Rivest cipher “ („4“ je číslo verze; viz RC2 , RC5 , RC6 ; RC1 nebyl nikdy publikován; RC3 byl vyvinut, ale byla v něm nalezena zranitelnost ), ale často se považuje za zkratku pro " Ronův kód " (" Ronův kód ") [2] .
Po sedm let byla šifra obchodním tajemstvím a přesný popis algoritmu byl poskytnut až po podepsání smlouvy o mlčenlivosti , ale v září 1994 byl její popis anonymně zaslán do e- mailové konference Cypherpunks [ 3 ] . Brzy byl popis RC4 zveřejněn na diskusní skupině usenet " sci.crypt ". Odtud si zdrojový kód našel cestu na mnoho stránek na internetu . Publikovaný algoritmus vytvořil na výstupu šifrové texty, které odpovídaly šifrovým textům vytvořeným původním RC4. Vlastníci legálních kopií zdrojového kódu RC4 potvrdili identitu algoritmů s rozdíly v notaci a programové struktuře.
Protože je tento algoritmus znám, již není obchodním tajemstvím . Název „RC4“ je však ochrannou známkou společnosti RSA Security . Aby se předešlo případným nárokům ze strany vlastníka ochranné známky , šifra je někdy označována jako „ARCFOUR“ nebo „ARC4“ s odkazem na angličtinu. údajný RC4 je "domnělý" RC4 (protože RSA Security oficiálně nezveřejnila algoritmus).
Šifrovací algoritmus RC4 se používá v některých široce používaných šifrovacích standardech a protokolech (například WEP , WPA , SSL a TLS ).
RC4 se stal populární díky:
V USA je doporučená délka klíče pro domácí použití 128 bitů. Dohoda mezi SPA ( sdružení vydavatelů oftwaru ) a vládou USA umožnila export šifer RC4 s délkou klíče až 40 bitů. 56bitové klíče mohou používat zahraniční pobočky amerických společností [4] .
Jádro algoritmu proudové šifry tvoří funkce - generátor pseudonáhodných bitů ( gama ), který vytváří proud klíčových bitů (tok klíčů, gama, sekvence pseudonáhodných bitů).
šifrovací algoritmus.
.
dešifrovací algoritmus.
RC4 je vlastně třída algoritmů definovaná velikostí bloku (dále jen S-box ). Parametr n je délka slova pro algoritmus a udává délku S-boxu . Obvykle je n = 8, ale pro účely analýzy jej můžete snížit. Chcete-li však zlepšit zabezpečení, musíte tuto hodnotu zvýšit. V algoritmu pro zvětšení velikosti S-boxu není žádný rozpor . Se zvýšením n , řekněme až na 16 bitů, se prvky v S-boxu stanou 65 536 a v souladu s tím se prodlouží počáteční doba iterace. Zvýší se však rychlost šifrování [5] .
Vnitřní stav RC4 je reprezentován jako pole velikosti 2 n a dva čítače. Pole je známé jako S-box a bude označováno jako S. Vždy obsahuje permutaci 2n možných významů slova. Dva čítače jsou označeny ia j.
Inicializace RC4 se skládá ze dvou částí:
Algoritmus je také známý jako „algoritmus rozvrhování klíčů“ nebo „KSA“. Tento algoritmus používá klíč dodaný uživatelem, uložený v Key, a mající délku Lbajtů. Inicializace začíná vyplněním pole S, poté je toto pole zamícháno permutacemi určenými klíčem. Protože se na , provádí pouze jedna akce S, musí tvrzení platit, že Svždy obsahuje stejnou sadu hodnot, která byla zadána při počáteční inicializaci ( S[i] := i ).
pro i od 0 do 255 S[i] := i endfor j:= 0 pro i od 0 do 255 j := ( j + S[i] + Key[ i mod L ] ) mod 256 // n = 8 ; 28 = 256 vyměnit S[i] a S[j] endforTato část algoritmu se nazývá generátor pseudonáhodné sekvence ( p seudor andom generation a lgorithm , PRGA ) . Generátor keystreamu RC4 permutuje hodnoty uložené v . V jednom cyklu RC4 je určeno jedno n - bitové slovo z toku klíčů. V budoucnu bude klíčové slovo přidáno modulo dva s otevřeným textem, který chce uživatel zašifrovat, a získá se šifrovaný text. SK
i:= 0 j:= 0 zatímco generovací smyčka: i := (i + 1) mod 256 j:= (j + S[i]) mod 256 vyměnit S[i] a S[j] t:= (S[i] + S[j]) mod 256 K := S[t] vygenerováno pseudonáhodné slovo K (pro n = 8 bude vygenerován jeden bajt) endwhileNa rozdíl od moderních šifer (jako je eSTREAM ), RC4 nepoužívá spolu s klíčem nonce (z anglického nonce - "číslo, které lze použít pouze jednou" - číslo, které lze použít pouze jednou). To znamená, že pokud má být jeden klíč použit v průběhu času k šifrování více streamů, kryptosystém využívající RC4 sám musí kombinovat příležitost a dlouhodobý klíč, aby vytvořil streamový klíč pro RC4. Jedním z možných řešení je vygenerování nového klíče pro RC4 pomocí hašovací funkce dlouhodobého klíče a nonce . Nicméně mnoho aplikací používajících RC4 jednoduše zřetězí klíč a nonce . Kvůli tomu a slabému plánování klíče používané v RC4 se aplikace může stát zranitelnou [6] [7] [8] . Proto byl zamítnut mnoha softwarovými společnostmi, jako je Microsoft . Například Microsoft .NET Framework postrádá implementaci RC4.
Zde budou zváženy některé útoky na šifru a způsoby ochrany proti nim.
V roce 1995 Andrew Roos experimentálně pozoroval, že první bajt toku klíčů koreluje s prvními třemi bajty klíče a prvních pár bajtů permutace po algoritmu pro plánování klíčů ( angl . KSA ) koreluje s nějakou lineární kombinací . klíčových bajtů [9] . Tyto předsudky byly prokázány až v roce 2007, kdy Paul, Rafi a Maitrae dokázali, že klíč a klíčový proud spolu souvisí. Paul a Maitre také dokázali korelaci permutace a klíče. Tato práce také používá korelaci klíč-permutace ke generování prvního úplného algoritmu obnovy klíče z poslední permutace po KSA, aniž by se dělaly předpoklady o klíči a inicializačním vektoru ( IV , počáteční vektor ) . Tento algoritmus má konstantní pravděpodobnost úspěchu v průběhu času, což je druhá odmocnina složitosti hrubé síly. V poslední době bylo vykonáno mnoho práce na obnovení klíče z vnitřního stavu RC4.
V roce 2001 Fluhrer, Mantin a Shamir publikovali článek o zranitelnosti klíčového plánu RC4. Ukázali, že první bajty toku klíčů mezi všemi možnými klíči nejsou náhodné. Z těchto bajtů je možné s vysokou pravděpodobností získat informaci o použitém šifrovacím klíči. A pokud se dlouhodobý klíč a nonce jednoduše slepí dohromady a vytvoří se šifrovací klíč RC4, pak lze tento dlouhodobý klíč získat analýzou dostatečně velkého počtu zpráv zašifrovaných pomocí tohoto klíče [10] . Tato chyba zabezpečení a některé související účinky byly zneužity k prolomení šifrování WEP v bezdrátových sítích IEEE 802.11 . To ukázalo potřebu co nejdříve nahradit WEP , což vedlo k vývoji nového bezdrátového bezpečnostního standardu WPA .
Kryptosystém může být vůči tomuto útoku imunní tím, že zahodí začátek klíčového proudu. Upravený algoritmus se tedy nazývá "RC4-drop[n]", kde n je počet bajtů od začátku toku klíčů, které mají být vyřazeny. Doporučuje se použít n = 768, konzervativní odhad je n = 3072[11] [12] .
Útok je založen na slabosti inicializačního vektoru . Když známe první pseudonáhodné slovo Ka mbajty vstupního klíče Key, lze pomocí slabiny v algoritmu generování pseudonáhodných slov Kzískat m + 1bajt vstupního klíče. Opakováním kroků získáte úplný klíč. Při útoku na WEP má for n = 8 IVtvar (B; 255; N), kde B - od 3 do 8 a Nlibovolné číslo . K určení asi 60 variant N by bylo potřeba zachytit asi 4 miliony paketů. [deset]
V roce 2005 představil Andreas Klein analýzu šifry RC4, ve které poukázal na silnou korelaci mezi klíčem a keystreamem RC4. Klein analyzoval útoky v prvním kole (obdoba útoku PMS), ve druhém kole a jejich možná vylepšení. Navrhl také některé změny v algoritmu, aby se zlepšila síla šifry. Konkrétně tvrdí, že pokud obrátíte směr cyklu v algoritmu klíče rozvrhu, můžete šifru učinit odolnější vůči útokům, jako je FMS [1] .
V roce 2001 byli Adi Shamir a Itzhak Mantin první, kdo nastolil kombinatorický problém související s počtem možných vstupů a výstupů šifry RC4. Pokud jsou ze všech možných 256 prvků vnitřního stavu šifry známy xprvky ze stavu ( x ≤ 256), pak, pokud předpokládáme, že zbývající prvky jsou nulové, maximální počet prvků, které lze získat deterministickým algoritmem v dalších 256 kol se také rovná x. V roce 2004 tento předpoklad prokázali Souradyuti Paul a Bart Preneel [ 13 ] .
V létě 2015 předvedli Mathy Vanhoef a Frank Piessens z University of Leuven v Belgii skutečný útok na protokol TLS , který využívá RC4 k šifrování přenášených dat [14] . Myšlenka hackování je založena na principu MITM . Vložením do kanálu pro přenos dat útočník generuje velké množství požadavků na server a nutí jej, aby v odpovědi vrátil soubory cookie zašifrované stejným klíčem. S přibližně 9x2 27 ~ 2 30 páry {plaintext, ciphertext} po ruce se útočníkovi podařilo obnovit klíč a tedy i zašifrované soubory cookie na základě statistických metod Fluhrer-McGrew a ABSAB s pravděpodobností 94 %. Praktická doba strávená byla asi 52 hodin, přičemž horní odhad potřebné doby v době demonstrace byl asi 72 hodin [15] .
Dříve byly zvažovány útoky založené na korelaci prvních bajtů šifrového textu a klíče. Takové slabiny algoritmu lze vyřešit vyřazením počáteční části šifrového textu [16] . Je bezpečné zahodit prvních 256, 512, 768 a 1024 bajtů. Byly provedeny studie začátku šifrového textu, aby se prokázala nespolehlivost určitého počtu prvních bajtů, což může vést k tomu, že útočník získá šifrovací klíč. Bylo navrženo několik modifikací RC4, které plní úlohu zvýšení bezpečnosti při použití algoritmu: RC4A, VMPC , RC4+.
V roce 2004 spatřila světlo práce Souradyuti Paul a Bart Preneel, která navrhla modifikaci RC4A [17] .
Pro RC4A jsou použity dva S-boxy místo jednoho, jako u RC4, označené S₁a S₂. Pro ně se používají dva čítače, j₁resp j₂. Čítač i, stejně jako u RC4, se pro celý algoritmus používá v jednotném čísle. Princip provádění algoritmu zůstává stejný, ale existuje řada rozdílů:
Algoritmus:
i:= 0 j₁ := 0 j₂ := 0 zatímco generovací smyčka: i := i + 1 j₁ := ( j₁ + S₁[i] ) mod 256 vyměnit S₁[i] a S₁[j₁] I₂ := ( S₁[i] + S₁[j₁] ) mod 256 výstup := S₂[I₂] j2 = (j2 + S2[i]) mod 256 vyměňte S2[i] a S2[j₂] I₁ = ( S₂[i] + S₂[j₂] ) mod 256 výstup := S₁[I₁] endwhileRychlost šifrování tohoto algoritmu lze zvýšit paralelizací .
V roce 2008 byla vyvinuta a navržena modifikace RC4+. Autoři Subhamoy Maitra a Goutam Paul upravili inicializaci S-boxu (KSA+) pomocí 3-úrovňového kódování. Také byl upraven algoritmus generování pseudonáhodných slov (PRGA+) [18] .
Algoritmus:
Všechny aritmetické operace se provádějí mod 256. Symboly "<<" a ">>" označují bitové posuny doleva a doprava. Symbol "⊕" označuje operaci " exkluzivní NEBO " při generační smyčce: i := i + 1 a := S[i] j := j + a b := S[j] S[i] := b (prohozené S[i] a S[j]) S[j] := a c := S[ i<<5 ⊕ j>>3 ] + S[ j<<5 ⊕ i>>3 ] výstup ( S[a+b] + S[c⊕0xAA] ) ⊕ S[ j+b ] endwhileMnoho proudových šifer je založeno na lineárních zpětnovazebních posuvných registrech ( LFSR ) . To umožňuje dosáhnout vysoce efektivní implementace šifry ve formě integrovaného obvodu (hardwarová implementace), ale komplikuje softwarovou implementaci takových šifer. Protože šifra RC4 nepoužívá LFSR a je založena na bajtových operacích, je vhodné ji softwarově implementovat. Typická implementace provádí 8 až 16 strojových instrukcí na bajt textu, takže softwarová implementace šifry by měla být rychlá [19] .
Slovo "(proměnná)" znamená, že RC4 je jedním z několika šifrovacích algoritmů, které může systém používat.
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |