3. Panoramica del protocollo (Protocol Overview)
QUIC [QUIC-TRANSPORT] è responsabile della protezione della riservatezza e dell'integrità dei pacchetti. Per farlo, utilizza chiavi derivate dall'handshake TLS [TLS13], ma a differenza di TLS su TCP, i messaggi di handshake e avviso TLS sono trasportati direttamente dal livello di trasporto QUIC, che assume il ruolo del livello di record TLS, come illustrato nella Figura 3.
+--------------+--------------+ +-------------+
| TLS | TLS | | QUIC |
| Handshake | Avviso | | Applicazione|
| | | | (h3, etc.) |
+--------------+--------------+-+-------------+
| |
| Livello di trasporto QUIC |
| (stream, affidabilità, controllo congest.)|
| |
+---------------------------------------------+
| |
| Protezione pacchetti QUIC |
| |
+---------------------------------------------+
Figura 3: Livelli QUIC
QUIC si affida anche a TLS per l'autenticazione e la negoziazione di parametri critici per sicurezza e prestazioni.
Questi due protocolli non sono strettamente a livelli, ma cooperano: QUIC utilizza l'handshake TLS; TLS utilizza l'affidabilità, la consegna ordinata e il livello di record forniti da QUIC.
Ad alto livello, ci sono due interazioni principali tra i componenti TLS e QUIC:
-
Il componente TLS invia e riceve messaggi tramite il componente QUIC, con QUIC che fornisce un'astrazione di stream affidabile a TLS.
-
Il componente TLS fornisce una serie di aggiornamenti al componente QUIC, inclusi (a) nuove chiavi di protezione dei pacchetti da installare e (b) cambiamenti di stato come il completamento dell'handshake, il certificato del server, ecc.
La Figura 4 mostra queste interazioni in modo più dettagliato, con particolare evidenza sulla protezione dei pacchetti QUIC.
+------------+ +------------+
| |<--- Messaggi handshake ------->| |
| |<-- Verificare parametri ------>| |
| |<--------- Chiavi 0-RTT --------| |
| QUIC |<------- Chiavi handshake ------| TLS |
| |<--------- Chiavi 1-RTT --------| |
| |<---- Handshake completo -------| |
+------------+ +------------+
| ^
| Protegge| Pacchetti
v | protetti
+------------+
| QUIC |
| Protezione |
| pacchetti |
+------------+
Figura 4: Interazioni QUIC e TLS
A differenza di TLS su TCP, le applicazioni QUIC che desiderano inviare dati non li inviano utilizzando record di dati dell'applicazione TLS. Invece, li inviano come frame STREAM QUIC o altri tipi di frame, che vengono poi trasportati in pacchetti QUIC.