11. Considerazioni sulla sicurezza (Security Considerations)
La sicurezza del protocollo TLS si basa sulle seguenti ipotesi:
11.1. Forza crittografica (Cryptographic Strength)
La sicurezza di TLS si basa fondamentalmente sulla forza delle primitive crittografiche utilizzate. Gli implementatori dovrebbero:
- Utilizzare suite di cifratura forti
- Evitare algoritmi con debolezze note (come DES, RC4, MD5)
- Aggiornare regolarmente le librerie crittografiche per correggere vulnerabilità note
11.2. Generazione di numeri casuali (Random Number Generation)
La sicurezza del protocollo TLS dipende fortemente dalla generazione di numeri casuali crittograficamente forti. Le implementazioni DEVONO (MUST):
- Utilizzare generatori di numeri pseudo-casuali crittograficamente sicuri (CSPRNG)
- Assicurarsi che il generatore di numeri casuali abbia fonti di entropia sufficienti
- Riseminare regolarmente il generatore di numeri casuali
11.3. Validazione del certificato (Certificate Validation)
Una corretta validazione del certificato è fondamentale per prevenire attacchi man-in-the-middle:
- Verificare l'integrità della catena di certificati
- Controllare lo stato di revoca del certificato (CRL o OCSP)
- Verificare la corrispondenza del nome host
- Controllare il periodo di validità del certificato
11.4. Attacchi di rollback della versione (Version Rollback Attacks)
Le implementazioni DEVONO (MUST) prevenire gli attacchi di rollback della versione. TLS utilizza i numeri di versione in ClientHello e ServerHello, nonché verify_data nel messaggio Finished, per rilevare i tentativi di rollback della versione.
11.5. Attacchi noti (Known Attacks)
Le implementazioni dovrebbero essere consapevoli dei seguenti attacchi noti:
- BEAST (Browser Exploit Against SSL/TLS): Attacco contro la modalità CBC di TLS 1.0. TLS 1.2 mitiga questo con IV espliciti.
- CRIME (Compression Ratio Info-leak Made Easy): Attacco che sfrutta la compressione TLS. Si raccomanda di disabilitare la compressione TLS.
- Lucky 13: Attacco temporale contro il riempimento in modalità CBC. Le implementazioni dovrebbero utilizzare confronti a tempo costante.
- POODLE: Attacco contro SSL 3.0. SSL 3.0 dovrebbe essere disabilitato.
- Attacco di Bleichenbacher: Attacco contro il riempimento RSA PKCS#1 v1.5. TLS 1.2 include protezioni contro questo.
11.6. Rinegoziazione (Renegotiation)
La rinegoziazione può introdurre rischi per la sicurezza. La RFC 5246 definisce l'estensione di rinegoziazione sicura per affrontare questi problemi. Le implementazioni dovrebbero:
- Implementare RFC 5746 (Estensione di indicazione di rinegoziazione TLS)
- Gestire con attenzione le richieste di rinegoziazione
- Considerare di rifiutare la rinegoziazione durante operazioni sensibili
11.7. Negazione del servizio (Denial of Service)
Gli handshake TLS sono relativamente costosi (specialmente le operazioni di chiave pubblica). I server dovrebbero:
- Implementare la limitazione della velocità
- Considerare l'uso della ripresa della sessione per ridurre il numero di handshake completi
- Monitorare e rilevare modelli anomali
11.8. Sicurezza dell'implementazione (Implementation Security)
Oltre alle considerazioni di sicurezza a livello di protocollo, le implementazioni dovrebbero anche:
- Prevenire overflow di buffer
- Cancellare in modo sicuro i dati sensibili (chiavi, testo in chiaro)
- Utilizzare confronti a tempo costante per prevenire attacchi temporali
- Gestire correttamente le condizioni di errore
Nota: Per un'analisi di sicurezza completa, consultare la sezione 11 e l'appendice F della RFC 5246.