StartTLS

КомандаStartTLS (также известная как STARTSSL, StartSSL или «Opportunistic TLS») расширяет протокол Transport Layer Security (TLS) для шифрования информации, передаваемой с помощью протокола TLS. StartTLS в основном используется как расширение протокола для связи по электронной почте, основанной на протоколах SMTP, IMAP и POP. HTTP имеет свой собственный метод (указанный в RFC 2817), который очень похож на StartTLS. Однако в настоящее время более распространено использование HTTPS (RFC 2818). Помимо упомянутых протоколов электронной почты, StartTLS может инициировать процесс шифрования с помощью следующих методов:

  • LDAP (RFC 4511)
  • FTP (RFC 4217)
  • XMPP (RFC 6120)
  • NNTP (RFC 4642)

StartTLS стал самым популярным методом шифрования электронной почты среди интернет-провайдеров, поскольку он облегчает использование множества различных доменов и сертификатов на одном сервере. Этот метод не является бесспорным, поскольку частные данные, такие как IP-адрес, изначально отправляются в незашифрованном виде. Это означает, что возможны атаки типа «человек посередине» путем перезаписи StartTLS незаметно для провайдера.

Как работает StartTLS?

В качестве дополнительной команды для SSL/TLS, StartTLS предлагает главное преимущество — отсутствие ограничений на обмен данными с клиентами, которые не поддерживают шифрование. StartTLS создает гораздо меньше проблем совместимости. Однако почтовые программы (клиенты) должны иметь процедуру, что делать с данными, когда сервер отказывается от TLS. Еще одним преимуществом являются взаимные переговоры относительно шифрования, так что в случае сбоя связи автоматические процессы берут на себя ответственность. Администратору или пользователю не нужно вмешиваться.

Метод StartTLS всегда запускает соединение в незашифрованном режиме на порту, настроенном на простой текст. Только после полного выполнения команды StartTLS протокол согласовывает шифрование с клиентом. Ему не нужно устанавливать новое соединение. Благодаря StartTLS не нужно обращаться к порту в случае ошибки связи. Клиент может просто использовать протокол StartTLS, предоставленный сервером.

Недостатки протокола StartTLS становятся очевидными в отношении программного обеспечения безопасности. Брандмауэры должны анализировать процесс на уровне пользователя, чтобы отделить зашифрованные данные от незашифрованных. То же самое относится и к прокси-серверам, различающим порты, поскольку при использовании StartTLS порты не меняются. Это усложняет выполнение соответствующего кэширования. Иногда оно вообще не выполняется.

StartTLS вызывает некоторые опасения по поводу защиты данных. Большинство программ электронной почты используют опцию «TLS там, где это возможно», так что пользователь не замечает, зашифровано ли соединение с почтовым сервером или нет. Это также повышает риск атаки «человек посередине», поскольку оператор сети может просто отфильтровать расширение StartTLS и, следовательно, имеет возможность протоколировать обмен данными. Если команда StartTLS не выполняется, обмен данными происходит без шифрования — и пользователь обычно этого не замечает.

Совет

Ознакомьтесь с нашим руководством по атакам типа «человек посередине», чтобы понять, как работает этот метод шпионажа.

Поэтому рекомендуется заранее провести тщательную проверку, чтобы убедиться, действительно ли сервер поддерживает StartTLS. Не следует начинать регулярное использование протокола до тех пор, пока это не будет сделано. Если впоследствии зашифрованная связь не сработает, это будет связано с внешней проблемой.

Пример: Электронная почта

Пользователь хочет зашифровать электронное письмо с помощью TLS. Он выбирает протокол StartTLS в настройках конфигурации учетной записи или в настройках учетной записи почтового клиента, чтобы безупречно интегрировать метод шифрования в обычные операции. После отправки электронного письма начинается обмен данными:

  1. Клиент спрашивает почтовый сервер, принят ли метод шифрования, передавая «250-STARTTLS».
  2. Если ответ положительный («давайте»), устанавливается зашифрованное соединение.
  3. Клиент перезапускает соединение. Теперь электронная почта зашифрована.

Как я могу протестировать StartTLS?

Протокол TLS может использовать различные порты в зависимости от провайдера. StartTLS можно легко интегрировать в соединение, так что переключение портов не требуется, а метод шифрования можно легко протестировать с подходящего терминала. При этом становится ясно, какой порт провайдер использует для StartTLS. Следующую команду можно использовать для проверки того, принимает ли почтовый сервер StartTLS в качестве метода шифрования во время обычных операций (например, в NetCat):

$ nc smtp.test.server smtp
220 Mailserver ESMTP Exim 4.69 Wed, 18 Jul 2018 12:19:15 +0200
ehlo test
250-Mailserver Hello oneandone [10.1.2.73]
250-SIZE 78643200
250-PIPELINING
250-STARTTLS
220-go ahead
250 HELP
Quit
221 Mailserver closing connection

Команда «STARTTLS» используется здесь для активации шифрования. Вы также можете видеть, что частные данные, такие как IP-адрес, передаются в незашифрованном виде во время этого процесса.

Команда для OpenSSL выглядит следующим образом:

$ openssl s_client -host mail.test.server-port 25 -starttls smtp
CONNECTED(00000003)
[...]
250 HELP
ehlo test
250-Mailserver Hello oneandone [10.1.2.73]
250-SIZE 52428800
250-PIPELINING
250-AUTH PLAIN LOGIN
250 HELP

Однако аутентификация в SMTP не так проста. В большинстве случаев может помочь метод «AUTH PLAIN». Чтобы использовать его, данные доступа должны быть закодированы в Base64. Команда Perl $ perl -MMIME::Base64 -e ‘print encode_base64(«00user-ju00secret»)’ используется для генерации кода, который впоследствии передается на SMTP-сервер («AUTH PLAIN [Code]»). Проверка StartTLS прошла успешно, когда сервер отвечает «Authentication succeeded» (включая код). Далее могут следовать дальнейшие почтовые команды.

Совет

Тестирование StartTLS на серверах или в протоколах, не совместимых с OpenSSL, можно облегчить с помощью инструмента gnuts-cli (из gnuts-bin).

Оцените статью
cdelat.ru
Добавить комментарий