Ответ в некоторой степени зависит от того, что вы подразумеваете под «безопасным».
Во-первых, ваше резюме не совсем отражает разницу между SSL / TLS и STARTTLS.
- При использовании SSL / TLS клиент открывает TCP-соединение с «портом SSL», назначенным протоколу приложения, которое он хочет использовать, и немедленно начинает говорить TLS.
- С помощью STARTTLS клиент открывает TCP-соединение с «портом открытого текста», связанным с протоколом приложения, которое он хочет использовать, а затем спрашивает сервер «Какие расширения протокола вы поддерживаете?». Затем сервер отвечает списком расширений. Если одним из этих расширений является «STARTTLS», клиент может сказать «хорошо, давайте использовать TLS», и оба начнут говорить TLS.
Если клиент настроен на использование TLS, оба подхода более или менее одинаково безопасны. Но есть некоторые тонкости в том, как STARTTLS должен использоваться, чтобы сделать его безопасным, и для реализации STARTTLS немного сложнее понять эти детали правильно.
С другой стороны, если клиент настроен на использование TLS только при наличии TLS и при использовании открытого текста, когда TLS недоступен, клиент может сначала попытаться подключиться к порту SSL, используемому протоколом, и если это не удается, затем подключитесь к порту открытого текста и попробуйте использовать STARTTLS, и, наконец, вернитесь к открытому тексту, если TLS не доступен в любом случае. Для злоумышленника довольно легко вызвать сбой соединения через порт SSL (все, что требуется, - это своевременные пакеты TCP RST или блокировка порта SSL). Злоумышленнику немного сложнее - но только чуть-чуть - победить согласование STARTTLS и заставить трафик оставаться открытым текстом. И тогда злоумышленник не только читает вашу электронную почту, но и получает ваш логин / пароль для дальнейшего использования.
Поэтому простой ответ: если вы подключаетесь к серверу, который, как вы уже знаете, поддерживает TLS (как и в случае отправки или чтения электронной почты), вам следует использовать SSL / TLS. Если соединение атаковано, попытка соединения не удастся, но ваш пароль и адрес электронной почты не будут скомпрометированы.
С другой стороны, если вы подключаетесь к какой-либо службе, которая не знает, поддерживает ли она TLS, STARTTLS может быть немного лучше.
Когда был изобретен STARTTLS, «пассивные» атаки только для прослушивания были очень распространены, «активные» атаки, при которых злоумышленник вводил трафик, пытаясь снизить уровень безопасности, были менее распространенными. За 20 лет или около того, активные атаки стали более выполнимыми и более распространенными.
Например, если вы пытаетесь использовать ноутбук в аэропорту или каком-либо другом общественном месте и пытаетесь читать почту через предоставленный там wifi, вы не представляете, что эта сеть wifi делает с вашим трафиком. В сетях Wi-Fi очень распространено направление определенных видов трафика к «прокси», которые размещаются между вашими клиентскими приложениями и серверами, с которыми они пытаются общаться. Эти прокси-серверы тривиально отключают STARTTLS и «пробуют один порт, а затем другой», пытаясь заставить вашего клиента переключиться на открытый текст. Да, это происходит, и это только один пример того, как ваш трафик может отслеживаться сетью. И такие атаки не ограничиваются трехбуквенными государственными агентствами,