без лишних глаз 3APA3A (WWW.SECURITY.NNOV.RU) Спецвыпуск: Хакер, номер #072, стр. 072-092-9 Как работает протокол TLS Поверх транспортного уровня (TCP) между клиентом и сервером устанавливается соединение. Криптография протокола так же основывается на сертификатах. Клиент проверяет сертификат сервера и с его помощью передает сеансовый ключ, который используется для шифрования трафика. Опционально TLS может использовать сертификат клиента для аутентификации доступа. После установки защищенного соединения поверх него пускается прикладной трафик. Для работы прикладного протокола поверх TLS обычно выделяется отдельный порт и к названию протокола добавляется буковка s (secure), например, HTTPs (TCP/443), POP3s (TCP/995), SMTPs (TCP/564). Организовать работу серверного приложения поверх TLS достаточно несложно, даже если приложение не поддерживает TLS. Для этого подойдут утилиты типа stunnel. Помимо поддержки TLS по специальному порту, в расширениях протоколов POP3 и SMTP предусмотрена команда STARTTLS (STLS), по которой клиент и сервер на уже существующем соединении начинают согласование TLS и переходят в защищенный режим. В протоколе POP3 наличие поддержки команды STARTTLS анонсируется сервером через CAPA (опция STLS), в SMTP – через EHLO. Примерно так: telnet mail.example.com 25 <<220 mail.example.com ESMTP >>EHLO me <<250- mail.example.com <<250-PIPELINING <<250-SIZE 10240000 <<250-ETRN <<250-STARTTLS <<250 8BITMIME telnet mail.example.com 110 <<+OK 3APA3A/POP3-3.0-beta <8231.1158097553@mail.example.com> >>capa <<+OK Capability list: <<TOP <<USER <<APOP <<AUTH <<UIDL <<STLS <<. Анонсирование STARTTLS через EHLO позволяет использовать TLS и для соединения между двумя SMTP-серверами. В таком случае TLS автоматически используется, если соответствующая опция анонсируется. Некоторые SMTP-серверы не анонсируют TLS, хотя и поддерживают ее. Это связано с тем, что в большинстве случаев сервер использует самоподписанный, а не купленный сертификат. Кроме того, если на сервере находится несколько почтовых доменов, то неизвестно, по какому имени сервера пришел клиент и совпадает ли это имя с именем в сертификате. Поэтому анонсирование поддержки TLS может привести к проблемам с доставкой почты, если другая сторона чересчур щепетильно относится к проверке сертификата. Аналогичные проблемы могут возникнуть и при доступе к серверу через клиентское приложение. Если, например, сертификат выдан на сервер pop.example.com, а в настройках почтовой программы указать mail.example.com или просто IP-адрес, то клиентское приложение должно выдать ошибку или предупреждение о несовпадении сертификатов. Поэтому при доступе по TLS следует заранее поинтересоваться, какое имя сервера указывать в настройках почтовой программы. Например, в The Bat версии 2.x принципиально невозможно работать с почтовым сервером по TLS, если имя сервера не совпадает с именем в сертификате. Outlook Express в таком случае ограничится выдачей предупреждения. |