La crittografia con SSL comprende i seguenti passaggi:
- Identifica il peer usando un certificato.
- Crea e scambia le chiavi per la seguente comunicazione.
- Scambia i dati, crittografati con le chiavi scambiate in precedenza.
Di solito utilizzi la crittografia perché pensi che chiunque possa ascoltare la connessione. Un piccolo passo da questo ascolto passivo è la manipolazione attiva della connessione che anche l'SSL può rilevare. Ma per questo ha bisogno di identificare correttamente il tuo peer, altrimenti chiunque nel mezzo potrebbe pretendere di essere il server giusto.
Con un certificato autofirmato, l'identificazione corretta non è possibile, perché chiunque può creare un tale certificato con le stesse credenziali di te. Ciò significa che nessuno dovrebbe fidarsi di un certificato autofirmato da solo. Deve solo fidarsi di un certificato autofirmato se può verificarlo utilizzando un altro modo. Questo altro modo potrebbe essere una configurazione manuale sul lato server (di solito non è il caso a meno che il mittente conosca direttamente il destinatario) o la verifica del certificato attraverso DANE , dove il proprietario del dominio fornisce il proprio certificato o impronta digitale all'interno di un record DNS attendibile (richiede DNSSec ).
Ciò che i server effettivamente fanno quando rilevano un certificato non attendibile è diverso: alcuni accetteranno il certificato e scriveranno verify=NO
nell'intestazione Received della posta, mentre altri potrebbero rifiutarsi di connettersi con SSL perché considerano la connessione non sicura e il downgrade in chiaro testo o non connettere affatto. Dipende dalle impostazioni del server mittente.
Attualmente probabilmente la maggior parte dei server di posta si connetterà correttamente ad altri server, anche se non possono verificare il loro certificato. Ma sempre più utilizzano certificati "veri" (verificabili). Se confronti i rapporti di Facebook da maggio 2014 a Agosto 2014 puoi vedere l'uso di certificati verificabili passare dal 30% al 95% in soli 4 mese. Ciò significa che l'uso di certificati reali sarà probabilmente richiesto da più server nel prossimo futuro.
Ciò significa che l'utilizzo di un certificato firmato da una CA ben nota è decisamente migliore rispetto all'utilizzo di un certificato autofirmato. Ma anche quello potrebbe non fornire la sicurezza che stai cercando di raggiungere. Uno qualsiasi dei 100 di CA attendibili dal sistema operativo può emettere un certificato di questo tipo, quindi un utente malintenzionato potrebbe tentare di ottenere anche un certificato per il proprio dominio. Ma questo è almeno molto più difficile che creare un altro certificato autofirmato, perché l'hacker deve hackerare la CA o controllare il dominio di posta in qualche modo per catturare i messaggi che la CA utilizza all'interno del processo di identificazione.
Un altro attacco di un uomo man-in-the-middle è di reinstradare la posta attaccando il DNS: per instradare una posta dal server di posta mittente al server responsabile del tuo dominio, il server mittente deve una ricerca DNS per il record MX del tuo dominio, che contiene i nomi dei tuoi server di posta. Un attaccante attivo vicino al server mittente potrebbe attaccare questa ricerca DNS e fornire un record MX falso che punta ai propri server. TLS non aiuterà più qui. Invece devi usare DNSSec per proteggere i tuoi record DNS e il mittente deve verificare questo record.
Oltre a ciò TLS non fornisce sicurezza end-to-end per la posta, solo hop-by-hop. Qualsiasi server di posta in mezzo ha accesso alla posta semplice e quindi deve essere completamente affidabile. Per ottenere la crittografia end-to-end è necessario utilizzare S / MIME o PGP. E a causa di ciò alcuni amministratori di server non si preoccupano affatto del TLS corretto, perché TLS non offrirà sicurezza reale (end-to-end) per i messaggi, anche se implementati correttamente.