protocolul de schimb de chei diffie-hellman
DESCRIPTION
ReferatAutor: Áron Virginás‐Tar Master în Inteligență Artificială și Calcul Distribuit, anul 2Facultatea de Matematică și InformaticăUniversitatea de Vest din TimișoaraTRANSCRIPT
1
Protocolul de schimb de chei Diffie-‐Hellman
− Referat −
Student: Áron VIRGINÁS-‐TAR Specializarea: Inteligență artificială și calcul distribuit, anul II Rezumat: Protocolul Diffie-‐Hellman oferă un mecanism simplu de acord asupra cheii, care se poate utiliza de entitățile care comunică printr-‐un canal considerat nesigur. Algoritmul, deși vulnerabil în anumite condiții, este încă utilizat pe scară largă și implementat în diferite soluții de securitate pentru internet. În acest referat prezentăm mecanismul de funcționare al protocolului, fenomenele matematice pe care se bazează securitatea acestuia și câteva strategii de atac prin care un adversar ar putea compromite protocolul. De asemenea, trecem în revistă câteva variante îmbunătățite ale schemei de bază și implementările din principalele protocoale care se utilizează pentru criptarea traficului pe internet.
1. Introducere Într-‐un sistem criptografic simetric părțile care comunică trebuie să fie echipate cu o cheie comună pentru a putea transmite mesaje criptate. În cazul în care transmițătorul și destinatarul nu au comunicat în trecut, aceștia trebuie să stabilească o cheie partajată pe care o vor utiliza în procesul de criptare-‐decriptare. Acesta devine o problemă în cazul în care canalul de comunicație este nesigur și un intrus poate intercepta orice informație transmisă. Această problemă se numește problema de stabilire a cheii sau problema schimbului de chei. În 1976 Whitfield Diffie și Martin Hellman au publicat un protocol criptografic care oferă o soluție simplă pentru problema schimbului de chei. Protocolul Diffie-‐Hellman permite părților care comunică prin intermediul unui canal nesigur să obțină o cheie comună, care să nu poate fi determinată în timp util de către un adversar care se află în posesia tuturor informațiilor transmise. Ideea care se află la baza protocolului Diffie-‐Hellman este comutativitatea și complexitatea computațională redusă a ridicării la putere în domeniul discret, în contrast cu dificultatea extragerii logaritmului discret, operație care nu se poate efectua în timp polinomial. O deficiență intrinsecă a protocolului este aceea că nu oferă o modalitate prin care o entitate poate stabili autenticitatea interlocutorului, fiind astfel vulnerabil față de atacurile de tip intrusul la mijloc. Această problemă va fi analizată în secțiunile 4 și 5. Diffie-‐Hellman este utilizat pe scară largă în protocoalele de securitate pentru internet. În capitolul 6 prezentăm pe scurt câteva dintre cele mai importante
2
astfel de protocoale, referindu-‐ne în mod special la modul în care acestea utilizează schema Diffie-‐Hellman. În secțiunea următoare descriem modul de funcționare a protocolului (varianta de bază), urmând ca în secțiunea 3 să prezentăm fundamentele matematice pe care se sprijină securitatea protocolului. 2. Descrierea protocolului de bază Protocolul de schimb de chei Diffie-‐Hellman oferă o soluție pentru următoarea problemă: Alice (𝒜) și Bob (ℬ) doresc să partajeze o cheie secretă pentru un sistem criptografic simetric, însă canalul lor de comunicație este nesigur, orice informație putând fi interceptată de Eve (ℰ), adversarul lor. În primul pas 𝒜 și ℬ se decid asupra unui număr prim p arbitrar de mare și un număr întreg g modulo p. Cele două numere sunt făcute publice, deci le va cunoaște și ℰ. În al doilea pas 𝒜 alege un număr întreg a pe care o păstrează secret. ℬ procedează în mod analog, selectând un număr întreg b secret. 𝒜 și ℬ își folosesc numerele secrete pentru a calcula
𝐴 ≡ 𝑔! (mod 𝑝)!"#!$#"% !" 𝒜
și 𝐵 ≡ 𝑔! (mod 𝑝)!"#!$#"% !" ℬ
.
În pasul următor cele două părți schimbă între ele valorile calculate:
𝒜!ℬ și ℬ
!𝒜.
Notăm că și ℰ are acces la aceste numere, deoarece canalul de comunicație între 𝒜 și ℬ este unul nesigur. În final 𝒜 și ℬ își utilizează numerele proprii împreună cu cele obținute unul de la altul pentru a obține
𝐴! ≡ 𝐵! (mod 𝑝)
!"#!$#"% !" 𝒜
și 𝐵! ≡ 𝐴! (mod 𝑝)!"#!$#"% !" ℬ
.
Cele două valori sunt de fapt identice, deoarece
𝐴! ≡ 𝐵! ≡ 𝑔! ! ≡ 𝑔!" ≡ 𝑔! ! ≡ 𝐴! ≡ 𝐵! (mod 𝑝). Această valoare comună va fi utilizată de către 𝒜 și ℬ pe post de cheie în sistemul criptografic simetric. Din punctul de vedere al adversarului, problema se formulează astfel: ℰ cunoaște A și B (deci 𝑔! și 𝑔!) plus valorile inițiale g și p. Pentru a putea afla cheia și – în urmare – descifra mesajul interlocutorilor, ℰ trebuie să calculeze numerele a și b, o problemă dificilă din punct de vedere computațional. Această problemă va fi prezentată în mai multe detalii în secțiunea 3.1.
3
2.1. Exemplu 𝒜 și ℬ se hotăresc să utilizeze numărul prim 𝑝 = 941 și rădăcina 𝑔 = 627. 𝒜 alege cheia secretă 𝑎 = 347 și calculează 𝐴 = 390 ≡ 627!"# (mod 941) . În același timp ℬ obține 𝐵 = 691 ≡ 627!"# (mod 941) pornind de la cheia secretă 𝑏 = 781. 𝒜 îi trimite numărul 390 lui ℬ și obține de la ℬ numărul 691. Datele se transmit printr-‐un canal nesigur, deci atât 𝐴 = 390 cât și 𝐵 = 691 se consideră informație publică. Notăm că numerele a și b nu se transmit și rămân secrete. În acest moment 𝒜 și ℬ pot amândoi calcula numărul
470 ≡ 627!"#·!"# ≡ 𝐴! ≡ 𝐵! (mod 941), care devine cheia secretă partajată. Să presupunem că ℰ a interceptat întregul proces de schimb. Ea va putea reconstrui secretul partajat al lui 𝒜 și ℬ dacă reușeste să rezolve una dintre congruențele
627! ≡ 390 (mod 941) și 627! ≡ 691 (mod 941). Bineînțeles numerele din acest exemplu sunt mult prea mici pentru a oferi siguranță, deoarece sistemul de calcul al lui ℰ poate verifica toate puterile posibile ale 627 modulo 941 într-‐un timp nesemnificativ. În practică p este un număr de aproximativ 1000 de biți (𝑝 ≈ 2!"""), iar g se alege astfel astfel încât ordinea acestuia să fie prim și aproximativ 𝑝 2. În aceste condiții problema adversarului ℰ devine foarte dificilă. [6]
Figura 1: Ilustrația protocolului Diffie-‐Hellman printr-‐o analogie mecanică. Lacătele nu au chei și sunt ușor de închis dar greu de deschis. Eve se află în situația nefavorabilă de a avea două lacăte închise, deschiderea cărora este dificilă.
4
3. Fundamente matematice Operațiile descrise de algoritmul Diffie-‐Helman se efectuează în interiorului unui grup. Un grup 𝐺,∘ este un cuplu alcătuit dintr-‐o mulțime 𝐺 și o operație binară ∘ care are următoarele proprietăți:
𝑎 ∘ (𝑏 ∘ 𝑐) = 𝑎 ∘ (𝑏 ∘ 𝑐) pentru oricare 𝑎, 𝑏, 𝑐 ∈ 𝐺 (asociativitate); există un element 1 ∈ 𝐺 (numit element neutru) astfel încât 1 ∘ 𝑎 = 𝑎 ∘
1 = 𝑎 pentru oricare 𝑎 ∈ 𝐺; pentru fiecare element 𝑎 ∈ 𝐺 există 𝑎!! ∈ 𝐺 (numit inversul elementului
a) astfel încât 𝑎!! ∘ 𝑎 = 𝑎 ∘ 𝑎!! = 1. 𝐺! este un subgrup al grupului G dacă 𝐺!,∘ formează un grup și 𝐺! ⊆ 𝐺. În cazul grupurilor finite, ordinea grupului este dată de cardinalitatea mulțimii 𝐺. Ordinea unui element 𝑎 ∈ 𝐺 este dată de cea mai mică valoare t pentru care 𝑎! = 𝑎 ∘ 𝑎 ∘… ∘ 𝑎 = 1
!.
Un grup ciclic este un grup ale cărui elemente sunt puteri ai unui element g. În acest caz g se numește generatorul grupului ciclic 𝐺,∘ . Ordinea generatorului g coincide cu ordinea grupului generat. Grupurile utilizate în general de protocoalele de tip Diffie-‐Helman sunt: mulțimea ℤ!∗ cu operația de înmulțire modulo p (unde p este prim), grupul multiplicativ al corpului 𝔽!! și grupul aditiv format din colecția punctelor unei curbe eliptice peste un corp finit. Toate aceste grupuri au proprietatea că determinarea puterilor este ieftină din punct de vedere computațional, pe când calcularea logaritmilor discreți este dificilă. [4] Securitatea protocolului rezultă tocmai din această proprietate. [2] În timp ce operaţia de ridicare la putere în ℤ!∗ este comutativă, extragerea logaritmului discret nu este rezolvabilă în timp polinomial. [5] În cele ce urmează vom prezenta problemele computaționale care stau la baza protocolului. 3.1. Probleme computaționale conexe Fie G un grup ciclic finit generat de g. Problema obținerii 𝑔!!!! din 𝑔!! și 𝑔!! se numește problema computațională Diffie-‐Hellman (CDH) pentru g. În cazul unor grupuri pentru care problema CDH este dificilă, chiar și verificarea corectitudinii unei soluții se dovedește dificilă. Această problemă se numește problema decizională Diffie-‐Hellman (DDH) și se poate exprima formal în felul următor: având 𝑔! , 𝑔! și 𝑔! să se decide dacă 𝑔! = 𝑔!" . O modalitatea de rezolvare a problemei CDH este de a determina mai întâi 𝑠! sau 𝑠! din 𝑔!! sau 𝑔!! . Problema obținerii din 𝑏 ∈ 𝐺 a unui număr s astfel încât 𝑎! = 𝑏 se numește problema logaritmului discret (DL) pentru g. [2] Soluţia banală pentru această problemă este căutarea exhaustivă, acesta însă presupune 𝑂 𝑛 multiplicări, unde n este ordinea grupului g. Căutarea se poate optimiza prin algoritmul baby-‐step/giant-‐step care se bazează pe rescrierea 𝑥 = 𝑖𝑚 + 𝑗, unde 𝑚 = 𝑛 + 1 cu 0 ≤ 𝑖 < 𝑚 și 0 ≤ 𝑗 < 𝑚. În acest mod se poate popula o tabelă sortată cu puterile lui a până la j. Odată realizată această tabelă, se calculează succesiv valorile 𝑎!! !𝑎! și se verifică dacă rezultatul se află în tabel. În caz afirmativ se poate determina x din valorile i și j. Complexitatea
5
acestui algoritm este 𝑂 𝑛 , însă limitarea majoră este faptul că algoritmul folosește 𝑂 𝑛 memorie. Cea mai performantă metodă pentru rezolvarea problemei logaritmului discret este algoritmul de calcul indexat, al cărui avantaj principal este faptul că poate fi presetat pe un anumit grup și apoi utilizat pentru oricare generator al acestuia. Însă pentru valori mari ale ordinului grupului nici acest algoritm nu este suficient de eficient, problema logaritmului discret rămânând astfel nerezolvabilă în practică. În plus metoda calculului indexat nu funcționează asupra problemei logaritmului discret pe curbe eliptice. [5] 4. Protocoale derivate din Diffie-‐Hellman Versiunea de bază a protocolului oferă protecție prin confidențialitatea cheii față de adversarii pasivi, care doar monitorizează canalul de comunicație. Însă în fața adversarilor activi, care pot intercepta, modifica și injecta mesaje, metoda Diffie-‐Hellman s-‐a dovedit insuficientă. Nici una din cele două entități implicate în protocol nu obține asigurări în ceea ce privește autencititatea sursei mesajului primit sau identitatea entității care poate cunoaște cheia rezultată. [1] S-‐au publicat mai multe modificări ale protocolului cu scopul de a corecta defectele prezentate mai sus. În cele ce urmează vom descrie câteva dintre aceste protocoale înrudite. 4.1. Variantă cu exponențierile fixate Este o variantă a protocolului Diffie-‐Hellman care oferă autentificare mutuală a cheii. În această variantă 𝑔! mod 𝑝 și 𝑔! mod 𝑝 sunt fixate ca și chei publice pe termen lung pentru entitățile 𝒜 și ℬ și sunt distribuite prin intermediul unor certificate semnate. În felul acesta se obține o cheie partajată pe termen lung pentru acestă pereche de entități, 𝐾 = 𝑔!" . Dacă certificatele sunt dispoibile, protocolul de acord asupra cheii devine unul fără mesaje, ceea ce constituie un avantaj. Pe de altă parte însă, faptul că valoarea cheii K nu se modifică în timp crește vulnerabilitatea sistemului. [1] 4.2. Protocolul ELGamal (Diffie-‐Hellman certificat pe jumătate) Protocolul ElGamal pentru acord asupra cheii este un protocol cu un singur mesaj care oferă autentificare unilaterală a cheii (a destinatarului în fața originatorului). În acest scop, cheia publică a destinatarului trebuie să fie cunoscută în prealabil de originator. Protocolul seamănă cu Diffie-‐Hellman, diferența fiind că exponentul public al destinatarului este fixat și autenticitatea acestuia se poate verifica, fiind inclus într-‐un certificat. Protocolul ElGamal presupune următorii pași:
ℬ alege un număr prim p și un generator g al lui ℤ!∗ . De asemenea, alege un număr aleator 𝑏, 1 ≤ 𝑏 ≤ 𝑝 − 2 și calculează 𝑔! mod 𝑝 . ℬ pune la dispoziția tuturor cheia sa publică formată din (𝑝,𝑔,𝑔!), iar cheia sa privată b o păstrează secretă;
De fiecare dată când este nevoie de o cheie partajată, 𝒜 obține o copie autentică a cheii publicate de către ℬ, (𝑝,𝑔,𝑔!). 𝒜 alege un număr aleator
6
𝑎, 1 ≤ 𝑎 ≤ 𝑝 − 2 și trimite lui ℬ un mesaj cu rezultatul operației 𝑔! mod 𝑝. 𝒜 obține cheia 𝐾 = (𝑔!)! mod 𝑝;
La primirea mesajului, ℬ calculează aceeași cheie, 𝐾 = (𝑔!)! mod 𝑝. În acest protocol ℬ nu are nicio dovadă în legătura cu identitatea entității cu care partajează cheia secretă. [1] Spargerea protocolului El Gamal este echivalentă cu rezolvarea problemei Diffie-‐Hellman. 4.3. Protocolul MTI/A0 O altă variantă a protocolului Diffie-‐Hellman este protocolul MTI/A0 cu două mesaje, care nu necesită semnături digitale. În urma rulării protocolului se obține o cheie de sesiune care depinde de timp și care este autentificată mutual în mod implicit împotriva atacurilor pasive. Protocolul operează în mod similar cu ElGamal, 𝒜 trimite lui ℬ un singur mesaj din care rezultă o cheie partajată K. ℬ inițiază, în mod independent, un protocol analog cu 𝒜 din care rezultă cheia partajată 𝐾! . În final 𝒜 și ℬ calculează cheia 𝑘 = 𝐾𝐾! mod 𝑝 . În continuare detaliem pașii protocolului:
Se alege și se publică (într-‐un mod care garantează autenticitatea) un număr prim p și un generator g al grupului ℤ!∗ , 2 ≤ 𝑔 ≤ 𝑝 − 2. Entitatea 𝒜 alege, ca și cheie privată pe termen lung, un număr aleator 𝑎, 1 ≤ 𝑎 ≤ 𝑝 − 2 și calculează cheia publică pe termen lung 𝑘𝒜 = 𝑔! mod 𝑝. În mod analog ℬ obține cheile b și 𝐾ℬ . 𝒜 are acces la copia autentificată a cheii publice a lui ℬ și reciproc;
𝒜 alege un secret aleator 𝑥, 1 ≤ 𝑥 ≤ 𝑝 − 2 și îi trimite lui ℬ mesajul 𝑔! mod 𝑝;
ℬ alege un secret aleator 𝑦, 1 ≤ 𝑦 ≤ 𝑝 − 2 și îi trimite lui 𝒜 mesajul 𝑔! mod 𝑝;
𝒜 calculează cheia 𝐾 = (𝑔!)!𝑘ℬ! mod 𝑝; ℬ calculează cheia 𝐾 = (𝑔!)!𝑘𝒜! mod 𝑝. În acest mod cheia partajată este
𝐾 = 𝑔!"!!" . MTI/A0 este potrivit pentru aplicații în care sunt posibile doar atacuri pasive, însă este vulnerabil în fața anumitor atacuri active. [1] 4.4. Protocolul STS (Station-‐to-‐Station) STS este o variantă a protocolului Diffie-‐Hellman care permite stabilirea unei chei secrete partajate între două entități cu autentificare mutuală. Protocolul a fost dezvoltat în urma unor rezultate anterioare asupra securității telefoniei ISDN. Punctul forte al acestui protocol este faptul că permite anonimatul părților implicate, astfel identitățile 𝒜 și ℬ sunt protejate de atacatorii care interceptează mesajele. Metoda se bazează pe semnături digitale. În cele ce uremază vom descrie pașii protocolului în cadrul semnăturii digitale RSA:
Se alege și se publică un număr prim p și un generator g al grupului ℤ!∗ , 2 ≤ 𝑔 ≤ 𝑝 − 2.
𝒜 alege cheia publică (𝑒𝒜 ,𝑛𝒜) și cea privată 𝑑𝒜 pentru semnătura digitală RSA. ℬ va avea o pereche similară de chei. Presupunem că fiecare entitate are acces la cheia publică autentică a celeilalte;
7
𝒜 alege un secret aleator 𝑥, 1 ≤ 𝑥 ≤ 𝑝 − 2 și îi trimite lui ℬ mesajul 𝑔! mod 𝑝;
ℬ alege un secret aleator 𝑦, 1 ≤ 𝑦 ≤ 𝑝 − 2 și calculează cheia de sesiune 𝑘 = (𝑔!)! mod 𝑝. ℬ semnează ambele valori obținute prin exponențiere, criptează această semnătură cu ajutorul cheii calculate ți îi trimite lui 𝒜 mesajul format din 𝑔! mod 𝑝 și 𝐸!(𝑆ℬ(𝑔! ,𝑔!)) , unde E reprezintă un algoritm de criptare simetric, iar S este notația semnăturii digitale;
𝒜 calculează cheia de sesiune 𝑘 = (𝑔!)! mod 𝑝 , decriptează mesajul criptat și, folosind cheia publică a lui ℬ , verifică semnătura digitală obținută prin decriptare. Dacă semnătura se dovedește validă, 𝒜 acceptă cheia k ca fiind partajată cu ℬ , și îi trimite lui ℬ semnătura criptată 𝐸!(𝑆𝒜(𝑔! ,𝑔!));
ℬ verifică semnătura primită și, dacă verificarea se încheie cu succes, ℬ acceptă cheia k ca fiind partajată cu 𝒜.
5. Securitatea protocolului. Atacuri posibile În studiul atacurilor asupra protocoalelor de schimb de chei facem distincția între entități legitime, cele care comunică pentru a obține un obiectiv și terți neautorizați cu diverse nume în diverse circumstanțe: adeversar, intrus, oponent, inamic, atacator, impersonator, etc. Se presupune că mesajele protocolului sunt transmise prin rețele deschise, neprotejate. Un adversar poate controla toate datele: are posibilitatea de a înregistra, modifica, insera, redirecta și refolosi mesaje vechi sau mesajele curente, și poate injecta mesaje noi. Entitățile legitime pot primi mesaje de la alte entități legitime sau de la adversari. Un adversar poate, de asemenea, să determine anumite entități legitime neavizate să inițieze noi instanțe de protocol. Există mai multe strategii de atac pentru un adversar:
să deducă cheia de sesiune folosind informația obținută prin ascultarea liniilor de comunicație;
să participe în mod ascuns la un protocol inițiat de o entitate cu o altă entitate și să influențeze protocolul prin modificarea mesajelor astfel încât să poată deduce cheia;
să inițieze una sa multe execuții ale protocolului și să combine mesaje dintr-‐o instanță a protocolului cu mesaje dintr-‐o altă instanță.
În varianta de bază a protocolului, care nu oferă un mecanism pentru autentificarea părților, impersonarea este prin definiție posibilă. [1] În secțiunea 4 am descris câteva variante modificate și hibride care își propun să adreseze această deficiență. În cele ce urmează prezentăm câteva strategii importante de atac împotriva variantelor de schimb de chei Diffie-‐Hellman. 5.1. Intrusul la mijloc Un adversar activ 𝒪 (Oscar), capabil să șteargă și să adauge mesaje, poate sparge protocolul de bază. Prin interceptarea valorilor 𝑔! și 𝑔! și înlocuirea lor cu 𝑔!! și 𝑔!! , 𝒪 poate convinge părțile 𝒜 și ℬ că aceștia partajează o cheie secretă. 𝒜 va crede că 𝑔!!! este cheia secretă, iar ℬ va crede că 𝑔!!! reprezintă
8
secretul partajat. În cazul în care protocolul Diffie-‐Hellman este utilizat împreună cu un algoritm de criptare E, un scenariu posibil de atac este următorul:
𝒜 trimite 𝐸!!!!(𝑚), unde m reprezintă mesajul (textul clar) iar 𝑔!!! este
cheia presupusă de 𝒜; 𝒪 interceptează și decriptează 𝐸!!!!(𝑚), ceea ce este posibil deoarece
cunoaște 𝑔!!!; 𝒪 înlocuiește mesajul original cu 𝐸!!!!(𝑚
!) și îi trimite lui ℬ. În această schemă confidențialitatea este compromisă, iar intrusul este capabil să manipuleze mesajele. Deși adversarul este capabil să spargă complet protocolul, observăm că pentru a reuși 𝒪 trebuie să fie puternic. În continuare prezentăm modalități de atac care pot fi utilizate de un adversar cu posibilități mai limitate. [4] 5.2. Atacuri bazate pe mesaje degenerate Existe cazuri limită în care protocolul nu funcționează. De exemplu când 𝑔! sau 𝑔! este egal cu 1, secretul partajat va deveni de asemenea 1. Canalul de comunicație fiind deschis, orice adversar poate detecta și profita de această anomalie. Din fericire acest caz este practic eliminat, deoarece x se alege din intervalul 2 ≤ 𝑔 ≤ 𝑝 − 2. Notăm însă că și un exponent 𝑥 ≠ 1 suficient de ușor de determinat poate compromite securitatea protocolului. În cazul în care părțile nu tratează cazul degenerat în care 𝑔! și 𝑔!sunt 1, protocolul devine vulnerabil. Un intrus 𝒪 capabil să intercepteze și să manipuleze mesajele poate urmări următoarea strategie:
𝒪 interceptează 𝑔! și 𝑔! și le înlocuiește cu 1; 𝒜 și ℬ obține aceeași cheie egală cu 1. Dacă cele două părți nu detectează
invalidatatea aceastei chei, confidențialitatea este compromisă. [4] 5.3. Atacuri bazate pe algoritmul lambda Pollard Metoda lambda Pollard ne permite să obținem z din 𝑔! atunci când z se alege din intervalul [𝑏, 𝑏 + 𝑤] în timp 𝑂(𝑤
!!). Acest atac devine extrem de relevant în
momentul în care se dorește limitarea intervalului de exponenți pentru o utilizare mai eficientă a resurselor. De exemplu, în cazul în care 𝑥,𝑦 < 2! ≪ 𝑝, atacatorul poate calcula x și y în 𝑂(2
!!). Astfel, pentru a ne asigura că atacatorul
are nevoie de cel puțin 𝑂(2!) operații pentru a determina logaritmul discret, x și y trebuie să se aleagă dintr-‐un interval de dimensiunea 2!! . În plus este extrem de important alegerea unui grup suficient de mare pentru care rezolvarea problemei logaritmului discret este dificilă chiar și cu cel mai bun algoritm. Deoarece algoritmii bazați pe calcul indexat s-‐au dezvoltat în mod constant în ultimele decenii, este greu de stabilit ce dimensiune minimă a valorii p garantează securitate pe termen lung. În general se consideră că un p de cel puțin 1024 de biți oferă securitate moderată, iar pentru securitate pe termen lung se recomandă minim 2048 de biți. [4]
9
6. Implementări Partajarea unei chei secrete este importantă între două părți care nu au comunicat în trecut și sunt nevoiți să comunice într-‐un mediu nesigur. Metoda Diffie-‐Hellman oferă o soluție simplă pentru această problemă și este folosit în mai multe protocoale utilizate pe internet, printre care Secure Sockets Layer (SSL), Secure Shell (SSH) și Internet Protocol Security (IPSec). [3] În acestă secțiune vom prezenta pe scurt aceste protocoale și ne vom referi la modul în care implementează algoritmul Diffie-‐Hellman. 6.1. Diffie-‐Hellman în SSL Secure Sockets Layer (SSL) este un protocol criptografic dezvoltat de Netscape în 1995. SSL a devenit între timp standardul de facto pentru securizarea fluxului de informații între utilizatorii de internet și serverele web (în special în ceea ce privește traficul financiar, de exemplu tranzacțiile bancare). În acest context securizarea informației înseamnă asigurarea confidențialității (prevenirea interceptării), autentificarea transmițătorului și asigurarea integrității mesajului. În 1999 comunitatea Internet Engineering Task Force (IETF) a adoptat acest protocol și l-‐a redenumit Transport Layer Security (TLS). SSL/TLS funcționează pe două nivele:
nivelul inferor se numește protocol de înregistrare (Record Protocol). Este așezat deaspura protocolului TCP și are rolul de a asigura prin criptare simetrică confidențialitatea și integritatea comunicării;
nivelul superior, numit protocol de strângere de mână (Handshake Protocol), este responsabil pentru autentificarea părților și negocierea privind metodele de criptare și cheile folosite. Acesta este nivelul pe care se poate utiliza algoritmul Diffie-‐Hellman.
La începutul procesului de comunicare clientul și serverul schimbă între ei mesaje de strângere de mână necriptate. Oferă informații unul celuilalt în privința algoritmului de criptare, cheii și algoritmului de compresie acceptat și preferat. De asemenea, prin intermediul scimbului de certificate PKI/X.509, părțile aleg o metodă de schimb de chei, o opțiune fiind Diffie-‐Hellman. [3] 6.2. Diffie-‐Hellman în SSH Secure Shell (SSH) este un protocol și un instrument software utilizat pentru criptarea traficului între două calculatoare. Scopul acestuia este aceea de a oferi o alternativă sigură pentru soluțiile de comunicare care nu asigură criptarea traficului, cum ar fi telnet, ftp, rsh, etc. SSH a fost creat de Tatu Ylonen în 1995. S-‐a răspândit rapid în comunitatea UNIX și în curând a devenit disponibil și pe alte platforme. În prezent există atât implementări comerciale cât și open source, iar un grup de lucru din cadrul IETF este responsabil pentru formalizarea și standardizarea protocolului. Nivelul de transport, numit SSH Transport Layer, rulează peste TCP folosind portul 22 și oferă sprijin pentru subprotocoalele de nivel înalt, cum ar fi SSH Connection Protocol, care oferă sesiuni interactive de conectare de la distanță, execuția comenzilor de la distanță, redirecționarea conexiunilor X11, etc.
10
Cele două părți (clientul și serverul) încep conversația prin negocierea parametrilor: algritmul de criptare, metode de compresie și anumite numere aleatoare. Apoi se recurge la protocolul Diffie-‐Helman pentru a calcula un număr secret comun. Peste acestă valoare secretă se aplică o funcție hash pentru a deriva o cheie de criptare pentru algoritmul simetric negociat. Din acest moment amândouă părți se folosesc de această cheie pentru a cripta și decripta informația transmisă. [3] 6.3. Diffie-‐Hellman în IPSec Internet Protocol Security (IPSec) este un protocol creat de IETF cu scopul de a încorpora o modalitate de comunicare sigură la nivelul IP. Protocoalele prezentate înainte (SSl, SSH) sunt specifice anumitor aplicații și securizează doar traficul inițiat din aceste aplicații. În contrast, IPSec este proiectat astfel încât să ofere protecție pentru orice trafic IP, independent de aplicație. Din această abordare rezultă că nici aplicațiile, nici utilizatorii nu trebuie să cunoască detaliile procesului de criptare, acesta fiind transparent din punctul lor de vedere. Asemenea protocoalelor prezentate până acum, IPSec utilizează algoritmul Diffie-‐Hellman împreună cu un sistem criptogrfic asimetric pentru a stabili identitatea părților, algoritmii de criptare preferați și un secret partajat. După faza de negociere se folosește algoritmul selectat pentru a cripta pachetele de date transferate. Înainte de a începe criptarea este necesară un shimb de date preliminare, care se realizeaza prin protocolul Internet Key Exchange (IKE). Acest protocol operează în două faze, după cum urmează:
prima fază oferă un mecanism prin care cele două părți se pot decide asupra parametrilor de securitate. Părțile utilizează protocolul Diffie-‐Hellman pentru a obține o cheie secretă comună.
în faza a doua se utilizează cheia secretă partajată pentru a cripta schimbul de informații prin care se stabilesc parametrii pentru criptarea datelor efective. [3]
7. Rezumat și concluzii Într-‐un mediu de comunicare nesigur stabilirea unei chei comune între interlocutori astfel încât un eventual intrus să nu poate deduce cheia este o problemă importantă. Protocolul Diffie-‐Hellman oferă o soluție simplă pentru această problemă, fiind una dintre primele scheme de scimb de chei utilizate în criptografie. Deși protocolul este vulnerabil în fața unor atacuri active, acesta se utilizează în mai multe protocoale de securitate dezvoltate pentru mediul internet.
11
Bibliografie [1] H. G. Oros – Protocoale de securitate pentru sisteme distribuite, Oradea, 2009 [2] Ü. M. Maurer – The Diffie-‐Hellman Protocol, in Designs, Codes and Cryptography, Vol. 19, pp. 147-‐171, 2000 [3] D. A. Carts – A Review of the Diffie-‐Hellman Algorithm and its Use in Secure Inter-‐ net Protocols, 2001, available at http://www.sans.org/rr/whitepapers/vpns/751.php [4] J. F. Raymond, A. Stiglic – Security Issues in the Diffie-‐Hellman Key Agreement Protocol, in IEEE Transactions on Information Theory, 2000 [5] B. Groza – Introducere în sistemele criptografice cu cheie publică [6] J. Hoffstein, J. Pipher, J. H. Silverman – An Introduction to Mathematical Cryptography, Springer, 2008, ISBN: 978-‐0387779935