3.1 Protocol Versions (Versioni del protocollo)
3.1 Protocol Versions (Versioni del protocollo)
3.1.1 SSL/TLS Protocol Versions (Versioni del protocollo SSL/TLS)
È importante sia smettere di utilizzare vecchie versioni meno sicure di SSL/TLS sia iniziare a utilizzare versioni moderne e più sicure; pertanto, le seguenti sono le raccomandazioni concernenti le versioni del protocollo TLS/SSL:
-
Le implementazioni NON DEVONO negoziare SSL versione 2.
Motivazione: Oggi, SSLv2 è considerato insicuro [RFC6176].
-
Le implementazioni NON DEVONO negoziare SSL versione 3.
Motivazione: SSLv3 [RFC6101] è stato un miglioramento rispetto a SSLv2 e ha risolto alcune significative falle di sicurezza, ma non supportava cipher suite forti. SSLv3 non supporta le estensioni TLS, alcune delle quali (ad esempio,
renegotiation_info[RFC5746]) sono critiche per la sicurezza. Inoltre, con l'emergere dell'attacco POODLE [POODLE], SSLv3 è ora ampiamente riconosciuto come fondamentalmente insicuro. Vedere [DEP-SSLv3] per ulteriori dettagli. -
Le implementazioni NON DOVREBBERO negoziare TLS versione 1.0 [RFC2246]; l'unica eccezione è quando non è disponibile una versione superiore nella negoziazione.
Motivazione: TLS 1.0 (pubblicato nel 1999) non supporta molte cipher suite moderne e forti. Inoltre, TLS 1.0 manca di un Initialization Vector (IV) per record per le cipher suite basate su CBC e non avverte contro errori di padding comuni.
-
Le implementazioni NON DOVREBBERO negoziare TLS versione 1.1 [RFC4346]; l'unica eccezione è quando non è disponibile una versione superiore nella negoziazione.
Motivazione: TLS 1.1 (pubblicato nel 2006) è un miglioramento della sicurezza rispetto a TLS 1.0 ma non supporta ancora alcune cipher suite più forti.
-
Le implementazioni DEVONO supportare TLS 1.2 [RFC5246] e DEVONO preferire negoziare TLS versione 1.2 rispetto alle versioni precedenti di TLS.
Motivazione: Diverse cipher suite più forti sono disponibili solo con TLS 1.2 (pubblicato nel 2008). In effetti, le cipher suite raccomandate da questo documento (Sezione 4.2 sotto) sono disponibili solo in TLS 1.2.
Questa BCP si applica a TLS 1.2 e anche alle versioni precedenti. Non è sicuro per i lettori presumere che le raccomandazioni in questa BCP si applichino a qualsiasi versione futura di TLS.
3.1.2 DTLS Protocol Versions (Versioni del protocollo DTLS)
DTLS, un adattamento di TLS per i datagrammi UDP, è stato introdotto quando è stato pubblicato TLS 1.1. Le seguenti sono le raccomandazioni rispetto a DTLS:
-
Le implementazioni NON DOVREBBERO negoziare DTLS versione 1.0 [RFC4347].
La versione 1.0 di DTLS corrisponde alla versione 1.1 di TLS (vedere sopra).
-
Le implementazioni DEVONO supportare e DEVONO preferire negoziare DTLS versione 1.2 [RFC6347].
La versione 1.2 di DTLS corrisponde alla versione 1.2 di TLS (vedere sopra). (Non esiste una versione 1.1 di DTLS.)
3.1.3 Fallback to Lower Versions (Fallback a versioni inferiori)
I client che effettuano il "fallback" a versioni inferiori del protocollo dopo che il server rifiuta versioni superiori del protocollo NON DEVONO fare fallback a SSLv3 o versioni precedenti.
Motivazione: Alcune implementazioni client ritornano a versioni inferiori di TLS o persino a SSLv3 se il server rifiuta versioni superiori del protocollo. Questo fallback può essere forzato da un attaccante man-in-the-middle (MITM). TLS 1.0 e SSLv3 sono significativamente meno sicuri di TLS 1.2, la versione raccomandata da questo documento. Mentre i server solo TLS 1.0 sono ancora abbastanza comuni, le scansioni IP mostrano che i server solo SSLv3 ammontano a circa il 3% dell'attuale popolazione di server Web. (Al momento della stesura di questo documento, un metodo esplicito per prevenire gli attacchi di downgrade è stato definito di recente in [RFC7507].)