Sobes.tech
Middle

Cum se realizează criptarea mesajelor între browser și server?

sobes.tech AI

Răspuns de la AI

Criptarea dintre browser și server se realizează utilizând protocolul HTTPS, care este o suprapunere peste HTTP folosind protocoalele SSL/TLS (Secure Sockets Layer / Transport Layer Security).

Procesul de stabilire a unei conexiuni securizate (Handshake):

  1. Client Hello: Browserul trimite serverului un mesaj care conține versiunile SSL/TLS suportate, lista de suite de cifruri (cipher suites), algoritmi de compresie și un număr aleatoriu (de la client).
  2. Server Hello: Serverul selectează cea mai bună versiune a protocolului, setul de suite de cifruri și algoritmul de compresie dintre cele propuse de browser, generează și propriul său număr aleatoriu (de la server) și îl trimite împreună cu certificatul SSL/TLS.
  3. Autentificare: Browserul verifică certificatul serverului:
    • Autoritatea de certificare rădăcină (Root CA).
    • Valabilitatea certificatului.
    • Potrivirea numelui de domeniu din certificat cu adresa site-ului web.
    • Absența certificatelor revocate în listă (CRL sau OCSP).
  4. Premaster Secret: Browserul generează un număr aleatoriu (premaster secret), îl criptează cu cheia publică a serverului (din certificat) și îl trimite către server.
  5. Generarea cheii de sesiune: Atât browserul, cât și serverul folosesc numerele aleatorii ale clientului (Client Random), ale serverului (Server Random) și premaster secret pentru a genera o cheie de sesiune simetrică.
  6. Change Cipher Spec: Browserul trimite un mesaj către server care informează despre trecerea la utilizarea cheii de sesiune generate pentru comunicarea ulterioară.
  7. Finished: Browserul trimite către server un hash al tuturor mesajelor anterioare ale handshake-ului, criptat cu cheia de sesiune. Acest mesaj verifică corectitudinea handshake-ului.
  8. Change Cipher Spec: Serverul trimite către browser un mesaj care indică trecerea la o conexiune criptată.
  9. Finished: Serverul trimite către browser un hash al tuturor mesajelor anterioare ale handshake-ului, criptat cu cheia de sesiune.

După un handshake reușit, întreaga transmisie de date între browser și server se realizează folosind criptarea simetrică bazată pe cheia de sesiune generată. Criptarea simetrică este mult mai eficientă decât cea asimetrică, făcând-o potrivită pentru criptarea volumelor mari de date.

Algoritmi utilizați (exemplu):

  • Criptare asimetrică (pentru schimbul de cheie de sesiune): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
  • Criptare simetrică (pentru criptarea datelor): AES, 3DES, ChaCha20.
  • Hashing (pentru verificarea integrității mesajelor): SHA-256, SHA-384.