protocolul de schimb de chei diffie-hellman

11
1 Protocolul de schimb de chei DiffieHellman − Referat − Student: Áron VIRGINÁSTAR Specializarea: Inteligență artificială și calcul distribuit, anul II Rezumat: Protocolul DiffieHellman oferă un mecanism simplu de acord asupra cheii, care se poate utiliza de entitățile care comunică printrun 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 Întrun 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 DiffieHellman 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 DiffieHellman 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. DiffieHellman este utilizat pe scară largă în protocoalele de securitate pentru internet. În capitolul 6 prezentăm pe scurt câteva dintre cele mai importante

Upload: aronvirginas

Post on 24-Jul-2015

546 views

Category:

Documents


1 download

DESCRIPTION

ReferatAutor: Áron Virginás‐Tar Master în Inteligență Artificială și Calcul Distribuit, anul 2Facultatea de Matematică și InformaticăUniversitatea de Vest din Timișoara

TRANSCRIPT

Page 1: Protocolul de schimb de chei Diffie-Hellman

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  

Page 2: Protocolul de schimb de chei Diffie-Hellman

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.      

Page 3: Protocolul de schimb de chei Diffie-Hellman

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ă.  

Page 4: Protocolul de schimb de chei Diffie-Hellman

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  

Page 5: Protocolul de schimb de chei Diffie-Hellman

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  

Page 6: Protocolul de schimb de chei Diffie-Hellman

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;  

Page 7: Protocolul de schimb de chei Diffie-Hellman

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ă  

Page 8: Protocolul de schimb de chei Diffie-Hellman

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]      

Page 9: Protocolul de schimb de chei Diffie-Hellman

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.  

Page 10: Protocolul de schimb de chei Diffie-Hellman

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.      

Page 11: Protocolul de schimb de chei Diffie-Hellman

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