STS (protocol)

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 5 octombrie 2020; verificările necesită 2 modificări .

Protocolul STS sau Protocolul Station - To-Station ( Protocol Station-to-Station , STS ) este un protocol criptografic care permite celor două părți să obțină o cheie secretă partajată folosind un canal de comunicație neprotejat . Cheia rezultată este utilizată pentru schimburi ulterioare folosind criptarea simetrică . Protocolul se bazează pe algoritmul Diffie-Hellman .  

O caracteristică distinctivă a protocolului STS este absența marcajelor de timp și a suportului pentru proprietatea perfectă a secretului direct. . Protocolul efectuează, de asemenea, o confirmare a cheii în două sensuri [1] , care permite ca protocolul să fie clasificat ca „ acord cheie autentificată cu confirmare cheie ” (AKC).

Istorie

STS a fost introdus inițial în 1987 în contextul securității rețelei telefonice ISDN (O'Higgins et al. 1987) [2] , extins în 1989 și introdus în final de Whitfield Diffie , Paul C. van Oorschot și Michael Weiner ( Michael J. Wiener) în 1992. Pe baza protocolului STS, a fost creat protocolul IKE , care a devenit un standard industrial .

Descrierea algoritmului STS obișnuit

Pentru o descriere detaliată a principiului de funcționare, luați în considerare procesul de schimb de informații între unii utilizatori  - Alice și Bob. Să presupunem că Alice are cheia publică certificată a lui Bob și Bob are cheia publică certificată a lui Alice. În același timp, ambele chei au fost certificate anterior de o autoritate de certificare de încredere care nu este direct implicată în proces. Înainte de a începe protocolul, trebuie să efectuați următorii pași [3] [4] :

  1. Generați o pereche de semnături asimetrică aleatoriu pentru autentificarea ulterioară a utilizatorului .
  2. Definiți parametrii pentru crearea mesajelor: modulul p pe care este creat grupul ciclic și generatorul acestuia g .

Protocolul constă în următoarele runde de schimb de informații între Alice și Bob :

1. Alice alege un număr aleator x astfel încât 2 ≤ x ≤ p-1 și îi trimite lui Bob un mesaj m A = g x mod p

(1) Alice → Bob : m A = g x mod p,

2. Bob alege un număr aleator y astfel încât 2 ≤ y ≤ p-1, calculează m B = g y mod p și, folosind mesajul primit de la Alice, calculează cheia secretă partajată K = m A y mod p = g xy mod p. Apoi îi trimite Alice m B și un mesaj criptat E K (Sig B ( m B , m A )), semnat cu semnătura sa digitală electronică.

(2) Alice ← Bob : m B = g y mod p, E K (Sig B ( m B , m A )),

3. Alice calculează în mod similar cheia secretă și decriptează mesajul lui Bob. Apoi îl autentifică pe Bob verificându-i semnătura electronică și îi trimite mesajul E k (Sig A ( m A , m B )), semnat cu semnătura sa.

(3) Alice → Bob : E k (Sig A ( m A , m B )),

4. Bob primește mesajul de la Alice, îl decriptează și verifică semnătura de la Alice.

Aici Sig A și Sig B  sunt semnături digitale ale utilizatorilor Alice și Bob , respectiv, K = g xy mod p este cheia comună necesară.

Utilizarea semnăturilor digitale la transmiterea mesajelor între Alice și Bob garantează [5] autenticitatea primirii unui mesaj de la utilizatorul de la care ar fi trebuit să provină. Criptarea valorilor semnăturilor utilizatorului folosind un algoritm simetric E a fost introdusă pentru a asigura confirmarea reciprocă a corectitudinii calculului cheii, deoarece este imposibil să se obțină valorile corecte ale semnăturilor digitale cu o cheie calculată incorect. .

Atacul asupra unui STS obișnuit

În 1994, atac asupra protocolului STS [6] a fost de profesorul de la Universitatea Oxford, Kevin Lowe În acest caz, Eva încearcă să afle corespondența [7] .

(1) Alice → Eve(Bob) : m A = g x mod p, (2) Eve → Bob : m A , (3) Eve ← Bob : m B = g y mod p, E K (Sig B ( m B , m A )), (4) Alice ← Eve(Bob) : m B , E K (Sig B ( m B , m A )), (5) Alice → Eve(Bob) : E K (Sig A ( m A , m B )).

Criptanalistul Eve, aflată la mijloc între Alice și Bob, își folosește schimbul legitim cu Bob pentru a o convinge pe Alice că acționează în numele lui Bob. Sesiunea cu Bob rămâne incompletă deoarece Eve, neștiind cheia secretă partajată, nu va putea ghici răspunsul corect pentru Bob. Prin urmare, orice mesaj de la Eve în al treilea pas va fi respins. Acest atac nu reprezintă un pericol real [4] , întrucât cheia secretă K rămâne necunoscută Evei. Cu toate acestea, în acest caz, Alice o va confunda pe Eve cu Bob. Bob va crede că a format o cheie comună cu Eve, dar de fapt cu Alice. Astfel, protocolul nu va funcționa corect. Consecințele unui astfel de atac sunt comparabile cu situația în care Eve este pasivă până când Alice îi trimite ultimul mesaj lui Bob. Bob nu îl poate primi pentru că Eve blochează ultimul mesaj. Bob o anunță pe Alice că ultimul mesaj nu a fost primit. Deși un singur atac nu este periculos, totuși, un grup de atacatori, care au făcut un astfel de atac, poate reduce drastic puterea serverului central, deoarece serverul va rezerva resurse pentru utilizatorii ale căror notificări nu vor veni. De asemenea, merită remarcat faptul că, în timpul unui astfel de atac, Eve și aliații ei nu au nevoie de certificate . Deci, acest atac necesită o cantitate mică de resurse .

În 1995, Martin Abadi și Robert Needham au propus o modalitate de a preveni un astfel de atac asupra serverului. Pentru a face acest lucru, este suficient să transmiteți numele de utilizator în mod deschis [8] .

Protocol STS modificat

În 2004, Colin Boyd și Wenbo Mao au propus următoarea specificație pentru protocolul STS [9] :

(1) Alice → Bob : m A = g x mod p (2) Alice ← Bob : m B = g y mod p, Sig B ( m B , m A ), h K 0 ( m B , m A ) (3) Alice → Bob : Sig A ( m A , m B ), h K 0 ( m A , m B )

unde K 0 = f(k) este parametrul cheie al funcției hash h K 0 ( m A , m B ), calculat ca valoare a unei funcții din cheia de sesiune rezultată K = g xy mod p. Modulul p și generatorul g sunt încă deschise.

Atacul asupra STS modificat

Există posibilitatea unui „atac bilateral cu partajarea cheii necunoscute” ( atac BUKS  ) [4] În acest caz, criptoanalistii Eva și Mallory încearcă să afle corespondența.

(1) Alice → Eve : m A = g x mod p (2) Eve → Mallory : m A (3) Mallory → Bob : m A (4) Mallory ← Bob : m B = g y mod p, Sig B ( m B , m A ), h K 0 ( m B , m A ) (5) Eve ← Mallory : m B , h K 0 ( m B , m A ) (6) Alice ← Eve : m B , Sig E ( m B , m A ), h K 0 ( m B , m A ) (7) Alice → Eve : Sig A ( m A , m B ), h K 0 ( m A , m B ) (8) Eve → Mallory : h K 0 ( m A , m B ) (9) Mallory → Bob : Sig M ( m A , m B ), h K 0 ( m A , m B )

Drept urmare, Eve și Mallory, înțelegându-se, îi induc în eroare pe Alice și Bob, care formau o cheie comună. În același timp, Alice este sigură că a format o cheie comună cu Eve, iar Bob este sigur că a format o cheie comună cu Mallory .

STS simplificat

Un algoritm simplificat este utilizat pentru autentificarea pur reciprocă, fără a genera un secret partajat. Implementarea arată astfel [10] :

(1) Alice → Bob : m A = g x mod p (2) Alice ← Bob : m B = g y mod p, Sig B ( m B , m A ) (3) Alice → Bob: Sig A ( m A , m B )

Atacul asupra STS simplificat

În timpul atacului, Eve, care este un utilizator legitim al sistemului și deține un certificat de cheie publică , îi cere lui Alice să inițializeze protocolul. După aceea, ea intră într-o conversație cu Bob, prezentându-se ca Alice și folosind numărul ei aleatoriu unic. După ce a primit un răspuns de la Bob, Eve îi înlocuiește certificatul și semnătura cu propriile copii. Acest lucru o determină pe Alice să semneze mesajul lui Bob, care la rândul său îi permite lui Eve să-l păcălească pe Bob. .

(1) Alice → Eve : m A = g x mod p (2) Eve → Bob : m A (3) Eve ← Bob : m B = g y mod p, Sig B ( m B , m A ) (4) Alice ← Eve : m B = g y mod p, Sig E ( m B , m A ) (5) Alice → Eve: Sig A ( m A , m B ) (6) Eve → Bob : Sig A ( m A , m B )

Drept urmare, Alice crede că vorbește cu Eve, iar Bob crede că vorbește cu Alice. Acest atac este impecabil pentru că nici Alice, nici Bob nu bănuiesc nimic. De menționat că Eve joacă un rol foarte activ în acest atac: semnează mesajul generat de Bob și o convinge și pe Alice să-l semneze pentru a-l induce în eroare complet pe Bob. Dacă Eve ar fi jucat rolul unui observator pasiv obișnuit, atunci Alice nu ar fi semnat niciodată mesajul lui Bob și nu și-ar fi permis să fie înșelată [7] .

STS-MAC

În cazurile în care este imposibil să se determine utilizatorul de la care a fost primit mesajul, K = g xy poate fi folosit pentru a crea o inserție falsă [11] :

(1) Alice → Bob : m A = g x mod p (2) Alice ← Bob : m B = g y mod , Sig B ( m B , m A ), MAC K (Sig B ( g y , g x )) (3) Alice → Bob : S A ( g x , g y ), MAC K (Sig A ( g x , g y ))

Vezi și

Note

  1. Protocol de la stație la stație . Sterling Connect:Direct Secure Plus pentru z/OS Prezentare generală . IBM. - Protocolul Station-to-Station (STS) este o variantă cu trei treceri a protocolului de bază Diffie-Hellman. Vă permite să stabiliți o cheie secretă partajată între două noduri cu autentificare reciprocă a entităților". Preluat: 18 noiembrie 2013.
  2. Delfs, Hans, Knebl, Helmut. Introducere în criptografie: principii și aplicații. - 2. - Springer Publishing Company, Incorporated, 2010. - S. 88-89. — 368 p. — ISBN 978-3642080401 .
  3. Bruce Schneier. Criptografia aplicată. - Ed. a II-a - Triumful, 2002. - S. 378-379. — 816 p. - ISBN 5-89392-055-4 .
  4. 1 2 3 4 A. V. Cheremushkin. Protocoale criptografice: principalele proprietăți și vulnerabilități // Matematică discretă aplicată: jurnal. - 2009. - Nr 2 . - S. 115-150 .
  5. A. V. Cheremushkin „Protocoale criptografice: proprietăți de bază și vulnerabilități”, revista „Applied Discrete Mathematics” UDC 003.26 (075.8)
  6. G. Lowe. Câteva atacuri noi asupra protocoalelor de securitate // IEEE Computer Society: Proceeding. - 1996. - S. 162 . — ISBN 0-8186-7522-5 .
  7. 1 2 Mao, 2005 , p. 415-416.
  8. Martin Abadi, Roger Needham. Practică de inginerie prudentă pentru protocoale criptografice // IEEE Computer Society: Proceeding. - 1994. - S. 122 .
  9. Colin Boyd, Wenbo Mao, Kenneth G. Paterson. Acord cheie folosind autentificatoare cu cheie statică // Criptografie aplicată și securitate rețelei: Note de curs în informatică. — 2004.
  10. Douglas R. Stinson. Revizuirea Criptografiei: teorie și practică // ACM SIGACT News : Newsletter. - 2003. - Nr. 34 . - S. 22-25 . — ISSN 0163-5700 . - doi : 10.1145/954092.954097 .
  11. Simon Blake-Wilson, Alfred Menezes. PKC '99 Proceedings of the Second International Workshop on Practice and Theory in Public Key Criptography // Proceedings of the Second International Workshop on Practice and Theory in Public Key Cryptography : Proceeding. - 1999. - S. 154-170 . — ISBN 3-540-65644-8 .

Literatură