Algoritm de criptare IDEA. Algoritm de criptare Threefish. Modul OFB, ca și CFB, este bazat pe fire, adică funcția este apelată în algoritm înainte de însumarea cu o porțiune de text simplu. Dar de data aceasta intrarea nu este textul cifrat din iterația anterioară, ci despre

Trimiteți-vă munca bună în baza de cunoștințe este simplu. Utilizați formularul de mai jos

Buna treaba la site">

Studenții, studenții absolvenți, tinerii oameni de știință care folosesc baza de cunoștințe în studiile și munca lor vă vor fi foarte recunoscători.

Postat pe http://www.allbest.ru/

INTRODUCERE

1. PARTEA ANALITĂ

1.1 Algoritmul IDEA

1.2.1 Algoritmul DES

1.2.2 Algoritmul RC6

1.2.3 Algoritmul GOST 28147-89

1.2.4 Avantajele IDEA față de analogi

1.4.1 Cartea de coduri electronice - Cartea de coduri electronice

1.4.2 Cipher Feed Back - încărcare inversă a textului cifrat

1.4.3 Output Feed Back - încărcare inversă a datelor de ieșire

1.4.4 Contor - criptare cu un contor

1.4.5 Avantajele Cipher Block Chaining față de analogi

2. PARTEA DE DESIGN

2.3 Implementarea software-ului

3. EXPERIMENTAL

CONCLUZIE

BIBLIOGRAFIE

INTRODUCERE

Criptosistemele simetrice (de asemenea criptarea simetrică, cifrurile simetrice) sunt o metodă de criptare în care aceleași date sunt utilizate pentru criptare și decriptare. cheie criptografică. Înainte de inventarea circuitului a criptare simetrică singura metodă care exista a fost criptarea simetrică. Cheia algoritmului trebuie ținută secretă de ambele părți. Cheia algoritmului este aleasă de părți înainte de începerea schimbului de mesaje.

Algoritmii de criptare și decriptare a datelor sunt utilizați pe scară largă în tehnologia calculatoarelorîn sistemele de ascundere a confidenţialităţii şi informatii comerciale din utilizarea rău intenționată terțe părți. Principiul principal al acestora este condiția ca emițătorul și receptorul să cunoască în prealabil algoritmul de criptare, precum și cheia mesajului, fără de care informația este doar un set de simboluri care nu au sens.

Un exemplu clasic de astfel de algoritmi sunt algoritmii criptografici simetrici enumerati mai jos: - substitutie simpla;

- permutare unică prin cheie;

- dubla permutare;

- permutarea „Pătrat magic”;

- o simplă rearanjare.

Pierderea completă a tuturor tiparelor statistice mesaj original este cerință importantă la un cifru simetric. Pentru a face acest lucru, cifrul trebuie să aibă un „efect de avalanșă”, adică. Ar trebui să existe o schimbare puternică a blocului de criptare cu o modificare de 1 bit a datelor de intrare (în mod ideal, valorile a 1/2 biți ale blocului de criptare ar trebui să se schimbe).

În prezent, cifrurile simetrice sunt:

· cifruri bloc. Procesează informații în blocuri de o anumită lungime (de obicei 64, 128 de biți), aplicând o cheie blocului în în modul prescris, de obicei prin mai multe cicluri de amestecare și înlocuire, numite runde. Rezultatul repetării rundelor este un efect de avalanșă - o pierdere tot mai mare a corespondenței biților între blocurile de date deschise și criptate.

· stream ciphers, în care criptarea este efectuată pe fiecare bit sau octet al textului original (plat) folosind gamma. Un cifr de flux poate fi creat cu ușurință pe baza unui cifru bloc (de exemplu, GOST 28147-89 în modul gamma), lansat într-un mod special.

Există mulți algoritmi cifruri simetrice, ai căror parametri esențiali sunt:

· durabilitate;

· lungimea cheii;

· numărul de runde;

lungimea blocului procesat;

· complexitatea implementării hardware/software;

· complexitatea conversiei.

1. PARTEA ANALITĂ

1.1 Algoritmul IDEA

IDEA (engleză: algoritmul internațional de criptare a datelor, algoritmul internațional de criptare a datelor) - simetric algoritm de blocare criptarea datelor patentată de compania elvețiană Ascom. Acesta este un algoritm de criptare bloc simetric care a fost propus să îl înlocuiască Standard DES. Versiune inițială Algoritmul IDEA a apărut în 1990. Dezvoltatorii algoritmului, Xuejia Lai și James Massey de la Institutul Elvețian ETH Zurich, i-au dat numele PES (Propus Standard de criptare-standard de criptare propus).

Deoarece IDEA folosește o cheie de 128 de biți și o dimensiune de bloc de 64 de biți, text simplu este împărțit în blocuri de 64 de biți. Dacă o astfel de partiție nu este posibilă, ultimul bloc completat căi diferite o anumită secvență pic. Pentru a evita scurgerea de informații despre fiecare bloc individual, diverse moduri criptare. Fiecare bloc original necriptat de 64 de biți este împărțit în patru subblocuri a câte 16 biți fiecare, deoarece toate operațiile algebrice utilizate în procesul de criptare sunt efectuate pe numere de 16 biți. IDEA folosește același algoritm pentru criptare și decriptare.

IDEA folosește următoarele operații matematice:

? adăugare pe biți modulo 2 (operație SAU exclusivă);

? adăugarea numerelor întregi fără semn modulo 2 16 ;

? înmulțirea numerelor întregi fără semn modulo (2 16 +1), cu un bloc de 16 zerouri tratat ca 2 16 ;

Un dezavantaj semnificativ este că IDEA este brevetat, deoarece acest lucru împiedică distribuirea sa gratuită. IDEA nu prevede creșterea lungimii cheii. Un alt dezavantaj poate fi considerat faptul că nu toate lucrările de criptoanaliza au fost publicate, adică este foarte posibil ca cifrul să fi fost spart sau să fie spart în viitor.

Structura algoritmului IDEA este prezentată mai jos (Fig. 1).

Orez. 1. Algoritm de criptare IDEA

· modul carte electronică de coduri (ECB -- Electronic Code Book)

· modul de blocare în lanț (CBC - Cipher Block Chaining)

· modul părere prin text cifrat (CFB -- Cipher Feed Back)

· Modul feedback de ieșire (OFB -- Output Feed Back).

In acest munca de curs este luată în considerare implementare software Algoritm de criptare IDEA (mod Cipher Feed Back).

1.2 Compararea analogilor algoritmului IDEA

1.2.1 Algoritm DES

DES (Standard de criptare a datelor) -- Un algoritm de criptare simetric în care o cheie este utilizată atât pentru a cripta, cât și a decripta datele. DES are blocuri de 64 de biți și o structură de rețea Feistel pe 16 cicluri; folosește o cheie de 56 de biți pentru criptare.

Algoritmul folosește o combinație de transformări neliniare (S-box) și liniare (permutări E, IP, IP-1).

Deoarece DES funcționează în blocuri de 64 de biți și folosește o cheie de 56 de biți, această lungime a cheii corespunde la 256 de combinații, care până de curând asigurau un nivel suficient de securitate (nu sunt utilizați 8 biți egali din cheia completă de 64 de biți, biți de paritate sunt biții cei mai puțin semnificativi octeți cheie). Blocul de date de intrare, format din 64 de biți, este convertit într-un bloc de ieșire de lungime identică.

Datorită utilizării unei chei de criptare pe 56 de biți, algoritmul DES poate fi spart prin forță brută pe orice sistem informatic modern într-un interval de timp foarte realist - câteva zile.

DES criptosistem simetric, definit ca cifrul Feistel cu 16 runde, a fost inițial destinat implementării hardware. Când DES este folosit pentru a transmite informații, pentru a cripta și decripta un mesaj sau pentru a crea și verifica un cod de autentificare a mesajelor (MAC), expeditorul și destinatarul trebuie să cunoască cheia secretă.

Procesul de criptare al algoritmului DES constă dintr-o permutare inițială a biților unui bloc de 64 de biți, șaisprezece cicluri de criptare și, în final, o permutare inversă a biților (Figura 2).

Fig.2. Algoritm de criptare DES

1.2.2 Algoritmul RC6

Algoritm RC6 este un algoritm criptografic bloc simetric derivat din algoritmul RC5.

Cifrul RC6 intrat în competiția AES acceptă lungimi de bloc de 128 de biți și lungimi de chei de 128, 192 și 256 de biți, dar algoritmul în sine poate fi configurat pentru a suporta o gamă mai largă de lungimi de bloc și chei (de la 0 la 2040 biți).

Este finalist AES și folosește aproape orice tehnologiile existente, folosită în algoritmii criptografici, însă, una dintre operațiile primitive este operația de multiplicare, care este lent de efectuat pe unele echipamente și îngreunează implementarea cifrului pe o serie de platforme hardware și, care s-a dovedit a fi o surpriză pentru autorii, pe sisteme cu Arhitectura Intel IA-64 este, de asemenea, destul de prost implementat. ÎN în acest caz, algoritmul își pierde unul dintre avantajele sale cheie -- de mare viteză implementare, care a devenit un motiv de critică și unul dintre obstacolele în calea alegerii ca nou standard.

Orez. 3. Algoritm de criptare RC6

Structura de criptare a algoritmului RC6 este prezentată în Fig. 3. Scurtă descriere a algoritmului: algoritmul folosește 20 de runde de transformări, înainte de care se realizează albirea parțială a intrării:

o B = B + K 0 mod 2 32

o D = D + K 1 mod 2 32 ,

unde A, B, C, D sunt valorile curente ale subblocurilor procesate pe 32 de biți, iar K 0 ... K 43 sunt fragmente ale cheii extinse.

Albirea cu ieșire parțială se realizează în același mod:

o A = A + K 42 mod 2 32

o C = C + K 43 mod 2 32 .

În fiecare rundă a algoritmului, sunt efectuate următoarele acțiuni:

o t 1 = f(B)<<< 5,

o t 2 = f(D)<<< 5,

o A = ((A E t 1)<<< t 2) + K 2i mod 2 32 ,

o C = ((C E t 2)<<< t 1) + K 2i+1 mod 2 32 ,

unde t 1 și t 2 sunt variabile temporare, numărul de biți de rotație per număr variabil de biți este determinat de valoarea celor 5 biți cei mai puțin semnificativi ai parametrului (t 1 sau t 2), funcția f() efectuează următoarele transformare pătratică:

f(x) = x * (2x + 1) mod 2 32 .

La sfârșitul fiecărei runde, subblocurile sunt deplasate.

Avantajele algoritmului:

· Structura simplă a algoritmului facilitează analiza acestuia.

· Cel mai rapid dintre algoritmii finaliști AES pe platforme pe 32 de biți.

· Criptarea și decriptarea în algoritmul RC6 sunt aproape identice. Dezavantajele algoritmului:

· Viteza de criptare software depinde în mare măsură de dacă platforma acceptă multiplicarea pe 32 de biți și rotația biților variabili.

· RC6 este greu de implementat în hardware și în condiții de resurse limitate.

· Este destul de dificil de protejat împotriva atacurilor în ceea ce privește timpul de execuție și consumul de energie.

· Nu acceptă pe deplin extinderea tastelor din mers.

· Paralelizarea calculelor la criptarea cu algoritmul RC6 este fezabilă cu limitări.

1.2.3 Algoritm GOST 28147-89

GOST 28147-89 este un standard de criptare simetrică sovietică și rusă introdus în 1990, de asemenea, un standard CIS. Nume complet - „GOST 28147-89 Sisteme de procesare a informațiilor. Protecție criptografică. Algoritm de conversie criptografică”.

Structura algoritmului este prezentată mai jos (Fig. 4).

Orez. 4. Algoritm de criptare GOST 28147-89

Algoritm de cifrare bloc. Când se utilizează metoda de criptare gamma, poate îndeplini funcțiile unui algoritm de criptare de flux. GOST 28147-89 -- cifru bloc cu o cheie de 256 de biți și 32 de cicluri de conversie, care funcționează pe blocuri de 64 de biți. Baza algoritmului de cifrare este rețeaua Feistel. Există patru moduri de operare conform GOST 28147-89: înlocuire simplă, joc, joc cu feedback și modul de generare a inserției de simulare.

Avantajele algoritmului: inutilitatea unui atac de forță, eficiența implementării și, în consecință, performanța ridicată pe computerele moderne, prezența protecției împotriva impunerii de date false (generarea inserției imitative) și același ciclu de criptare în toate patru algoritmi GOST, o cheie mai mare în comparație cu algoritmul DESX.

Dezavantajele algoritmului: Principalele probleme ale GOST sunt legate de incompletitudinea standardului în ceea ce privește generarea de chei și tabele de înlocuire. Se crede că GOST are chei „slabe” și tabele de înlocuire, dar standardul nu descrie criteriile pentru selectarea și eliminarea celor „slabe”. De asemenea, standardul nu specifică un algoritm pentru generarea unui tabel de substituție (S-boxes). Pe de o parte, aceasta poate fi informații secrete suplimentare (pe lângă cheie) și, pe de altă parte, ridică o serie de probleme: este imposibil să se determine puterea criptografică a algoritmului fără a cunoaște în prealabil tabelul de substituție. ; implementările algoritmului de la diferiți producători pot folosi tabele de înlocuire diferite și pot fi incompatibile între ele; posibilitatea furnizării deliberate de tabele de înlocuire slabe de către autoritățile de licențiere ale Federației Ruse.

1.2.4 Avantaje IDEE înaintea analogilor

În implementarea software-ului pe Intel486SX este de două ori mai rapid decât DES IDEA, ceea ce reprezintă o creștere semnificativă a vitezei; lungimea cheii IDEA este de 128 de biți, față de 56 de biți pentru DES, ceea ce reprezintă o îmbunătățire bună față de cheile cu forță brută. Probabilitatea de a folosi cheile slabe este foarte mică și se ridică la 1/2 64 . IDEA este mai rapid decât algoritmul GOST 28147-89 (în implementarea software-ului pe Intel486SX). Folosirea IDEA în moduri de criptare paralelă pe procesoarele Pentium III și Pentium MMX permite obținerea de viteze mari. În comparație cu finaliștii AES, 4-way IDEA este doar puțin mai lent decât RC6 și Rijndael pe Pentium II, dar mai rapid decât Twofish și MARS. Pe Pentium III 4-way IDEA este chiar mai rapid decât RC6 și Rijndael. Un alt avantaj este că este bine studiat și rezistent la instrumentele de criptoanaliza binecunoscute.

1.3 Modul Cipher Block Chaining - înlănțuirea blocurilor folosind text cifrat

În modul de criptare CBC, toate blocurile de mesaje sunt „concatenate” folosind text cifrat.

În algoritmul de criptare, funcția de intrare primește de fiecare dată rezultatul însumării modulo 2 a datelor deschise din următorul bloc de mesaj și funcția de ieșire pentru blocul anterior. Deoarece datele de ieșire ale funcției pentru următorul bloc merg direct la ieșirea algoritmului CBC, adică este textul cifrat al acestui bloc și, în același timp, merg la intrarea aceleiași funcție pentru a cripta blocul următor, ei spun că blocurile sunt înlănțuite folosind textul cifrat. Primul bloc de date deschise este rezumat cu așa-numitul. vector de inițializare.

Acest vector de inițializare devine cunoscut atât expeditorului, cât și destinatarului chiar la începutul sesiunii de comunicare (prin urmare, este adesea numit simplu mesaj de sincronizare). Decriptarea are loc, în consecință, în ordine inversă - mai întâi, o funcție este aplicată textului cifrat și apoi însumată cu blocul de text cifrat anterior pentru a obține următorul bloc de text simplu la ieșirea algoritmului. Primul bloc de text simplu este, din nou, reconstruit folosind vectorul de inițializare.

Astfel, pentru tot i = 1...n, blocul de text cifrat C(i) este definit după cum urmează:

C(i) = IDEA(M(i) xor C(i-1)),

Decriptarea se realizează după cum urmează:

M(i) = C(i-1) xor IDEA-1(C(i)),

Blocul M(i) este o funcție numai a lui C(i-1) și C(i). Prin urmare, o eroare de transmisie va duce la pierderea a doar două blocuri de text sursă.

1.4 Comparația analogilor modului de criptare CBC

Când se utilizează cifrurile bloc, sunt utilizate diferite scheme de criptare, cunoscute sub numele de moduri de operare de criptare pentru cifrurile bloc. Este evident că utilizarea unuia sau altuia mod de criptare nu ar trebui să afecteze negativ eficiența și, mai ales, puterea criptografică a cifrului bloc. Modurile de criptare vă permit să implementați funcții suplimentare care lipsesc în designul original al cifrului bloc.

1.4.1 Cartea de coduri electronice - Cartea de coduri electronice

Acest mod este un analog electronic al modului folosit de agenți pentru a trimite mesaje criptate la început secolul XX. Agentul a primit un caiet, a cărui pagină conținea o secvență unică - un cod cu care mesajul a fost criptat. După utilizare, o astfel de pagină a fost smulsă din caiet și distrusă. Dacă era necesar, mesajul a fost completat astfel încât să nu rămână niciun cod neutilizat pe paginile rupte. Partea destinatară avea o copie a blocnotesului, prin urmare, cu condiția ca paginile să fie utilizate sincron, acest mod de criptare asigura atât criptarea, cât și decriptarea mesajelor. În ECB, utilizarea unei pagini a registrului de coduri la criptare corespunde aplicării unei transformări datelor de intrare folosind funcția CIPH k, iar la decriptare - CIPH -1 k. Pentru a se sincroniza, este suficient ca ambele părți să cadă de acord asupra valorii cheii secrete K.

După cum se poate observa din figură, întreg algoritmul ECB constă în aplicarea directă a funcțiilor atât mesajului, cât și textului cifrat pentru criptare și respectiv decriptare, care pot fi exprimate și sub formă de ecuații: Criptare ECB:

C j = CIPH K (P j),

unde j=1...n

Decriptare BCE:

P j = CIPH K (C j),

unde j=1...n

Astfel, criptarea are loc în blocuri corespunzătoare mărimii datelor de intrare/ieșire pentru funcții și. Blocurile sunt criptate separat și independent unul de celălalt, ceea ce permite ca acest lucru să se facă în paralel. Acest avantaj al modului ECB și simplitatea acestuia sunt mascate de două dezavantaje semnificative. Primul este că lungimea mesajului trebuie să fie un multiplu al lungimii blocului de date de intrare al cifrului bloc, adică întregul mesaj poate fi fie împărțit într-un număr întreg de astfel de blocuri, fie este necesar să se facă cumva. completați ultimul bloc cu date care nu conțin informații. Al doilea dezavantaj este și mai semnificativ.

Deoarece în timpul criptării următorul bloc de text cifrat este complet determinat doar de blocul de text simplu corespunzător și de valoarea cheii secrete K, blocurile de text clar identice vor fi convertite în acest mod în blocuri de text cifrat identice. Și acest lucru este uneori de nedorit, deoarece poate oferi cheia analizării conținutului mesajului. De exemplu, dacă datele de pe un hard disk sunt criptate, atunci spațiul gol va fi umplut cu aceiași octeți lăsați acolo de la formatarea discului. Aceasta înseamnă că din textul cifrat se va putea ghici dimensiunea informațiilor utile de pe disc. În astfel de cazuri, trebuie să utilizați alte moduri de criptare.

1.4.2 Cipher Feed Back

Cipher Feed Back Modul de feedback Ciphertext este una dintre schemele de criptare simetrică în care un bloc de text criptat este o adăugare pe biți a unui bloc de text simplu cu rezultatul criptat al criptării blocului anterior. Are o modificare care vă permite să criptați datele a căror dimensiune este mai mică decât dimensiunea blocului de criptare, ceea ce face posibilă criptarea unui flux de date fără a aștepta ca numărul necesar de biți să ajungă la intrare.

În acest mod, dimensiunea blocului poate diferi de 64. Fișierul sursă M este citit în blocuri succesive de t-biți (t<= 64): M = M(1)M(2)...M(n) (остаток дописывается нулями или пробелами).

Registrul de deplasare pe 64 de biți (blocul de intrare) conține mai întâi un IV justificat la dreapta. Pentru fiecare sesiune de criptare, se folosește un nou vector de inițializare.

Pentru tot i = 1...n, blocul de text cifrat C(i) este definit după cum urmează:

C(i) = M(i) xor P(i-1),

unde P(i-1) sunt cei mai semnificativi t biți ai operației IDEA(C(i-1)) și C(0) = IV.

Registrul de deplasare este actualizat prin eliminarea biților săi cei mai înalți t și adăugarea C(i) la dreapta.

Recuperarea datelor criptate este, de asemenea, ușoară: P(i-1) și C(i) sunt calculate în același mod și M(i) = C(i) xor P(i-1).

1.4.3 Ieșire Feed Back

Modul OFB, ca și CFB, este în linie, adică funcția apelat în algoritm înainte de însumarea cu o porțiune de text simplu. Dar de data aceasta intrarea nu este textul cifrat din iterația anterioară, ci pur și simplu datele sale de ieșire. Adică, buclele de funcție.

Într-o astfel de situație, devine important să folosiți vectorul de inițializare o dată. Să presupunem că două mesaje diferite sunt criptate în modul OFB folosind același vector de inițializare. Apoi, dacă adversarul devine conștient de orice j-al-lea bloc de text simplu al primului mesaj, atunci, având al-lea bloc de text cifrat, el poate calcula cu ușurință Oj - datele de ieșire și deoarece acestea depind doar de vectorul de inițializare, care este același pentru ambele mesaje, atunci putem spune că în al doilea mesaj va fi același Oj, prin urmare, având blocul j de text cifrat al celui de-al doilea mesaj, inamicul va primi imediat textul clar al celui de-al j-lea bloc de al doilea mesaj.

Prin urmare, în algoritmul OFB, este necesar să se evite nu numai repetarea vectorilor de inițializare, ci și ca orice j-al-lea bloc de date de intrare a funcției pentru un mesaj să nu fie utilizat ca vector de inițializare pentru un alt mesaj. Mai jos sunt ecuațiile pentru criptarea OFB: Criptarea OFB:

I j = O j -1 , j = 1,2, … n

C j = P j + O j , j = 1,2, … n-1

C n = P n + MSB t (O n)

Decriptare OFB:

I j = O j - 1 , j = 2, … n

O j = CIPH K (I j), j = 1,2, … n

P j = C j + O j , j = 1,2, … n-1

P n = C n + MSB t (O n),

unde „+” este operația xor.

Problema de completare a mesajelor pentru OFB este rezolvată simplu: pentru ultimul bloc de mesaje, eventual incomplet, sunt utilizați exact atât de mulți biți din datele de ieșire a funcției câte biți sunt în acest bloc. Astfel, în acest mod, spre deosebire de cele precedente, lungimea mesajului rămâne neschimbată în timpul procesului de criptare și, cel mai important, în timpul transmiterii.

1.4.4 Tejghea - criptare cu contor

În modul de criptare în flux cu un contor la fiecare iterație a algoritmului de criptare la intrarea funcției este furnizată o valoare aleatorie T. Aceste date de intrare trebuie să fie diferite pentru toate iterațiile algoritmului în care cifrul bloc utilizează aceeași cheie de criptare, astfel încât un generator de astfel de valori este uneori numit contor (care oferă cea mai simplă modalitate de a generează valori T unice).

De fapt, cerința de unicitate a datelor de intrare ale unei funcții la o anumită valoare a lui K va fi satisfăcută în cazul utilizării unui PRC (generator de cod pseudorandom), dar atunci este necesar un vector inițial de inițializare pentru PRC din partea respectivă. a expeditorului și destinatarului mesajelor.

Astfel, textul cifrat în algoritmul modului CTR este obținut prin însumarea modulo 2 a următorului bloc de text simplu cu datele de ieșire ale funcției. Următoarea valoare Tj a contorului blocului de mesaje este furnizată intrării funcției. Decriptarea are loc și prin însumarea modulo 2 a următorului bloc de text cifrat și a rezultatului transformării prin funcția următoarei valori a contorului Tj. Atât operațiunile de criptare, cât și de decriptare în modul CTR pot fi efectuate în paralel și independent pentru toate blocurile. În plus, acest mod de asemenea nu are problema ultimului bloc. Criptare CTR:

Decodare CTR:

Modul CTR are toate avantajele modului ECB (execuție paralelă, simplitate și capacitatea de a cripta direct orice bloc de mesaje separat și independent de alte blocuri). Dar, în plus, modul CTR corectează toate deficiențele criptării în modul carte de coduri electronice: blocurile de text simplu identice nu vor mai fi convertite în blocuri de text cifrat identice; Nu este nevoie să completați ultimul bloc de text cifrat. În plus, în acest mod (ca în orice mod de flux) este utilizată doar funcția de criptare, iar pentru unele cifruri bloc (de exemplu, pentru AES - noul standard american de criptare bloc), aceasta oferă un oarecare câștig de performanță. Acesta este motivul pentru care acest mod este adesea cel mai eficient.

1.4.5 Avantajele Cipher Block Chaining față de analogi

Deci, putem concluziona că modul de criptare simetric CBC are un avantaj clar dintre cele considerate mai sus și anume: în modul decriptare, când întreg textul cifrat a fost deja recepționat, funcțiile pot fi executate în paralel și independent pentru toate blocurile de mesaje. Acest lucru oferă un câștig semnificativ de timp.

În acest mod, merită să vă concentrați pe încă un detaliu. Faptul este că ultimul bloc de text cifrat, care este obținut la ieșirea algoritmului modului CBC, depinde atât de cheia de cifrat de bloc și de vectorul de inițializare, cât și (mai important în acest caz) de toți biții textului simplu al mesajul. Aceasta înseamnă că acest ultim bloc de text cifrat poate fi folosit ca un fel de identificator de mesaj. Un astfel de identificator nu oferă unui observator extern nicio informație despre conținutul întregului mesaj în ansamblu și, în același timp, îl identifică aproape fără ambiguitate (mesajul). Mai mult, este la fel de dificil să falsificați acest identificator fără a cunoaște cheia de criptare K, precum este să ghiciți corect cheia în sine.

2. PARTEA DE DESIGN

2.1 Modelare funcțională

Pe baza cerințelor pentru software, sunt definite următoarele funcții:

· Înregistrare utilizator cu câmpuri:

· Criptarea textului sursă;

· Decriptarea textului criptat;

· Afișați utilizatorului etapele finale de criptare și decriptare după autorizarea cu succes.

2.2 Proiectare algoritmică

Un algoritm de criptare IDEA generalizat este prezentat mai jos (Fig. 5).

După pornirea programului, utilizatorul trebuie să introducă perechea: login + parolă pe formularul de autorizare, sau să completeze formularul de înregistrare. După introducerea caracterelor pe formulare, funcția de criptare va începe să funcționeze când veți face clic pe butonul „Autentificare” sau, respectiv, „Înregistrare”.

Un bloc de date pe 64 de biți este citit din fișier și împărțit în patru subblocuri de 16 biți. Aceste patru subblocuri devin intrarea în prima buclă a algoritmului. În figură, aceste subblocuri sunt desemnate D 1, D 2, D 3, D 4. Fiecare rundă folosește propriile subchei conform tabelului de subchei (Fig. 6). Operațiile descrise mai devreme și prezentate în diagrama algoritmului sunt efectuate pe subblocuri de 16 biți și subblocuri cu text simplu.

La sfârșitul fiecărei runde de criptare, există patru subblocuri de 16 biți, care sunt apoi folosite ca subblocuri de intrare pentru următoarea rundă de criptare. Transformarea de ieșire este o rundă scurtată, și anume, cele patru subblocuri de 16 biți la ieșirea rundei a opta și cele patru subblocuri corespunzătoare sunt supuse operațiilor descrise.

Apoi, următorul bloc de 64 de biți de text simplu este preluat și algoritmul de criptare este repetat. Aceasta continuă până când toate blocurile de 64 de biți ale textului sursă sunt criptate.

Utilizatorul va vedea mesajul criptat după autorizarea cu succes.

Metoda de calcul folosită pentru a decripta textul este în esență aceeași cu cea folosită pentru a-l cripta. Singura diferență este că diferite subchei sunt folosite pentru decriptare. În timpul procesului de decriptare, subcheile trebuie utilizate în ordine inversă. Prima și a patra subcheie ale rundei i-a de decriptare sunt obținute din prima și a patra subcheie ale rundei (10-i) de criptare prin inversare multiplicativă. Pentru rundele 1 și 9, a doua și a treia subcheie de decriptare sunt obținute din a doua și a treia subcheie ale rundei a 9-a și 1 de criptare prin inversare aditivă. Pentru rundele 2 la 8, a doua și a treia subcheie de decriptare sunt obținute din a treia și a doua subcheie din rundele 8 la 2 de criptare cu inversare aditivă. Ultimele două subchei ale rundei i-a de decriptare sunt egale cu ultimele două subchei ale rundei (9-i)-a de criptare.

Utilizatorul va vedea mesajul decriptat după completarea cu succes a formularului de autorizare, cu autentificarea și parola corecte introduse.

Orez. 5. Structura algoritmului IDEA

Orez. 6. Conectați algoritmul de criptare și decriptare IDEA

2.3 Implementarea software-ului

Lucrarea cursului este implementată în mediul de programare Microsoft Visual Studio 2012. Limbajul de programare folosit pentru scrierea lucrării este C#.

Lista procedurilor principale - handlere, care conțin funcționalitatea programului în curs de dezvoltare:

· public static int idea_hash_cbc (char *s, int len, int k, int iv) funcție pentru calcularea hash-ului CBC. În această funcție obținem valoarea curentă pentru XOR (iv), creăm un pointer către o matrice de date hashed, împărțim dimensiunea matricei la 8 (verificăm un multiplu de 8), criptăm folosind formula: C(i ) = IDEA(C(i- 1) ^ S(i), KEY) și returnează hashul rezultat.

· șir static privat ShiftByteLeft(șir s) se deplasează ciclic cu 25 de biți la stânga

· șir static privat ShiftbyteRight(șir s) se deplasează ciclic cu 25 de biți la dreapta

· șir static privat Sum(șir a1, șir a2) sumă modulo 2^16

· șir static privat Multi(șir a1, șir a2) multiplicare modulo 2^16+1 șir static privat XOR(șir a1, șir a2) SAU exclusiv

· inline T setBit (T v, int nBitNumber) funcție de setare a biților. Biții sunt numărați de la 0, numerotarea merge de la stânga la dreapta.

· funcția inline bool getBit (T v, int nBitNumber) pentru obținerea valorii biților (adevărat/fals).

· Hartă *> arhiva_chei; o arhivă de tabele de chei „rotunde”, pentru a nu genera chei din nou de fiecare dată (funcția include: permutarea inițială a tastei, permutarea cheii finale, schimburi, tabel de înlocuire). private void idea_Encryption (șir st1, șir st2) algoritm IDEA. Intrare - 2 linii: 1) un set de biți ai blocului de citire (lungime 64). 2) un set de biți din cheia noastră (lungime 128). Ieșire - bloc de criptare (64 de caractere) șir public idea_Decryption (șir st1, șir st2) funcție de decriptare folosind algoritmul IDEA.

· bool Funcția CheckLogin(int hash) citește login-ul, dacă hash-ul argumentelor este egal cu citire login, închide fișierul și dă un rezultat pozitiv. Dacă nu, se afișează mesajul „Autentificare nevalidă”

· bool Funcția CheckPass(int login_hash, int pass_hash) citește autentificarea și parola, dacă autentificarea este egală cu cea solicitată, dar parola nu se potrivește, închide fișierul și afișează mesajul „Parolă invalidă”. Dacă datele de conectare și parola se potrivesc, funcția returnează „adevărat”.

Programul constă din trei forme: un formular de înregistrare (Fig. 7.), un formular de autorizare (Fig. 8.) și un formular cu ieșire de text criptat și decriptat (Fig. 9.). Aceste formulare sunt prezentate mai jos.

autentificarea criptării blocurilor software

Fig.8. Formular de înregistrare

Fig.9. Formular de ieșire a informațiilor

3. EXPERIMENTAL

Test 1. Testarea prezenței unui utilizator de conectare

Date de intrare:

· Făcând clic pe butonul Autentificare fără a introduce o autentificare

Rezultat:

· Mesaj de eroare. Vă rugăm să introduceți datele dvs. de conectare

Test 2. Testarea verificării parolei de utilizator introduse

Date de intrare:

· Făcând clic pe butonul Conectare fără a introduce o parolă

Rezultat:

· Mesaj de eroare. Va rugam sa introduceti parola

Concluzie: funcția de verificare funcționează corect.

Test 3. Testarea funcției de criptare cu o lungime a textului de cel mult 50 de caractere.

Date de intrare:

· Nume complet: ceva text

Test 4. Testarea funcției de criptare atunci când lungimea textului este mai mare de 50 de caractere.

Date de intrare:

· Nume complet: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Concluzie: Funcția de criptare funcționează corect.

Testul 4: Adăugarea unui caracter la începutul hashului criptat.

Testul 5: Adăugarea unui caracter la mijlocul unui hash criptat.

Concluzie: o parte a textului nu va fi decriptată.

CONCLUZIE

Pe parcursul lucrărilor de curs, în partea analitică, au fost analizați diverși algoritmi de criptare a blocurilor simetrice și au fost prezentate avantajele și dezavantajele algoritmului IDEA. De asemenea, au fost stabilite sarcini și cerințe pentru programul dezvoltat, care au fost implementate în totalitate.

În partea de proiectare au fost definite și discutate în detaliu funcțiile principale, precum și parametrii de intrare și de ieșire ai funcțiilor algoritmului IDEA. Au fost selectate un mediu de dezvoltare software și un limbaj de programare.

În partea experimentală, software-ul a fost testat cu cinci teste. Nu au fost găsite erori în implementarea algoritmului sau în funcționarea software-ului.

BIBLIOGRAFIE

1. Wikipedia. Algoritm IDEA [Resursă electronică]. - Mod de acces: - http://ru.wikipedia.org/wiki/IDEA.

2. MSDN [Resursă electronică]. - Mod de acces: - http://msdn.microsoft.com/ru-ru/.

3. Wikipedia. Modul de concatenare a blocurilor de text cifrat [Resursa electronică]. - Mod de acces: - https://ru.wikipedia.org/wiki/Mode_concatenation_of_ciphertext_blocks.

4. [Resursa electronică] - Oleg Zenzin - Moduri de criptare, secțiunea Acumularea erorilor în diferite moduri de criptare - Mod de acces: - http://citforum.ru/security/cryptography/rejim_shifrov/

5. [Resursă electronică] - Revizuire comparativă a algoritmilor PGP - Mod de acces: - https://www.pgpru.com/biblioteka/statji/sravniteljnyjjobzoralgoritmovpgp

Postat pe Allbest.ru

Documente similare

    Implementarea algoritmul DESși moduri de criptare pentru orice lungime de mesaj și orice lungime de cheie. Criptarea mesajelor de diferite lungimi și chei, măsurarea timpului și a vitezei de criptare. Implementarea algoritmului RSA. Salvarea unui fișier criptat pe disc.

    lucrare de curs, adăugată 26.01.2010

    Dezvoltarea unei aplicații de criptare a datelor folosind algoritmul DES5: proces de criptare, decriptare, obținere chei. Specificațiile programului, procedurile și funcțiile; descrierea interfeței cu utilizatorul. Implementarea sarcinii în mediul de programare DELPHI.

    lucrare curs, adaugat 27.03.2012

    Istoria apariției algoritmilor de criptare simetrică. Rolul unei chei simetrice în asigurarea gradului de secretizare a unui mesaj. Difuzia și confuzia ca metode de conversie a biților de date. Algoritmii de criptare DES și IDEA, principalele lor avantaje și dezavantaje.

    munca de laborator, adaugat 18.03.2013

    Criptosisteme simetrice; algoritmi de criptare și decriptare a datelor, aplicarea lor în tehnologia informatică în sistemele de protecție a informațiilor confidențiale și comerciale. Moduri de operare de bază ale algoritmului DES, dezvoltarea unei implementări software a cheii.

    lucrare de curs, adăugată 17.02.2011

    Istoria apariției algoritmului de criptare simetrică, condițiile și caracteristicile aplicării acestuia în stadiul actual. Principii și funcții ale tehnologiei studiate. Analiza principalelor avantaje și dezavantaje ale utilizării algoritmului, evaluarea vulnerabilității acestuia.

    lucrare curs, adăugată 29.10.2017

    Studiul unui sistem de distribuție a cheilor bazat pe transformări liniare. Descrierea componentelor rețelei de comunicații confidențiale. Caracteristicile algoritmului intern de criptare a datelor. Revizuirea rezultatelor calculelor puterii criptografice a algoritmului de criptare.

    test, adaugat 26.09.2012

    Dezvoltarea unui program care implementează proceduri de criptare și decriptare a textului conform standardului DES (Data Encryption Standard). Structura algoritmului de criptare, schema de dezvoltare a elementelor cheie. Utilizarea software-ului criptografic.

    lucrare curs, adaugat 15.06.2013

    Dezvoltarea unui algoritm criptografic pentru un program de criptare manuală folosind tabelul Vigenère. Dezvoltarea unui program care realizează criptarea și decriptarea. Caracteristici ale utilizării textului simplu ca cheie. Algoritmi pentru rezolvarea problemelor „inverse”.

    lucrare de curs, adăugată 13.11.2009

    Criptosistemele simetrice sunt o metodă de criptare în care aceeași cheie criptografică este utilizată pentru criptare și decriptare. Analiza și implementarea algoritmului de criptare: permutare simplă și dublă, permutare pătrat magic.

    lucrare curs, adaugat 03.11.2013

    Criptarea simetrică este o metodă de criptare care utilizează aceeași cheie criptografică. Funcțiile casetei de dialog standard pentru deschiderea și salvarea unui fișier. O schemă tipică de acțiuni la generarea unei semnături. Semnătura digitală a fișierului.

algoritm simetric criptare dezvoltată de Xuejia Lai și James Massey de la Institutul Federal de Tehnologie Elvețian. Versiunea originală a fost publicată în 1990. O versiune revizuită a algoritmului, îmbunătățită cu protecție împotriva atacurilor criptografice diferențiale, a fost introdusă în 1991 și descrisă în detaliu în 1992.

IDEA este unul dintre câțiva algoritmi criptografici simetrici care au fost inițial menționați să înlocuiască DES.

Principii de proiectare

IDEA este un algoritm bloc care folosește 128 de biți cheie de criptare date în blocuri de 64 de biți.

Scopul dezvoltării IDEA a fost de a crea un algoritm criptografic relativ puternic, cu o implementare destul de simplă.

Puterea criptografică

Următoarele caracteristici ale IDEA îi caracterizează puterea criptografică:

  1. Lungimea blocului: Lungimea blocului trebuie să fie suficientă pentru a ascunde toate caracteristicile statistice ale mesajului original. Pe de altă parte, complexitatea implementării unei funcții criptografice crește exponențial odată cu dimensiunea blocului. Folosirea unei dimensiuni de bloc de 64 de biți în anii 90 a însemnat multă putere. Mai mult, utilizarea modului de criptare CBC indică o întărire suplimentară a acestui aspect al algoritmului.
  2. Lungimea cheii: Lungimea cheii trebuie să fie suficient de mare pentru a împiedica cheia să fie pur și simplu forțată. Cu o lungime a cheii de 128 de biți, IDEA este considerată destul de sigură.
  3. Confuzie: Textul cifrat trebuie să depindă de cheie într-un mod complex și complicat.
  4. Difuzie: Fiecare fragment de text simplu trebuie să afecteze fiecare fragment de text cifrat. Răspândirea unui bit de text simplu peste mai mulți biți criptați ascunde structura statistică a textului simplu. Determinarea modului în care caracteristicile statistice ale textului cifrat depind de caracteristicile statistice ale textului simplu trebuie să fie dificilă. IDEA din acest punct de vedere este foarte algoritm eficient.

În IDEA, ultimele două puncte sunt realizate folosind trei operații. Acest lucru îl deosebește de DES, unde totul este construit în jurul utilizării operației XORși mici cutii S neliniare.

Fiecare operație este efectuată pe două intrări de 16 biți și produce o ieșire de 16 biți. Aceste operațiuni sunt:

Aceste trei operațiuni sunt incompatibile în sensul că:

Folosirea unei combinații a acestor trei operații oferă o transformare complexă a intrării, făcând criptoanaliza mai dificilă decât cu un algoritm precum DES, care se bazează exclusiv pe funcție. XOR.

Criptare

Să ne uităm la schema generală de criptare IDEA. Ca și în cazul oricărui algoritm de criptare, există două intrări: blocul de text simplu și cheia. În acest caz, blocul necriptat are 64 de biți, cheia este de 128 de biți.

Constă din opt runde urmate de o transformare finală. Algoritmul împarte blocul în patru subblocuri de 16 biți. Fiecare rundă ia patru subblocuri de 16 biți ca intrare și produce patru subblocuri de ieșire pe 16 biți. Transformarea finală ia și patru subblocuri de 16 biți ca intrare și produce patru subblocuri de 16 biți. Fiecare rundă folosește șase chei de 16 biți, transformarea finală utilizează patru subchei, adică. În total, algoritmul folosește 52 de subchei.


Orez. 3.1.
Secvența transformărilor unei singure runde

Să luăm în considerare succesiunea transformărilor unei runde separate.

Unul dintre elementele principale ale algoritmului care asigură difuzia este o structură numită MA (înmulțire/adunare):


Orez. 3.2.

Intrarea în această structură este două valori pe 16 biți și două subchei pe 16 biți, iar ieșirea este două valori pe 16 biți. Testarea exhaustivă pe computer arată că fiecare bit din ieșirea acestei structuri depinde de fiecare bit din intrările blocului de text simplu și de fiecare bit din subcheile acestuia. Această structură se repetă de opt ori în algoritm, oferind o difuzie foarte eficientă.

O rundă începe cu o transformare care combină patru subblocuri de intrare cu patru subblocuri folosind operații de adunare și înmulțire. Cele patru blocuri de ieșire ale acestei transformări sunt combinate folosind operația XOR pentru a forma două blocuri de 16 biți, care sunt intrările structurii MA. În plus, structura MA are încă doi conectori la intrare și creează două ieșiri pe 16 biți.


Orez. 3.3.

În cele din urmă, cele patru subblocuri de ieșire ale primei transformări sunt combinate cu cele două subblocuri de ieșire ale structurii MA folosind XOR pentru a crea cele patru subblocuri de ieșire ale unei anumite iterații. Rețineți că cele două ieșiri care sunt parțial create de a doua și a treia intrare (X 2 și X 3 ) sunt schimbate pentru a crea a doua și a treia ieșire (W 12 și W 13 ). Acest lucru crește amestecarea biților și face algoritmul mai rezistent la criptoanaliza diferenţială.

Luați în considerare a noua rundă a algoritmului, desemnată ca transformare finală. Aceasta este aceeași structură descrisă mai sus. Singura diferență este că a doua și a treia intrare sunt schimbate. Acest lucru se face pentru a se asigura că decriptarea are aceeași structură ca și criptarea. Rețineți că a noua etapă necesită doar patru intrări

INTRODUCERE

PARTEA ANALITICA

1 algoritm IDEA

2 Comparație de analogi ai algoritmului IDEA

2.1 Algoritmul DES

2.2 Algoritmul RC6

2.3 Algoritmul GOST 28147-89

2.4 Avantajele IDEA față de analogi

3 Modul Cipher Block Chaining - înlănțuirea blocurilor folosind text cifrat

4 Comparație de analogi ai modului de criptare CBC

4.1 Cartea de coduri electronice - Cartea de coduri electronice

4.2 Cipher Feed Back - încărcare inversă a textului cifrat

4.3 Output Feed Back - încărcare inversă a datelor de ieșire

4.4 Contor - criptare cu un contor

4.5 Avantajele Cipher Block Chaining față de analogi

PARTEA DE DESIGN

1 Modelare funcțională

2 Design algoritmic

3 Implementarea software-ului

PARTEA EXPERIMENTALĂ

CONCLUZIE

BIBLIOGRAFIE

INTRODUCERE

Criptosistemele simetrice (de asemenea criptarea simetrică, cifrurile simetrice) sunt o metodă de criptare în care aceeași cheie criptografică este utilizată pentru criptare și decriptare. Înainte de inventarea circuitului criptare asimetrică singura metodă care exista a fost criptarea simetrică. Cheia algoritmului trebuie ținută secretă de ambele părți. Cheia algoritmului este aleasă de părți înainte de începerea schimbului de mesaje.

Algoritmii de criptare și decriptare a datelor sunt utilizați pe scară largă în tehnologia informatică în sistemele de ascundere a informațiilor confidențiale și comerciale împotriva utilizării rău intenționate de către terți. Principiul principal al acestora este condiția ca emițătorul și receptorul să cunoască în prealabil algoritmul de criptare, precum și cheia mesajului, fără de care informația este doar un set de simboluri care nu au sens.

Un exemplu clasic de astfel de algoritmi sunt algoritmii criptografici simetrici enumerati mai jos: - substitutie simpla;

o singură permutare prin cheie;

dubla permutare;

permutarea „Pătrat magic”;

rearanjare simplă.

Pierderea completă a tuturor tiparelor statistice ale mesajului original este o cerință importantă pentru un cifru simetric. Pentru a face acest lucru, cifrul trebuie să aibă un „efect de avalanșă”, adică. Ar trebui să existe o schimbare puternică a blocului de criptare cu o modificare de 1 bit a datelor de intrare (în mod ideal, valorile a 1/2 biți ale blocului de criptare ar trebui să se schimbe).

În prezent, cifrurile simetrice sunt:

· cifruri bloc. Ei procesează informații în blocuri de o anumită lungime (de obicei 64, 128 de biți), aplicând o cheie blocului într-o ordine prescrisă, de obicei prin mai multe cicluri de amestecare și înlocuire, numite runde. Rezultatul repetării rundelor este un efect de avalanșă - o pierdere tot mai mare a corespondenței biților între blocurile de date deschise și criptate.

· stream ciphers, în care criptarea este efectuată pe fiecare bit sau octet al textului original (plat) folosind gamma. Un cifr de flux poate fi creat cu ușurință pe baza unui cifru bloc (de exemplu, GOST 28147-89 în modul gamma), lansat într-un mod special.

Există mulți algoritmi de cifră simetrică, ai căror parametri esențiali sunt:

· durabilitate;

· lungimea cheii;

· numărul de runde;

· lungimea blocului procesat;

· complexitatea implementării hardware/software;

· complexitatea conversiei.

1.PARTEA ANALITICA

1algoritmul IDEA

IDEA (în engleză: International Data Encryption Algorithm, algoritmul internațional de criptare a datelor) este un algoritm de criptare a datelor bloc simetric brevetat de compania elvețiană Ascom. Acesta este un algoritm de criptare bloc simetric care a fost propus pentru a înlocui standardul DES. Versiunea inițială a algoritmului IDEA a apărut în 1990. Dezvoltatorii algoritmului, Xuejia Lai și James Massey de la Institutul Elvețian ETH Zurich, i-au dat numele PES (Proposed Encryption Standard).

Deoarece IDEA folosește o cheie de 128 de biți și o dimensiune de bloc de 64 de biți, textul simplu este împărțit în blocuri de 64 de biți. Dacă o astfel de partiție nu este posibilă, ultimul bloc este completat în diferite moduri cu o anumită secvență de biți. Pentru a evita scurgerea de informații despre fiecare bloc individual, sunt utilizate diferite moduri de criptare. Fiecare bloc original necriptat de 64 de biți este împărțit în patru subblocuri a câte 16 biți fiecare, deoarece toate operațiile algebrice utilizate în procesul de criptare sunt efectuate pe numere de 16 biți. IDEA folosește același algoritm pentru criptare și decriptare.

IDEA folosește următoarele operații matematice:

 adăugare pe biți modulo 2 (operație „SAU exclusivă”);

 adăugarea numerelor întregi fără semn modulo 2 16;

 multiplicarea numerelor întregi fără semn modulo (2 16+1), cu un bloc de 16 zerouri tratat ca 2 16;

Un dezavantaj semnificativ este că IDEA este brevetat, deoarece acest lucru împiedică distribuirea sa gratuită. IDEA nu prevede creșterea lungimii cheii. Un alt dezavantaj poate fi considerat faptul că nu toate lucrările de criptoanaliza au fost publicate, adică este foarte posibil ca cifrul să fi fost spart sau să fie spart în viitor.

Structura algoritmului IDEA este prezentată mai jos (Fig. 1).

Orez. 1. Algoritm de criptare IDEA

· modul carte electronică de coduri (ECB - Electronic Code Book)

· modul de blocare în lanț (CBC - Cipher Block Chaining)

· modul cipherfeedback (CFB - Cipher Feed Back)

· modul feedback de ieșire (OFB - Output Feed Back).

Acest curs examinează implementarea software a algoritmului de criptare IDEA (modul Cipher Feed Back).

1.2Comparație de analogi ai algoritmului IDEA

1.2.1algoritmul DES

DES (Data Encryption Standard) - Un algoritm de criptare simetric în care o cheie este utilizată atât pentru criptarea, cât și pentru decriptarea datelor. DES are blocuri de 64 de biți și o structură de rețea Feistel pe 16 cicluri; folosește o cheie de 56 de biți pentru criptare.

Algoritmul folosește o combinație de transformări neliniare (S-box) și liniare (permutări E, IP, IP-1).

Deoarece DES funcționează în blocuri de 64 de biți și folosește o cheie de 56 de biți, această lungime a cheii corespunde la 256 de combinații, care până de curând asigurau un nivel suficient de securitate (nu sunt utilizați 8 biți egali din cheia completă de 64 de biți, biți de paritate sunt biții cei mai puțin semnificativi octeți cheie). Blocul de date de intrare, format din 64 de biți, este convertit într-un bloc de ieșire de lungime identică.

Datorită utilizării unei chei de criptare pe 56 de biți, algoritmul DES poate fi spart prin forță brută pe orice modern sistem de calculîntr-un interval de timp foarte realist - câteva zile.Criptosistemul simetric, definit ca cifrul Feistel cu 16 runde, a fost inițial destinat implementării hardware. Când DES este folosit pentru a transmite informații, pentru a cripta și decripta un mesaj sau pentru a crea și verifica un cod de autentificare a mesajelor (MAC), expeditorul și destinatarul trebuie să cunoască cheia secretă.

Procesul de criptare al algoritmului DES constă dintr-o permutare inițială a biților unui bloc de 64 de biți, șaisprezece cicluri de criptare și, în final, o permutare inversă a biților (Figura 2).

Fig.2. Algoritm de criptare DES

1.2.2Algoritmul RC6

Cifrul RC6 intrat în competiția AES acceptă blocuri de 128 de biți și chei de 128, 192 și 256 de biți, dar algoritmul în sine poate fi configurat pentru a suporta mai multe gamă largă lungimile ambelor blocuri și chei (de la 0 la 2040 de biți).

Este un finalist AES și folosește aproape toate tehnologiile existente utilizate în algoritmii criptografici, totuși, una dintre operațiile primitive este operația de multiplicare, care este lent de efectuat pe unele echipamente și îngreunează implementarea cifrului pe o serie de hardware. platforme și, ceea ce s-a dovedit a fi o surpriză pentru autori, pe sisteme cu arhitectură Intel IA-64 este, de asemenea, destul de prost implementat. În acest caz, algoritmul își pierde unul dintre avantajele sale cheie - viteza mare de execuție, care a devenit un motiv de critică și unul dintre obstacolele în calea alegerii ca nou standard.

Orez. 3. Algoritm de criptare RC6

Structura de criptare a algoritmului RC6 este prezentată în Fig. 3. Scurta descriere algoritm: algoritmul folosește 20 de runde de transformări, înainte de care se realizează albirea parțială de intrare:

o B = B + K 0mod 2 32

o D=D+K 1mod 2 32,

unde A, B, C, D sunt valorile curente ale subblocurilor pe 32 de biți care sunt procesate și K 0...K 43- fragmente ale cheii extinse.

Albirea cu ieșire parțială se realizează în același mod:

o A = A + K 42mod 2 32

o C=C+K 43mod 2 32.

În fiecare rundă a algoritmului, sunt efectuate următoarele acțiuni:

o t 1= f(B)<<< 5,

o t 2= f(D)<<< 5,

o A = ((A Å t 1) <<< t2) + K 2i mod 2 32,

o C = ((C Åt 2) <<< t1) + K 2i+1 mod 2 32,

unde t 1Si t 2- variabile temporare, numărul de biți de rotație pe număr variabil de biți este determinat de valoarea celor 5 biți mai puțin semnificativi ai parametrului (t 1sau t 2), funcția f() realizează următoarea transformare pătratică:

(x) = x * (2x + 1) mod 2 32.

La sfârșitul fiecărei runde, subblocurile sunt deplasate.

Avantajele algoritmului:

· Structura simplă a algoritmului îl face mai ușor de analizat.

· Cel mai rapid dintre algoritmii finaliști AES pe platforme pe 32 de biți.

· Criptarea și decriptarea în algoritmul RC6 sunt aproape identice. Dezavantajele algoritmului:

· Viteza de criptare în software depinde în mare măsură de dacă platforma acceptă multiplicarea pe 32 de biți și rotația de biți variabili.

· RC6 este greu de implementat în hardware și în condiții de resurse limitate.

· Este destul de dificil de protejat împotriva atacurilor din punct de vedere al timpului de execuție și al consumului de energie.

· Nu acceptă pe deplin extinderea tastelor din mers.

· Paralelizarea calculelor la criptarea cu algoritmul RC6 este fezabilă cu limitări.

1.2.3Algoritmul GOST 28147-89

GOST 28147-89 este un standard de criptare simetrică sovietică și rusă introdus în 1990, de asemenea, un standard CIS. Nume complet - „GOST 28147-89 Sisteme de procesare a informațiilor. Protecție criptografică. Algoritm de conversie criptografică”.

Orez. 4. Algoritm de criptare GOST 28147-89

Algoritm de cifrare bloc. Când se utilizează metoda de criptare gamma, poate îndeplini funcțiile unui algoritm de criptare de flux. GOST 28147-89 este un cifr de bloc cu o cheie de 256 de biți și 32 de cicluri de conversie, care funcționează pe blocuri de 64 de biți. Baza algoritmului de cifrare este rețeaua Feistel. Există patru moduri de operare conform GOST 28147-89: înlocuire simplă, joc, joc cu feedback și modul de generare a inserției de simulare.

Avantajele algoritmului: inutilitatea unui atac de forță, eficiența implementării și, în consecință, performanța ridicată pe computerele moderne, prezența protecției împotriva impunerii de date false (generarea inserției imitative) și același ciclu de criptare în toate patru algoritmi GOST, o cheie mai mare în comparație cu algoritmul DESX.

Dezavantajele algoritmului: Principalele probleme ale GOST sunt legate de incompletitudinea standardului în ceea ce privește generarea de chei și tabele de înlocuire. Se crede că GOST are chei „slabe” și tabele de înlocuire, dar standardul nu descrie criteriile pentru selectarea și eliminarea celor „slabe”. De asemenea, standardul nu specifică un algoritm pentru generarea unui tabel de substituție (S-boxes). Pe de o parte, aceasta poate fi informații secrete suplimentare (pe lângă cheie) și, pe de altă parte, ridică o serie de probleme: este imposibil să se determine puterea criptografică a algoritmului fără a cunoaște în prealabil tabelul de substituție. ; implementările algoritmului de la diferiți producători pot folosi tabele de înlocuire diferite și pot fi incompatibile între ele; posibilitatea furnizării deliberate de tabele de înlocuire slabe de către autoritățile de licențiere ale Federației Ruse.

1.2.4Avantajele IDEA față de analogi

În implementarea software pe Intel486SX comparativ cu DES IDEA este de două ori mai rapid, ceea ce reprezintă o creștere semnificativă a vitezei, lungimea cheii IDEA este de 128 de biți, față de cei 56 de biți ai DES, ceea ce reprezintă o îmbunătățire bună împotriva forței brute. Probabilitatea de a folosi cheile slabe este foarte mică și este de 1/264. IDEA este mai rapid decât algoritmul GOST 28147-89 (în implementarea software pe Intel486SX ). Utilizarea IDEA în moduri de criptare paralelă pe procesoarele Pentium III și Pentium MMX vă permite să atingeți viteze mari. În comparație cu finaliștii AES, 4-way IDEA este doar puțin mai lent decât RC6 și Rijndael pe Pentium II , dar mai rapid decât Twofish și MARTE . Pe Pentium III 4-way IDEA este chiar mai rapid decât RC6 și Rijndael . Un alt avantaj este că este bine studiat și rezistent la instrumentele de criptoanaliza binecunoscute.

1.3Modul Cipher Block Chaining - înlănțuire bloc folosind text cifrat

În modul de criptare CBC, toate blocurile de mesaje sunt „concatenate” folosind text cifrat.

În algoritmul de criptare, funcția de intrare primește de fiecare dată rezultatul însumării modulo 2 a datelor deschise din următorul bloc de mesaj și funcția de ieșire pentru blocul anterior. Deoarece datele de ieșire ale funcției pentru următorul bloc merg direct la ieșirea algoritmului CBC, adică este textul cifrat al acestui bloc și, în același timp, merg la intrarea aceleiași funcție pentru a cripta blocul următor, ei spun că blocurile sunt înlănțuite folosind textul cifrat. Primul bloc de date deschise este rezumat cu așa-numitul. vector de inițializare.

Acest vector de inițializare devine cunoscut atât expeditorului, cât și destinatarului chiar la începutul sesiunii de comunicare (prin urmare, este adesea numit simplu mesaj de sincronizare). Decriptarea are loc, în consecință, în ordine inversă - mai întâi, o funcție este aplicată textului cifrat și apoi însumată cu blocul de text cifrat anterior pentru a obține următorul bloc de text simplu la ieșirea algoritmului. Primul bloc de text simplu este, din nou, reconstruit folosind vectorul de inițializare.

Astfel, pentru tot i = 1...n, blocul de text cifrat C(i) este definit după cum urmează:

C(i) = IDEA(M(i) xor C(i-1)),

Decriptarea se realizează după cum urmează:

M(i) = C(i-1) xor IDEA-1(C(i)),

Blocul M(i) este o funcție numai a lui C(i-1) și C(i). Prin urmare, o eroare de transmisie va duce la pierderea a doar două blocuri de text sursă.

1.4Comparație de analogi ai modului de criptare CBC

Când se utilizează cifrurile bloc, sunt utilizate diferite scheme de criptare, cunoscute sub numele de moduri de operare de criptare pentru cifrurile bloc. Este evident că utilizarea unuia sau altuia mod de criptare nu ar trebui să afecteze negativ eficiența și, mai ales, puterea criptografică a cifrului bloc. Modurile de criptare vă permit să implementați funcții suplimentare care lipsesc în designul original al cifrului bloc.

1.4.1 Cartea de coduri electronice - Cartea de coduri electronice

Acest mod este un analog electronic al modului folosit de agenți pentru a trimite mesaje criptate la începutul secolului al XX-lea. Agentul a primit un caiet, a cărui pagină conținea o secvență unică - un cod cu care mesajul a fost criptat. După utilizare, o astfel de pagină a fost smulsă din caiet și distrusă. Dacă era necesar, mesajul a fost completat astfel încât să nu rămână niciun cod neutilizat pe paginile rupte. Partea destinatară avea o copie a blocnotesului, prin urmare, cu condiția ca paginile să fie utilizate sincron, acest mod de criptare asigura atât criptarea, cât și decriptarea mesajelor. În ECB, utilizarea unei pagini a registrului de coduri în timpul criptării corespunde aplicării unei transformări la datele de intrare de către funcția CIPH k , iar când este decriptat - CIPH -1k . Pentru a se sincroniza, este suficient ca ambele părți să cadă de acord asupra valorii cheii secrete K.

După cum se poate observa din figură, întreg algoritmul ECB constă în aplicarea directă a funcțiilor atât mesajului, cât și textului cifrat pentru criptare și respectiv decriptare, care pot fi exprimate și sub formă de ecuații: Criptare ECB:

CU j = CIPH K (P j ) ,

Decriptare BCE:

P j = CIPH K (C j ),

Astfel, criptarea are loc în blocuri corespunzătoare mărimii datelor de intrare/ieșire pentru funcții și. Blocurile sunt criptate separat și independent unul de celălalt, ceea ce permite ca acest lucru să se facă în paralel. Acest avantaj al modului ECB și simplitatea acestuia sunt mascate de două dezavantaje semnificative. Primul este că lungimea mesajului trebuie să fie un multiplu al lungimii blocului de date de intrare al cifrului bloc, adică întregul mesaj poate fi fie împărțit într-un număr întreg de astfel de blocuri, fie este necesar să se facă cumva. completați ultimul bloc cu date care nu conțin informații. Al doilea dezavantaj este și mai semnificativ.

Deoarece în timpul criptării următorul bloc de text cifrat este complet determinat doar de blocul de text simplu corespunzător și de valoarea cheii secrete K, blocurile de text clar identice vor fi convertite în acest mod în blocuri de text cifrat identice. Și acest lucru este uneori de nedorit, deoarece poate oferi cheia analizării conținutului mesajului. De exemplu, dacă datele de pe un hard disk sunt criptate, atunci spațiul gol va fi umplut cu aceiași octeți lăsați acolo de la formatarea discului. Aceasta înseamnă că din textul cifrat se va putea ghici dimensiunea informațiilor utile de pe disc. În astfel de cazuri, trebuie să utilizați alte moduri de criptare.

1.4.2 Cipher Feed Back - încărcare inversă a textului cifrat

Cipher Feed Back Modul de feedback Ciphertext este una dintre schemele de criptare simetrică în care un bloc de text criptat este o adăugare pe biți a unui bloc de text simplu cu rezultatul criptat al criptării blocului anterior. Are o modificare care vă permite să criptați datele a căror dimensiune este mai mică decât dimensiunea blocului de criptare, ceea ce face posibilă criptarea unui flux de date fără a aștepta ca numărul necesar de biți să ajungă la intrare.

În acest mod, dimensiunea blocului poate diferi de 64. Fișierul sursă M este citit în blocuri succesive de t-biți (t<= 64): M = M(1)M(2)...M(n) (остаток дописывается нулями или пробелами).

Registrul de deplasare de biți (blocul de intrare) conține mai întâi vectorul de inițializare justificat la dreapta IV. Pentru fiecare sesiune de criptare, se folosește un nou vector de inițializare.

Pentru tot i = 1...n, blocul de text cifrat C(i) este definit după cum urmează:

(i) = M(i) xor P(i-1),

unde P(i-1) sunt cei mai semnificativi t biți ai operației IDEA(C(i-1)) și C(0) = IV.

Registrul de deplasare este actualizat prin eliminarea biților săi cei mai înalți t și adăugarea C(i) la dreapta.

Recuperarea datelor criptate este, de asemenea, ușoară: P(i-1) și C(i) sunt calculate în același mod și M(i) = C(i) xor P(i-1).

1.4.3 Output Feed Back - încărcare inversă a datelor de ieșire

Modul OFB, ca și CFB, este bazat pe fire, adică funcția este apelată în algoritm înainte de însumarea cu o porțiune de text simplu. Dar de data aceasta intrarea nu este textul cifrat din iterația anterioară, ci pur și simplu datele sale de ieșire. Adică, buclele de funcție.

Prin urmare, în algoritmul OFB, este necesar să se evite nu numai repetarea vectorilor de inițializare, ci și ca orice j-al-lea bloc de date de intrare a funcției pentru un mesaj să nu fie utilizat ca vector de inițializare pentru un alt mesaj. Mai jos sunt ecuațiile pentru criptarea OFB: Criptarea OFB:

eu 1= IV

eu j = O j-1 , j = 1,2, … n

O j = CIPH K (I j ), j = 1,2, … n

C j =P j +O j , j = 1,2, … n-1 n =P n +MSB t (O n )

Decriptare OFB:

eu 1= IV j = O j -1, j = 2, … n j = CIPH K (I j ), j = 1,2, … n j = C j +O j , j = 1,2, … n-1 n = C n +MSB t (O n ) ,

unde „+” este operația xor.

Problema de completare a mesajelor pentru OFB este rezolvată simplu: pentru ultimul bloc de mesaje, eventual incomplet, sunt utilizați exact atât de mulți biți din datele de ieșire a funcției câte biți sunt în acest bloc. Astfel, în acest mod, spre deosebire de cele precedente, lungimea mesajului rămâne neschimbată în timpul procesului de criptare și, cel mai important, în timpul transmiterii.

1.4.4 Contor - criptare cu un contor

În modul de criptare flux cu un contor, la fiecare iterație a algoritmului de criptare, la intrarea funcției este furnizată o anumită valoare aleatorie T. Aceste date de intrare trebuie să fie diferite pentru toate iterațiile algoritmului în care cifrul bloc utilizează aceeași cheie de criptare , astfel încât generatorul de astfel de valori este uneori numit contor (care oferă cel mai simplu mod de a genera valori T unice).

De fapt, cerința de unicitate a datelor de intrare ale unei funcții la o anumită valoare a lui K va fi satisfăcută în cazul utilizării unui PRC (generator de cod pseudorandom), dar atunci este necesar un vector inițial de inițializare pentru PRC din partea respectivă. a expeditorului și destinatarului mesajelor.

Astfel, textul cifrat în algoritmul modului CTR este obținut prin însumarea modulo 2 a următorului bloc de text simplu cu datele de ieșire ale funcției. Următoarea valoare Tj a contorului blocului de mesaje este furnizată intrării funcției. Decriptarea are loc și prin însumarea modulo 2 a următorului bloc de text cifrat și a rezultatului transformării prin funcția următoarei valori a contorului Tj. Atât operațiunile de criptare, cât și de decriptare în modul CTR pot fi efectuate în paralel și independent pentru toate blocurile. În plus, acest mod de asemenea nu are problema ultimului bloc. Criptare CTR:

decriptare:

Modul CTR are toate avantajele modului ECB (execuție paralelă, simplitate și capacitatea de a cripta direct orice bloc de mesaje separat și independent de alte blocuri). Dar, în plus, modul CTR corectează toate deficiențele criptării în modul carte de coduri electronice: blocurile de text simplu identice nu vor mai fi convertite în blocuri de text cifrat identice; Nu este nevoie să completați ultimul bloc de text cifrat. În plus, în acest mod (ca în orice mod de flux) este utilizată doar funcția de criptare, iar pentru unele cifruri bloc (de exemplu, pentru AES - noul standard american de criptare bloc), aceasta oferă un oarecare câștig de performanță. Acesta este motivul pentru care acest mod este adesea cel mai eficient.

1.4.5 Avantajele Cipher Block Chaining față de analogi

Așadar, putem concluziona că modul de criptare simetrică CBC are un avantaj clar între cele considerate mai sus și anume: în modul de decriptare, când întreg textul cifrat a fost deja recepționat, funcțiile pot fi executate în paralel și independent pentru toate blocurile de mesaje. Acest lucru oferă un câștig semnificativ de timp.

În acest mod, merită să vă concentrați pe încă un detaliu. Faptul este că ultimul bloc de text cifrat, care este obținut la ieșirea algoritmului modului CBC, depinde atât de cheia de cifrat de bloc și de vectorul de inițializare, cât și (mai important în acest caz) de toți biții textului simplu al mesajul. Aceasta înseamnă că acest ultim bloc de text cifrat poate fi folosit ca un fel de identificator de mesaj. Un astfel de identificator nu oferă unui observator extern nicio informație despre conținutul întregului mesaj în ansamblu și, în același timp, îl identifică aproape fără ambiguitate (mesajul). Mai mult, este la fel de dificil să falsificați acest identificator fără a cunoaște cheia de criptare K, precum este să ghiciți corect cheia în sine.

2. PARTEA DE DESIGN

1 Modelare funcțională

Pe baza cerințelor pentru software, sunt definite următoarele funcții:

· Înregistrare utilizator cu câmpuri:

o log in,

o parola,

o NUMELE COMPLET,

o Data nașterii,

· Autorizare utilizator cu câmpuri:

o log in,

o parola;

· Criptarea textului sursă;

· Decriptarea textului cifrat;

· Afișarea etapelor finale de criptare și decriptare către utilizator după autorizarea cu succes.

2 Design algoritmic

Un algoritm de criptare IDEA generalizat este prezentat mai jos (Fig. 5).

După pornirea programului, utilizatorul trebuie să introducă perechea: login + parolă pe formularul de autorizare, sau să completeze formularul de înregistrare. După introducerea caracterelor pe formulare, funcția de criptare va începe să funcționeze când veți face clic pe butonul „Autentificare” sau, respectiv, „Înregistrare”.

Un bloc de date pe 64 de biți este citit din fișier și împărțit în patru subblocuri de 16 biți. Aceste patru subblocuri devin intrarea în prima buclă a algoritmului. În figură, aceste subblocuri sunt desemnate D 1,D 2,D 3,D 4Fiecare rundă folosește propriile subchei conform tabelului de subchei (Fig. 6). Operațiile descrise mai devreme și prezentate în diagrama algoritmului sunt efectuate pe subblocuri de 16 biți și subblocuri cu text simplu.

Algoritmul IDEA (International Data Encryption Algorithm) aparține clasei de criptoare simetrice. Acest algoritm a fost dezvoltat în 1990 ca alternativă la algoritmul DES (Data Encryption Standard). Algoritmul se bazează pe ideea unei transformări mixte, care distribuie aleatoriu uniform textul original în spațiul textului cifrat.

Transformările mixte sunt implementate folosind secvențe alternante de substituții și operații simple de permutare.
Conversia datelor se realizează în blocuri a căror dimensiune este de 64 de biți. Lungimea cheii în algoritmul IDEA este de 128 de biți.

Fiecare bloc de 64 de biți este tratat ca patru subblocuri de 16 biți, care sunt convertite folosind următoarele operații cu numere întregi.
1. Adunarea pe biți modulo 2 (XOR) a doi operanzi pe 16 biți, pe care îi vom nota ca ..
2. Adăugarea a doi operanzi întregi pe 16 biți modulo 216, notați ca .
3. Înmulțirea a două numere fără semn modulo. Rezultatul operației de înmulțire este trunchiat la o lungime de 16 biți. La calcularea acestei operații, există o excepție pentru codul cu toate zerourile, care este tratat ca un număr la înmulțire. Vom nota această operație ca .
Procedura de criptare constă din opt runde identice și o rundă de ieșire a 9-a suplimentară (Fig. 8, A).


Orez. 8 . Algoritmul IDEA:
a – schema procedurii de criptare; b – structura multiplicativ-aditivă
La ieșirea rundei a 9-a, se formează conținutul a patru subblocuri de 16 biți, formând un bloc de text cifrat.
Partea principală a fiecărei runde este structura multiplicativ-aditivă (Fig. 8, b).

Aici F 1i F 2 Valori pe 16 biți derivate din text simplu,
Z 5i Z Subchei pe 6 – 16 biți.

Toți operanzii implicați în procedura de criptare au o dimensiune de 16 biți.
În fig. Figura 9 prezintă diagrama de execuție a primei runde a algoritmului IDEA.


Orez. 9 . Prima rundă de criptare IDEA
Date de ieșire i a-a rundă de criptare, sunt alimentate la intrare ( i+1) runda a doua. Intrările din prima rundă sunt patru
subbloc pe 16 biți ( X 1, X 2, X 3, X 4) bloc de 64 de biți de text sursă.

Diagrama de execuție a celei de-a 9-a runde de criptare este prezentată în Fig. 10.


Orez. 10 . A noua rundă de criptare IDEA
Trebuie remarcat faptul că al doilea și al treilea subbloc de valoare intermediară W sunt schimbate după fiecare rundă de criptare, cu excepția celei de-a opta.

Fiecare dintre cele nouă runde utilizează valori cheie iterative de 16 biți Zi, care sunt obținute prin conversia cheii originale de 128 de biți K.

Primele 8 taste de iterație Z 1…Z 8 este luat ca opt părți consecutive ale unei chei de 128 de biți. Pentru a obține următoarele opt chei iterative, valoarea cheii de 128 de biți K schimbă ciclic 25 de biți spre stânga și taste Z 9…Z 16 este din nou luată drept cele 8 părți consecutive ale sale. Acest proces se repetă până când sunt obținute toate cele 52 de chei iterative.

Procedura de decriptare constă din aceleași nouă runde, dar efectuate numai folosind valori de cheie iterative diferite. Cheile de decriptare iterativă sunt obținute din cheile de criptare iterativă pe baza tabelului de corespondență (Tabelul 3).

Tabelul 3
Valori cheie utilizate în algoritmul IDEA
pentru decriptare

În acest caz, sunt îndeplinite următoarele relații:
(9)
(10)
Deci pentru cheie Zj valoare notată ca - Zj, este modul invers aditiv și valoarea notată ca
– invers multiplicativ modulo +1.

Ordinea utilizării cheilor iterative pentru criptare este prezentată în Fig. unsprezece.


Orez. unsprezece . Ordinea utilizării cheilor iterative ale algoritmului IDEA

Când se efectuează decriptarea, rundele algoritmului sunt executate în aceeași ordine. Intrarea în prima rundă este de patru subblocuri de 16 biți dintr-un bloc de text cifrat de 64 de biți. Valorile obținute după executarea rundei de ieșire sunt subblocuri ale blocului sursă pe 64 de biți. Diferența față de procedura de criptare este că în loc de chei Z 1...Z 52 de chei folosite U 1...U 52.

INTRODUCERE

Criptosistemele simetrice (de asemenea criptarea simetrică, cifrurile simetrice) sunt o metodă de criptare în care aceeași cheie criptografică este utilizată pentru criptare și decriptare. Înainte de inventarea schemei de criptare asimetrică, singura metodă care exista a fost criptarea simetrică. Cheia algoritmului trebuie ținută secretă de ambele părți. Cheia algoritmului este aleasă de părți înainte de începerea schimbului de mesaje.

Algoritmii de criptare și decriptare a datelor sunt utilizați pe scară largă în tehnologia informatică în sistemele de ascundere a informațiilor confidențiale și comerciale împotriva utilizării rău intenționate de către terți. Principiul principal al acestora este condiția ca emițătorul și receptorul să cunoască în prealabil algoritmul de criptare, precum și cheia mesajului, fără de care informația este doar un set de simboluri care nu au sens.

Un exemplu clasic de astfel de algoritmi sunt algoritmii criptografici simetrici enumerati mai jos: - substitutie simpla;

Permutare unică prin cheie;

Permutare dublă;

Permutarea „Pătrat magic”;

Simplă rearanjare.

Pierderea completă a tuturor tiparelor statistice ale mesajului original este o cerință importantă pentru un cifru simetric. Pentru a face acest lucru, cifrul trebuie să aibă un „efect de avalanșă”, adică. Ar trebui să existe o schimbare puternică a blocului de criptare cu o modificare de 1 bit a datelor de intrare (în mod ideal, valorile a 1/2 biți ale blocului de criptare ar trebui să se schimbe).

În prezent, cifrurile simetrice sunt:

· cifruri bloc. Ei procesează informații în blocuri de o anumită lungime (de obicei 64, 128 de biți), aplicând o cheie blocului într-o ordine prescrisă, de obicei prin mai multe cicluri de amestecare și înlocuire, numite runde. Rezultatul repetării rundelor este un efect de avalanșă - o pierdere tot mai mare a corespondenței biților între blocurile de date deschise și criptate.

· stream ciphers, în care criptarea este efectuată pe fiecare bit sau octet al textului original (plat) folosind gamma. Un cifr de flux poate fi creat cu ușurință pe baza unui cifru bloc (de exemplu, GOST 28147-89 în modul gamma), lansat într-un mod special.

Există mulți algoritmi de cifră simetrică, ai căror parametri esențiali sunt:

· durabilitate;

· lungimea cheii;

· numărul de runde;

lungimea blocului procesat;

· complexitatea implementării hardware/software;

· complexitatea conversiei.

PARTEA ANALITICA

algoritmul IDEA

IDEA (în engleză: International Data Encryption Algorithm, algoritmul internațional de criptare a datelor) este un algoritm de criptare a datelor bloc simetric brevetat de compania elvețiană Ascom. Acesta este un algoritm de criptare bloc simetric care a fost propus pentru a înlocui standardul DES. Versiunea inițială a algoritmului IDEA a apărut în 1990. Dezvoltatorii algoritmului, Xuejia Lai și James Massey de la Institutul Elvețian ETH Zurich, i-au dat numele PES (Proposed Encryption Standard).

Deoarece IDEA folosește o cheie de 128 de biți și o dimensiune de bloc de 64 de biți, textul simplu este împărțit în blocuri de 64 de biți. Dacă o astfel de partiție nu este posibilă, ultimul bloc este completat în diferite moduri cu o anumită secvență de biți. Pentru a evita scurgerea de informații despre fiecare bloc individual, sunt utilizate diferite moduri de criptare. Fiecare bloc original necriptat de 64 de biți este împărțit în patru subblocuri a câte 16 biți fiecare, deoarece toate operațiile algebrice utilizate în procesul de criptare sunt efectuate pe numere de 16 biți. IDEA folosește același algoritm pentru criptare și decriptare.

IDEA folosește următoarele operații matematice:

Adunare pe biți modulo 2 (operație SAU exclusivă);

Adunarea numerelor întregi fără semn modulo 2 16 ;

Înmulțirea numerelor întregi fără semn modulo (2 16 +1), cu un bloc de 16 zerouri tratat ca 2 16 ;

Un dezavantaj semnificativ este că IDEA este brevetat, deoarece acest lucru împiedică distribuirea sa gratuită. IDEA nu prevede creșterea lungimii cheii. Un alt dezavantaj poate fi considerat faptul că nu toate lucrările de criptoanaliza au fost publicate, adică este foarte posibil ca cifrul să fi fost spart sau să fie spart în viitor.

Structura algoritmului IDEA este prezentată mai jos (Fig. 1).

· modul carte electronică de coduri (ECB -- Electronic Code Book)

· modul de blocare în lanț (CBC - Cipher Block Chaining)

· modul de feedback al textului cifrat (CFB -- Cipher Feed Back)

· Modul feedback de ieșire (OFB -- Output Feed Back).

Acest curs examinează implementarea software a algoritmului de criptare IDEA (modul Cipher Feed Back).