curs 3 - math.uaic.romapetrii/fisiere/isr/c3_c4.pdf · ajutorul unui algoritm, generându-se text...

10
1 Curs 3 Atacuri asupra rețelelor de comunicații O categorie aparte de atac asupra informațiilor stocate sau transmise în rețea o reprezintă atacurile criptografice, prin care se încearcă extragerea informațiilor din mesajele criptate. Când se transmite un mesaj, pentru asigurarea confidențialității, acesta este criptat cu ajutorul unui algoritm, generându-se text cifrat (engl. ciphertext). Receptorul autorizat trebuie să poată recupera textul clar aplicând un algoritm asupra textului cifrat. Adversarul, care dispune de textul cifrat dar nu cunoaște anumite detalii ale algoritmului aplicat de emițător, trebuie să nu fie capabil să reconstituie textul clar. Operația prin care emițătorul transformă textul clar în text cifrat se numește criptare sau, uneori, cifrare (engl. encryption). Operația prin care receptorul obține textul clar din textul cifrat se numește decriptare sau descifrare (engl. decryption). Atacurile criptografice se aplică direct mesajelor cifrate în vederea obţinerii informaţiei originale în clar şi/sau a cheilor de criptare şi de decriptare. Ştiinţa care se ocupă cu studiul metodelor de obținere a înțelesului informațiilor criptate, fără a avea acces la informația secretă necesară în mod normal pentru aceasta estre criptanaliza iar criptanalistul este persoana care se ocupă cu criptanaliza mesajelor cu caracter secret. Scopul metodelor de criptanaliză este descoperirea mesajelor în clar (M) şi/sau a cheii (K) din mesajul criptat (C). Atacurile criptografice pot fi de mai multe tipuri: Brut (brute force), prin încercarea tuturor combinaţiilor posibile fie de chei de criptare, fie de simboluri din text pentru deducerea textului în clar. Atacul devine ineficient atunci când lungimea cheii este suficient de mare, astfel numărul de încercări fiind foarte mare, depășindu-se capacitatea de procesare a celor mai performante sisteme de calcul ori durata de procesare criptanalitică fiind mai mare decât perioada de valabilitate a informațiilor transmise. Asupra textului criptat (cipher text attack) interceptat, prin analiza căruia se încearcă găsirea textului original sau a cheii de criptare. Asupra unui text în clar cunoscut (known plain-text attack), pentru care s-a aflat criptograma şi pe baza căruia se face o extrapolare pentru deducerea altor porţiuni din mesaj. Asupra unor texte criptate alese (chosen cipher-text attack), pentru care se obţin criptogramele asociate unor texte folosind algoritmi de criptare cu chei publice şi se urmăreste aflarea cheilor de decriptare. Atacurilor sus amintite li se mai adaugă un alt tip de atac, și anume acțiunea de “cumpărare” a cheii, adică aflarea cheii fără nici un efort de criptanaliză, prin alte mijloace decât cele tehnice (santaj la adresa persoanelor care o dețin, furt sau scurgeri de informații de la persoane sau din documente scrise sau în fomat electronic etc.). Acest procedeu este unul dintre cele mai puternice atacuri lansate la adresa unor surse din interiorul rețelei. Pentru

Upload: vothuan

Post on 08-Feb-2018

218 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Curs 3 - math.uaic.romapetrii/fisiere/ISR/C3_C4.pdf · ajutorul unui algoritm, generându-se text cifrat ... În acest caz textele clare sunt șiruri de litere din alfabet, mulțimea

1

Curs 3

Atacuri asupra rețelelor de comunicații

O categorie aparte de atac asupra informațiilor stocate sau transmise în rețea o reprezintă

atacurile criptografice, prin care se încearcă extragerea informațiilor din mesajele criptate.

Când se transmite un mesaj, pentru asigurarea confidențialității, acesta este criptat cu

ajutorul unui algoritm, generându-se text cifrat (engl. ciphertext). Receptorul autorizat trebuie

să poată recupera textul clar aplicând un algoritm asupra textului cifrat. Adversarul, care

dispune de textul cifrat dar nu cunoaște anumite detalii ale algoritmului aplicat de emițător,

trebuie să nu fie capabil să reconstituie textul clar. Operația prin care emițătorul transformă

textul clar în text cifrat se numește criptare sau, uneori, cifrare (engl. encryption). Operația

prin care receptorul obține textul clar din textul cifrat se numește decriptare sau descifrare

(engl. decryption).

Atacurile criptografice se aplică direct mesajelor cifrate în vederea obţinerii informaţiei

originale în clar şi/sau a cheilor de criptare şi de decriptare. Ştiinţa care se ocupă cu studiul

metodelor de obținere a înțelesului informațiilor criptate, fără a avea acces la informația

secretă necesară în mod normal pentru aceasta estre criptanaliza iar criptanalistul este

persoana care se ocupă cu criptanaliza mesajelor cu caracter secret. Scopul metodelor de

criptanaliză este descoperirea mesajelor în clar (M) şi/sau a cheii (K) din mesajul criptat (C).

Atacurile criptografice pot fi de mai multe tipuri:

Brut (brute force), prin încercarea tuturor combinaţiilor posibile fie de chei de

criptare, fie de simboluri din text pentru deducerea textului în clar. Atacul devine

ineficient atunci când lungimea cheii este suficient de mare, astfel numărul de

încercări fiind foarte mare, depășindu-se capacitatea de procesare a celor mai

performante sisteme de calcul ori durata de procesare criptanalitică fiind mai mare

decât perioada de valabilitate a informațiilor transmise.

Asupra textului criptat (cipher text attack) interceptat, prin analiza căruia se încearcă

găsirea textului original sau a cheii de criptare.

Asupra unui text în clar cunoscut (known plain-text attack), pentru care s-a aflat

criptograma şi pe baza căruia se face o extrapolare pentru deducerea altor porţiuni din

mesaj.

Asupra unor texte criptate alese (chosen cipher-text attack), pentru care se obţin

criptogramele asociate unor texte folosind algoritmi de criptare cu chei publice şi se

urmăreste aflarea cheilor de decriptare.

Atacurilor sus amintite li se mai adaugă un alt tip de atac, și anume acțiunea de

“cumpărare” a cheii, adică aflarea cheii fără nici un efort de criptanaliză, prin alte mijloace

decât cele tehnice (santaj la adresa persoanelor care o dețin, furt sau scurgeri de informații de

la persoane sau din documente scrise sau în fomat electronic etc.). Acest procedeu este unul

dintre cele mai puternice atacuri lansate la adresa unor surse din interiorul rețelei. Pentru

Page 2: Curs 3 - math.uaic.romapetrii/fisiere/ISR/C3_C4.pdf · ajutorul unui algoritm, generându-se text cifrat ... În acest caz textele clare sunt șiruri de litere din alfabet, mulțimea

2

preîntâmpinarea lui este utilă responsabilizarea personalului, eliminarea breselor de securitate

a documentelor, eventual dubla criptare a datelor astfel încât secretul lor să nu depindă de o

singură persoană.

Ca principalele metode de criptanaliză putem aminti metoda diferențială (are la bază

perechi de texte criptate, obținute prin criptarea unei perechi de texte în clar și analiza

diferențelor dintre acestea), metoda liniară (folosește texte în clar cunoscute și textele criptate

asociate, încercând pe baza lor aproximarea liniară a cheii de criptare) și metoda combinată

(aplică ambele procedee menționate anterior pentru spargerea cifrurilor).

Pentru protejarea împotriva atacurilor criptografice s-au creat algoritmi din ce în ce mai

complecși, ca regulă generală, un algoritm fiind considerat sigur dacă cea mai puțin

costisitoare metodă prin care poate fi atacat (ca timp de procesare, spațiu de memorie, preț)

este atacul brut. La crearea acestor algoritmi se au în vedere următoarele:

Asigurarea confidențialității, care are drept obiectiv împiedicarea înțelegerii mesajului

criptat interceptat de către adversar;

Asigurarea autenticității, care are ca obiectiv detectarea, de către receptor a mesajelor

create sau modificate de un adversar activ;

Asigurarea non-repudiabilității mesajelor, adică emitentul să nu poată nega faptul că a

transmis un anumit mesaj, iar receptorul să nu poată crea mesaje care să pară

autentice;

Verificarea prospețimii are ca obiectiv detectarea, de către receptor, a eventualelor

copii ale unui mesaj (autentic) mai vechi. Este posibil ca un adversar să intercepteze,

de exemplu, un ordin de transfer de bani în favoarea sa și apoi să transmită băncii

multiple copii ale ordinului respectiv iar fără a verifica prospețimea, banca va efectua

de mai multe ori transferul de bani. Doar verificarea autenticității mesajelor nu ar

rezolva problema deoarece fiecare copie este identică cu originalul, deci este

autentică.

Autentificarea entităților, care are drept obiectiv verificarea, de către o entitate, a

identității entității cu care comunică.

Stabilirea cheii are ca obiectiv obținerea, de către partenerii de comunicație legitimi, a

unui șir de biți, numit cheie, ce urmează a fi utilizată la asigurarea confidențiialității și

la verificarea autenticității mesajelor. Cheia obținută trebuie să fie cunoscută doar de

către partenerii care doresc să comunice. Autentificarea nu are sens decât dacă se

realizează și verificarea integrității mesajului.

Asigurarea confidențialității

Problema asigurării confidențialității unui mesaj constă în a transmite informații în așa fel

încât doar destinatarul dorit să le poată obține. Un adversar care ar intercepta comunicația nu

trebuie să fie capabil să obțină informația transmisă.

Pentru formalizarea scrierii vom folosi notațiile:

M - mulțimea mesajelor în clar;

E - mulțimea mesajelor criptate

o funcție de criptare;

o funcție de decriptare;

Page 3: Curs 3 - math.uaic.romapetrii/fisiere/ISR/C3_C4.pdf · ajutorul unui algoritm, generându-se text cifrat ... În acest caz textele clare sunt șiruri de litere din alfabet, mulțimea

3

Perechea formează o pereche criptare-decriptare dacă sunt îndeplinite simultan

condițiile:

orice text cifrat poate fi decriptat corect prin , adică ;

un adversar care cunoaște textul cifrat dar nu dispune de informații despre funcțiile de

criptare sau decriptare, nu poate deduce informații despre mesajul în clar.

În practică, perechea de funcții trebuie să fie ușor de realizat, chiar și de către

persoane fără pregătire deosebită. Aceste funcții se realizează pe baza unor algoritmi care

necesită și o cheie de criptare. Fiecare valoare a cheii produce o pereche criptare-decriptare

distinctă. Cheia se presupune a fi ușor de generat la nevoie.

Vom nota prin mulțimea cheilor. În acest caz funcțiile de criptare și decriptare vor fi de

forma

o funcție de criptare;

o funcție de decriptare;

cheia apărând ca și parametru. Pentru o valoare fixată a cheii, , avem și

funcțiile de criptare și decriptare corespunzătoare.

Uneori , caz în care funcțiile de criptare respectiv decriptare sunt bijective

(permutări pe ). În aceste condiții, uneori, rolurile funcțiilor de criptare respectiv decriptare

pot fi interschimbate, adică să se folosească ca funcție de criptare și pentru decriptare.

Cele prezentate anterior pot fi urmărite în exemplele de mai jos:

1) Substituția monoalfabetică:

Fie un alfabet (finit) cu litere | |). De exemplu, ( = 26).

În acest caz textele clare sunt șiruri de litere din alfabet, mulțimea textelor cifrate este

identică cu mulțimea textelor clare iar cheile posibile sunt permutările lui | | .

Pentru un text clar

( )

textul cifrat va fi

.

Pentru decriptare avem

.

Se observă că atât criptarea cât și decriptarea sunt simplu de executat, chiar și manual.

Cheile sunt ușor de reprezentat, chiar prin înșiruirea literelor în ordinea dată de permutare

dacă alfabetul are o ordine cunoscută.

De exemplu, cheia poate fi reprezentată astfel:

Page 4: Curs 3 - math.uaic.romapetrii/fisiere/ISR/C3_C4.pdf · ajutorul unui algoritm, generându-se text cifrat ... În acest caz textele clare sunt șiruri de litere din alfabet, mulțimea

4

ceea ce înseamnă că , etc. Cu această cheie, cuvântul "securitate"

devine, prin criptare "lmbxkozczm".

O cale de atac poate fi metoda prin forță brută (decriptarea textului cifrat cu fiecare cheie

posibilă). O astfel de încercare este ineficientă deoarece, dacă presupunem că adversarul

reușește să verifice un miliard de chei în fiecare secundă, cum numărul de chei este 26!,

adversarul ar avea nevoie de aproximativ 6,5 miliarde de ani pentru a găsi cheia corectă.

O analiză atentă asupra modului de criptare scoate în evidență o "slabiciune" mare a

acestuia și anume calea de atac prin analiza frecvențelor. Textul în clar fiind un text în limba

română, anumite litere (e, a, t, s) apar mai des decât altele, prin urmare, permutările acestora

prin funcția o să apară în textul cifrat cu frecvență mai mare decât permutările celorlalte. Un

adversar, care dispune de suficient text cifrat, va reuși în acest fel să reducă considerabil

numărul de încercări, un cifru putând fi spart în căteva minute.

2) Cifrul Vernam, numit și cheia acoperitoare

Textul în clar îl privim ca un șir de biți de lungime mai mică sau egală cu un ,

. Textul cifrat va fi de aceeași formă ( )

,

unde reprezintă operația xor. Decriptarea va coincide cu criptarea .

Din punctul de vedere al siguranței, criptarea cu cheie acoperitoare este un mecanism

perfect de criptare: adversarul nu poate deduce nimic din mesajul criptat (în afară de lungimea

textului clar), deoarece orice text clar putea fi, cu egală probabilitate, originea textului cifrat

recepționat.

Criptarea cu cheie acoperitoare este dificil de utilizat practic deoarece necesită o cheie la

fel de lungă ca și mesajul de transmis și, în plus, cheia nu poate fi refolosită (dacă se transmit

două mesaje folosind aceeași cheie, se pierde sigurantă metodei).

Uneori se folosește aceeași cheie de criptare pentru mai multe mesaje, ceea ce aduce unui

adversar noi posibilități de acțiune deoarece mesajele identice vor fi criptate identic. Acest

aspect poate fi exploatat în mai multe moduri, cum ar fi determinarea emițătorul de către

adversar să trimită mesaje conținând părți generate de acesta (fapt ce ajută mult în tentativa de

spargere) sau detectarera repetării unui mesaj. Anumite cifruri, de exemplu cifrul cu cheie

acoperitoare, sunt ușor de atacat de un adversar dispunând de două texte cifrate cu aceeași

cheie.

În cazul în care se dorește totuși utilizarea aceleiași chei pentru mai multe mesaje, ca

metodă de prevenție, funcția de criptare mai primește un element aleator care are rolul de a

face ca același text clar să fie cifrat în mod diferit în mesaje diferite. În acest caz, criptarea are

forma iar decriptarea va fi de forma , cu:

.

Pentru a fi posibilă decriptarea, informația corespunzătoare argumentului aleator trebuie

să se regăsească în textul cifrat, de aceea, lungimea textului cifrat trebuie să fie cel puțin egală

cu lungimea textului clar plus lungimea argumentului aleator. Adesea, argumentul aleator nu

este secret, deci poate fi transmis în clar. Trebuie avut însă în vedere ca adversarul să nu poată

Page 5: Curs 3 - math.uaic.romapetrii/fisiere/ISR/C3_C4.pdf · ajutorul unui algoritm, generându-se text cifrat ... În acest caz textele clare sunt șiruri de litere din alfabet, mulțimea

5

controla generarea argumentului aleator utilizat de emițător și să nu i se permită să obțină

informații despre argumentul aleator ce urmează a fi folosit.

Un cifru (perechea criptare-decriptare) se consideră complet spart dacă un adversar care

nu cunoaște dinainte cheia poate decripta orice text cifrat. Dacă adversarul obține cheia,

înseamnă că cifrul este complet spart. Un cifru este parțial spart dacă un adversar care nu

cunoaște inițial cheia poate dobândi informații despre textul clar prin observarea textului

cifrat. Dacă adversarul poate decripta o parte din textul clar sau poate să verifice dacă un

anumit șir apare în textul clar, înseamnă că cifrul este parțial spart. Spre exemplul putem

considera că, din informațiile adversarului, textul clar este cu probabilitate de 30% ION, cu

probabilitate de 40% ANA și cu probabilitate de 30% DAN. De asemenea, presupunem că

adversarul știe că se utilizează substituție monoalfabetică. În momentul în care adversarul

intercepteză textul cifrat AZF, el calculează probabilitățile diverselor texte clare cunoscând

textul cifrat și găsește 50% ION, 0% ANA și 50% DAN (exclude ANA deoarece ar da aceeași

literă pe prima și pe ultima poziție în textul cifrat). Adversarul a dobândit astfel o informație

asupra textului clar, ceea ce înseamnă că cifrul a fost spart parțial.

În funcție de informațiile de care dispune adversarul ce încearcă spargerea cifurlui, există

trei nivele posibile de atac:

atac cu text cifrat când adversarul dispune doar de o anumită cantitate de text cifrat;

atac cu text clar cunoscut când adversarul dispune, pe lângă textul cifrat, de un număr

de perechi cu ;

atac cu text clar ales când adversarul dispune de perechi în care este la

alegerea adversarului.

Dificultatea spargerii unui cifru este de două feluri:

dificultatea probabilistică sau informațională;

dificultate computațională.

Dificultatea informațională constă în faptul că pot exista mai multe perechi text clar,

cheie, care ar fi putut produce textul cifrat interceptat. Un cifru este perfect dacă textul criptat

nu aduce nici o informație adversarului, adică s-ar fi putut folosi orice bijecție , cu

aceeași probabilitate, ca funcție de criptare. Un asemenea exemplu este cifrul , atâta timp cât

cheia nu este refolosită. Pentru a obține un cifru perfect, numărul de biți ai cheii trebuie să fie

mai mare sau egal cu numărul de biți de informație din mesaj. Cifrul Vernam este în același

timp perfect (sub aspectul dificultății informaționale a spargerii) și optim din punctul de

vedere al lungimii cheii.

Dificultatea computațională constă în imposibilitatea adversarului de a deduce informații

asupra textului clar cu un efort computațional rezonabil (dacă se dă un număr de perechi text

clar - text cifrat, să nu existe o metodă rapidă de a determina cheia).

Un atac prin forță brută constă în a decripta textul cifrat folosind toate cheile posibile și a

verifica dacă se obține textul clar (sau un text clar inteligibil, dacă textul clar adevărat nu este

cunoscut dinainte). Fezabilitatea unui atac prin forță brută depinde direct de lungimea cheii

(de fapt, de numărul de chei posibile). Pentru o cheie de 56 de biți, un atac prin forță brută

este perfect posibil, la viteza actuală necesitând un efort în jur de un an-calculator. Un atac

prin forță brută este nefezabil deocamdată de la 80 de biți în sus; se consideră că va fi fezabil

în jurul anului 2015. De la 128 de biți în sus atacul prin forță brută necesită, din cauza unor

Page 6: Curs 3 - math.uaic.romapetrii/fisiere/ISR/C3_C4.pdf · ajutorul unui algoritm, generându-se text cifrat ... În acest caz textele clare sunt șiruri de litere din alfabet, mulțimea

6

limitări fizice teoretice, o cantitate de energie comparabilă cu producția mondială pe câteva

luni; o astfel de cheie este puțin probabil că va putea fi spartă vreodată prin forță brută.

Un cifru se consideră a fi vulnerabil în momentul în care se descoperă o metodă de

decriptare a unui mesaj semnificativ mai eficientă decât un atac prin forță brută. Inexistența

unei metode eficiente de spargere nu este niciodată demonstrată, în cel mai bun caz putându-

se demonstrea că spargerea unui cifru este cel puțin la fel de dificilă ca rezolvarea unei

anumite probleme de matematică, problemă cunoscută de multă vreme dar fără rezolvare

eficientă cunoscută. Exemple de asemenea probleme de matematică: descompunerea în factori

primi a unui număr mare (de ordinul sutelor de cifre) sau logaritmul discret (rezolvarea în

a ecuației , cu număr prim mare. Pentru un cifru bloc (un

cifru care criptează independent blocuri de text clar de o anumită lungime fixă), dimensiunea

blocului trebuie să fie mare pentru a face repetările blocurilor suficient de rare. Dacă

dimensiunea blocului este de biți, există posibilități pentru conținutul unui bloc, ceea ce

face ca în cazul unei distribuții uniforme a conținutului fiecărui bloc, un șir de

blocuri are

probabilitate cam 1/2 să aibă cel puțin două blocuri cu conținut identic. Ca o consecință,

dimensiunea a blocului trebuie să fie suficient de mare (minim 64 biți) și cheia să fie

schimbată suficient de des.

În practică se folosesc mai multe cifruri, acestea putând fi împărțite în două categorii:

cifruri bloc și cifruri flux. Cifrurile bloc criptează câte un bloc de date de lungime fixată (de

obicei 64, 128 sau, eventual, 256 de biți) iar cifrurile flux criptează mesaje de lungime

arbitrară și produc biții textului cifrat pe măsură ce primesc biții corespunzători din textul clar.

Pentru a cripta un text de lungime arbitrară se pot folosi și cifruri bloc, existând câteva

metode standard.

Electronic Code Book (ECB ) - textul în clar se împarte în blocuri de lungime . Ultimul

bloc se completează la lungimea , prin adăugarea unor biți care pot fi pot fi zerouri, biți

aleatori sau biți rezultați în urma utilizării altor scheme de completare. După împărțire, fiecare

bloc se criptează independent de celelalte. Metoda ECB nu se recomandă deoarece pentru o

cheie fixă același text clar se transformă în același text cifrat.

Cipher Block Chaining (CBC) - textul în clar se împarte în blocuri de lungime . Ultimul

bloc se completează cu biți aleatori apoi se alege un șir de biți aleatori numit vector de

inițializare. Vectorul de inițializare se transmite de obicei separat. Pentru criptare, se

efectuează xor pe biți între vectorul de inițializare și primul bloc de text clar, apoi se face xor

între fiecare bloc de text clar și blocul precedent de text cifrat. Rezultatul se cifrează și se

transmite destinatarului. Față de ECB, metoda CBC face ca un același bloc de text clar să se

cripteze diferit, în funcție de vectorul de inițializare utilizat. Dacă vectorul de inițializare este

ales aleator, repetările unui bloc de text cifrat vor fi extrem de rare (imposibil de exploatat de

adversar). Pentru alegerea vectorului de inițializare trebuie avute în vedere următoarele:

să fie distribuit uniform și independent de alți vectori de inițializare;

să nu poată fi controlat de adversar;

să nu poată fi aflat de adversar.

Pentru construirea vectorului de inițializare putem utiliza un generator de numere

aleatoare criptografic sau putem utiliza aceleași metode ca la alegerea cheilor ( a se vedea

cursul corespunzător). Dacă se transmit mai multe mesaje unul după altul, vectorul de

Page 7: Curs 3 - math.uaic.romapetrii/fisiere/ISR/C3_C4.pdf · ajutorul unui algoritm, generându-se text cifrat ... În acest caz textele clare sunt șiruri de litere din alfabet, mulțimea

7

inițializare pentru un mesaj se poate lua ca fiind ultimul bloc al mesajului precedent (ca la

înlănțuirea blocurilor în cadrul aceluiași mesaj).

Există situații când mesajele sunt mult mai scurte decât dimensiunea blocului și nici nu se

pot grupa împreună mai multe mesaje (de exemplu, un mesaj depinde de răspunsul

receptorului la mesajul precedent, prin urmare, un mesaj nu este disponibil pentru criptare

înainte ca mesajul precedent să fie criptat în totalitate și trimis). În aceste cazuri se utilizează

CFB și OFB, prezentate în continuare.

Cipher Feedback (CFB) - criptează fragmente de text clar de dimensiune fixă.

Dimensiunea fragmentului trebuie să fie un divizor al dimensiunii blocului cifrului. Pentru

funcționare emițătorul generează aleator un vector de inițializare de biți, pe care îl transmite

receptorului și îl încarcă totodată într-un registru de deplasare. Apoi, pentru fiecare caracter de

criptat, emițătorul parcurge pașii:

- criptează conținutul registrului de deplasare utilizând cheia secretă;

- execută xor pe biți între următorii biți din textul clar și primii biți din rezultatul

criptării;

- transmite ca text cifrat rezultatul pasului precedent;

- deplasează conținutul registrului de deplasare cu biți spre stânga;

- introduce, pe pozițiile cele mai din dreapta ale registrului de deplasare, biți de text

cifrat produs.

CFB are o proprietate interesantă de autosincronizare: dacă la un moment dat, din cauza

unor erori de transmisie, se pierde sincronismul dintre emițător și receptor, sincronismul se

reface automat după biți. Pentru decriptare CFB utilizează tot funcția de criptare a cifrului

bloc.

Output Feedback (OFB ) - este un mecanism asemănător cu cifrul Vernam (cu cheie

acoperitoare) însă cheia este un șir pseudoaleator generat cu un algoritm de criptare. Primii

biți din șirul pseudoaleator se obțin criptând vectorul de inițializare, următorii biți

Page 8: Curs 3 - math.uaic.romapetrii/fisiere/ISR/C3_C4.pdf · ajutorul unui algoritm, generându-se text cifrat ... În acest caz textele clare sunt șiruri de litere din alfabet, mulțimea

8

obținându-se criptând precedenții biți pseudoaleatori, ș. a. m. d. La OFB utilizarea unui

vector de inițializare aleator este chiar mai importantă decât la celelalte moduri de criptare,

deoarece refolosirea unui vector de inițializare conduce la repetarea șirului pseudoaleator

(cheia Vernam), rezultând un cifru relativ ușor de spart.

Counter (CTR) - se construiește similar cu OFB, însă șirul pseudoaleator se obține

criptând numerele , , , etc., reprezentate pe biți, unde este vectorul de

inițializare. Modul CTR este foarte asemănător cu OFB, însă are avantajul că destinatarul

poate decripta un fragment de mesaj fără a decripta tot mesajul până la fragmentul dorit.

Acest fapt îl face potrivit pentru criptarea fișierelor pe disc. Totuși, deoarece cifrul Vernam

aflat la bază este vulnerabil când se au la dispoziție două texte clare criptate cu aceeași cheie,

metoda este vulnerabilă dacă adversarul are posibilitatea de a obține două variante ale unui

fișier.

Dintre algoritmii cei mai cunoscuți utilizați în practică amintim:

Data Encryption Standard (DES) - se bazează pe un algoritm simetric care lucrează cu

blocuri de lungime 64 de biți iar lungimea cheii este de 56 biți. A fost utilizat pe scară destul

de largă, fiind susținut ca standard de către guvernul Statelor Unite ale Americii. În prezent

este nesigur datorită lungimii mici a cheii (a fost deja spart prin forță brută). În ianuarie 1999,

distributed.net şi Electronic Frontier Foundation au colaborat pentru a sparge public o cheie

DES în 22 de ore şi 15 minute. Există, de asemenea, unele rezultate analitice care

demonstrează slăbiciunile teoretice ale cifrului, deşi ele sunt imposibil de montat în practică.

Triple DES (3DES) - constă în aplicarea de 3 ori succesiv a cifrului DES, cu 2 sau 3 chei

distincte. A fost proiectat pentru a oferi o metodă relativ simplă de a creşte dimensiunea cheii

pentru DES, fără proiectarea unui sistem complet nou. Lucrează cu blocuri de lungime 64 de

biți iar lungimea cheii este de 112 sau 168 biți. Este imposibilă spargerea acestuia prin forță

brută.

Advanced Encryption Standard (AES) - se bazează pe un algoritm simetric care lucrează

cu blocuri de 128 biți iar lungimea cheii este de 128, 192 sau 256 biți. A fost proiectat de doi

belgieni, Joan Daemen și Vincent Rijmen și publicat sub numele Rijndael. În urma unui

concurs, a fost desemnat ca nou standard utilizat de guvernul american.

CAST 128 - Creat de Carlisle Adams și Stafiord Tavares în 1996, lucrează cu blocuri de

64 biți iar lungimea cheii este cuprinsă între 40 și 128 biți

Blowfish - se bazează pe un algoritm simetric care lucrează cu blocuri de 64 biți iar

lungimea cheii este de până la 448 biți. Creat de Bruce Schneier în 1993, a fost conceput ca

un algoritm de uz general, ca o alternativă la DES. Algoritmul este public şi poate fi utilizat în

mod liber de oricine.

Twofish - se bazează pe un algoritm simetric care lucrează cu blocuri de 128 biți iar

lungimea cheii este de până la 256 biți. Creat de Bruce Schneier, Kelsey John, Doug Whiting,

David Wagner, Chris Hall, şi Niels Ferguson, a fost unul dintre cei cinci finalisti ai

concursului Advanced Encryption Standard, dar nu a fost selectat pentru standardizare. Pe

majoritatea platformelor software Twofish este uşor mai lent decât Rijndael (algoritmul ales

pentru Advanced Encryption Standard) pentru chei de 128 biţi, dar oarecum mai rapid pentru

256 de biţi.

Serpent - lucrează cu blocuri de 128 biți iar lungimea cheii este de 128, 192 sau 256 biți.

A fost creat de Ross Anderson, Eli Biham și Lars Knudsen și a candidat pentru AES.

Page 9: Curs 3 - math.uaic.romapetrii/fisiere/ISR/C3_C4.pdf · ajutorul unui algoritm, generându-se text cifrat ... În acest caz textele clare sunt șiruri de litere din alfabet, mulțimea

9

RC6 - se bazează pe un algoritm simetric care lucrează cu blocuri de 128 biți iar

lungimea cheii este de 128, 192 sau 256 biți. A fost proiectat de Ron Rivest, Robshaw Matt,

Sidney Ray şi Yiqun Yin Lisa și a candidat pentru AES, fiind unul dintre cei cinci finaliști. A

fost patentat de RSA Security.

RC4 - este cel mai utilizat cifru flux. Este utilizat în protocoalele populare, cum ar fi

Secure Sockets Layer (SSL) (pentru a proteja traficul Internet) şi WEP (pentru a asigura

reţelele wireless). Cheia are lungimea de până la 256 biți. A fost creat de Ronald Rivest în

1987. Este foarte rapid dar are câteva slăbiciuni, care pot fi contracarate prin artificii legate de

modul de utilizare.

Criptosistemelor simetrice li se adaugă cele asimetrice (cu cheie publică). Securitatea

acestora se bazează pe faptul că în realitate, există funcții de criptare (injective) a căror

cunoaștere nu permite decriptarea în timp rezonabil, adică deși este rezonabil de ușor de

calculat, determinarea lui din ecuația nu se poate face mult mai rapid decât prin

încercarea tuturor valorilor posibile pentru . Pentru ca destinatarul autorizat al mesajului să

poată decripta mesajul în timp rezonabil, trebuie ca funcția de criptare să poată fi inversată

ușor de către cineva care cunoaște o anumită informație, dificil de dedus din . Informația

respectivă va fi făcută cunoscută doar destinatarului mesajului criptat, care, în cazul

criptografiei asimetrice este chiar autorul acestei informații secrete și a funcției de criptare.

Similar criptosistemelor simetrice, funcția de criptare primește ca și parametru cheia ,

numită cheie de criptare sau cheie publică, pentru criptare calculându-se cantitatea .

Pentru decriptare, funcția de decriptare primește ca și parametru cheia , numită cheie de

decriptare sau cheie secretă și se va calcula cantitatea . Fiecare cheie secretă este

asociată unei anumite chei publice , putând servi la decriptarea mesajelor criptate doar cu

cheia publică pereche. Teoretic, dacă se cunoaște cheia publică este posibil să se calculeze

cheia secretă corespunzătoare, dar acest lucru trebuie să fie dificil din punct de vedere

computațional. Pentru ca un sistem de criptare să fie util trebuie să existe un procedeu eficient

din punct de vedere computațional pentru generarea unei perechi de chei ( , ) aleatoare.

În concluzie, un sistem criptografic asimetric (sau cifru asimetric sau cifru cu cheie

publică) este un ansamblu format din algoritmii de criptare și decriptare și dintr-un

algoritm de generare aleatoare a perechilor de chei ( , ). Pentru ca un sistem criptografic

să fie sigur trebuie ca rezolvarea ecuației cu necunoscuta și determinarea cheii

secrete corespunzătoare unei chei publice să fie dificile computațional.

Pentru transmiterea mesajelor, destinatarul generează o pereche de chei ( , ) și face

publică . Emițătorul poate cripta un mesaj, folosind , și numai posesorul lui îl va putea

decripta (odată criptat un mesaj, acesta nu mai poate fi decriptat nici măcar de autorul său).

Dacă se dorește comunicație bidirecțională, se utilizează câte o pereche de chei ( , )

distinctă pentru fiecare sens. O aceeași pereche de chei poate fi utilizată de o entitate pentru

toate mesajele pe care le primește, indiferent cu câți parteneri comunică. Astfel, fiecare

entitate își stabilește o pereche de chei din care cheia publică o transmite tuturor partenerilor

de comunicație și cheia secretă o folosește pentru a decripta mesajele trimise de toți către ea.

Pentru comparație, în criptografia simetrică, fiecare pereche de parteneri ce comunică trebuie

să aibă propria cheie secretă. Un sistem criptografic asimetric este în esență un cifru bloc.

Pentru a cripta o cantitate arbitrară de text clar, se pot utiliza modurile ECB sau CBC.

Modurile CFB, OFB și CTR nu sunt utilizabile deoarece utilizează doar funcția de criptare,

care în cazul criptografiei asimetrice este publică. Algoritmii criptografici asimetrici sunt mult

Page 10: Curs 3 - math.uaic.romapetrii/fisiere/ISR/C3_C4.pdf · ajutorul unui algoritm, generându-se text cifrat ... În acest caz textele clare sunt șiruri de litere din alfabet, mulțimea

10

mai lenți decât cei simetrici ceea ce face ca de obicei datele să se criptează de obicei cu

algoritmi simetrici, iar cheia de criptare pentru date să se transmită utilizând algoritmi

criptografici asimetrici.

Unul din cele mai cunoscute criptosisteme cu cheie publică este RSA inventat de Rivest,

Shamir și Adelman în 1977. Numele RSA vine de la inițialele autorilor. Pentru început se

generează două numere prime p și q (de ordinul a 500 cifre zecimale fiecare) apoi se

calculează și . Mulțimea va reprezenta atât

spațiul textelor clare cât și a textelor criptate. Pentru alegerea cheilor se generează aleator un

număr prim în raport cu și se calculează cu proprietatea că , utilizându-se algoritmul lui Euclid. Cheia publică va fi iar cea secretă

va fi .

Pentru criptare și decriptare avem:

În cele prezentate anterior s-a văzut că la generarea cheilor sau a vectorilor de inițializare

sau a numerelor unice sistemele criptografice folosesc generatoare de numere aleatoare.

Numerele aleatoare generate trebuie să fie uniform distribuite și independente unul de altul.

Față de alte aplicații, în scopuri criptografice numerele aleatoare trebuie generate astfel încât

să nu poată fi prevăzute de un eventual adversar. Pentru generarea acestora se pot folosi

generatoare fizice (funcționează pe baza unor fenomene fizice suficient de aleatoare) sau

generatoare de numere pseudoaleatoare(produc numerele prin calcule, prin urmare, numerele

generate sunt deterministe, dar algoritmul de generare "amestecă" suficient de bine numerele

pentru ca șirul de numere rezultat să pară aleator). În practică sistemele de operare moderne

oferă utilizatorului generatoare criptografice de numere aleatoare gata implementate.

Intrebări de verificare

Cum pot fi clasificate atacurile asupra reţelelor de calculatoare?

Ce sunt atacurile criptografice?

Ce se înţelege prin „asigurarea confidenţialităţii”?

Ce este o cheie publică?

Ce este un sistem criprografic asimetric?