Rc4-prelegere

13
 Prelegerea 4 Sisteme de criptare uide 4.1 Sisteme sincronizabile ¸ si auto-sincronizabile ˆ In sistemele de criptare prezentate pˆ an˘ a acum, elementele succesive ale textului clar erau cript ate folosi nd a ceea¸ si chei e K . Deci, dac˘ a x =  x 1 x 2 x 3 ... este textul clar, textul criptat este y =  y 1 y 2 y 3 ...  =  e K (x 1 )e K (x 2 )e K (x 3 ) ... Sistemele de criptare de acest tip se numesc sisteme de criptare bloc (block cyphers). Alt˘ a manier˘ a utilizat˘ a este aceea a sistemelor de criptare fluide (stream cyphers). Denit ¸ia 4.1  Fie  M= (P , C , K, E , D)  un siste m de cript are. O se cvent ¸ ˘ a de simboluri k 1 k 2 k 3 ...  ∈ K + se nume¸ ste cheie uid˘ a. Denit ¸ia 4.2  M= (P , C , K, E , D)  este un sistem uid dac˘ a cripteaz˘ a un text clar x =  x 1 x 2 x 3 ... ˆ ın y =  y 1 y 2 y 3 ...  =  e k 1 (x 1 )e k 2 (x 2 )e k 3 (x 3 ) ... unde k =  k 1 k 2 k 3 ... este o cheie uid˘ a din  K + . Problema princip al˘ a este aceea de a genera o astfel de cheie de criptare (teoretic innit). Aceasta se poate realiza e aleator, e pe baza unui algoritm care pleac˘ a de la o secvent ¸˘ a mic˘ a de che i de criptare. Un astfel de alg ori tm se nume ¸ ste  generator de chei uide . Mai multe detalii vor prezentate ˆ ın cadrul prelegerii dedicate generatorilor de numer e pseudo-aleatoare. 1

Transcript of Rc4-prelegere

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 1/13

Prelegerea 4

Sisteme de criptare fluide

4.1 Sisteme sincronizabile si auto-sincronizabile

In sistemele de criptare prezentate pana acum, elementele succesive ale textului clar eraucriptate folosind aceeasi cheie K . Deci, daca

x = x1x2x3 . . .

este textul clar, textul criptat este

y = y1y

2y

3. . . = eK (x

1)eK (x

2)eK (x

3) . . .

Sistemele de criptare de acest tip se numesc sisteme de criptare bloc (block cyphers).Alta maniera utilizata este aceea a sistemelor de criptare fluide (stream cyphers).

Definitia 4.1 Fie M= (P , C, K, E , D) un sistem de criptare. O secvent ¸˘ a de simboluri k1k2k3 . . . ∈ K+ se numeste cheie fluid˘ a.

Definitia 4.2 M= (P , C, K, E , D) este un sistem fluid dac˘ a cripteaz˘ a un text clar 

x = x1x2x3 . . .

ın 

y = y1y2y3 . . . = ek1(x1)ek2(x2)ek3(x3) . . .unde

k = k1k2k3 . . .

este o cheie fluid˘ a din  K+.

Problema principala este aceea de a genera o astfel de cheie de criptare (teoretic infinit).Aceasta se poate realiza fie aleator, fie pe baza unui algoritm care pleaca de la o secventamica de chei de criptare. Un astfel de algoritm se numeste generator de chei fluide.Mai multe detalii vor fi prezentate ın cadrul prelegerii dedicate generatorilor de numerepseudo-aleatoare.

1

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 2/13

2 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE 

Exemplul 4.1 (sistemul de criptare Vernam):In acest sistem  xi, ki, yi ∈ {0, 1}. Criptarea se realizeaz˘ a conform formulei 

yi = xi ⊕ ki, (i ≥ 1)

Dac˘ a cheia fluid˘ a este aleas˘ a aleator si nu mai este folosit˘ a ulterior, sistemul decriptare Vernam se numeste ”one - time pad”.

Un sistem de criptare one-time pad este teoretic imposibil de spart. 1 Intr-adev˘ ar, fiind dat un text criptat cu un astfel de sistem, Oscar nu are nici o informat ie privind cheia fluid˘ a sau textul clar. Dificultatea const˘ a ıns  a atat ın lungimea cheii (egal˘ a cu cea a textului clar), cat si ın modalitatea de transmitere a ei ıntre Alice si Bob.

Pentru sistemul Vernam exist˘ a o modalitate de atac cunoscut˘ a sub numele de ”crip-tanaliz˘ a diferent ¸ial˘ a” (prezentat˘ a mai tarziu, ın cadrul sistemului de criptare DES ).Anume:

Dac˘ a y1y2 . . . yn si y1y2 . . . yn sunt dou˘ a texte criptate cu aceiasi chee fluid˘ a k1k2 . . . kn,atunci 

yi = xi ⊕ ki, yi = x

i ⊕ ki (1 ≤ i ≤ n)

deci  yi ⊕ yi == xi ⊕ x

i, si cheia nu mai este necesar˘ a, ci doar informat ia privind lungimea sa; redundant a ultimei relat ii va permite criptanaliza.

Sistemele de criptare fluide sunt clasificate ın sisteme sincrone si auto-sincronizabile.

Definitia 4.3 Un sistem de criptare fluid sincron este o structur˘ a  (P , C, K, L, E , D),unde:

• P , C, K sunt mult imi finite nevide ale c˘ aror elemente se numesc ”texte clare”, ”textecriptate” si respectiv ”chei”;

• L este o mult ime finit˘ a nevid˘ a numit˘ a ”alfabet sir de chei”;

• g : K−→ L+ este un generator de chei fluide: pentru ∀k ∈ K, g(k) = k1k2k3 . . . ∈ L+

este o cheie fluid˘ a (teoretic infinit˘ a);

• ∀z ∈ L exist˘ a o regul˘ a de criptare ez ∈ E  si o regul  a de decriptare dz ∈ D astfel ca ∀x ∈ P , dk(ek(x)) = x

Exemplul 4.2 Sistemul de criptare Vigenere poate fi definit ca un sistem de criptare fluid sincron. Fie m lungimea cuvantului cheie din sistemul Vigenere. Definim 

1In anii 90 comunicarea ıntre Moscova si Washington era securizata ın acest mod, transportul cheiide criptare fiind asigurat de curieri.

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 3/13

4.1. SISTEME SINCRONIZABILE SI AUTO-SINCRONIZABILE  3

P  = C = L =Z 26, K =(Z 26)m ,ez(x) = x + z (mod 26), dz(y) = y − z (mod 26)

Cheia  z1z2z3 . . . este definit˘ a 

zi =

ki dac˘ a  1 ≤ i ≤ mzi−m dac˘ a  i ≥ m + 1

Ea va genera din cheia fix˘ a  K  = (k1, k2, . . . , km), cheia fluid˘ a  k1k2 . . . kmk1k2 . . . kmk1k2 . . .

Procesul de criptare cu un sistem fluid sincron poate fi reprezentat ca un automatdescris de relatiile

qi+1 = δ(qi, k), zi = g(qi, k), yi = h(zi, xi)

unde q0 este starea init ial˘ a  – care poate fi determinata din cheia k, δ este funct ia detranzit ie a st˘ arilor , g este funct ia care produce cheia fluid˘ a  zi, iar h este funct ia de iesirecare produce textul criptat yi pe baza textului clar xi si a cheii fluide zi.

qi

- 6 6 6

- - 6

 6-

 ?

 ?δ

g hk

qi+1

zi

xi

yi

qi

- 6 6 6

- - 6

 6-

 ?

 ?δ

g h−1k

qi+1

zi

yi

xi

(a) Criptare (b) Decriptare

Observatia 4.1

• Un sistem de criptare bloc poate fi privit ca un caz particular de sistem de criptare fluid, ın care ∀i ≥ 1, zi = K .

• (sincronizare): In sistemele de criptare fluide sincrone, Alice si Bob trebuie s˘ a-si sincronizeze cheia fluid˘ a pentru a putea obt ine o criptare/decriptare corect˘ a. Dac˘ a ın timpul transmisiei sunt inserat i sau eliminat i bit i ın textul criptat, atunci decriptarea esueaz  a si ea poate fi reluat˘ a numai pe baza unor tehnici de resincronizare (cum ar fi de exemplu reinit ializarea sau plasarea unor marcatori speciali la intervale regulateın textul transmis).

• Modificarea unui bit din textul criptat (f˘ a˘ a a se elimina sau ad˘ auga nimic) nu va afecta decriptarea altor caractere (nepropagarea erorii).

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 4/13

4 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE 

• Un adversar activ care elimin˘ a, insereaz˘ a sau retrimite componente ale mesajului criptat, va provoca desincroniz˘ ari si va fi deci detectat la recept ie. De asemenea, el poate face modific˘ ari ın textul criptat si s˘ a observe cum vor afecta ele textul clar.Deci un text criptat cu un sistem fluid sincron necesit˘ a meca-nisme separate deautentificare si de garantare a integrit˘ at ii datelor.

Definitia 4.4 Un sistem aditiv fluid binar de criptare este un sistem fluid sincron ın careP  = C = L =Z 2 iar  h este funct ia  ⊕ ( XOR).

Un astfel de sistem este reprezentat mai jos:

Generatorchei fluide

⊕- - ? -kzi

xi

yiGeneratorchei fluide

⊕- - ? -kzi

yi

xi

(a) Criptare (b) Decriptare

Definitia 4.5 Un sistem de criptare fluid este auto-sincronizabil (sau ”asincron”) dac˘ a  funct ia de generare a cheii fluide depinde de un num˘ ar fixat de caractere criptate anterior.

Deci comportamentul unui astfel de sistem poate fi descris de ecuatiile

qi = (yi−t, yi−t+1, . . . , yi−1), zi = g(qi, k), yi = h(zi, xi)

unde q0 = (y−t, y−t+1, . . . , y−1) este starea init ial˘ a (cunoscuta), k este cheia, g este functiade generare a cheii fluide, iar h este functia de iesire care cripteaza textul clar xi. Celemai cunoscute sisteme auto-sincronizabile sunt registrii liniari cu feedback, utilizati lagenerarea secventelor de numere pseudo-aleatoare (ın criptografie) si la generarea codurilorciclice (ın teoria codurilor).

Exemplul 4.3 (Criptare cu auto-cheie)

2

:Fie P  = C = L =Z 26. Se defineste cheia fluid˘ a astfel:

z1 = K, zi = yi−1, (i ≥ 2)

Pentru un element oarecare al cheii  z ∈ Z 26, se definesteez(x) = x + z (mod 26)dz(y) = y − z (mod 26)

S˘ a consider˘ am  K  = 13 si s  a cript˘ am textul clar  BUCURESTI .

2Se pare ca sistemul este atribuit lui Vigenere.

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 5/13

4.1. SISTEME SINCRONIZABILE SI AUTO-SINCRONIZABILE  5

Transformat ın secvent   a numeric˘ a vom avea 

(x1, x2, x3, x4, x5, x6, x7, x8, x9) = (1, 20, 2, 20, 17, 4, 18, 19, 8)

In faza de criptare, vom calcula pe rand:y1 = e13(x1) = 1 + 13 (mod 26) = 14; y2 = e14(x2) = 20 + 14 (mod 26) = 8;y3 = e8(x3) = 2 + 8 (mod 26) = 10; y4 = e10(x4) = 20 + 10 (mod 26) = 4;y5 = e4(x5) = 17 + 4 (mod 26) = 21; y6 = e21(x6) = 4 + 21 (mod 26) = 25;y7 = e25(x7) = 18 + 25 (mod 26) = 17; y8 = e17(x8) = 19 + 17 (mod 26) = 10;y9 = e10(x9) = 8 + 10 (mod 26) = 18;

Deci textul criptat este (14, 8, 10, 4, 21, 25, 17, 10, 18) sau – ın litere: OIKEV ZRKS .Pentru decriptare, vom avea:x1 = d13(y1) = 14 − 13 (mod 26) = 1; x2 = d14(y2) = 8 − 14 (mod 26) = 20; s.a.m.d.Se observ˘ a c˘ a textul decriptat poate fi obt inut de oricine, aproape ın totalitate, f˘ ar˘ a a 

cunoaste nici o cheie (aceasta fiind necesar˘ a doar pentru decriptarea primului caracter).Deci gradul s˘ au de securitate este nul.

Ceva mai dificil este sistemul ın care generarea cheii fluide se realizeaz˘ a cu ecuat ia zi = xi−1 (i ≥ 2).

In acest caz, BUCURESTI  se cripteaz˘ a ın  O V W W L V W L B (pentru  K  = 13).Nici acest sistem de criptare cu auto-cheie nu este sigur, deoarece – evident – sunt 

posibile doar  26 chei.

Proprietati:1. Auto-sincronizare: Deoarece functia de decriptare h−1 depinde numai de un numar

fixat de caractere criptate anterior, desincronizarea – rezultata eventual prin in-serarea sau stergerea de caractere criptate – se poate evita. Astfel de sisteme decriptare pot restabili proprietatea de sincronizare afectand doar un numar finit decaractere din textul clar.

2. Propagarea limitat˘ a a erorii : Daca starea unui sistem fluid auto-sincronizabil de-pinde de t caractere anterioare, atunci modificarea (eventual stergerea sau inser-area) unui caracter din textul criptat poate duce la decriptarea incorecta a maxim

t caractere; dupa aceea decriptarea redevine corecta.3. R˘ aspandirea textelor clare: Deoarece fiecare caracter din textul clar influenteaza

ıntregul text criptat care urmeaza, eventualele proprietati statistice ale textului clarsunt dispersate prin textul criptat. Deci, din acest punct de vedere, sistemele decriptare auto-sincronizabile sunt mai rezistente decat cele sincronizabile la atacurilebazate pe redondanta textului clar.

4. Rezistent a la criptanaliz˘ a activ˘ a : Din proprietatile de mai sus rezulta ca este destulde dificil de depistat un atac venit din partea unui adversar activ (care poate mod-ifica, insera sau sterge caractere) auto-sincronizarea readucand decriptarea ın faza

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 6/13

6 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE 

normala. De aceea sunt necesare mecanisme suplimentare pentru a asigura auten-tificarea si integritatea datelor.

4.2 Exemple de sisteme fluide de criptare

4.2.1 SEAL

SEAL (Software - optimized Encryption ALgorithm) este un sistem de criptare aditivbinar (Definitia 4.4), definit ın 1993 de Coppersmith si Rogaway. Este unul din cele maieficiente sisteme implementabile pe procesoare de 32 biti.

La un astfel de sistem este importanta descrierea generatorului de chei fluide (care seaduna modulo 2 cu textul clar). SEAL este o functie pseudo-aleatoare care scoate o cheiefluida de L biti folosind un numar n de 32 biti si o cheie secreta a de 160 biti.

Fie A,B,C,D,X i, Y  j cuvinte de 32 biti. Vom folosi urmatoarele notatii:

1. A: complementul lui A (pe biti);

2. A ∨ B, A ∧ B, A ⊕ B: operatiile OR,AND si XOR (pe biti);

3. A << s: rotirea ciclica a lui A spre stanga cu s pozitii;

4. A >> s: rotirea ciclica a lui A spre dreapta cu s pozitii;

5. A + B (mod 232): suma lui A si B (considerate ca numere ıntregi fara semn);

6. f (B , C , D) = (B ∧ C ) ∨ (B ∧ D);g(B , C , D) = (B ∧ C ) ∨ (B ∧ D) ∨ (C ∧ D); h(B , C , D) = B ⊕ C ⊕ D.

7. A||B: concatenarea lui A cu B;

8. (X 1, X 2, . . . , X  n) ←− (Y 1, , , , , Y  2, . . . , Y  n): atribuire simultana.

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 7/13

4.2. EXEMPLE DE SISTEME FLUIDE DE CRIPTARE  7

Algoritmul de generare a tabelei G pentru SEAL 2.0: 3

Intrare: Un sir a de 160 biti si un ıntreg i (0 ≤ i < 232).Iesire: Ga(i) – sir de 160 biti.Algoritm 1:

1. Se definesc constantele (de 32 biti):

y1 = 0x5a827999, y2 = 0x6ed9eba1,y3 = 0x8f 1bbcdc, y4 = 0xca62c1d6

2. a. X 0 ←− i;

b. for j ←− 1 to 15 do X  j ←− 0x00000000;

c. for j ←− 16 to 79 do X  j ←− ((X  j−3 ⊕ X  j−8 ⊕ X  j−14 ⊕ X  j−16) << 1);

d. (A,B,C,D,E ) ←− (H 0, H 1, H 2, H 3, H 4) where a = H 0H 1H 2H 3H 4;

e. (Runda 1): for j ←− 0 to 19 do

t ←− ((A << 5) + f (B , C , D) + E + X  j + y1);

(A,B,C,D,E ) ←− (t, A, B << 30, C , D);

f. (Runda 2): for j ←− 20 to 39 do

t ←− ((A << 5) + h(B , C , D) + E + X  j + y2);

(A,B,C,D,E ) ←− (t, A, B << 30, C , D);

g. (Runda 3): for j ←− 40 to 59 do

t ←− ((A << 5) + g(B , C , D) + E + X  j + y3);

(A,B,C,D,E ) ←− (t, A, B << 30, C , D);

h. (Runda 4): for j ←− 60 to 79 do

t ←− ((A << 5) + h(B , C , D) + E + X  j + y4);

(A,B,C,D,E ) ←− (t, A, B << 30, C , D);

i. (H 0, H 1, H 2, H 3, H 4) ←− (H 0 + A, H 1 + B, H 2 + C, H 3 + D, H 4 + E );

Ga(i) = H 0||H 1||H 2||H 3||H 4.

SEAL(a, n) (Generatorul de chei fluide pentru SEAL 2.0):

3Algoritmul SEAL 1.0 este bazat pe funct ia de dispersie SHA, iar SEAL 2.0 – pe funct ia SHA − 1.

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 8/13

8 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE 

Intrare: a – cheia secreta (160 biti), n ∈ [0, 232) ıntreg, L - lungimea solicitata pentrucheia fluida.Iesire: cheia fluida y, |y| = L, unde L este primul multiplu de 128 din [L, ∞).

1. Se genereaza tabelele T, S , R avand ca elemente cuvinte de 32 biti.

Fie functia F a(i) = H ii (mod 5) unde H i0H i1H i2H i3H i4 = Ga(i/5).

a. for i ←− 0 to 511 do T [i] ←− F a(i);

b. for j ←− 0 to 255 do S [ j] ←− F a(0x00001000 + j);

c. for k ←− 0 to 4 · (L − 1)/8192 − 1 do R[k] ←− F a(0x00002000 + k);

2. Descrierea procedurii Initialize(n,l,A,B,C,D,n1, n2, n3, n4) cu intrarile n (cuvant)si l (ıntreg). Iesirile sunt A,B,C,D,n1, n2, n3, n4 (cuvinte).

a.A ←− n ⊕ R[4 · l], B ←− (n >> 8) ⊕ R[4 · l + 1],C  ←− (n >> 16) ⊕ R[4 · l + 2], D ←− (n >> 24) ⊕ R[4 · l + 3].

b. for j ←− 1 to 2 do

P  ←− A ∧ 0x000007f c, B ←− B + T [P/4], A ←− (A >> 9),

P  ←− B ∧ 0x000007f c, C  ←− C + T [P/4], B ←− (B >> 9),

P  ←− C ∧ 0x000007f c, D ←− D + T [P/4], C  ←− (C >> 9),

P  ←− D ∧ 0x000007f c, A ←− A + T [P/4], D ←− (D >> 9),(n1, n2, n3, n4) ←− (D,A,B,C );

P  ←− A ∧ 0x000007f c, B ←− B + T [P/4], A ←− (A >> 9),

P  ←− B ∧ 0x000007f c, C  ←− C + T [P/4], B ←− (B >> 9),

P  ←− C ∧ 0x000007f c, D ←− D + T [P/4], C  ←− (C >> 9),

P  ←− D ∧ 0x000007f c, A ←− A + T [P/4], D ←− (D >> 9),

3. l ←− 0, y ←− (sirul vid);

4. repeata. I nitialize(n,l,A,B,C,D,n1, n2, n3, n4);

b. for i ←− 1 to 64 do

P  ←− A ∧ 0x000007fc, B ←− B + T [P/4], A ←− (A >> 9), B ←− B ⊕ A;

Q ←− B ∧ 0x000007fc, C ←− C + T [Q/4], B ←− (B >> 9), C  ←− C ⊕ B;

P  ←− (P  + C ) ∧ 0x000007fc, D ←− D + T [P/4], C  ←− (C >> 9), D ←− D ⊕ C ;

Q ←− (Q + D) ∧ 0x000007fc, A ←− A + T [Q/4], D ←− (D >> 9), A ←− A ⊕ D;

P  ←− (P  + A) ∧ 0x000007fc, B ←− B + T [P/4], A ←− (A >> 9);

Q ←− (Q + B) ∧ 0x000007fc, C ←− C + T [Q/4], B ←− (B >> 9);

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 9/13

4.2. EXEMPLE DE SISTEME FLUIDE DE CRIPTARE  9

P  ←− (P  + C ) ∧ 0x000007fc, D ←− D + T [P/4], C  ←− (C >> 9);Q ←− (Q + D) ∧ 0x000007fc, A ←− A + T [Q/4], D ←− (D >> 9);y ←− y||(B + S [4 · i − 4])||(C ⊕ S [4 · i − 3])||(D + S [4 · i − 2])||(A ⊕ S [·i − 1]).

if  |y| ≥ L then return(y) STOP

else if  i (mod 2) = 1 then (A, C ) ←− (A + n1, C + n2)else (A, C ) ←− (A + n3, C + n4)

c. l ←− l + 1.

Observatia 4.2 ([1]) In majoritatea aplicat iilor pentru SEAL 2.0 se foloseste L ≤ 219.Algoritmul funct ioneaz˘ a si pentru valori mai mari, dar devine ineficient deoarece crestemult dimensiunea tabelei  R. O variant˘ a este concatenarea cheilor fluide SEAL(a, 0)||SEAL(a, 1)||SEAL(a, 2)|| . . . Deoarece n < 232, se pot obt ine astfel chei fluide de lungimi pan˘ a la  251, p˘ astrand  L = 219.

4.2.2 RC4

Sistemul RC 4 (Rivest Code #4) a fost creat ın 1987 de Ron Rivest pentru societatea RSAData Security Inc (astazi RSA Security ). Destinat scopurilor comerciale, el a fost secret,fiind accesibil numai dupa semnarea unui protocol de confidentialitate. In septembrie 1994ınsa, un anonim publica codul sau sursa pe o lista de discutii, dupa care se raspandesterapid starnind o serie de polemici referitor la drepturile intelectuale. Se considera ca astazi

exista mai multe implementari ilegale.RC 4 este un sistem aditiv fluid de criptare.Printre sistemele care folosesc RC 4 se pot aminti SQL (Oracle), Lotus Notes, AOCE

(Apple Computer), WEP WPA CipherSaber Secure Sockets Layer (opt ional) sau Secureshell (optional)4 RC 4 este utilizat pentru criptarea fisierelor ın protocoale cum ar fi RSASecurPC sau ın standarde de comunicatii (WEP, WPA pentru carduri, criptarea traficuluide date sau a site-urilor de web bazate pe protocolul SSL). De asemenea, el face partedin Cellular Digital Packet Data specification.

La acest sistem, pentru generarea cheii fluide se foloseste o stare interna (secreta)formata din doua componente:

• Un tablou de 256 octeti: S [0], S [1], . . . S  [255], numit S − box.

• Doi pointeri de cate 8-biti (notati ”i” respectiv ” j”).

S  − boxul este initializat cu o cheie de lungime variabila – de obicei ıntre 40 si 256biti, folosind un algoritm numit KSA (key-sheduling algorithm).

In faza a doua, cheia fluida este generata folosind algoritmul PRGA (pseudo-randomgeneration algorithm).

4Cand un sistem de criptare este marcat opt ional , ınsemna ca el este una din variantele oferite pentruimplementare.

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 10/13

10 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE 

Algoritmul PRGA de generare a cheii fluide

i j

+

 ? ?

 ? 6 6 6

 ?- ?

 6

 ?

0 1 2 S [i]+S [ j] 254 255

. . . . . . . . . . . .

Continuturile S [i] si S [ j] (unde i, j sunt date de cei doi pointeri) se aduna modulo 256,iar octetul K  de la adresa S [i] + S [ j] este introdus ın cheia fluida. In plus cei doi octetisunt interschimbati.

Procedeul este reluat atat timp cat este nevoie. La fiecare reluare starea celor doipointeri se modifica (i este incrementat cu 1 iar j este incrementat cu S [i]). In acest fel,orice locatie din S − box este modificata cel putin odata ;a 256 iteratii.

Formal:

i : = 0

j : = 0

while GeneratingOutput:

i := (i + 1) mod 256

j := (j + S[i]) mod 256

swap(S[i],S[j])output S[(S[i] + S[j]) mod 256]

Algoritmul KSA de initializare

KSA este utilizat pentru initializarea S  − boxului. Fie n (1 ≤ n ≤ 255) numarul deocteti din cheie5. Initial ın S  se introduce permutarea identica. Ulterior se realizeaza 256transpozitii. Formal

for i from 0 to 255 do S[i] := i

j : = 0

for i from 0 to 255 doj := (j + S[i] + key[i mod n]) mod 256

swap(S[i],S[j])

Implementarea sistemului RC 4 este foarte simpla: ea lucreaza cu octeti si necesita256 pentru S  − box, n octeti de memorie pentru cheie, plus trei variabile ıntregi i,j,k.Operatiile folosite sunt XOR si AND (sau – pe unele platforme – simpla adunare pe biti,fara transport).

5In majoritatea implementarilor n este ın intervalul [5, 16].

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 11/13

4.3. EXERCITII  11

Securitatea RC 4

Conform cu Bruce Schneier ([2]), sistemul are circa 256! × 2562 = 21700 stari posibile; eleste rezistent la criptanaliza diferentiala si liniara, iar ciclurile sunt mai mari de 10.100.

Totusi, securitatea RC 4 este slaba din mai multe puncte de vedere si criptografii nurecomanda sistemul pentru aplicatiile actuale.

Cheia fluida generata are o usoara preferinta pentru anumite secvente de octeti.Aceasta a permis construirea unui atac (Fluhrer si McGrew), care separa cheia fluidadintr-o secventa aleatoare de maxim 1 GB.

In 2001, Fluhrer, Mantin si Shamir descopera ca din toate cheile RC4 posibile, primiiocteti de iesire nu sunt aleatori, oferind informatii importante despre cheie.

La majoritatea sistemelor de criptare, o masura de securitate ncesara este alegereaunui numar aleator nou6 care sa fie folosit pentru criptarea fiecarui mesaj. In acest fel,criptarea de doua ori a aceluiasi mesaj va genera texte diferite. O solutıe sigura (carefunctioneaza pentru orice sistem de criptare) este de a folosi o cheie pe termen lung dincare, prin amestec cu un nonce (dupa un algoritm prestabilit) se obtine cheia necesaraunei criptari. Multe aplicatii ınsa – care folosesc RC 4 – fac o simpla concatenare a cheii cunonce. Aceasta slabiciune este exploatata de Fluhrer, Mantin si Shamir pentru a spargeulterior sistemul de criptare W EP  (wired equivalent pruvacy) folosit pe retelele fara fir802.11.

Ulterior implementarile sistemului RC 4 s-au aparat eliminand primii octeti (uzual1024) din cheia fluida, ınainte de a o folosi.

4.3 Exercitii

1. Construiti coduri de autentificare a mesajelor (MAC) capabile sa autentifice mesajeleprimite printr-un sistem fluid de criptare. (Indicatie: a se vedea [1], paragraf 9.5.4)

2. Presupunem ca definim o cheie fluida ıntr-un sistem sincronizabil ın felul urmator:Fie K  ∈ K, L un alfabet al cheilor si Σ o multime finita de stari. Se defineste ostare initiala q0 ∈ σ. Apoi, pentru i ≥ 1, se defineste recursiv

qi = f (qi−1, K )

unde f  : Σ×K−→ Σ. De asemenea, ∀i ≥ 1, elementul zi din cheia fluida este definitprin

zi = g(qi, K )

unde g : Σ × K−→ L. Aratati ca orice cheie fluida rezultata ın acest mod are operioada de lungime maxim |Σ|.

6Un astfel de numar poarta numele de nonce (new number)

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 12/13

12 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE 

5/14/2018 Rc4-prelegere - slidepdf.com

http://slidepdf.com/reader/full/rc4-prelegere 13/13

Bibliografie

[1] Menezes, Oorschot, Vanstome - Handbook of applied cryptography , 1997

[2] Schneier, B. - Applied Cryptography , John Wiley & Sons, second edition, 1997

[3] Stinton, D. – Cryptography, Theory and Practice, Chaptan & Hall/CRC, second edi-tion 2002

13