Sobes.tech
Middle

Come viene effettuata la crittografia dei messaggi tra browser e server?

sobes.tech AI

Risposta dell'AI

La crittografia tra il browser e il server viene eseguita utilizzando il protocollo HTTPS, che è un livello superiore su HTTP che utilizza i protocolli SSL/TLS (Secure Sockets Layer / Transport Layer Security).

Processo di stabilimento di una connessione sicura (Handshake):

  1. Client Hello: Il browser invia al server un messaggio contenente le versioni SSL/TLS supportate, la lista delle suite di cifratura (cipher suites), gli algoritmi di compressione e un numero casuale (dal client).
  2. Server Hello: Il server sceglie la migliore versione del protocollo, il set di cifratura e l'algoritmo di compressione tra quelli proposti dal browser, genera anche il proprio numero casuale (dal server) e lo invia al browser insieme al suo certificato SSL/TLS.
  3. Autenticazione: Il browser verifica il certificato del server:
    • L'autorità di certificazione radice (Root CA).
    • La validità del certificato.
    • La corrispondenza del nome di dominio nel certificato con l'indirizzo del sito web.
    • L'assenza di certificati revocati nella lista (CRL o OCSP).
  4. Premaster Secret: Il browser genera un numero casuale (premaster secret), lo cifra con la chiave pubblica del server (dal certificato) e lo invia al server.
  5. Generazione della chiave di sessione: Sia il browser che il server usano i numeri casuali del client (Client Random), del server (Server Random) e il premaster secret per generare una chiave di sessione simmetrica.
  6. Change Cipher Spec: Il browser invia al server un messaggio che informa del passaggio all'uso della chiave di sessione generata per la comunicazione futura.
  7. Finished: Il browser invia al server un hash di tutti i messaggi precedenti della stretta di mano, cifrato con la chiave di sessione. Questo messaggio verifica la correttezza della stretta di mano.
  8. Change Cipher Spec: Il server invia al browser un messaggio che indica il passaggio a una connessione cifrata.
  9. Finished: Il server invia al browser un hash di tutti i messaggi precedenti della stretta di mano, cifrato con la chiave di sessione.

Dopo la stretta di mano riuscita, tutta la trasmissione di dati tra il browser e il server avviene utilizzando la crittografia simmetrica basata sulla chiave di sessione generata. La crittografia simmetrica è molto più efficiente di quella asimmetrica, rendendola adatta alla cifratura di grandi volumi di dati.

Algoritmi utilizzati (esempio):

  • Crittografia asimmetrica (per lo scambio della chiave di sessione): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
  • Crittografia simmetrica (per la cifratura dei dati): AES, 3DES, ChaCha20.
  • Hashing (per verificare l'integrità dei messaggi): SHA-256, SHA-384.