Il comando StartTLS (co­no­sciu­to anche come “Op­por­tu­ni­stic TLS”) è un’esten­sio­ne del pro­to­col­lo Transport Layer Security (TLS) che consente di crit­to­gra­fa­re le in­for­ma­zio­ni trasmesse mediante il pro­to­col­lo TLS.

Come funziona StartTLS?

In qualità di esten­sio­ne del pro­to­col­lo TLS, il grande vantaggio che offre StartTLS è il fatto che la cifratura non impedisce la co­mu­ni­ca­zio­ne con quei client che non sup­por­ta­no questo metodo. StartTLS presenta dunque meno problemi di com­pa­ti­bi­li­tà. Tuttavia, se dovesse capitare che un server non accetti TLS, il programma di posta elet­tro­ni­ca (client) deve sapere come procedere con i dati. Un altro vantaggio è rap­pre­sen­ta­to dalla ne­go­zia­zio­ne bi­la­te­ra­le per la crit­to­gra­fia che rende, in caso di errori nella co­mu­ni­ca­zio­ne, l’in­ter­ven­to dell’am­mi­ni­stra­to­re o dell’utente superfluo grazie a processi au­to­ma­tiz­za­ti.

Nel caso del metodo StartTLS, la con­nes­sio­ne viene sempre avviata in modalità non cifrata, sulla porta che prevede testo in chiaro. Il pro­to­col­lo negozia la cifratura con il client soltanto una volta eseguito il comando StartTLS, senza stabilire una nuova con­nes­sio­ne. Grazie a StartTLS, in caso di errore nella co­mu­ni­ca­zio­ne, non è ne­ces­sa­rio cambiare la porta, dal momento che il client può sem­pli­ce­men­te risalire al metodo StartTLS presente sul server di posta elet­tro­ni­ca.

Immagine: Grafico di riepilogo sul funzionamento di StartTLS
Durante la co­mu­ni­ca­zio­ne tra due server di posta elet­tro­ni­ca, StartTLS ga­ran­ti­sce la crit­to­gra­fia se entrambe le parti sup­por­ta­no StartTLS.

Esempio: e-mail

Un’e-mail deve essere crit­to­gra­fa­ta uti­liz­zan­do il metodo TLS. È stato scelto il pro­to­col­lo StartTLS per integrare fa­cil­men­te il metodo di crit­to­gra­fia nel normale fun­zio­na­men­to. Trovi l’opzione cor­ri­spon­den­te ge­ne­ral­men­te nella con­fi­gu­ra­zio­ne dell’account o nelle im­po­sta­zio­ni del tuo client di posta. Dopo l’invio dell’e-mail, si avvia la co­mu­ni­ca­zio­ne:

  1. Il client invia una richiesta EHLO per chiedere in­for­ma­zio­ni sui metodi di crit­to­gra­fia.
  2. Il server di posta risponde con “250-STARTTLS” co­mu­ni­can­do che accetta StartTLS.
  3. Il client invia “STARTTLS” per iniziare la crit­to­gra­fia.
  4. Il server risponde con il codice di stato “220 OK”.
E-mail pro­fes­sio­na­le
La tua e-mail con il provider made in Germany n°1 in Europa
  • Dominio in linea con la tua e-mail
  • Tec­no­lo­gia made in Germany
  • Nuove fun­zio­na­li­tà IA

Utilizzi di StartTLS

StartTLS viene uti­liz­za­to prin­ci­pal­men­te come esten­sio­ne di pro­to­col­lo nella co­mu­ni­ca­zio­ne via e-mail per i pro­to­col­li SMTP, IMAP e POP. HTTP ha un proprio pro­ce­di­men­to (spe­ci­fi­ca­to in RFC 2817) che as­so­mi­glia molto a StartTLS. Tuttavia, al giorno d’oggi, l’uso di HTTPS (RFC 2818) è più comune. Oltre ai pro­to­col­li e-mail men­zio­na­ti, StartTLS può almeno avviare il processo di crit­to­gra­fia nei seguenti pro­to­col­li:

Tra i fornitori di servizi internet, StartTLS è ormai il metodo di crit­to­gra­fia e-mail di gran lunga più popolare, poiché consente di gestire molti domini e cer­ti­fi­ca­ti diversi su un server. Tuttavia, il metodo è con­tro­ver­so perché alcuni dettagli privati come l’indirizzo IP vengono ini­zial­men­te trasmessi in chiaro e sono possibili attacchi man in the middle, dato che StartTLS può essere so­vra­scrit­to 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 ana­liz­za­re il metodo a livello ap­pli­ca­ti­vo per poter di­stin­gue­re 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 pro­te­zio­ne dei dati, StartTLS presenta alcuni rischi. La maggior parte dei programmi di posta elet­tro­ni­ca uti­liz­za­no l’opzione “TLS se possibile”, che rende im­pos­si­bi­le per l’utente sapere se la con­nes­sio­ne 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’esten­sio­ne StartTLS potendo così re­gi­stra­re a sua volta lo scambio di dati. Infatti, nel caso in cui il comando StartTLS non venga eseguito, i dati tra­sfe­ri­ti non vengono cifrati e questo, spesso, senza che l’utente se ne accorga.

Pertanto, si consiglia in­nan­zi­tut­to di eseguire un test ap­pro­fon­di­to per as­si­cu­rar­si che il server supporti ef­fet­ti­va­men­te StartTLS. Solo allora è rac­co­man­da­bi­le includere il metodo nelle proprie procedure. Se la co­mu­ni­ca­zio­ne cifrata non va a buon fine è a causa di un problema esterno.

Com’è possibile testare StartTLS?

I pro­to­col­li TLS uti­liz­za­no porte diverse a seconda dell’operatore. Dato che con StartTLS non è ne­ces­sa­rio ef­fet­tua­re cam­bia­men­ti delle porte, la sua in­te­gra­zio­ne nella con­nes­sio­ne è molto semplice ed è suf­fi­cien­te disporre di una console adeguata per poter testare il metodo di codifica. In questo modo è possibile ve­ri­fi­ca­re quale porta utilizza il singolo operatore per StartTLS. Con il seguente comando (ad esempio in NetCat) è possibile con­trol­la­re se un server di posta elet­tro­ni­ca accetti StartTLS come metodo di codifica nel fun­zio­na­men­to 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 OK
bash

Questo 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 STARTTLS
bash

Per SMTP l’au­ten­ti­ca­zio­ne non è così immediata. Nella maggior parte dei casi a questo problema viene posto rimedio mediante il metodo “AUTH PLAIN”, per il quale è ne­ces­sa­rio che i dati di accesso siano co­di­fi­ca­ti 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 elet­tro­ni­ca.

Consiglio

Se desideri testare StartTLS per server o pro­to­col­li non com­pa­ti­bi­li con OpenSSL puoi uti­liz­za­re lo strumento gnuts-cli (del pacchetto gnuts-bin.

Vai al menu prin­ci­pa­le