Sunteți pe pagina 1din 13

CIFRUL RC5

Cifrul RC5, sau Rivest Cipher 5 a fost proiectat de Ronald Rivest de la RSA Data Security n 1994.

Acesta este un cifru de tip bloc, avnd dimensiunea de bloc (32, 64 sau 128 de bii), cheia (0 - 2040 bii) i numrul de runde (0 la 255) variabile. Iniial s-a sugerat folosirea de parametri cu o dimensiune a blocului de 64 de bii, o cheie de 128-bii i 12 runde. O caracteristic de baz a cifrului RC5 este utilizarea datelor dependente de rotaii, unul dintre obiectivele RC5 fiind acela de a grbi studiul i evaluare unor astfel de operaiunilor ca un primitiv criptografic. RC5, de asemenea, const dintr-un numr de adunri modulare i SAU exclusiv (XOR).

Cifrul RC5 are urmtoarele caracteristici: este potrivit pentru hardware-ul i software-ul existent: RC5 utilizeaz numai operaii computaionale folosite de microprocesoare; este rapid: aceasta, datorit faptului c cifrul RC5 este un algoritm simplu; este adaptabil la procesoare cu lungimi diferite de cuvnt; are un numr variabil de rotaii: numrul de rotaii este al doilea parametru al lui RC5; lungimea cheii este variabil: lungimea cheii este al treilea parametru al cifrului RC5; este simplu: structura simpl a cifrului RC5 este uor de implementat; necesit memorie puin: deoarece RC5 necesit puin memorie, el este utilizat pentru cartele inteligente (smart cards) sau pentru alte dispozitive care necesit memorie limitat; securitate ridicat: cifrul RC5 are o securitate ridicat dac se aleg parametrii potrivii folosete DDR (data dependent rotations)

DDR(data dependent rotations) a fost folosit prima data de Becker la IBM, iar mai apoi de Madryga. DDR a strnit interesul odat cu folosirea acestei metode n RC5. Rivest descrie acest metod astfel: un cuvnt de rezultate intermediare este rotat ciclic de un anumit numr de ori, determinat de biii de grad mic dintr-un alt rezultat intermediar. Eficiena dat de folosirea DDR este legat de numrul variabil de rotaii n timpul cifrrii diferitelor blocuri de date. Specificarea unui numr de rotaii pentru un vector binar de n bii necesit log2n bii din irul de bii de control. Prin urmare, n RC5 utilizarea DDR pe un bloc de n bii este independent de n log2n bii ai celuilalt bloc.

RC5 este un algoritm parametrizat, avnd forma RC5-w/r/b. Varianta iniial propus de Rivest a fost RC5-32/12/16 i o alt versiune pentru platformele (pe atunci viitoare) de 64 bii RC5-64/16/16.

- w reprezint dimensiunea cuvntului n bii; fiecare cuvnt conine u= (w/8) octei de 8 bii. Valoare recomandat de w = 32bii. RC5 cripteaz blocuri de 2 cuvinte, att blocul textului clar ct i blocul textului cifrat au fiecare lungimea de 2w bii. - r reprezint numrul de rotaii. RC5 folosete de asemenea, o tabel extins de chei numit S care este derivat din cheile secrete furnizate de utilizator. Dimensiunea acestei tabele depinde de r, fiind de t = 2(r+1) cuvinte. - b reprezint numrul de bii al cheii secrete K (cheie criptografic de lungime variabil).

Notaii i operaii n RC5:


RC5 folosete urmtoarele tipuri de operaii: 1. SAU exclusiv pe cuvinte, realizat bit cu bit (-OR), notat cu . 2. operaia invers (NOR), notat cu -. 3. rotaie: rotirea lui x la stnga cu y bii notat cu x<<<y. Toate acestea sunt operaii rapid de executat fiind suportate de majoritatea procesoarelor. Pentru a se decripta, operaiile algoritmului trebuie s fie inversate n mod corespunztor pentru a genera datele pentru fiecare jumtate de rotaie esenial fiind mersul napoi prin algoritm.

Algoritmul RC5, practic este compus din 3 algoritmi: key expansion algorithm , encryption algorithm i decryption algorithm.

Key expansion algorithm: Acesta are rolul de a extinde cheia K a userului pentru a se putea realiza tabela S de chei extinse, astfel c S reprezint un array de t = 2(r+1) cuvinte binare aleatoare determinate de K. Acest algoritm folosete dou constante magice, definite n felul urmtor pentru un cuvnt w oarecare:

unde Odd(x) este numrul impar cel mai apropiat de x (rotunjit n sus dac x este par). Pentru w=16, 32, 64 aceste variabile arat astfel:

Array-ul S de subchei este iniializat folosind r i w ca date de intrare, genernd un anumit pattern pseudoaleator. Apoi, cheia de b octei K[0], K[1], , K[b-1] este convertit ntr-un c-cuvnt L[0], L[1], , L[c-1], unde c=[b/u] cuvinte, iar u=w/8.
Modul de iniializare al tabelei S folosind cele dou constante poate fi dedus din urmtorul algoritm: Input: Pw, Qw, t S[0] = Pw For i 1 to t-1 do S[i] S[i-1] Qw Apoi S este combinat cu L pentru a se obine o tabel final S de subchei. Mai exact, array-ul mai mare va fi procesat de 3 ori, iar cellalt de mai multe ori. i=j=A=B=0 Do 3*max(t, c) times A = S[i] = ( S[i] A B ) <<< 3 B = L[j] = ( L[j] A B ) <<<3 ( A B) i = (i+1) mod t j = (j+1) mod c Rivest a declarat c aceast funcie de expansiune a cheii are un anumit nivel de onewayness: Nu este att de uor s se determinte K din S.

Algoritmul de criptate: Presupunem c blocul de intrare este dat sub forma a doi w-bii registri A, B i c s-a executat deja expansiunea key, obinndu-se array-ul S[0... t-1].

Algoritmul de decriptare:

O trstur a algoritmului RC5 este folosirea data-dependent rotations numrul de rotaii depinde de datele de intrare, nu este predeterminat. Rutinele ce criptare i decriptare sunt foarte simple. n timp ce alte operaii (substituia) ar putea fi incluse n operaiile de baz, data-dependent rotations sunt cele care dau greutate criptrii. n articolul de specialitate RSA LABORATORIES CryptoBytes (The technical newsletter of RSA Laboratories, a division of RSA Data Security, Inc) s-a realizat un scurt raport privind securitatea algoritmului RC5 mpotriva a trei tipuri de atacuri: cutarea exhaustiv, criptanaliza diferenial i criptanaliza liniar. n urm testelor realizate s-a ajuns la concluzia c RC5 ofer o securitate bun mpotriva celor trei tipuri de atacuri atunci cnd att lunginea chei secrete ct i numrul de rotaii sunt destul de mari. Fiind un algoritm parametrizat RC5 ofer flexibilitate n ce privete nivelul de securitate.

Moduri de operare RC5: RFC2040 definete 4 moduri diferite de operare ale cifrului RC5:

RC5 cifru bloc este de fapt modul ECB: 2w text clar 2w text cifrat RC5 CBC: blocuri repetate de text clar produc diferite blocuri de text cifrat RC5 CBC PAD: prelucreate text clar de orice dimensiune prin umplerea unor simboluri suplimentare pentru a se ajunge la o lungine multiplu de 2w. Octeii umplui sunt toi de acelai fel i sunt de forma octetului care reprezint numrul de octei umplui(de exemplu dac sunt 8 octei umplui fiecare va avea forma 0000 1000). RC5 CTS: este de fapt tot un mod CBC al algoritmului. Acesta prelucreaza text clar de orice lungime i produce text cifrat de aceeai lungime.

Bibliografie: 1. Introducere in Criptografie - Constantin Popescu http://webhost.uoradea.ro/cpopescu/cryptography/Cursul6.pdf 2. The RC Encryption Algorithm - Ronald L Rivest, 1997 http://people.csail.mit.edu/rivest/Rivest-rc5rev.pdf 3. Data dependent rotations, a trustworthy approach for future encryption systems/ciphers: low cost and high performance - N. Sklavos, O. Koufopavlou, 2003 http://www.nsklavos.gr/Papers/%5BJ04%5D.pdf 4. Modified Cryptanalysis of RC5 Mowafak Hasan, Hasan Al-Shalabi, 2005 http://www.ccis2k.org/iajit/PDF/vol.3,no.4/4-Hasan.pdf 5. RSA LABORATORIES CryptoBytes (The technical newsletter of RSA Laboratories, a division of RSA Data Security, Inc), volume1, number2, 1995 ftp://ftp.rsa.com/pub/cryptobytes/crypto1n2.pdf 6.Modern Block Ciphers (Part 2) RC5 Encryption cmpe.emu.edu.tr/chefranov/.../Chapter%206.%20Part%202doc.doc