Algoritam RC4

download Algoritam RC4

of 6

description

Algoritam RC4-osnove kriptografije

Transcript of Algoritam RC4

Seminarski Rad

1. UvodRC4 je najprostranjenija ifra toka koja se koristi u kriptografiji (SSL- za obezbeivanje internet protokola i WEP- zatita beinih mrea). U WEP-u se koristi RC4 sa 40 i 128-btnim kljucem.Iako je jednostavan i brz algoritam, zbog njegovih slabosti se ne upotrebljuje u novijim sistemima.Napravio ga je Ronald Rivest 1987. I njegov zvanini naziv je Rives Cipher 4, i njegov izvorni kod je bio dran u tajnosti dok nije procureo 1994. Tanost tog procurelog algoritma su potvrdili legalni korisnici istog. RC4 je bio popularan zbog njegove brzine i jednotavnosti. Veliina kljua koju RC4 koristi moe da bude od 8 do 2048 bita.U ovom algoritmu tok kljua je potpuno nezavistan od otvorenog teksta. Koristi se S kutija od 256 (S0-S255), gde je svaki unos permutacija brojeva od 0 do 255. Postoje dva brojaa , i i j koja su nuliarana na poetku.

2. Karakteristike

Koristi se klju promenljive duine od 1 do 256 bajtova, da bi se napravila 256 bajtna tabela stanja. Tabela stanja se koristi za generisanje pseudo-nasuminih bajtova , da bi se generisao pseudo-nasumian niz koji se dalje XOR-uje sa otvorenim tekstom da bi dobili ifrat. Klju je esto ogranien na 40 bita zbog restrikcija, ili odreenih specifikacija, ali se nekad koristi 128-o bitni klju. Koristi se u mnogim komercijalnim paketima kao to su npr. Lotus Notes i Oracle Secure SQL. Sam algoritam radi u dve faze. Priprema kljua, i ifrovanje. Priprema kljua je prva i najtea faza ovog algoritma. Tokom unosa n-bitnog kljua, taj klju se koristi da bi se generisala enkripcijska promenljiva upotrebom 2 niza, stanje i klju, i n rundi operacija meanja. Ove operacije se sastoje od zamene bajtova, mod-a i drugih formula.

Povoljnosti: Teko je znati gde je koja vrednost u tabeli. Teko je znati koje iz kojeg mesta u tabeli se bira svaka vrednost niza. Odreeni RC4 klju se moe upotrebiti samo jednom. Enkripcija je 10 puta bra od DES-a.

Ogranienje: Jedan u svakih 256 kljueva moe biti slab klju. Ovi kljuevi se identifikuju kriptoanalizom koja je u stanju da pronae okolnosti pod kojima su jedan ili vie generisanih bajtova povezani sa kljuem.

3. AlgoritamRC4 se sastoji iz dva dela. Prvi deo je KSA ( key-scheduling algorithm), a drugi deo je PRGA ( pseudo random generation algorithm). Algoritam izgleda ovako:

{prvi deo}

j = 0; for i = 0 to 2n-1 do j = (j + S[i] + T[i]) mod 2n Swap(S[i],S[j]); End

{drugi deo}i, j = 0; while (true) { i = (i + 1) mod 2n; j = (j + S[i]) mod 2n; Swap (S[i], S[j]); t = (S[i] + S[j]) mod 2n; k= S[t]; }

S - s kutija od 0-255.K - kljuT - niz u koji prestavlja konaan klju koji se koristi u algoritmu.T[i] i-ti element iz niza TS[i] i-ti element iz niza SS[t] t-ti element iz niza S k promenljiva koja uzima vrednost S[t]U niz T se unosi konaan klju koji e se koristiti tokom prvog dela algoritma. Brojai I i J su nulirani na poetku, i onda se rauna J unutar I petlje koja ide od 0-255. Formula po kojoj se novo J rauna je J= (J+ S[i]+ T[i]) mod 256, potom se staro J zamenjuje novom vrednou i radi se zamena elemenata S niza i-tom i na J-tom mestu. Ovaj postupak se ponavlja dok god i ne bude 255.U drugom delu algoritma I i J su ponovo nulirani, i raunaju se iz sledeih formula:I= (i + 1) mod 256, j:= (j + S[i]) mod 256, Zatim se radi zamena S[i] i S[j]. Iz tako dobijene nove S kutije se rauna t po formuli t= (S[i] + S[j]) mod 256, i uzima se t-ti element S kutije koji se potom XOR-uje sa prvim bitom otvorenog teksta. Radi se po jedna iteracija za svaki bit otvorenog teksta, i time se dobija ifrat.

4. Primer RC4 Uzmimo kao primer umesto punih 256 bajta, 8 x 3-bita. Radiemo sa 3-bitnim otvorenim tekstom , i poto S ide od 0 do 7, mogu se predstaviti 3 bita.Recimo da koristimo 4 x 3-bit klju K = [1 2 3 6]. I otvoreni tekst O = [1 2 2 2] Prvi korak je generisanje niza.Inicijalizuje se vektor stanja S i privremeni vektor T. S se inicijalizuje tako da S[i] = i, and T se inicijalizuje kao K (ponovljen ako je to potrebno). S = [0 1 2 3 4 5 6 7] T = [1 2 3 6 1 2 3 6] Sad se vri permutacija S. For i = 0: j = (0 + 0 + 1) mod 8 = 1 Swap(S[0],S[1]); S = [1 0 2 3 4 5 6 7] T = [1 2 3 6 1 2 3 6] For i = 1: j = (1+0+2) mod 8 = 3 Swap(S[1],S[3]) S = [1 3 2 0 4 5 6 7]; T = [1 2 3 6 1 2 3 6] For i = 4 , itd. Dobiemo permutaciju originalne S kutije koja sad izgleda ovako: S = [2 3 7 4 0 1 6 5]; Sad se generiu po 3 bita od jednom, S[t], koje kasnije XOR-ujemo sa po 3 bita otvorenog teksta da bi dobili ifrat. 3-bitni S[t] se generie ovako: Prva iteracija: S = [2 3 7 4 0 1 6 5] i = (0 + 1) mod 8 = 1 j = (0 + S[1]) mod 8 = 3 Swap(S[1],S[3]) S = [2 4 7 3 0 1 6 5] t = (S[1] + S[3]) mod 8 = 7 k = S[7] = 5 Otvoreni tekst je, O = [1 2 2 2] Znai da se naa prva 3 bita ifrata dobijaju ovako: k(S[t]) XOR O 5 XOR 1 = 101 XOR 001 = 100 = 4 Druga iteracija: S = [2 4 7 3 0 1 6 5] i = (1 + 1 ) mod 8 = 2 j = (2 + S[2]) mod 8 = 1 Swap(S[2],S[1]) S = [2 7 4 3 0 1 6 5] t = (S[2] + S[1]) mod 8 = 3 k = S[3] = 3 Druga 3 bita sifrata su: 3 XOR 2 = 011 XOR 010 = 001 = 1 Znai da e ifrovani otvoreni tekst O = [1 2 2 2] sa kljuem K = [1 2 3 6] upotrebom RC4 algoritam igledati ovako C = [4 1 2 0]. (ili u binarnom obliku: P = 001010010010, K = 001010011110 and C = 100001010000)Na internetu su svima dostupni programi za enkripciju i dekripciju RC4 algoritmom.Kao primer bi naveo RC4 Encryption Tool, koji nam moe sluiti kao provera. On otvoreni tekst pretvara u ifrat koji je u heksadecimalnom obliku.

Preko ovog je lako videti ta se desi ako klju nije ispravan, ili ako nedostaje slovo iz kljua. Na sladeem primeru je izostavljeno zadnje slovo a iz kljua. Rezultat je sledei:

5. Zakljuak

RC4 moe da bude dobar(SSL) i lo(WEP) zavisno od upotrebe. Vidimo da je jednostavan nain da se podaci zatite, ima veliku brzinu enkripcije. Ceo proces RC4 odradjuje nad kljuem koji se kasnije jednostavno XOR-uje sa otvorenim tekstom. U knjizi Bruce Schneider-a pie da RSADSI( RSA Data Security Inc.) tvrdi da je ovaj algoritam otporan na diferencijalnu i linearnu kriptoanalizu, izgleda da uopte nema kratke cikluse i visoko je nelinearan. Ne postoje nikakvi rezultati kriptoanalize(bar u vreme izdanja ove knjige). RC4 moe da bude u 21700 (256!*2562) broj stanja, to je ogroman broj. Ovaj algoritam je dovoljno jednostavan da ga veina programera moe kodirati bez gledanja u papir.

Iz ovog vidimo da ak i google koristi RC4 algoritam u kombinaciji sa SSL-om. Koliko sam uspeo da shvatim, kad se RC4 upotrebljuje sa SSL-om, njegove mane nisu od znaaja. ak se za njihove potrebe mnogo bolje pokazao nego AES-CBC sa SSL/TLS-om.

- 5 -