Odpowiedź zależy w pewnym stopniu od tego, co rozumiesz przez „bezpieczny”.
Po pierwsze, twoje podsumowanie nie do końca oddaje różnicę między SSL / TLS a STARTTLS.
- Dzięki SSL / TLS klient otwiera połączenie TCP z „portem SSL” przypisanym do protokołu aplikacji, którego chce używać, i natychmiast zaczyna mówić TLS.
- Dzięki STARTTLS klient otwiera połączenie TCP z „portem czystego tekstu” powiązanym z protokołem aplikacji, którego chce użyć, a następnie pyta serwer „jakie rozszerzenia protokołu obsługujecie?”. Serwer następnie odpowiada listą rozszerzeń. Jeśli jednym z tych rozszerzeń jest „STARTTLS”, klient może powiedzieć „OK, użyjmy TLS” i oba zaczną mówić TLS.
Jeśli klient jest skonfigurowany tak, aby wymagać TLS, oba podejścia są mniej więcej tak samo bezpieczne. Ale są pewne subtelności na temat tego, w jaki sposób należy używać STARTTLS, aby było bezpieczne, a implementacja STARTTLS jest nieco trudniejsza, aby uzyskać prawidłowe dane.
Z drugiej strony, jeśli klient jest skonfigurowany do korzystania z TLS tylko wtedy, gdy TLS jest dostępny, i korzystania z tekstu jawnego, gdy TLS nie jest dostępny, klient może najpierw spróbować połączyć się z portem SSL używanym przez protokół, a jeśli to kończy się niepowodzeniem, a następnie połącz się z portem czystego tekstu i spróbuj użyć STARTTLS, a na koniec wróć do zwykłego tekstu, jeśli TLS nie jest dostępny w obu przypadkach. Atakujący może dość łatwo spowodować awarię połączenia z portem SSL (wystarczy kilka pakietów TCP RST w odpowiednim czasie lub zablokowanie portu SSL). Atakującemu jest nieco trudniej - ale tylko trochę - pokonanie negocjacji STARTTLS i sprawienie, że ruch pozostanie czysty. A wtedy atakujący nie tylko przeczyta Twój e-mail, ale także przechwyci Twoją nazwę użytkownika / hasło do wykorzystania w przyszłości.
Tak więc prosta odpowiedź brzmi: jeśli łączysz się z serwerem, o którym wiesz, że obsługuje TLS (tak jak powinno być w przypadku wysyłania lub czytania wiadomości e-mail), powinieneś użyć SSL / TLS. Jeśli połączenie zostanie zaatakowane, próba połączenia nie powiedzie się, ale hasło i adres e-mail nie zostaną naruszone.
Z drugiej strony, jeśli łączysz się z jakąś usługą, której nie wiesz, czy obsługuje ona TLS, STARTTLS może być nieznacznie lepszy.
Kiedy wynaleziono STARTTLS, ataki „pasywne” polegające na nasłuchiwaniu były bardzo powszechne, rzadziej występowały „aktywne” ataki, w których atakujący wprowadzał ruch w celu obniżenia bezpieczeństwa. W ciągu około 20 lat od tego czasu aktywne ataki stały się bardziej wykonalne i powszechne.
Na przykład, jeśli próbujesz użyć laptopa na lotnisku lub w innym miejscu publicznym i próbujesz czytać pocztę za pośrednictwem dostępnego tam Wi-Fi, nie masz pojęcia, co ta sieć Wi-Fi robi z twoim ruchem. Sieci Wi-Fi często kierują określone rodzaje ruchu do „serwerów proxy”, które pośredniczą między aplikacjami klienckimi a serwerami, z którymi próbują rozmawiać. Wyłączenie przez te serwery proxy zarówno STARTTLS, jak i „wypróbuj jeden port, a potem drugi” jest banalne, aby skłonić klienta do powrotu do tekstu jawnego. Tak, dzieje się tak i jest to tylko jeden przykład tego, jak sieć może szpiegować Twój ruch. I takie ataki nie ograniczają się do trzyliterowych agencji wspieranych przez państwo,