Criptografie (6) Algoritmul de criptare Blowfish

Descrierea algoritmului Blowfish

Algoritmul Blowfish este un algoritm de criptare simetrică cu blocuri, dezvoltat de Bruce Schneier în 1993. Blowfish este cunoscut pentru simplitatea și eficiența sa, fiind utilizat în numeroase aplicații datorită flexibilității dimensiunii cheii și vitezei sale. 

 

Sursa https://www.researchgate.net/figure/Blowfish-Encryption-Algorithm_fig2_318368992

Iată o descriere a modului în care funcționează Blowfish:

Caracteristicile principale

  1. Dimensiunea blocului: Blowfish criptează datele în blocuri de 64 de biți.
  2. Dimensiunea cheii: Blowfish acceptă chei variabile, de la 32 la 448 de biți.
  3. Numărul de runde: Algoritmul folosește 16 runde de criptare/decriptare.

Structura algoritmului

Blowfish este bazat pe o structură de rețea Feistel, ceea ce înseamnă că algoritmul este împărțit în runde în care datele sunt procesate printr-o serie de funcții complexe. Iată pașii principali:

Inițializarea cheii

  1. Generarea subcheilor: Blowfish folosește o serie de subchei generate din cheia principală. Există două seturi de subchei:

    • P-array: O matrice de 18 valori de 32 de biți.
    • S-boxes: Patru tabele (S1, S2, S3, S4) fiecare conținând 256 de intrări de 32 de biți.
  2. Expansiunea cheii: Inițial, valorile din P-array și S-boxes sunt predefinite cu constante derivate din zecimalele numărului pi. Cheia principală este apoi folosită pentru a modifica aceste valori.

    • Cheia principală este expandată și împărțită în segmente pentru a actualiza valorile din P-array.
    • Aceasta implică mai multe iterații pentru a amesteca și personaliza valorile din S-boxes.

Runda de criptare

Fiecare rundă de criptare din Blowfish implică următorii pași:

  1. Divizarea datelor: Blocul de 64 de biți este împărțit în două părți de 32 de biți, notate L (stânga) și R (dreapta).

  2. Aplicarea rundei Feistel:

    • Pentru fiecare dintre cele 16 runde:
      • L este XOR-at cu o valoare din P-array.
      • Rezultatul este apoi trecut prin funcția F:
        • F combină valorile din L cu S-boxes și produce un rezultat de 32 de biți.
      • Rezultatul funcției F este XOR-at cu R.
      • L și R sunt schimbate între ele (cu excepția ultimei runde unde nu se mai face schimbul).
  3. Finalizarea:

    • După cele 16 runde, L și R sunt din nou schimbate (inversare finală).
    • R este XOR-at cu P[0], iar L este XOR-at cu P[1].
    • L și R sunt combinate pentru a forma blocul criptat de 64 de biți.

Decriptarea

Procesul de decriptare este similar, dar cheile din P-array sunt folosite în ordinea inversă (simetric). Datorită structurii Feistel, descrierea implică același algoritm ca și criptarea, dar aplicat în ordine inversă.

Avantaje și utilizări

  • Viteză și eficiență: Blowfish este rapid și eficient, ceea ce îl face potrivit pentru diverse aplicații software.
  • Securitate: Este considerat sigur dacă este utilizat cu o cheie suficient de lungă (de preferat, cel puțin 128 de biți).
  • Flexibilitate: Dimensiunea variabilă a cheii permite ajustarea nivelului de securitate în funcție de necesități.

Blowfish a fost utilizat pe scară largă în aplicații precum criptarea fișierelor, VPN-uri și alte soluții de securitate datorită echilibrului său între securitate și performanță.

Cod de test

Documentație proiect

Susține acest blog

 Dacă cumperi folosind linkurile care duc la emag.ro si aliexpress.com vei susține blogul meu, iar 10% din donații se vor direcționa pentru fundația dăruiește viată. Mulțumesc ! 

Mulțumesc pentru atenție! 

Pentru întrebări și/sau consultanță tehnică vă stau la dispoziție pe blog mai jos în secțiunea de comentarii sau pe email simedruflorin@automatic-house.ro.
O zi plăcută tuturor !
Back to top of page

Etichete

Afișați mai multe

Arhiva

Afișați mai multe