1. Introduzione
Transport Layer Security (TLS) e Datagram Transport Layer Security (DTLS) vengono utilizzati per proteggere i dati scambiati su un'ampia varietà di protocolli applicativi, tra cui HTTP [RFC9112] [RFC9113], IMAP [RFC9051], Post Office Protocol (POP) [STD53], SIP [RFC3261], SMTP [RFC5321] e Extensible Messaging and Presence Protocol (XMPP) [RFC6120]. Tali protocolli utilizzano sia il protocollo di handshake TLS o DTLS che il livello di record TLS o DTLS. Sebbene il protocollo di handshake TLS possa essere utilizzato anche con diversi livelli di record per definire protocolli di trasporto sicuri (l'esempio più importante è QUIC [RFC9000]), tali protocolli di trasporto non rientrano nell'ambito diretto di questo documento; tuttavia, molte delle raccomandazioni qui presenti potrebbero applicarsi nella misura in cui tali protocolli utilizzano il protocollo di handshake TLS.
Negli anni precedenti il 2015, l'industria ha assistito a gravi attacchi contro TLS e DTLS, inclusi attacchi contro le suite di cifratura più comunemente utilizzate e le loro modalità operative. Ad esempio, gli algoritmi di crittografia AES-CBC [RFC3602] e RC4 [RFC7465], che un tempo erano le cifrature più ampiamente distribuite, sono stati attaccati nel contesto di TLS. Informazioni dettagliate sugli attacchi noti prima del 2015 sono fornite in un documento di accompagnamento [RFC7457] alla versione precedente delle raccomandazioni TLS [RFC7525], che aiuterà il lettore a comprendere la logica alla base delle raccomandazioni fornite qui. Quel documento non è stato aggiornato insieme a questo; al contrario, gli attacchi più recenti sono descritti in questo documento, così come le mitigazioni per tali attacchi.
La comunità TLS ha reagito agli attacchi descritti nella [RFC7457] in diversi modi:
-
Sono state pubblicate linee guida dettagliate sull'uso di TLS 1.2 [RFC5246] e DTLS 1.2 [RFC6347] insieme alle versioni precedenti del protocollo. Questa guida è inclusa nell'originale [RFC7525] ed è in gran parte mantenuta in questa versione rivista; si noti che questa guida è stata in gran parte adottata dall'industria dalla pubblicazione della RFC 7525 nel 2015.
-
Le versioni di TLS precedenti alla 1.2 sono state deprecate [RFC8996].
-
La versione 1.3 di TLS [RFC8446] è stata rilasciata, seguita dalla versione 1.3 di DTLS [RFC9147]; queste versioni mitigano o risolvono in gran parte gli attacchi descritti.
Coloro che implementano e distribuiscono TLS e protocolli basati su TLS hanno bisogno di una guida su come utilizzarli in modo sicuro. Questo documento fornisce indicazioni per i servizi distribuiti e per le implementazioni software, supponendo che l'implementatore si aspetti che il proprio codice venga distribuito negli ambienti definiti nella Sezione 5. Per quanto riguarda la distribuzione, questo documento si rivolge a un vasto pubblico, vale a dire a tutti i distributori che desiderano aggiungere autenticazione (unidirezionale o reciproca), riservatezza e protezione dell'integritità dei dati alle loro comunicazioni.
Le raccomandazioni qui contenute prendono in considerazione la sicurezza di vari meccanismi, la loro maturità tecnica e interoperabilità, e la loro prevalenza nelle implementazioni al momento della stesura. A meno che non sia esplicitamente indicato che una raccomandazione si applica solo a TLS o solo a DTLS, ogni raccomandazione si applica sia a TLS che a DTLS.
Questo documento tenta di ridurre al minimo le nuove linee guida per le implementazioni TLS 1.2, e l'approccio generale è quello di incoraggiare i sistemi a migrare verso TLS 1.3. Tuttavia, ciò non è sempre pratico. Gli attacchi scoperti di recente, così come i cambiamenti nell'ecosistema, hanno reso necessari alcuni nuovi requisiti che si applicano agli ambienti TLS 1.2. Questi sono riassunti nell'Appendice A.
Naturalmente, è probabile che si verifichino attacchi futuri, e questo documento non può affrontarli. Coloro che implementano e distribuiscono TLS/DTLS e protocolli basati su TLS/DTLS sono vivamente invitati a prestare attenzione agli sviluppi futuri. In particolare, sebbene sia noto che la creazione di computer quantistici avrà un impatto significativo sulla sicurezza delle primitive crittografiche e delle tecnologie che le utilizzano, la crittografia post-quantistica è attualmente un work in progress ed è troppo presto per formulare raccomandazioni; una volta che le relative specifiche saranno standardizzate nell'IETF o altrove, questo documento dovrà essere aggiornato per riflettere le migliori pratiche del momento.
Come notato, la specifica TLS 1.3 risolve molte delle vulnerabilità elencate in questo documento. Un sistema che implementa TLS 1.3 dovrebbe avere meno vulnerabilità rispetto a TLS 1.2 o inferiore. Pertanto, questo documento sostituisce [RFC7525], con un obiettivo esplicito di incoraggiare la migrazione dalla maggior parte degli usi di TLS 1.2 a TLS 1.3.
Queste sono raccomandazioni minime per l'uso di TLS nella stragrande maggioranza degli scenari di implementazione e distribuzione, ad eccezione di TLS non autenticato (vedi Sezione 5). Altre specifiche che fanno riferimento a questo documento potrebbero avere requisiti più rigorosi relativi a uno o più aspetti del protocollo, a seconda delle loro circostanze particolari (ad esempio, per l'uso con uno specifico protocollo applicativo); in tal caso, si consiglia agli implementatori di attenersi a tali requisiti più rigorosi. Inoltre, questo documento fornisce una base, non un tetto: ove possibile, gli amministratori dei servizi sono incoraggiati ad andare oltre il supporto minimo disponibile nelle implementazioni per fornire la massima sicurezza possibile. Ad esempio, sulla base della conoscenza della base installata per un protocollo applicativo esistente e di un'analisi costi-benefici riguardante la forza della sicurezza rispetto all'interoperabilità, un determinato fornitore di servizi potrebbe decidere di disabilitare completamente TLS 1.2 e offrire solo TLS 1.3.
La conoscenza della comunità sulla forza di vari algoritmi e sugli attacchi fattibili può cambiare rapidamente, e l'esperienza mostra che un documento Best Current Practice (BCP) sulla sicurezza è un'istantanea nel tempo. I lettori sono invitati a verificare la presenza di errata o aggiornamenti applicabili a questo documento.
Questo documento aggiorna [RFC5288] alla luce dell'attacco [Boeck2016]. Vedi la Sezione 7.2.1 per i dettagli.
Questo documento aggiorna [RFC6066] alla luce dell'attacco [ALPACA]. Vedi la Sezione 3.7 per i dettagli.