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):
- 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).
- 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.
- 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).
- 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.
- 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.
- 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.
- 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.
- Change Cipher Spec: Il server invia al browser un messaggio che indica il passaggio a una connessione cifrata.
- 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.