Sunteți pe pagina 1din 4

Blowfish este un algoritm de criptare care poate fi folosit ca un nlocuitor pentru algoritmii DES si IDEA.

Este un cifru pe bloc simetric (are aceeasi cheie si pentru criptare si pentru decriptare), cripteaza date pe blocuri de 8 bytes lungime, foloseste o cheie de lungime variabila de la 32 (4 bytes ) biti la 448 biti (56 bytes). Blowfish a fost implementat n 1993 de catre Bruce Schneier ca o alternativa la algoritmii existenti. Dezvoltat tinnd cont de procesoarele pe 32 de biti nou aparute atunci, este mult mai rapid dect DES. De cnd a fost conceput a fost foarte bine analizat spre deosebire de alti algoritmi. Blowfish este nepatentat, gratuit - liber de licenta. Algoritmul presupune doua parti: o parte a extensiei cheii si alta de criptare a datelor. Prima parte converteste cheia variabila de 4 pna la 56 de bytes in cteva tablouri de subchei de aproximativ 4168 bytes. Blowfish are 16 runde. Fiecare runda nseamna o permutare dependenta de cheie si o substitutie de cheie si de date. Toate operatiile sunt XOR-uri si adunari pe cuvinte de 32 de biti. Singura operatie aditionala sunt cele patru tablouri de date indexate pentru fiecare runda. Blowfish foloseste un numar mare de subchei. Aceste chei trebuie sa fie calculate nainte de orice criptare sau decriptare. Descriere detaliata Blowfish este un algoritm creat petnru microprocesoarele moderne. Algoritmul nu este patentat, iar codul lui este de domeniu public. Blowfish a fost implementat tinnd cont de urmatoarele criterii:

sa fie rapid. Blowfish cripteaza date pe microprocesoarele pe 32 de biti la o rata de 26 de cicluri de ceas pentr fiecare byte. sa fie compact. Blowfish poate rula n mai putin de 5K de memorie. sa fie simplu. Blowfish foloseste numai operatii simple: adunari, XOR-uri si operatii pe operanzi de 32 de biti. Design-ul sau este foarte usor de analizat ceea ce l face "rezistent" la erori de implementare. cheia poate varia. Blowfish are o cheie a carei valoare poate avea marimea maxima de 448 biti.

Blowfish este optimizat pentru aplicatii unde cheia nu este schimbata des, cum ar fi comunicatiile ntre calculatoare (transfer de date) sau un criptor automat (criptari repetate). Este mult mai rapid dect DES cnd este folosit pe microprocesoarele pe 32 de biti cu memorie cache mare, cum sunt procesoarele Pentium sau PowerPC. Blowfish nu este bine sa fie folosit n aplicatiile unde se schimba foarte des cheia (necesita un timp destul de mare de initializare), cum ar fi schimbarea pachetelor cu schimbarea cheii, sau ca o functie hash ntr-o singura directie. Blowfish este un cifru pe blocuri de 64 de biti cu o lungime variabila a cheii de criptare. Algoritmul are doua parti: largirea cheii si criptarea efectiva. Largirea cheii converteste cheia pna la 448 de biti n cteva tablouri de subchei totaliznd 4168 de octeti. Criptarea consta ntr-o functie simpla care este repetata asupra blocului de date de 16 ori. Fiecare runda consta ntr-o permutare dependenta de cheie si o substitutie a cheii si de date. Toate operatiile sunt adunari si XOR-uri pe cuvinte pe 32 de biti. Singurele operatii aditionale sunt patru cautari pe tablouri indexate de date pe fiecare runda.

Blowfish foloseste un numar mare de subchei. Aceste chei trebuie sa fie calculate nainte de orice criptare sau decriptare de date. Cele 18 tablouri P sunt formate din subchei de 32 biti
P1, P2,..., P18

Patru "cutii" de 32 de biti care au cte 256 de intrari fiecare:


S1,0, S2,0, S3,0, S4,0, S1,1,..., S2,1,..., S3,1,..., S4,1,..., S1,255 S2,255 S3,255 S4,255

Organigrama algortmului de criptare Blowfish.

Functia de criptare care este repetata de 16 ori. Decriptarea este exact ca criptarea, cu exceptia ca P1, P2,..., P18 sunt folosite n ordine inversa. Implementarile lui Blowfish care necesita cea mai mare viteza trebuie sa foloseasca toate subcheile din memoria cache.

Subcheile sunt calculate folosind algoritmul Blowfish. Metoda exacta este: 1. Se initializeaza tablourile P si apoi cele patru cutii S, n ordine , cu un sir de lungime fixa. Acest sir consta din cifre hexazecimale. 2. Se face XOR pe P1 cu cei 3 de biti ai cheii, XOR cu P2 cu cei 32 de biti ai cheii si tot asa mai departe pna la tabloul P18. Se face un ciclu prin bitii cheii pma cnd la toate tablourile P li s-a facut XOR cu bitii cheii. 3. Se cripteaza toti bitii 0 cu algoritmul Blowfish, folosind subcheile descrise n pasii 1 si 2 4. Se inlocuieste P1 si P2 cu "iesirile" de la pasul 3 5. Se cripteaza "iesirea" pasului 3 folosind algoritmul Blowfish cu subcheile modificate 6. Se inlocuieste P3 si P4 cu "iesirea" pasului 5 7. Continuarea procesului, nlocuind toate elementele tabloului P si apoi toate "cutiile" S n ordine, cu iesirea care se schimba n continuu cu Algoritmul Blowfish. n total sunt necesare 521 de iteratii pentru a genera toate subcheile necesare. Aplicatiile pot stoca subcheile - nu sunt necesare repetarile acestor operatii. Data viitoare implementarea acestui algoritm.

S-ar putea să vă placă și