Sobes.tech
Middle

Hoe wordt de versleuteling van berichten tussen browser en server uitgevoerd?

sobes.tech AI

Antwoord van AI

De encryptie tussen de browser en de server wordt uitgevoerd met behulp van het HTTPS-protocol, dat een overlay is bovenop HTTP met gebruikmaking van SSL/TLS-protocollen (Secure Sockets Layer / Transport Layer Security).

Proces van het opzetten van een beveiligde verbinding (Handshake):

  1. Client Hello: De browser stuurt een bericht naar de server dat de ondersteunde SSL/TLS-versies, de lijst van cipher suites, compressie-algoritmen en een willekeurig getal (van de client) bevat.
  2. Server Hello: De server kiest de beste protocolversie, cipher suite en compressie-algoritme uit de door de browser voorgestelde opties, genereert ook zijn eigen willekeurige getal (van de server) en stuurt deze samen met zijn SSL/TLS-certificaat naar de browser.
  3. Authenticatie: De browser verifieert het servercertificaat:
    • De root CA (Certificate Authority).
    • De geldigheid van het certificaat.
    • De overeenstemming van de domeinnaam in het certificaat met het adres van de website.
    • Het ontbreken van ingetrokken certificaten in de lijst (CRL of OCSP).
  4. Premaster Secret: De browser genereert een willekeurig getal (premaster secret), versleutelt het met de publieke sleutel van de server (uit het certificaat) en stuurt het naar de server.
  5. Generatie van de sessiesleutel: Zowel de browser als de server gebruiken de willekeurige getallen van de client (Client Random), de server (Server Random) en het premaster secret om een symmetrische sessiesleutel te genereren.
  6. Change Cipher Spec: De browser stuurt een bericht naar de server dat de overgang naar het gebruik van de gegenereerde sessiesleutel voor verdere communicatie aangeeft.
  7. Finished: De browser stuurt een hash van alle eerdere berichten van de handshake, versleuteld met de sessiesleutel. Dit bericht bevestigt de correctheid van de handshake.
  8. Change Cipher Spec: De server stuurt een bericht naar de browser dat de overgang naar een versleutelde verbinding aangeeft.
  9. Finished: De server stuurt een hash van alle eerdere berichten van de handshake, versleuteld met de sessiesleutel.

Na een succesvolle handshake vindt alle datatransmissie tussen de browser en de server plaats met behulp van symmetrische encryptie op basis van de gegenereerde sessiesleutel. Symmetrische encryptie is veel efficiënter dan asymmetrische, waardoor het geschikt is voor het versleutelen van grote hoeveelheden gegevens.

Voorbeeld van gebruikte algoritmen:

  • Asymmetrische encryptie (voor het uitwisselen van de sessiesleutel): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
  • Symmetrische encryptie (voor het versleutelen van gegevens): AES, 3DES, ChaCha20.
  • Hashing (voor het controleren van de integriteit van berichten): SHA-256, SHA-384.