Appendice F. Analisi della sicurezza (Security Analysis)
Questa appendice fornisce un'analisi della sicurezza del protocollo TLS 1.2.
F.1. Protocollo di handshake (Handshake Protocol)
F.1.1. Autenticazione e scambio di chiavi (Authentication and Key Exchange)
Gli obiettivi di sicurezza fondamentali del protocollo di handshake TLS sono:
- Autenticazione: Verificare l'identità dei peer comunicanti
- Accordo sulla chiave: Stabilire in modo sicuro un segreto condiviso
- Integrità: Garantire che i messaggi di handshake non siano stati manomessi
F.1.1.1. Scambio di chiavi anonimo (Anonymous Key Exchange)
Lo scambio di chiavi anonimo NON è raccomandato!
Le suite di cifratura Diffie-Hellman anonime (DH_anon) non forniscono autenticazione:
- Vulnerabile agli attacchi man-in-the-middle
- Utilizzare solo in ambienti controllati specifici
- Gli ambienti di produzione dovrebbero evitare l'uso
Rischio per la sicurezza:
Client <---> Attaccante <---> Server
| |
Due scambi DH separati
Il client pensa di comunicare con il server
Il server pensa di comunicare con il client
Entrambi stanno effettivamente comunicando con l'attaccante
F.1.1.2. Scambio di chiavi RSA e autenticazione (RSA Key Exchange and Authentication)
Lo scambio di chiavi RSA fornisce:
- Autenticazione del server (tramite certificato)
- Autenticazione opzionale del client
- Trasmissione confidenziale del segreto pre-master
Caratteristiche di sicurezza:
- Certificato del server firmato da CA attendibile
- Il client verifica la catena di certificati
- Segreto pre-master crittografato con chiave pubblica del server
- Solo il possessore della chiave privata del server può decifrare
Limitazioni:
- Non fornisce forward secrecy
- Se la chiave privata del server viene compromessa, le sessioni passate possono essere decifrate
F.1.1.3. Scambio di chiavi Diffie-Hellman con autenticazione (Diffie-Hellman Key Exchange with Authentication)
DHE (Diffie-Hellman effimero) fornisce:
- Autenticazione del server
- Forward secrecy
- Garanzie di sicurezza più forti
Vantaggi per la sicurezza:
-
Forward Secrecy:
- Ogni sessione utilizza nuove coppie di chiavi effimere
- Anche se le chiavi a lungo termine vengono compromesse, le sessioni passate rimangono sicure
-
Autenticazione:
- Parametri DH firmati con chiave privata del server
- Il client verifica la firma
Raccomandato: Le suite di cifratura DHE e ECDHE (DHE a curva ellittica) sono la scelta raccomandata per le distribuzioni TLS moderne.
F.1.2. Attacchi di rollback della versione (Version Rollback Attacks)
TLS utilizza più livelli di difesa per prevenire il rollback della versione:
-
Versione in ClientHello e ServerHello:
- Indica esplicitamente la versione negoziata
- Il messaggio Finished include l'hash di questi valori
-
Messaggio Finished:
- Contiene il MAC di tutti i messaggi di handshake
- Qualsiasi modifica causerà il fallimento della verifica
-
TLS_FALLBACK_SCSV (RFC 7507):
- Meccanismo di segnalazione aggiuntivo
- Previene gli attacchi di downgrade
F.1.3. Rilevamento di attacchi contro il protocollo di handshake (Detecting Attacks Against the Handshake Protocol)
TLS fornisce i seguenti meccanismi per rilevare gli attacchi:
-
Integrità del messaggio:
- Il messaggio Finished verifica l'intero handshake
- Il PRF garantisce la forza crittografica
-
Verifica del certificato:
- Verifica completa della catena di certificati
- Controllo del nome host
- Controllo della revoca
-
Protezione dagli attacchi temporali:
- Operazioni a tempo costante
- Gestione uniforme degli errori
F.1.4. Ripresa delle sessioni (Resuming Sessions)
Considerazioni sulla sicurezza per la ripresa della sessione:
Caratteristiche di sicurezza:
- Riutilizza il segreto master
- Riduce il carico computazionale
- Nuovi numeri casuali garantiscono l'unicità della chiave
Rischi potenziali:
- Archiviazione sicura dei ticket di sessione
- Protezione delle chiavi di crittografia dei ticket
- Impostazioni di timeout appropriate
Raccomandazioni:
- Limitare la durata della sessione
- Ruotare regolarmente le chiavi di crittografia dei ticket
- Implementare un meccanismo di revoca della sessione
F.2. Protezione dei dati dell'applicazione (Protecting Application Data)
F.2.1. Riservatezza dei dati
TLS fornisce:
- Algoritmi di crittografia forti (AES, ecc.)
- Materiale di chiave univoco per record
- Protezione dell'integrità (MAC o AEAD)
F.2.2. Integrità dei dati
Ogni record TLS include:
- MAC (per le suite di cifratura tradizionali)
- Tag di autenticazione (per le suite di cifratura AEAD)
- Numero di sequenza (previene il replay)
F.3. IV espliciti (Explicit IVs)
TLS 1.2 utilizza IV espliciti per affrontare l'attacco BEAST in TLS 1.0:
Problema di TLS 1.0:
- Utilizzava il blocco di testo cifrato precedente come IV per il record successivo
- IV prevedibile consente attacchi con testo in chiaro scelto
Soluzione di TLS 1.2:
- Ogni record include un IV esplicito generato casualmente
- L'IV non è più prevedibile
- Mitiga l'attacco BEAST
F.4. Sicurezza delle modalità di cifratura composite (Security of Composite Cipher Modes)
F.4.1. Modalità CBC
Problemi noti:
- Attacchi padding oracle
- Attacco temporale Lucky 13
- Attacco BEAST (TLS 1.0)
Mitigazioni:
- TLS 1.2 utilizza IV espliciti
- Validazione del padding a tempo costante
- Messaggi di errore uniformi
F.4.2. Modalità AEAD
Vantaggi:
- Fornisce contemporaneamente riservatezza e autenticazione
- Non influenzato dagli attacchi padding oracle
- Implementazione più semplice
- Prestazioni migliori
Raccomandato: Le distribuzioni moderne dovrebbero dare priorità alle suite di cifratura AEAD (GCM, CCM, ChaCha20-Poly1305).
F.5. Denial of Service
Gli handshake TLS sono relativamente costosi e possono essere utilizzati per attacchi DoS.
F.5.1. Vettori di attacco
- Grande numero di richieste di handshake
- Esaurimento delle risorse (CPU, memoria)
- Overhead di verifica del certificato
F.5.2. Strategie di mitigazione
Lato server:
- Limitazione della velocità
- Puzzle client
- Priorità di ripresa della sessione
- Limiti di risorse
Livello di rete:
- Cookie SYN
- Limiti di connessione
- Regole del firewall
F.6. Note finali (Final Notes)
F.6.1. Limitazioni note
TLS 1.2 non può prevenire:
- Compromissione dell'endpoint
- Compromissione dell'autorità di certificazione
- Selezione di password deboli
- Attacchi di ingegneria sociale
F.6.2. Best practice
-
Rimanere aggiornati:
- Monitorare gli annunci sulla sicurezza
- Aggiornare tempestivamente le implementazioni
- Disabilitare gli algoritmi deboli
-
Gestione della configurazione:
- Utilizzare suite di cifratura forti
- Abilitare tutte le funzionalità di sicurezza
- Verificare regolarmente la configurazione
-
Monitoraggio e risposta:
- Registrare gli eventi di sicurezza
- Monitorare i pattern anomali
- Preparare un piano di risposta agli incidenti
F.6.3. Migrazione a TLS 1.3
TLS 1.3 (RFC 8446) fornisce:
- Handshake più semplificato
- Garanzie di sicurezza più forti
- Rimozione di algoritmi deboli
- Prestazioni migliorate
Raccomandazione: Le nuove distribuzioni dovrebbero considerare l'utilizzo di TLS 1.3 mantenendo la retrocompatibilità con TLS 1.2.
Nota: Per un'analisi completa della sicurezza e una discussione dettagliata, si prega di fare riferimento al testo completo dell'appendice F della RFC 5246. Fare anche riferimento alla RFC 7457 (che riassume gli attacchi noti contro TLS e DTLS) per le ultime considerazioni sulla sicurezza.