Protocolul Needham-Schroeder

Notații criptografice utilizate în protocoalele de autentificare și schimb de chei
Identificatorii lui Alice ( Alice ), inițiatorul sesiunii
Identificatorul lui Bob ( Bob ), partea din care se stabilește sesiunea
Identificatorul Trent ( Trent ), o parte intermediară de încredere
Cheile publice ale lui Alice, Bob și Trent
Cheile secrete ale lui Alice, Bob și Trent
Criptarea datelor cu cheia lui Alice sau cheia comună a lui Alice și Trent
Criptarea datelor cu cheia lui Bob sau cheia comună a lui Bob și Trent
Criptarea datelor cu cheile secrete ale lui Alice, Bob (semnătură digitală)
Numărul secvenței sesiunii (pentru a preveni atacurile de reluare)
Cheie aleatorie de sesiune care trebuie utilizată pentru criptarea simetrică a datelor
Criptarea datelor cu o cheie de sesiune temporară
Marcaje temporale adăugate mesajelor de către Alice și, respectiv, Bob
Numere aleatoare ( nonce ) care au fost alese de Alice și, respectiv, de Bob

Protocolul Needham-Schroeder este un nume comun pentru autentificarea  simetrică și asimetrică și protocoalele de schimb de chei. Ambele protocoale au fost propuse de Michael Schroeder și Roger Needham [1] . O variantă bazată pe criptarea simetrică folosește o parte intermediară de încredere. Acest protocol a devenit baza pentru o întreagă clasă de astfel de protocoale. De exemplu, Kerberos este una dintre opțiunile pentru protocolul simetric Needham-Schroeder. O variantă bazată pe criptarea asimetrică este concepută pentru autentificarea reciprocă a părților. În forma lor originală, ambele versiuni ale protocolului sunt vulnerabile [2] [3] .

Istorie

Un protocol pentru autentificarea cheii simetrice, poate cel mai faimos protocol de autentificare și stabilire a cheilor, a fost formulat de Michael Schroeder și Roger Needham în 1978 [1] . Cu toate acestea, este vulnerabilă la un atac inventat de Dorothy E. Denning  și Giovanni Maria Sacco în 1981 [ 2] .  În ciuda acestui fapt, a devenit baza pentru o întreagă clasă de astfel de protocoale. În special, protocolul Kerberos este una dintre variantele protocolului de autentificare Needham-Schroeder bazat pe o terță parte de încredere și modificările sale propuse de Denning și Sacco [2] . Protocolul Needham-Schroeder pentru autentificarea cu cheie publică este, de asemenea, vulnerabil. În 1995, Gavin Lowe a descris un posibil atac asupra protocolului [3] .  

Protocolul Needham-Schroeder pentru autentificarea cheii simetrice

Cu o schemă de criptare a cheii simetrice, se presupune că cheia secretă este cunoscută atât de serverul de autentificare (Trent), cât și de ambii subiecți de schimb : (Alice) și (Bob). Inițial, ambii subiecți au chei secrete: și , cunoscut doar de ei și de o parte de încredere - serverul de autentificare. În timpul execuției protocolului, Alice și Bob primesc o nouă cheie de sesiune secretă de la server pentru a cripta mesajele reciproce în această sesiune de comunicare, adică numai Bob poate decripta mesajele de la Alice la Bob, doar Alice poate decripta mesajele de la Bob la Alice . În plus, subiecții schimbului trebuie să fie siguri că mesajul primit a fost trimis exact celor cu care ar trebui să aibă loc schimbul. Bob trebuie să fie sigur că a primit mesajul de la Alice și invers. Acest lucru este prevăzut și de protocol. Să presupunem că schimbul este inițiat de Alice. Vom presupune că au un server de autentificare comun. Luați în considerare implementarea protocolului [4] :

Schimbul începe cu Alice generând un număr aleator (identificator) care este folosit o dată. Primul mesaj de la Alice către Trent conține numele participanților la schimbul viitor și un număr aleatoriu generat de Alice:

Acest mesaj este trimis în text clar, dar poate fi criptat cu cheia lui Alice :

La primirea acestui mesaj, Trent preia cheile private ale lui Alice și Bob din baza de date: și , și calculează o nouă cheie de sesiune . Trent îi trimite apoi lui Alice următorul mesaj:

Alice poate decoda și citi mesajul de la Trent. Ea își verifică ID-ul în mesaj, ceea ce confirmă că mesajul este un răspuns la primul ei mesaj către Trent. De asemenea, verifică numele subiectului cu care urmează să facă schimb de date. Această verificare este obligatorie, deoarece dacă acest nume nu ar exista, Intrusul ar putea înlocui numele lui Bob cu al său în primul mesaj, iar Alice, nebănuind nimic, ar interacționa în continuare cu Intrusul. O parte a mesajului nu poate fi citită de Alice deoarece această parte este criptată cu cheia lui Bob. Alice îi trimite lui Bob un fragment criptat cu cheia lui:

Numai Bob îl poate decripta, deoarece este criptat cu cheia sa privată. După decriptare, Bob deține și cheia de sesiune . Numele lui Alice din mesaj confirmă faptul că mesajul este de la ea. În plus, la schimbul de date, se va folosi cheia de sesiune. Pentru a face schema simetrică și a reduce șansa unui atac de reluare , Bob generează un număr aleator (ID-ul lui Bob) și îi trimite lui Alice următorul mesaj, criptat cu cheia de sesiune:

Alice îl decriptează și trimite răspunsul pe care Bob îl așteaptă, de asemenea criptat cu cheia de sesiune:

Pentru partenerii care interacționează în mod regulat, puteți reduce numărul de mesaje la trei eliminând primele două. În acest caz, cheia va fi folosită în mod repetat [5] .

Un atac asupra protocolului Needham-Schroeder pentru autentificarea cheii simetrice

Protocolul Needham-Schroeder este vulnerabil la un atac de retransmitere a mesajelor inventat de Dorothy E. Denning  și Giovanni Maria Sacco în 1981 [ 2] .  În timpul atacului, Atacatorul interceptează și înlocuiește mesajele de la paragrafele 3,4,5 din protocol. Atacatorul interceptează mesajul de la Alice către Bob în a treia etapă a protocolului și o blochează pe Alice. Apoi înlocuiește mesajul curent al lui Alice cu altul din vechea sesiune dintre Alice și Bob. Pe baza presupunerii că vechea cheie de sesiune este vulnerabilă, un atacator poate afla valoarea acesteia și poate începe să schimbe date cu Bob sub masca lui Alice [4] .

Drept urmare, Bob crede că are o nouă cheie de sesiune cu Alice, dar de fapt cheia este veche și cunoscută atacatorului.

Luați în considerare o posibilă implementare a atacului:

Drept urmare, Bob este sigur că a stabilit o sesiune de comunicare cu Alice, deoarece toți pașii de protocol necesari au fost executați corect și toate mesajele s-au dovedit a fi corecte.

Acest atac dă naștere unui pericol mai grav - lipsa unei legături reale între parteneri. Atacatorul nu trebuie să aștepte ca Alice să înceapă protocolul. Deoarece cunoaște vechea cheie de sesiune , poate începe atacul el însuși pornind protocolul de la pasul 3. Bob va crede că a luat contact cu Alice, în timp ce Alice nu a contactat deloc [6] .

Remediere vulnerabilități

Denning și Sacco au propus folosirea marcajelor de timp în mesaje pentru a preveni atacuri precum cel discutat mai sus [2] . Să desemnăm o astfel de etichetă cu o literă . Luați în considerare opțiunea de a remedia vulnerabilitatea:

  1. ,

După ce au primit mesaje de protocol de la Trent, Alice și Bob pot descoperi că mesajele lor au rămas fără răspuns verificând inegalitatea:

unde (ora curentă) este ora locală curentă a destinatarului;  este un interval care reprezintă diferența admisibilă dintre ora Trent și ora locală;  este întârzierea estimată. De aici sunt convinși de „prospețimea” mesajelor și în special de cheia sesiunii. Deoarece marca temporală este criptată cu cheile secrete ale lui Alice și Bob, imitația lui Trent este imposibilă într-o schemă de criptare ideală [7] .

De asemenea, în această specificație de protocol revizuită , necesitatea de a proteja integritatea datelor este subliniată în mod explicit. Dacă mesajele schimbate între participanții la protocol nu au fost distorsionate în timpul transmiterii, atunci după procedura de verificare , ambele părți pot fi sigure că cheia de sesiune este compatibilă atât cu utilizatorii, cât și cu identificatorul de „prospețime”. Acest lucru ar trebui să-i convingă că unul pe celălalt este autentic și că vechea cheie de sesiune nu este folosită [8] .

Cazul diferitelor servere de autentificare

În viața reală, Alice și Bob ar putea fi suficient de departe unul de celălalt încât să nu existe un server de autentificare comun [5] . Din acest motiv, în general, Alice poate avea propriul ei server de autentificare: , iar Bob al său: . Deoarece în acest caz, Alice se confruntă și cu sarcina de a construi un mesaj de formă pentru Bob . Ambele servere vor fi implicate în formarea acestuia, deoarece poate cripta doar cu cheia lui Alice și poate folosi doar cheia lui Bob: . În același timp, se presupune că se asigură securitatea schimburilor între servere. Luați în considerare un exemplu pentru cazul a două servere diferite care au o conexiune unul cu celălalt:

Pașii 1, 4-7 corespund pașilor 1-5 din cazul serverului de autentificare comun de mai sus. La al doilea pas, serverul lui Alice, negăsindu-l pe Bob în lista clienților săi, contactează serverul lui Bob. El cunoaște cheia lui Bob și poate efectua criptarea necesară. După aceea, informațiile criptate sunt trimise înapoi la serverul de autentificare al lui Alice, care le trimite lui Alice [5] .

Protocolul de autentificare a entității

Mecanismul „răspuns-revocare” [9] al protocolului oferă așa-numita autentificare a entității [ISO 1] . Autentificarea unei entități se realizează prin verificarea de către utilizatorul de verificare a unei operațiuni criptografice. Demonstrează existența unui utilizator de prover, care este considerat confirmat dacă utilizatorul de prover a efectuat o operație criptografică după evenimentul pe care un alt utilizator o consideră ultima.

În a doua etapă a protocolului Needham-Schroeder, Alice decriptează numărul aleator unic , pe care ea însăși l-a generat în prima etapă. Acest lucru confirmă faptul că Trent a efectuat criptarea după ce a primit mesajul de la Alice. Drept urmare, Alice știe că Trent a existat după acest eveniment, adică Trent a trecut autentificarea existenței în raport cu Alice. În același timp, Bob, participând la același protocol, nu poate fi sigur de existența lui Trent [7] .

Protocolul Needham-Schroeder pentru autentificarea cu cheie publică

Criptosisteme cu cheie publică

Să introducem notația:

Mai mult decât atât, doar Alice știe cheia secretă, iar cheia publică este cunoscută de alții.

Aceasta înseamnă că textul cu criptare perfectă este garantat a fi creat de Alice, deoarece numai ea deține această cheie secretă. De aceea, textul cifrat se numește semnătură digitală de mesaj . Decriptarea sa folosind cheia publică se numește verificarea semnăturii lui Alice [10] .

Protocolul Needham-Schroeder pentru autentificarea cu cheie publică

O variantă asimetrică (schemă cu două chei) a protocolului Needham-Schroeder. Trent deține cheile publice ale tuturor clienților pe care îi deservește. Alice are o cheie publică și o cheie privată , Bob le are pe amândouă , Trent le are și . Lasă-l pe Alice să inițieze o nouă sesiune cu Bob [11] :

Alice, inițiatoarea protocolului, îi cere lui Trent cheia publică a lui Bob în primul mesaj:

La care Trent, aflat la a doua etapă a protocolului, răspunde cu un mesaj cu cheia publică a lui Bob și numele lui. Mesajul este criptat cu cheia privată a lui Trent , adică este semnătura lui digitală . Această semnătură ar trebui să o convingă pe Alice că a primit mesajul de la Trent. Se presupune că Alice cunoaște cheia publică a lui Trent și este capabilă să decripteze mesajul, adică să verifice semnătura.

Apoi, Alice generează un număr aleatoriu și îl trimite lui Bob împreună cu numele ei, după ce l-a criptat anterior cu cheia publică a lui Bob.

Numai Bob poate decripta acest mesaj, deoarece aceasta necesită cheia sa privată . Din mesaj, află că Alice vrea să înceapă să facă schimb de date cu el. Prin urmare, Bob are nevoie de cheia publică a lui Alice și efectuează aceleași operațiuni ca și Alice:

Drept urmare, participanții la schimb cunosc cheile publice ale celuilalt. După aceea, autentificarea reciprocă este efectuată folosind numere aleatorii generate :

Needham și Schroeder au sugerat utilizarea numerelor pentru a inițializa cheia secretă partajată [1] , care oferă o conexiune secretă între Alice și Bob. Denning și Sacco au subliniat ulterior că acest protocol nu garantează că cheile publice sunt noi și nu sunt duplicate ale celor vechi. Această problemă poate fi rezolvată în diferite moduri, în special, prin utilizarea marcajelor de timp [2] în mesajele cu chei. Needham și Schroeder au luat în considerare și utilizarea marcajelor de timp, dar au respins această idee din cauza lipsei unui standard de timp calitativ [12] .

Un atac asupra protocolului Needham-Schroeder pentru autentificarea cu cheie publică

Un atac asupra protocolului a fost propus de Gavin Lowe [3 ] .  El a împărțit protocolul în două părți care nu erau legate logic. Prima: 1, 2, 4, 5 etape ale protocolului - obținerea unei chei publice. A doua: 3, 6, 7 etape - Autentificare Alice și Bob. Vom presupune că prima parte a avut loc și vom lua în considerare a doua:

3. 6. 7.

Lăsați atacatorul să fie o persoană care este un utilizator legitim al sistemului . El poate conduce sesiuni standard de comunicare cu alți utilizatori ai sistemului. Pentru atac se folosește lansarea simultană a două protocoale: în primul, Alice conduce o sesiune corectă cu Atacatorul, în al doilea, Atacatorul o uzurpează pe Alice atunci când comunică cu Bob [13] .

1.3. 2.3. 2.6. 1.6. 1.7. 2.7.

La pasul 1.3, Alice trimite un număr aleatoriu Atacatorului, pe care Atacatorul îl trimite imediat lui Bob la etapa 2.3 a altui protocol. Bob primește acest mesaj și în pasul 2.6 își generează propriul număr aleator și răspunde ceea ce crede că este Alice. Atacatorul nu poate decripta acest mesaj, așa că îl trimite lui Alice la pasul 1.6. Alice primește un mesaj nebănuit, îl decriptează și returnează Atacatorului numărul aleatoriu al lui Bob la pasul 1.7 prin criptarea mesajului cu cheia publică a Atacatorului. Acum Atacatorul știe numărul aleatoriu al lui Bob și îi poate răspunde la pasul 2.7. Bob este sigur că a stabilit o sesiune de comunicare cu Alice, deoarece a criptat mesajul cu un număr aleator cu cheia ei și a primit răspunsul corect.

Punctul cheie al atacului este că Atacatorul o poate forța pe Alice să decripteze numărul aleatoriu al lui Bob pentru el. Alice în acest atac acționează ca un oracol  - un utilizator de sistem care efectuează o operațiune criptografică în interesul atacatorului [14] .

Un exemplu de consecințe

Luați în considerare un exemplu de consecințe ale acestui atac. Lasă-l pe Bob să fie o bancă. Apoi, Atacatorul, usurându-se pe Alice, își poate folosi contul și poate transfera bani de pe acesta în al său. Banca va fi sigură că operația a fost efectuată de Alice [14] .

Remediere simplă a protocolului

Pentru a preveni atacul descris mai sus, în al șaselea pas, adăugați numele respondentului la mesaj:

2.6.

În acest caz, atacatorul nu va putea redirecționa mesajul către Alice, deoarece Alice se va aștepta la următorul mesaj de la el, respectiv:

1.6.

pe care Atacatorul nu le poate obține nici prin transmiterea mesajelor lui Bob, nici pe cont propriu [14] .

Remediere vulnerabilități

Prima opțiune 3. 6. 7.

În specificația revizuită  , acesta este un mesaj care trebuie verificat folosind cheia publică a lui Alice, adică este semnătura lui Alice . În această specificație, numerele aleatoare sunt mai întâi semnate și apoi criptate cu cheia publică a altui utilizator. Pentru că Bob își semnează numărul la pasul 6, atacul lui Low devine imposibil. Dacă Atacatorul transmite mesajul către Alice, aceasta va observa o eroare de verificare [15] .

A doua opțiune

Folosind metoda „criptare și semnare”, o puteți rafina după cum urmează:

3. 6. 7.

Acum Atacatorul nici măcar nu poate începe protocolul de comunicare cu Bob în numele altei persoane [15] .

Utilizare practică

Protocolul Kerberos este conceput pentru a rezolva problema autentificării utilizatorilor de rețea . Ideea sa principală este de a folosi o terță parte de încredere care să acorde utilizatorului acces la server folosind o cheie de sesiune comună partajată între utilizator și server. Acest protocol se bazează pe o variantă a protocolului Needham-Schroeder utilizând un marcaj temporal [16] [1] .

Note

  1. 1 2 3 4 Needham, Schroeder, 1978 .
  2. 1 2 3 4 5 6 Denning, Sacco, 1981 .
  3. 1 2 3 Lowe, 1995 .
  4. 1 2 Mao, 2005 , p. 76.
  5. 1 2 3 Semenov Yu.A. .
  6. Mao, 2005 , p. 77.
  7. 1 2 Mao, 2005 , p. 79.
  8. Mao, 2005 , p. 641.
  9. Mao, 2005 , p. 75.
  10. Mao, 2005 , p. 80.
  11. Mao, 2005 , p. 81.
  12. Needham, Schroeder, 1987 .
  13. Mao, 2005 , p. 83.
  14. 1 2 3 Mao, 2005 , p. 84.
  15. 1 2 Mao, 2005 , p. 643.
  16. Mao, 2005 , p. 462.

Standarde

  1. ISO 9798-2: Tehnologia informației - Tehnici de securitate - Mecanisme de autentificare a entităților - Partea 2: Autentificarea entităților folosind tehnici simetrice.

Literatură

  • Roger M. Needham, Michael D. Schroeder. Utilizarea criptării pentru autentificare în rețele mari de computere   // Commun . ACM. - New York, NY, SUA: ACM, 1978. - Vol. 21 , iss. 12 . - P. 993-999 . — ISSN 0001-0782 . doi : 10.1145/ 359657.359659 .
  • Dorothy E. Denning, Giovanni Maria Sacco. Marcaje temporale în protocoalele de distribuție cheie   // Commun . ACM. - New York, NY, SUA: ACM, 1981. - Vol. 24 , iss. august 1981 , nr. 8 . - P. 533-536 . — ISSN 0001-0782 . - doi : 10.1145/358722.358740 .
  • Roger M. Needham, Michael D. Schroeder. Autentificarea revizuită  //  SIGOPS Oper. Syst. Rev.. - New York, NY, SUA: ACM, 1987. - Vol. 21 , iss. 1 . - P. 7-7 . — ISSN 0163-5980 . doi : 10.1145/ 24592.24593 .
  • Gavin Lowe. Un atac asupra protocolului de autentificare cu cheie publică Needham-Schroeder  //  Scrisori de procesare a informațiilor. - 1995. - Vol. 56 , nr. 3 . - P. 131-133 . — ISSN 0020-0190 . - doi : 10.1016/0020-0190(95)00144-2 .
  • Schneier B. Criptografia aplicată. Protocoale, algoritmi, cod sursă în limbaj C = Criptografie aplicată. Protocoale, algoritmi și cod sursă în C. - M. : Triumph, 2002. - 816 p. - 3000 de exemplare.  - ISBN 5-89392-055-4 .
  • Wenbo Mao. Criptografie modernă: Teorie și practică = Modern Cryptography: Theory and Practice. - Editura Williams, 2005. - ISBN 5-8459-0847-7 .
  • Semenov Yu.A. Protocolul de autentificare Needham-Schroeder în cazurile sistemelor de criptare simetrice și asimetrice . Preluat: 8 decembrie 2012.

Link -uri