Perché TLS usa la crittografia asimmetrica per poi passare subito a quella simmetrica?

  

Quando navighi su un sito sicuro (quello con il lucchetto e il prefisso https://), il protocollo TLS (Transport Layer Security) lavora in background per garantire che nessuno possa intercettare o modificare i tuoi dati.

Ma c'è un dettaglio fondamentale sul funzionamento di TLS che spesso sfugge: TLS non cifra il traffico web con le chiavi pubbliche e private. Usare la crittografia asimmetrica per l'intera sessione renderebbe il web lento al limite dell'inutilizzabile.

TLS risolve il problema usando una strategia ibrida: usa la crittografia asimmetrica solo per conoscersi, e passa immediatamente a quella simmetrica per parlare.

Ciò consente di bilanciare sicurezza e prestazioni: 

  1. crittografia asimmetrica durante la fase di Handshake per autenticare gli endpoint e negoziare le chiavi
  2. istantaneo "switch" alla crittografia simmetrica per il cifrario di sessione (Bulk Data Encryption).
🔗 Ti piace Techelopment? Dai un'occhiata al sito per tutti i dettagli!

Il problema: le prestazioni della crittografia

Per capire perché TLS effettua questo "switch", bisogna confrontare i due modelli di crittografia:

Confronto tra crittografia simmetrica e asimmetrica
Differenze chiave tra Crittografia Simmetrica e Asimmetrica
  • Crittografia Asimmetrica (Symmetric vs Asymmetric): Utilizza due chiavi distinte (chiave pubblica per cifrare, chiave privata per decifrare). È straordinaria per la sicurezza perché permette a due estranei di stabilire una connessione fidata senza essersi mai incontrati prima. Il prezzo? È matematicamente pesante e richiede calcoli complessi (es. operazioni su grandi numeri primi o curve ellittiche).
  • Crittografia Simmetrica: Utilizza un'unica chiave condivisa sia per cifrare sia per decifrare (es. AES-GCM, ChaCha20). È estremamente veloce e leggera, tanto da essere accelerata direttamente via hardware nei processori moderni (istruzioni AES-NI). Tuttavia, ha un limite critico: come ci si scambia quella chiave unica in modo sicuro su una rete aperta senza farsi intercettare?

La soluzione ibrida: Il TLS Handshake

TLS prende il meglio dai due mondi. Il processo si divide in due fasi distinte durante la stretta di mano iniziale (handshake):

  1. Autenticazione e scambio chiavi (Asimmetrico)
    Fase iniziale

    Il client (browser) si collega al server. Il server presenta il suo certificato digitale contenente la sua chiave pubblica.

    Attraverso algoritmi di scambio chiavi (come Diffie-Hellman a curve ellittiche, ECDHE), client e server negoziano un segreto comune condiviso (Pre-Master Secret). In questa fase, la crittografia asimmetrica garantisce l'identità del server e impedisce a terzi di intercettare il segreto.
  2. Generazione della chiave di sessione
    Il punto di svolta

    Utilizzando il segreto appena scambiato, sia il client che il server calcolano autonomamente una chiave simmetrica temporanea (chiamata chiave di sessione o symmetric key).
  3. Lo Switch alle chiavi simmetriche
    Fase di streaming dati

    A questo punto l'handshake è terminato. Per tutto il resto della sessione (download di pagine, immagini, streaming video, invio form), il canale trasmette dati esclusivamente tramite crittografia simmetrica (cifratura e decifratura con stessa chiave).

Quali sono i vantaggi di questo approccio?

In sintesi: La crittografia asimmetrica risolve il problema della fiducia, quella simmetrica risolve il problema della velocità.
  1. Velocità fino a 1000x superiore: La crittografia simmetrica richiede un carico computazionale nettamente inferiore per la CPU, riducendo drasticamente la latenza nella trasmissione dei dati.
  2. Minore impatto sui server: Un server web gestisce migliaia di connessioni simultanee. Se dovesse eseguire algoritmi asimmetrici per ogni pacchetto dati, le risorse hardware andrebbero in esaurimento rapido.
  3. Forward Secrecy (Perfetta Segretezza Futura): Poiché le chiavi simmetriche sono temporanee e generate al momento per quella singola sessione, se un malintenzionato riuscisse in futuro a rubare la chiave privata del server, non potrà comunque decifrare il traffico delle sessioni passate.

Il divario prestazionale: Asimmetrico vs Simmetrico

Per comprendere la necessità dello switch, è sufficiente analizzare la complessità computazionale e il throughput dei due paradigmi crittografici:

Caratteristica Crittografia Asimmetrica (es. RSA / ECDSA) Crittografia Simmetrica (es. AES-GCM / ChaCha20)
Lavoro della CPU Matematica complessa su interi giganti (es. esponenziazione modulare a 2048/4096 bit) o operazioni su curve ellittiche. Operazioni logiche di basso livello (XOR, trasposizioni, sostituzioni in S-Box).
Supporto Hardware Limitato; richiede istruzioni matematiche generiche intensive. Istruzioni hardware dedicate sui processori moderni (AES-NI, ARMv8 Crypto Extensions).
Throughput tipico (CPU Single Core) ~0.5 MB/s - 5 MB/s (molto lento) ~2.000 MB/s - 8.000 MB/s (estremamente veloce con AES-NI)
Dimensione Chiave RSA: 2048-4096 bit / ECC: 256-384 bit AES: 128 o 256 bit
Evidenza sulle performance: La cifratura e decifratura simmetrica AES-GCM accelerata via hardware (AES-NI) risulta mediamente da 100x a 1.000x più veloce rispetto alle operazioni di decifratura/firma RSA-2048 a parità di cicli di clock della CPU.


Impatto Reale e Ottimizzazioni di Sistema

Il passaggio alla crittografia simmetrica sblocca vantaggi critici per le infrastrutture ad alto carico:

  • Saturazione della banda (Gigabit/100GbE): Grazie ad algoritmi come AES-GCM (che combinano cifratura Galois/Counter Mode e autenticazione di integrità) e all'accelerazione hardware della CPU, un singolo core di un server moderno può cifrare traffico a velocità superiori a 10 Gbps. Sarebbe impossibile raggiungere tali velocità se ogni pacchetto richiedesse operazioni asimmetriche.
  • Efficienza nei Data Center: Riducendo l'uso dei cicli di clock per la cifratura del traffico applicativo, i web server (Nginx, Envoy, Apache) possono dedicare oltre il 95% della memoria e della CPU alla gestione della logica di business e delle query di database.
  • PFS (Perfect Forward Secrecy): Utilizzando chiavi simmetriche ephemere generate di volta in volta per singola sessione tramite ECDHE, anche se la chiave privata del server venisse compromessa in futuro, gli attaccanti non potrebbero decifrare il traffico di sessioni passate precedentemente catturato.
In sintesi: La crittografia asimmetrica fornisce le basi di Trust (garantendo l'identità del server e lo scambio sicuro del segreto), mentre la crittografia simmetrica fornisce la Scalabilità, rendendo sostenibile l'intera crittografia del web su scala globale.



Follow me #techelopment

Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment