Чи STARTTLS менш безпечний, ніж TLS / SSL?


45

У Thunderbird (і я припускаю, що і у багатьох інших клієнтів) у мене є можливість вибору між "SSL / TLS" та "STARTTLS".

Наскільки я розумію, "STARTTLS" означає простими словами "шифрувати, якщо обидва кінці підтримують TLS, інакше не шифруйте передачу" . А "SSL / TLS" означає простими словами "завжди шифрувати або взагалі не з'єднуватися" . Це правильно?

Або іншими словами:

Чи STARTTLS менш безпечний, ніж SSL / TLS, тому що він може повертатися до простого тексту без повідомлення мене?

Відповіді:


46

Відповідь, заснована на STARTTLS RFC для SMTP ( RFC 3207 ), така:

STARTTLS менш безпечний, ніж TLS.

Замість того, щоб розмовляти сам, я дозволю RFC говорити сам за себе, чотири відповідні біти виділені BOLD :

Атака "посередник" може бути запущена, видаливши відповідь "250 STARTTLS" з сервера. Це призведе до того, що клієнт не намагається запустити сеанс TLS. Інша атака «посередника» - дозволити серверу оголосити про свою можливість STARTTLS, але змінити запит клієнта на запуск TLS та відповідь сервера. Для захисту від таких атак як клієнти, так і сервери ОБОВ'ЯЗКОВО мають бути налаштовані так, щоб вимагати успішного узгодження TLS відповідного набору шифрів для вибраних хостів, перш ніж повідомлення можна буде успішно перенести. Додатковий варіант використання TLS, коли це можливо, ДОЛЖЕН бути також наданий. Впровадження МОЖЕ надають можливість записувати, що TLS використовувався при спілкуванні з певним однолітком, і генеруючи попередження, якщо воно не використовується в подальшому сеансі.

Якщо узгодження TLS не вдається або якщо клієнт отримує відповідь 454, клієнт повинен вирішити, що робити далі. Є три основні варіанти: продовжуйте роботу з рештою сеансу SMTP , [...]

Як бачите, RFC сама заявляє (не дуже чітко, але досить чітко), що НІЧЕ не вимагає від клієнтів встановлення захищеного з'єднання та інформування користувачів, якщо захищене з'єднання не вдалося. Це явно дає клієнтам можливість беззвучно встановлювати текстові з'єднання.


5
Ваша думка, безумовно, справедлива, але, не маючи жодної RFC або офіційної специфікації щодо SMTPS (тобто SMTP + "неявна SSL / TLS", де SSL / TLS встановлюється першим), клієнти SMTP / SMTPS також можуть вирішити повернутися до простого зв'язку якщо вони не зможуть ініціювати з'єднання SSL / TLS на порту 465. Це все-таки вибір вибір.
Бруно

2
Існує безліч RFC для встановлення TLS-з'єднань. Ніде там "дозволити звичайне текстове з'єднання" не існує як варіант відповідності RFC (принаймні, це було б новиною для багатьох людей). Отже, SMTPS не вимагає, щоб окремий RFC був більш захищеним, ніж STARTTLS.
Грег

1
Є RFC про TLS (RFC 5246 та попередники), PKI (RFC 5280), перевірку імен (RFC 6125), але нічого, що описує взаємодію між SMTP та SSL / TLS в SMTPS офіційно AFAIK, не так, як ви отримуєте специфікація для HTTPS: RFC 2818. Можна сказати, що "очевидно, спочатку встановіть з'єднання SSL / TLS", але не все щодо цього очевидно (зокрема аспект перевірки ідентичності, лише формалізований зовсім недавно в RFC 6125).
Бруно

23

Між двома варіантами в безпеці немає різниці.

  • SSL / TLS спочатку відкриває з'єднання SSL / TLS, потім починає транзакцію SMTP. Це має відбуватися на порту, на якому вже не запущений SMTP-сервер не-SSL / TLS; неможливо налаштувати єдиний порт для обробки як простого тексту, так і зашифрованого з'єднання через характер протоколів.

  • STARTTLS запускає транзакцію SMTP і шукає підтримки з іншого кінця для TLS у відповідь на EHLO. Якщо клієнт бачить STARTTLS у списку підтримуваних команд, він надсилає STARTTLS і починає узгодження для шифрування. Все це може (і, як правило, відбувається) на стандартному порту SMTP 25, частково для зворотної сумісності, а також для уможливлення умовно-патологічного шифрування між кінцевими точками, які обидва підтримують його, але не обов'язково вимагають цього.

Як правило, SSL / TLS використовується лише між кінцевими клієнтами та серверами. STARTTLS частіше використовується між MTA для забезпечення міжсерверного транспорту.

З огляду на ці дві реалізації, STARTTLS можна вважати незахищеними, якщо користувач або адміністратор припускають, що з'єднання зашифроване, але насправді не налаштували його на вимогу шифрування. Однак використовуване шифрування точно таке ж, як і SSL / TLS, і тому не більш-менш вразливе для атаки "Людина в середині" поза цією помилкою конфігурації.


2
Якщо з'єднання зашифровано, і SSL / TLS, і STARTTLS однакові, так. Але це не те, що я просив. Я мав на увазі: Якщо я використовую STARTTLS, то як я (як користувач) можу знати, чи справді мій зв’язок захищений? Якщо я спробую використовувати SSL / TLS, я просто не можу підключитися, якщо сервер його не підтримує, але принаймні нічого не надсилається як відкритий текст. Але якщо STARTTLS повертається до простого тексту, то моя пошта надсилається в простому тексті, не знаючи, що він був відправлений у відкритому тексті (що змушує мене думати, що я в безпеці, коли я насправді не є).
Foo Bar

6
Я не знаю, чому цю відповідь обрали правильною. Це неправильно. Як зазначає Крістофер, STARTTLS менш безпечний, ніж TLS, оскільки він дає помилкове відчуття безпеки клієнтам.
Грег

4
@greg в протоколі нічого поганого. Недоліком є ​​клієнти, які не дотримуються rfc і не попереджають користувача, коли з'єднання не зашифроване.
longneck

1
@longneck так ... можливо, це справа семантики, але клієнти не можуть "не дотримуватися" протоколу TLS і пройти електронний лист, період. тож це змістовна різниця.
Грег

2
@Bruno "Це менш безпечно, якщо клієнт погано реалізований" <= ти просто доводиш мені свою думку. Якщо клієнт може зробити щось, щоб зробити з'єднання незахищеним, зберігаючи функціонуюче з'єднання, то STARTTLS менш безпечний, ніж явний TLS (де це неможливо).
Грег

8

Зокрема, для електронної пошти у січні 2018 року було випущено RFC 8314 , в якому явно рекомендується використовувати "Неявні TLS" у перевазі механізму STARTTLS для подання IMAP, POP3 та SMTP.

Якщо коротко, ця примітка тепер рекомендує:

  • TLS версії 1.2 або новішої застосовується для всього трафіку між MUA та серверами подання пошти, а також між MUA та серверами доступу до пошти.
  • MUAs та постачальники послуг поштового зв’язку (MSP) (a) перешкоджають використанню протоколів чіткого тексту для доступу до пошти та подання пошти та (b) припиняють використання протоколів чіткого тексту для цих цілей якнайшвидше.
  • Підключення до серверів подання пошти та серверів доступу до пошти здійснюються за допомогою "Неявного TLS" (як визначено нижче), для переваги підключення до порту "очистити текст" та узгодження TLS за допомогою команди STARTTLS або подібної команди.

(наголос додано)


4

Відповідь певною мірою залежить від того, що ви маєте на увазі під "безпечним".

По-перше, ваше резюме не зовсім фіксує різницю між SSL / TLS та STARTTLS.

  • За допомогою SSL / TLS клієнт відкриває TCP-з'єднання до "порту SSL", призначеного протоколу програми, який він хоче використовувати, і негайно починає говорити TLS.
  • За допомогою STARTTLS клієнт відкриває TCP-з'єднання до "порту очищення тексту", пов'язаного з протоколом програми, який він хоче використовувати, а потім запитує сервер "які розширення протоколу ви підтримуєте?". Потім сервер відповідає за допомогою списку розширень. Якщо одним із цих розширень є "STARTTLS", то клієнт може сказати "добре, давайте скористаємося TLS", і обидва почнемо говорити TLS.

Якщо клієнт налаштований вимагати TLS, два підходи є більш-менш однаково безпечними. Але є деякі тонкощі того, як потрібно використовувати STARTTLS, щоб зробити його безпечним, і для впровадження STARTTLS трохи складніше виправити ці деталі.

З іншого боку, якщо клієнт налаштований використовувати TLS лише тоді, коли TLS доступний, і використовувати cleartext, коли TLS недоступний, що може зробити клієнт, спершу спробуйте підключитися до порту SSL, використовуваного протоколом, і якщо це не вдається, потім підключіться до порту очищення тексту та спробуйте використовувати STARTTLS, і, нарешті, поверніться до очищення тексту, якщо TLS недоступний в будь-якому випадку. Зловмисникові досить легко призвести до виходу з ладу підключення до порту SSL (все, що потрібно, - це декілька своєчасних пакетів TCP RST або блокування порту SSL). Трохи важче - але лише трохи - для зловмисника перемогти переговори щодо STARTTLS і змусити рух трафіку в чіткому тексті. І тоді зловмисник не тільки читає вашу електронну пошту, але й отримує захоплення вашого імені користувача / пароля для подальшого використання.

Тож проста відповідь - якщо ви підключаєтесь до сервера, який ви вже знаєте, підтримує TLS (як це має бути у випадку надсилання чи читання електронної пошти), ви повинні використовувати SSL / TLS. Якщо підключення атакується, спроба з'єднання не вдасться, але ваш пароль та електронна пошта не будуть порушені.

З іншого боку, якщо ви підключаєтесь до якоїсь служби, яка не знає, чи підтримує вона TLS, STARTTLS може бути незначно кращим.

Коли було придумано STARTTLS, "пасивні" атаки лише для прослуховування були дуже поширеними, "активні" атаки, в яких зловмисник вводив трафік, щоб спробувати знизити рівень безпеки, були менш поширеними. За 20 або більше років з того часу активні напади стали більш здійсненними та більш поширеними.

Наприклад, якщо ви намагаєтесь використовувати ноутбук в аеропорту чи іншому громадському місці і намагаєтесь прочитати вашу пошту через наданий там wifi, ви не маєте поняття, що ця мережа Wi-Fi робить з вашим трафіком. У мережах Wi-Fi дуже часто трафікувати певний тип трафіку на "проксі", які розміщуються між вашими клієнтськими програмами та серверами, з якими вони намагаються спілкуватися. Для цих проксі-серверів нереально вимкнути і STARTTLS, і "спробувати один порт, потім інший", намагаючись змусити вашого клієнта повернутися до ясного тексту. Так, це трапляється, і це лише один приклад того, як ваш трафік може шпигувати мережею. І такі напади не обмежуються трибуквенними державними агенціями,


1

Так, ви маєте основні права. І так, STARTTLS, безумовно, менш безпечний. Він може не тільки повернутись до простого тексту без повідомлення, але й тому, що він піддається атакам "людина-в-середині". Оскільки з'єднання починається в чистому режимі, MitM може викреслити команду STARTTLS і запобігти шифруванню будь-коли. Однак, я вважаю, що сервери пошти можуть вказати, що передача відбуватиметься лише після налаштування зашифрованого тунелю. Тож можна обійтися цим.

То чому ж таке взагалі існує? З міркувань сумісності. Якщо будь-яка із сторін не підтримує шифрування, можливо, ви все ще хочете, щоб з'єднання було належним чином завершено.


Отже, сервер, здатний до STARTTLS, також завжди буде здатний до SSL / TLS, правда? Тож завжди краще спершу спробувати SSL / TLS і подивитися, чи працює він?
Foo Bar

2
@FooBar ні, один не означає, що інший доступний. насправді вони могли бути налаштовані з абсолютно різними доменами аутентифікації.
longneck

3
STARTTLS не є вразливим до MitM, якщо ви не підтверджуєте сертифікати або не використовуєте слабкі сертифікати. Сертифікат як і раніше подається точно так само, як завжди, і клієнт може вимагати, щоб оновлення TLS пройшло успішно, перш ніж продовжувати. Варто зазначити, що це точно та сама ситуація, що і SSL / TLS.
Falcon Momot

1
Не знаєте, чому люди зволікають вас, це правильна відповідь, STARTTLS менш безпечний, ніж TLS, і це дає помилкове відчуття безпеки. Інтернет-провайдери можуть просто відключити це: arstechnica.com/tech-policy/2014/11/…
Грег

1
Що стосується самого протоколу, STARTTLS менш захищений, ніж TLS, оскільки він прямо дозволяє дозволити звичайний текстовий зв’язок без попередження користувача: serverfault.com/a/648282/207987
Грег

1

Погодьтеся з @Greg. Ці напади можливі. Однак MTA можуть бути налаштовані (залежно від MTA) для використання "обов'язкових TLS", а не "умовно-умовних TLS". Це означає, що для транзакцій електронною поштою використовується TLS та лише TLS (сюди також входить STARTTLS). Якщо віддалений MTA не підтримує STARTTLS, повідомлення електронної пошти відхиляється.


0

Ні, це не менш безпечно, коли ваша програма керує нею правильно.

Існує чотири шляхи для обробки TLS, і багато програм дозволяють вибрати:

  • Немає TLS
  • TLS на виділеному порті (лише приміряє TLS)
  • Використовуйте TLS, якщо він доступний (Пробує starttls, використовує незашифроване з'єднання, коли він не працює)
  • Завжди використовуйте TLS (Використовує starttlsта виходить з ладу, якщо він не працює)

Перевага TLS на виділеному порту полягає в тому, що ви можете бути впевнені, що немає резервного резерву, коли ви використовуєте програму, яку ви ще не знаєте, або яка не відкриває параметри деталей для роботи з помилками у своєму майстрі першого запуску.

Але в цілому безпека залежить від обробки помилок безпеки. Програма може вирішити переключитися на порт простого тексту, коли TLS на порту TLS також вийде з ладу. Вам потрібно знати, що це буде робити, і вибрати безпечні налаштування. І програми повинні використовувати безпечні настройки за замовчуванням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.