Cos’è StartTLS? Funzionamento e rischi per la sicurezza
Il comando StartTLS (conosciuto anche come “Opportunistic TLS”) è un’estensione del protocollo Transport Layer Security (TLS) che consente di crittografare le informazioni trasmesse mediante il protocollo TLS.
Come funziona StartTLS?
In qualità di estensione del protocollo TLS, il grande vantaggio che offre StartTLS è il fatto che la cifratura non impedisce la comunicazione con quei client che non supportano questo metodo. StartTLS presenta dunque meno problemi di compatibilità. Tuttavia, se dovesse capitare che un server non accetti TLS, il programma di posta elettronica (client) deve sapere come procedere con i dati. Un altro vantaggio è rappresentato dalla negoziazione bilaterale per la crittografia che rende, in caso di errori nella comunicazione, l’intervento dell’amministratore o dell’utente superfluo grazie a processi automatizzati.
Nel caso del metodo StartTLS, la connessione viene sempre avviata in modalità non cifrata, sulla porta che prevede testo in chiaro. Il protocollo negozia la cifratura con il client soltanto una volta eseguito il comando StartTLS, senza stabilire una nuova connessione. Grazie a StartTLS, in caso di errore nella comunicazione, non è necessario cambiare la porta, dal momento che il client può semplicemente risalire al metodo StartTLS presente sul server di posta elettronica.

Esempio: e-mail
Un’e-mail deve essere crittografata utilizzando il metodo TLS. È stato scelto il protocollo StartTLS per integrare facilmente il metodo di crittografia nel normale funzionamento. Trovi l’opzione corrispondente generalmente nella configurazione dell’account o nelle impostazioni del tuo client di posta. Dopo l’invio dell’e-mail, si avvia la comunicazione:
- Il client invia una richiesta EHLO per chiedere informazioni sui metodi di crittografia.
- Il server di posta risponde con “250-STARTTLS” comunicando che accetta StartTLS.
- Il client invia “STARTTLS” per iniziare la crittografia.
- Il server risponde con il codice di stato “220 OK”.
- Dominio in linea con la tua e-mail
- Tecnologia made in Germany
- Nuove funzionalità IA
Utilizzi di StartTLS
StartTLS viene utilizzato principalmente come estensione di protocollo nella comunicazione via e-mail per i protocolli SMTP, IMAP e POP. HTTP ha un proprio procedimento (specificato in RFC 2817) che assomiglia molto a StartTLS. Tuttavia, al giorno d’oggi, l’uso di HTTPS (RFC 2818) è più comune. Oltre ai protocolli e-mail menzionati, StartTLS può almeno avviare il processo di crittografia nei seguenti protocolli:
Tra i fornitori di servizi internet, StartTLS è ormai il metodo di crittografia e-mail di gran lunga più popolare, poiché consente di gestire molti domini e certificati diversi su un server. Tuttavia, il metodo è controverso perché alcuni dettagli privati come l’indirizzo IP vengono inizialmente trasmessi in chiaro e sono possibili attacchi man in the middle, dato che StartTLS può essere sovrascritto senza essere notato dalla parte del fornitore.
Vantaggi e svantaggi di StartTLS
Gli svantaggi del metodo StartTLS emergono in relazione ai software di sicurezza. I firewall devono analizzare il metodo a livello applicativo per poter distinguere i dati cifrati da quelli non cifrati. Lo stesso vale per i proxy, che in genere lavorano con porte diverse, mentre nel caso di StartTLS non variano mai. Questo ostacola o impedisce il relativo caching.
In termini di protezione dei dati, StartTLS presenta alcuni rischi. La maggior parte dei programmi di posta elettronica utilizzano l’opzione “TLS se possibile”, che rende impossibile per l’utente sapere se la connessione al server sia cifrata o meno. Aumenta, inoltre, il rischio di un attacco man in the middle, dal momento che l’operatore di rete è in grado di filtrare l’estensione StartTLS potendo così registrare a sua volta lo scambio di dati. Infatti, nel caso in cui il comando StartTLS non venga eseguito, i dati trasferiti non vengono cifrati e questo, spesso, senza che l’utente se ne accorga.
Pertanto, si consiglia innanzitutto di eseguire un test approfondito per assicurarsi che il server supporti effettivamente StartTLS. Solo allora è raccomandabile includere il metodo nelle proprie procedure. Se la comunicazione cifrata non va a buon fine è a causa di un problema esterno.
Com’è possibile testare StartTLS?
I protocolli TLS utilizzano porte diverse a seconda dell’operatore. Dato che con StartTLS non è necessario effettuare cambiamenti delle porte, la sua integrazione nella connessione è molto semplice ed è sufficiente disporre di una console adeguata per poter testare il metodo di codifica. In questo modo è possibile verificare quale porta utilizza il singolo operatore per StartTLS. Con il seguente comando (ad esempio in NetCat) è possibile controllare se un server di posta elettronica accetti StartTLS come metodo di codifica nel funzionamento standard:
$ nc smtp.ionos.de 587
220 kundenserver.de (mreue011) Nemesis ESMTP Service ready
ehlo test.local
250-kundenserver.de Hello test.local [80.187.86.70]
250-8BITMIME
250-SIZE 141557760
250 STARTTLS
STARTTLS
220 OKbashQuesto dovrebbe includere il comando “STARTTLS” per poter attivare la cifratura. Come vedi, in questo caso dati personali come l’indirizzo IP vengono trasmessi senza cifratura.
Nel caso di OpenSSL il comando è il seguente:
$ openssl s_client -starttls smtp -connect smtp.ionos.de:587
CONNECTED(00000005)
[…]
SSL handshake has read 4650 bytes and written 1659 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Protocol: TLSv1.3
Server public key is 3072 bit
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
250 STARTTLSbashPer SMTP l’autenticazione non è così immediata. Nella maggior parte dei casi a questo problema viene posto rimedio mediante il metodo “AUTH PLAIN”, per il quale è necessario che i dati di accesso siano codificati in Base64. Con il comando Perl $ perl -MMIME::Base64 -e 'print encode_base64("\000user-ju\000secret") viene così creato un codice che viene poi trasmesso al server SMTP (AUTH PLAIN [Code]). Il test StartTLS è andato a buon fine se il server risponde con Authentication succeeded (incluso il codice). Dopo di che è possibile eseguire ulteriori comandi di posta elettronica.
Se desideri testare StartTLS per server o protocolli non compatibili con OpenSSL puoi utilizzare lo strumento gnuts-cli (del pacchetto gnuts-bin.

