Passa al contenuto principale

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.