Порт tls: Безопасная отправка электронной почты с помощью SSL/TLS

Содержание

Настройка прослушиваемого порта TLS на сервере клиентского доступа: справка по Exchange 2013



  • Чтение занимает 2 мин

В этой статье

Применимо к: Exchange Server 2013, Exchange Server 2016

Вы можете настроить TLS-порт, используемый для прослушивания SIP-запросов на сервере клиентского доступа, где работает служба маршрутизатора вызовов единой системы обмена сообщениями Microsoft Exchange. По умолчанию при установке сервера клиентского доступа номер прослушиваемого порта SIP TLS устанавливается как 5061.

Возможно, стоит настроить порт TLS для прослушивания равным 5061, чтобы добиться следующего.

  • Задать параметры безопасности VoIP для абонентской группы единой системы обмена сообщениями с защитой SIP.

  • Задать параметр безопасности VoIP для абонентской группы единой системы обмена сообщениями с защитой.

  • Интеграция с Microsoft Office Communications Server 2007 R2 или Microsoft Lync Server.

  • Использовать протокол Mutual TLS для шифрования данных между серверами клиентского доступа и серверами почтовых ящиков, на которых работает служба маршрутизатора вызовов единой системы обмена сообщениями Microsoft Exchange, а также шлюзами VoIP, SIP-УАТС, IP-УАТС и пограничными контроллерами сеансов (SBC).

Если требуется использовать mutual TLS между шлюзом IP и телефонной планом, работающим в режиме «Защищенный SIP» или «Защищенный», при создании шлюза IP необходимо настроить его с использованием полного доменного имени, а затем настроить шлюз IP этой системы для прослушивания порта TLS 5061. Кроме того, необходимо убедиться, что все шлюзы VoIP, УАПС, включенные для SIP, IP-УАПС или SBCs, также настроены для прослушивания запросов mutual TLS через порт 5061.

Можно настроить только TCP- и TLS-порты сервера клиентского доступа. Нельзя настроить порты для сервера почтовых ящиков Exchange 2013. Однако с помощью командлета Set-UMService можно настроить прослушивающие TCP- и TLS-порты для серверов единой системы обмена сообщениями Exchange 2010.

Дополнительные сведения, связанные с единой системой обмена сообщениями и серверами клиентского доступа, см. в разделе Процедуры служб единой системы обмена СООБЩЕНИЯМИ.

Что нужно знать перед началом работы

  • Предполагаемое время для завершения: менее 1 минуты.

  • Для выполнения этих процедур необходимы соответствующие разрешения. Сведения о необходимых разрешениях см. в статье Пункт «Сервер клиентского доступа (служба маршрутизатора вызовов единой системы обмена сообщениями)» в статье Разрешения единой системы обмена сообщениями.

  • Убедитесь, что серверы клиентского доступа и почтовых ящиков установлены правильно.

  • Сочетания клавиш для процедур, описанных в этой статье, приведены в статье Сочетания клавиш в Центре администрирования Exchange.

Совет

Возникли проблемы? Обратитесь за помощью к участникам форумов Exchange. Посетите форумы по Exchange Server.

Настройка порта TLS для прослушивания на сервере клиентского доступа с помощью Центра администрирования Exchange

  1. В Центре администрирования Exchange перейдите к разделу Серверы > Серверы.

  2. Выберите из списка сервер Exchange, который необходимо изменить, и нажмите кнопку Изменить .

  3. На странице Exchange Server нажмите кнопку Единая система обмена сообщениями.

  4. В разделе Параметры службы единой системы обмена сообщениями в поле Прослушивающий порт TLS введите номер порта TLS и нажмите кнопку Сохранить.

Настройка порта TLS для прослушивания на сервере клиентского доступа с помощью командной консоли

В этом примере для прослушиваемого порта TLS на сервере клиентского доступа с именем MyClientAccessServer 5561 устанавливается порт TLS.

Set-UMCallRouterSettings -Server MyClientAccessServer -SipTlsListeningPort 5561



КриптоПро | КриптоПро TLS c ГОСТ

Протокол TLS: Краткая справка

Протокол TLS (Transport Layer Security) является одним из наиболее популярных протоколов, предназначенных для установления защищенного канала связи в сети Интернет. Он основан на спецификации протокола SSL (Secure Sockets Layer) версии 3.0, но за время своего существования претерпел довольно много изменений. Самой актуальной версией протокола на текущий момент является недавно вышедшая версия TLS 1.3, однако версия TLS 1.2 все еще остается наиболее распространенной.

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

Что такое TLS с ГОСТ?

В процессе работы над задачей разработки протокола TLS с поддержкой российских криптонаборов при активном участии специалистов КриптоПро было создано два ключевых документа, регламентирующих порядок работы протоколов TLS 1.2 и TLS 1.3 с ГОСТ Р 34.12-2015 (с использованием алгоритмов Магма и Кузнечик) – рекомендации по стандартизации Р 1323565.1.020-2018 для TLS 1.2 и рекомендации по стандартизации Р 1323565.1.030-2020 для TLS 1.3. Документы определяют криптонаборы с российскими алгоритмами хэширования, шифрования и электронной подписи с учетом наиболее современных и безопасных практик использования криптоалгоритмов. Для регламентации работы протокола с использованием криптонаборов на базе ГОСТ 28147-89 ранее были разработаны методические рекомендации МР 26.2.001-2013. Отметим, что сами российские алгоритмы стандартизируются в международных организациях ISO и IETF, проходя экспертизу ведущих мировых специалистов.

Подробнее о TLS c ГОСТ и поддерживаемых КриптоПро CSP криптонаборах 

Процесс стандартизации TLS с российскими криптонаборами также активно идет и в рамках международных организаций IETF и IANA. Так, организация IANA, управляющая идентификаторами и параметрами протоколов сети Интернет, в том числе благодаря усилиям специалистов нашей компании, впервые зарегистрировала в своем реестре российские криптонаборы и другие сопутствующие параметры для протокола TLS 1.2, а затем и TLS 1.3. Это крайне важное событие, которое имеет непосредственное отношение к стабильности работы протокола TLS с ГОСТ, ведь без наличия международно признаваемых идентификаторов все предыдущие годы существовала опасность блокировки TLS с ГОСТ из-за захвата номеров сторонними криптонаборами, а внесение поддержки российских криптонаборов в свободное ПО было затруднено.

КриптоПро CSP и TLS с ГОСТ

Ниже приведен список поддерживаемых различными версиями нашего криптопровайдера КриптоПро CSP криптонаборов и соответствующих регламентирующих документов. Отдельно отметим, что с версии 5.0 R3 планируется реализация поддержки криптонаборов в соответствии с рекомендациями Р 1323565.1.030-2020 для обеспечения поддержки протокола TLS версии 1.3 с использованием отечественной криптографии.

Версия TLS

Поддерживаемые криптонаборы

Версия CSP

Регламентирующие документы

1.0

28147_CNT_IMIT (0xFF,0x85)

любая поддерживаемая

МР 26.2.001-2013

1.1

28147_CNT_IMIT (0xFF,0x85)

любая поддерживаемая

МР 26.2.001-2013

1.2

28147_CNT_IMIT (0xFF,0x85)

любая поддерживаемая

МР 26.2.001-2013

28147_CNT_IMIT (0xC1,0x02)

5.0 R2 и выше

Р 1323565.1.020-2018

draft-smyshlyaev-tls12-gost-suites

KUZNYECHIK_CTR_OMAC (0xC1,0x00)

MAGMA_CTR_OMAC (0xC1,0x01)

1.3

KUZNYECHIK_MGM_L (0xC1,0x03)

Планируется с 5.0 R3

Р 1323565.1.030-2020

draft-smyshlyaev-tls13-gost-suites

MAGMA_MGM_L (0xC1,0x04)

KUZNYECHIK_MGM_S (0xC1,0x05)

MAGMA_MGM_S (0xC1,0x06)

Криптонаборы с номерами (0xC1, 0x00) – (0xC1, 0x06) являются наборами, зарегистрированными в реестре организации IANA.

Внедрить TLS c ГОСТ? Легко!

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

Также на данной странице представлена информацию об услугах нашего удостоверяющего центра CryptoPro TLS-CA по выдаче сертификатов TLS →

Клиент-серверные решения

TLS-сервер с ГОСТ

Предлагаем воспользоваться одним из двух подходов, позволяющих без дополнительной сертификации и разработки программного кода развернуть TLS-сервер, который будет одновременно работать как с российскими, так и с зарубежными криптонаборами:

  1. Если вам необходимо настроить работу для конкретного серверного ПО (IIS, Apache, nginx), вы можете на компьютере с указанным серверным ПО установить КриптоПро CSP и, следуя соответствующим инструкциям по настройке, получить TLS-сервер, дополнительно поддерживающий алгоритмы ГОСТ.
  2. Вы также можете воспользоваться решением КриптоПро NGate, представляющим собой самостоятельный TLS-шлюз (отдельная аппаратная или виртуальная платформа). Решение имеет большое количество преимуществ, одним из которых является удобство обеспечения классов защиты KC2-KC3: в отличие от предыдущего подхода, не требуется выполнение отдельных настроек, приобретение и конфигурирование электронных замков и прочих дополнительных мер защиты, все необходимое уже включено в аппаратные компоненты решения.

Ниже представлена сравнительная таблица характеристик каждого предлагаемого решения. В колонке “Cертификация” приведена информация о статусе сертификации решения: как самостоятельное СКЗИ или как решение, исследование которого было проведено в рамках сертификации КриптоПро CSP. Во втором случае указана соответствующая версия криптопровайдера.

Решение

Платформа

Сертификация

Класс защиты

CSP + IIS

Windows

любая поддерживаемая версия CSP

КС1, КС2*, КС3*

CSP + Apache

Linux

начиная с
CSP 5.0 R2

КС1, КС2*, КС3**

CSP + nginx

Linux

начиная с
CSP 5.0 R2

КС1, КС2*, КС3**

NGate

Усиленная ОС на базе Linux Debian

самостоятельное СКЗИ

КС1, КС2, КС3

 * – требуются дополнительные настройки и технические средства защиты
 ** – КС3 только под Astra Linux

TLS-клиент с ГОСТ

Одна из важнейших задач, стоящих перед командой КриптоПро, – создание для пользователя как можно более комфортных условий при работе с сервисами по TLS c ГОСТ. В настоящее время мы предлагаем несколько вариантов решений, включающих в себя как готовые клиентские решения для стационарных устройств, так и решения для разработки собственных мобильных приложений.

Решения для стационарных устройств 

Одним из популярных клиентских сценариев является взаимодействие клиента с сайтом, требующим защиту соединения с помощью отечественных алгоритмов (например, сайты банков). В этом случае необходимо, чтобы клиент со своей стороны, так же как и сервер, поддерживал работу по TLS с ГОСТ. Наиболее удобным решением является использование на стороне клиента криптопровайдера КриптоПро CSP совместно с одним из поддерживаемых браузеров.

Кратко о решении:

  • На стороне клиента устанавливается КриптоПро CSP и один из поддерживаемых браузеров
  • Решение не требует никакой дополнительной разработки
  • Такое использование бесплатно для клиента (если с его стороны нет аутентификации по ключу и сертификату).

Ниже представлена сравнительная таблица характеристик поддерживаемых браузеров. Прочерк в колонке «Cертификация» означает необходимость проведения тематических исследований.

Браузер

Платформа

Сертификация

Класс защиты

Internet Explorer

Windows

любая поддерживаемая версия CSP

КС1, КС2*, КС3*

Спутник Браузер

Windows, Astra Linux, ALT Linux

самостоятельное СКЗИ

КС1, КС2*

Chromium-Gost

Astra Linux

начиная с CSP 5.0 R2

КС1, КС2*, КС3*

Windows, Linux, MacOS

Яндекс.Браузер

Windows

 * – требуются дополнительные настройки и технические средства защиты

Решения для мобильных устройств

КриптоПро предоставляет возможность встраивания поддержки отечественных криптоалгоритмов в ваше мобильное приложение при помощи КриптоПро CSP для операционных систем iOS и Android.

Кратко о решении:

  • CSP встраивается в мобильное приложение, пользователю не требуется устанавливать дополнительное ПО
  • Приложение может использовать как российские, так и иностранные криптонаборы

Ниже представлен список поддерживаемых операционных систем и соответствующих классов защиты:

Операционная система

Сертификация

Класс защиты

iOS

любая поддерживаемая версия CSP

КС1

Android

начиная с CSP 5.0

КС1

В случае использования КриптоПро CSP версии 5.0 R2 встраивание не требует проведения тематических исследований. Для CSP 5.0 и более ранних версий требуются тематические исследования.

Другие решения

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

Приложение stunnel, входящее в дистрибутив КриптоПро CSP, позволяет устанавливать защищенный с помощью отечественных криптонаборов канал между любыми двумя незащищенными приложениями без дополнительной разработки.

Ниже представлен список наиболее популярных поддерживаемых операционных систем и соответствующих классов защиты:

Операционная система

Сертификация

Класс защиты

Windows

любая поддерживаемая версия CSP

КС1, КС2*, КС3*

Linux

КС1, КС2*, КС3**

MacOS

КС1

 * – требуются дополнительные настройки и технические средства защиты
 ** – КС3 только под Astra Linux

Как настроить доверие к сертификату?

Не секрет, что почти все механизмы аутентификации сторон в протоколе TLS построены на основе инфраструктуры открытых ключей (PKI), одной из основных компонент которой является сертификат открытого ключа сервера или клиента. С помощью сертификата происходит доверенное связывание идентифицирующей сторону информации (например, имени домена сервера) с открытым ключом, для этого используется указанная в сертификате информация о том, кому принадлежит открытый ключ. Данный ключ и соответствующий ему закрытый ключ используются для аутентификации стороны при выполнении протокола TLS, при этом сертификат пересылается по каналу в процессе взаимодействия.

Подробнее о том, что такое сертификат в TLS

Для того, чтобы механизм аутентификации функционировал корректно, необходимо, чтобы аутентифицирующая сторона могла убедиться, что информация, содержащаяся в переданном сертификате, является корректной и не была сформирована злоумышленником. Фактически, нам необходимо решить проблему доверия к открытым ключам. Это делается за счет наличия третьей стороны, которой доверяют все стороны информационного обмена – Удостоверяющего Центра (УЦ), выдающего сертификаты.

Строго говоря, когда мы говорим о передаче сертификата, мы имеем в виду передачу целой цепочки сертификатов («цепочку доверия»), где каждый сертификат подписывается закрытым ключом, соответствующим тому сертификату, который находятся выше в иерархии.

 

 

Если мы хотим проверить полученный сертификат, нам необходимо проверить подписи всех сертификатов в цепочке, опираясь на ключ проверки подписи из следующего по рангу сертификата. Следуя такому принципу, рано или поздно мы встретим сертификат, на котором цепочка заканчивается (т.е. сертификат, для которого нет сертификата с открытым ключом, который можно было бы использовать для проверки подписи). Такие сертификаты называются корневыми (root certificate). Корневые сертификаты устанавливаются доверенным образом, и в них указана информация, ассоциированная с доверенным УЦ.

В протоколе TLS предусмотрена возможность аутентификации и сервера, и клиента (двухсторонняя аутентификация), однако обязательной является только аутентификация сервера. Наиболее распространенным сценарием использования протокола является взаимодействие браузера с сайтом, в рамках которого обычно необходима только односторонняя аутентификация. Поэтому далее мы поговорим о том, как правильно и безопасно настроить доверие к сертификату сервера в рамках работы TLS c ГОСТ.

При работе по протоколу TLS с ГОСТ клиент может доверять сертификату, если его корневым сертификатом является либо сертификат головного удостоверяющего центра Минцифры России (сертификат ГУЦ), либо сертификат любого доверенного удостоверяющего центра (сертификат TLS-CA). Сертификаты, имеющие в качестве корневого сертификат ГУЦ, выдаются только аккредитованными удостоверяющими центрами по 63ФЗ «Об электронной подписи». Отметим, что сертификат, использующийся для аутентификации сервера по протоколу TLS, не обязан быть полученным в аккредитованном удостоверяющем центре, достаточно, чтобы сертификат был выдан доверенным в рамках системы удостоверяющим центром.

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

Настроить в браузере доверие к сертификату сервера можно одним из следующих способов:

  • вручную:
    1. браузер клиента предупреждает пользователя о том, что сертификат не входит в список доверенных, клиент может «согласиться» доверять этому сертификату и продолжить устанавливать TLS соединение. Однако, очевидно, что возлагать ответственность за принятие такого решения на пользователя является не самым безопасным решением.
    2. администратор безопасности системы заносит сертификат сервера в доверенные в ручном режиме, что является достаточно безопасным, но не самым удобным решением.
  • автоматически без участия человека:

При установке КриптоПро CSP версии 4.0 R3 и выше для работы браузера по ГОСТ сертификат ГУЦ и сертификат удостоверяющего центра CryptoPro TLS-CA добавятся в список доверенных автоматически. Таким образом, доверие распространится на любой сертификат, выданный аккредитованным УЦ или CryptoPro TLS-CA, причем после прохождения полноценной проверки, не требующей принятия решений от человека.

Тестирование двустороннего ГОСТ TLS

КриптоПро TLS входит в состав КриптоПро CSP на всех ОС и не требует отдельной установки.

Для использования протокола TLS предварительно получите сертификат по шаблону «Сертификат пользователя УЦ». Это можно сделать на тестовом Удостоверяющем центре КриптоПро.

Тестовая страница для установления защищенного соединения с сервером с двусторонней аутентификацией. Для работы тестовой страницы необходимо разрешить порт 4444 для исходящих соединений.

Дополнительные стенды для тестирования TLS.

Документация

Онлайн-версия руководства программиста доступна на нашем сайте.

Что Такое POP3, SMTP и IMAP

Введение

Скорее всего, большинство читающих это руководство уже знакомы с самой часто используемой технологией связи — электронной почтой. Но задумывались ли вы когда-нибудь о том, как на самом деле она работает? В этой статье мы узнаем, как работает эта служба, и что такое POP3, SMTP и IMAP.

Повысьте доверие к бренду, создав почту со своим доменом! Приобретите почтовый хостинг со скидкой до 55%.

К предложению

Шаг 1 — Что такое POP3 и какие у него порты?

POP3 (протокол почтового отделения версия 3) часто используется для связи с удаленным сервером электронной почты и загрузки сообщений на локальный почтовый клиент с последующим удалением его на сервере, к примеру Outlook, Thunderbird, Windows Mail, Mac Mail и т.д. Однако обычно почтовые клиенты предлагают выбор — оставлять или нет копии сообщений на сервере. Если вы используете несколько устройств для отправки сообщений, то рекомендуется оставлять эту функцию включенной, в противном случае, на другом устройстве у вас не будет доступа к отправленным сообщениям, которые не были сохранены на удаленном сервере. Также стоит отметить, что POP3 — протокол работающий только в одном направлении, это означает, что данные берутся с удаленного сервера и отправляются на локальный клиент.

Порты POP3, по умолчанию являются такими:

Порт 110 — порт без шифрования

Порт 995 — порт SSL/TLS, также известный как POP3S

Шаг 2 — Различия между POP3 и IMAP, и какие порты у IMAP?

IMAP (протокол прикладного уровня для доступа к электронной почте), также как и POP3 используется для получения сообщений электронной почты на локальный клиент, однако, он имеет существенное отличие — загружаются только лишь заголовки электронных сообщений, сам текст письма остается на сервере. Данный протокол связи работает в две стороны, если происходят изменения на локальном клиенте, они передаются и на сервер. В последнее время IMAP стал более популярным, так как такие гиганты-провайдеры услуг электронной почты, как Gmail, стали рекомендовать использовать его вместо POP3.

Порты IMAP, по умолчанию являются такими:

  • Порт 143 — порт без шифрования
  • Порт 993 — порт SSL/TLS, также известный как IMAPS

Шаг 3 — SMTP, протокол для исходящей связи по электронной почте

Простой протокол передачи почты (SMTP), используется для связи с удаленным сервером и последующей отправке сообщений с локального клиента на удаленный сервер, и в конечном итоге на сервер получателя сообщений. На вашем сервере электронной почты, этот процесс контролируется специальной службой (MTA). Стоит упомянуть, что SMTP используется исключительно для отправки сообщений.

Порты SMTP:

  • Порт 25 — порт без шифрования
  • Порт 465 — порт SSL/TLS, также известный как SMTPS

Заключение

Надеемся, что теперь у вас появилось ясное понимание того, как работают почтовые протоколы и какие порты они используют. В этом руководстве мы узнали, что такое POP3, SMTP и IMAP и для чего они используются. К примеру, POP3 и IMAP используются для одинаковый целей, но подходят к выполнению этих задач по-разному. IMAP оставляет содержимое письма на сервере, а POP3 скачивает его на ваш компьютер. Также, мы узнали какие стандартные порты у SMTP, POP3 и IMAP.

Протоколы SSL/TLS: особенности, назначение, применение


Сетевые протоколы SSL и TLS являются криптографическими протоколами, обеспечивающими аутентификацию и защиту от несанкционированного доступа, нарушения целостности передаваемых данных. Протоколы SSL/TLS предназначены для исключения подмены идентификатора на клиентской или серверной стороне, раскрытия или искажения данных. Для этих целей используется надежный метод аутентификации, применяются шифрование канала связи и коды целостности сообщений. Стандартным портом, устанавливаемым по умолчанию для SSL/TLS, является порт 443 для HTTPS, 465 для SMTPS (электронная почта), 636 для LDAPS, 563 для NNTPS, 994 для IRCS (чат), 995 для POP3S.


Протокол SSL


Протокол SSL разработан компанией Netscape для защиты данных между сервисными и транспортными протоколами. Первая обнародованная версия была выпущена в 1995 году. Широко используется для VoIP-приложений, сервисов обмена мгновенными сообщениями. SSL представляет собой безопасный канал, имеющий следующие свойства:


  • Частный канал. Обеспечивается шифрование всех сообщений после диалога, необходимого для определения ключа шифрования.

  • Канал является аутентифицированным. Для клиентской стороны аутентификация выполняется опционально, а с серверной — обязательна.

  • Надежность канала. При транспортировке сообщений осуществляется проверка целостности с использованием MAC.


Протокол SSL использует как симметричный, так и асимметричный ключи.


Особенности и назначение протокола SSL


Протокола SSL обеспечивает решение двух задач — шифрование передаваемой информации и передача информации именно туда, куда требуется (аутентификация). Основное назначение протокола — предоставление надежного способа обмена данными между приложениями. Реализация SSL выполнена в виде многослойной среды, которая используется для безопасной передачи информации посредством незащищенных каналов связи.


Многослойная структура представлена слоем протокола подтверждения подключения и слоем протокола записи. Первым слоем выступает транспортный протокол, например, TCP — вместе с SSL Record Protocol данные слои образуют ядро SSL, которое впоследствии участвует в формировании сложных инфраструктур.


Среди основных особенностей протокола SSL следует отметить программно-платформенную независимость. В настоящее время протокол SSL не обеспечивает должную защиту — на смену ему пришел протокол TLS.


Протокол TLS


Протокол TLS представляет собой криптографический протокол, который применяется для защищенной передачи данных между различными узлами в сети интернет. Данный протокол нашел применение в VoIP-приложениях, веб-браузерах, приложениях для мгновенного обмена сообщениями. TLS реализован на спецификации SSL 3.0. Разработкой и развитием протокола занимается компания IETF.


К основным мерам безопасности, которые обеспечивает протокол TLS, относятся:


  • Применение ключа для проверки кода аутентификации сообщения.

  • Исключена вероятность понижения версии TLS или подмены на менее защищенный сетевой протокол.

  • Сообщение с подтверждением связи содержит хэш всех сообщений, которыми обменивались стороны.

  • Использование нумерации записей приложения с применением MAC.

  • Применение псевдослучайной функции, разбивающей входные сообщения на 2 части, каждая из которых обрабатывается разной хэш-функцией.


Особенности и назначение протокола TLS


В протоколе TLS используются следующие алгоритмы:


  • RC4, Triple DES, SEED, IDEA и др. для симметричного шифрования.

  • RSA, DSA, Diffie-Hellman и ECDSA для проверки подлинности ключей.

  • MD5, SHA и SHA-256/384 для хэш-функций.


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


В общем случае применение криптографии в протоколах SSL/TLS значительно снижает производительность приложений, зато обеспечивает надежную защиту передачи данных. Протоколы не требуют практически никаких настроек с клиентской стороны, считаются самыми распространенными протоколами защиты в сети интернет.

Шифрование передаваемых данных — Почта. Справка

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

Инструкции по активации шифрования в разных почтовых программах:

При активации SSL-шифрования в почтовой программе вы можете получить ошибки о некорректном сертификате. Основные причины возникновения таких ошибок и способы их устранения перечислены в статье Получаю ошибки о некорректном сертификате.

  1. Откройте меню , выберите учетную запись на вкладке Электронная почта и нажмите Изменить.

  2. Нажмите кнопку Другие настройки.

  3. Перейдите на вкладку Дополнительно и укажите следующие параметры в зависимости от используемого вам протокола:
    IMAP

    Выберите в пункте Использовать следующий тип шифрованного подключения значение SSL для IMAP- и SMTP-сервера.

    Нажмите кнопку OK.

    POP3

    Включите опцию Требуется шифрованное подключение (SSL) и выберите в пункте Использовать следующий тип шифрованного подключения значение SSL.

    Нажмите кнопку OK.

  4. Чтобы завершить настройку учетной записи, нажмите в окне Изменить учетную запись кнопку Далее — будет выполнена проверка настроек учетной записи. Если проверка завершилась удачно, нажмите кнопку Готово. Если нет, убедитесь, что все параметры указаны корректно.

  1. Откройте меню .

  2. Перейдите на вкладку Почта.

  3. Выберите учетную запись и нажмите кнопку Свойства.

  4. Откройте вкладку Дополнительно и укажите следующие параметры в зависимости от используемого протокола:

    IMAP

    Для серверов IMAP и SMTP включите опцию Подключаться через безопасное соединение (SSL).

    Нажмите кнопку OK.

    POP3

    Для серверов POP3 и SMTP включите опцию Подключаться через безопасное соединение (SSL).

    Нажмите кнопку OK.

  1. Нажмите на название учетной записи правой кнопкой мыши и выберите пункт Параметры.

  2. Перейдите в раздел Параметры сервера и укажите следующие параметры в зависимости от используемого протокола:
    IMAP

    Нажмите кнопку OK.

    POP3

    Нажмите кнопку OK.

  3. Перейдите в раздел Сервер исходящей почты (SMTP), выберите строку Yandex Mail и нажмите кнопку Изменить. В окне SMTP-сервер укажите следующие параметры:
  1. Откройте меню .

  2. Перейдите в раздел Транспорт и укажите следующие параметры в зависимости от используемого протокола:
    IMAP

    Отправка почты
    Получение почты

    Нажмите кнопку OK.

    POP3

    Отправка почты
    Получение почты

    Нажмите кнопку OK.

  1. Нажмите значок в имени почтового ящика и выберите пункт Свойства.
  2. Перейдите на вкладку Серверы и укажите следующие параметры в зависимости от используемого протокола:
    IMAP

    Сервер входящей почты (IMAP)
    Сервер исходящей почты (SMTP)

    Нажмите кнопку OK.

    POP

    Сервер входящей почты (POP)
    Сервер исходящей почты (SMTP)

    Нажмите кнопку OK.

  1. Откройте меню . Выберите в разделе Сервер исход. почты (SMTP) пункт Ред. список SMTP-серверов.

  2. Включите опцию Использовать SSL и в поле Использовать произвольный порт введите значение 465.

    Нажмите кнопку OK.

  3. Перейдите на вкладку Дополнения и укажите следующие параметры в зависимости от используемого протокола:
  1. Откройте меню .

  2. В разделе Учетные записи выберите вашу учетную запись.

  3. Внизу страницы нажмите кнопку Дополнительно.

  4. В разделе Настройки входящих укажите следующие параметры в зависимости от используемого протокола:
  5. Вернитесь в меню Уч. запись и в разделе Сервер исходящей почты нажмите кнопку SMTP.

  6. В разделе Первичный сервер нажмите на строку сервера smtp.yandex.ru.

  7. В разделе Сервер исходящей почты укажите следующие параметры:

    Нажмите кнопку Готово.

  8. Вернитесь в меню Уч.запись и нажмите кнопку Готово.

  1. Откройте программу Email.

  2. Перейдите в меню .
  3. Выберите ваш аккаунт.

  4. В разделе Настройки сервера нажмите на строку Сервер входящей почты.

  5. Укажите следующие параметры в зависимости от используемого протокола:
    IMAP

    Нажмите кнопку Готово.

    POP3

    Нажмите кнопку Готово.

  6. В разделе Настройки сервера нажмите на строку Настройки исходящих сооб.

  7. Укажите следующие параметры:

    Нажмите кнопку Готово.

  1. Перейдите в раздел .

  2. Выберите вашу учетную запись.

  3. Внизу страницы нажмите дополнительные настройки и укажите следующие параметры в зависимости от используемого протокола:
    IMAP

    Отметьте пункты Для входящей почты нужен SSL и Для исходящей почты нужен SSL.

    Сохраните изменения.

    POP3

    Отметьте пункты Для входящей почты нужен SSL и Для исходящей почты нужен SSL.

    Сохраните изменения.

Если у вас другая почтовая программа, активируйте в ее настройках шифрование передаваемых данных по протоколу SSL (TLS) для получения почты (IMAP или POP3) и для отправки почты (SMTP). После этого измените значения портов для подключения к серверам на следующие:

  • IMAP — 993;

  • POP3 — 995;

  • SMTP — 465.

Настройки для популярных почтовых сервисов

mail.ru (list.ru, bk.ru, inbox.ru)
POP3-сервер: pop.mail.ru (pop.list.ru pop.bk.ru pop.inbox.ru)
SMTP-сервер: smtp.mail.ru (smtp.list.ru smtp.bk.ru smtp.inbox.ru)
Имя пользователя: имя почтового ящика до значка «@»
Пароль: Ваш пароль к почтовому ящику
Порт: POP3 — 110, SMTP — 25 или 2525. SMTP сервер требует аутентификации

yandex.ru (narod.ru)
POP3-сервер: pop.yandex.ru (pop.narod.ru)
SMTP-сервер: smtp.yandex.ru (smtp.narod.ru)
Имя пользователя: имя почтового ящика полностью ([email protected])
Пароль: Ваш пароль к почтовому ящику
Порт: POP3 — 110, SMTP — 25. SMTP сервер требует аутентификации

pochta.ru
POP3/IMAP-сервер: mail.pochta.ru
SMTP-сервер: smtp.pochta.ru
Имя пользователя: полный адрес Вашего почтового ящика
Пароль: Ваш пароль к почтовому ящику
Порт: POP3 — 110, SMTP — 25, IMAP — 143 SMTP сервер требует аутентификации

rambler.ru
POP3-сервер: pop3.rambler.ru
SMTP-сервер: smtp.rambler.ru
Имя пользователя: полный адрес Вашего почтового ящика
Пароль: Ваш пароль к почтовому ящику
Порт: POP3 — 110, SMTP — 25 SMTP сервер требует аутентификации

newmail.ru (hotmail.ru, nm.ru, nightmail.ru)
POP3-сервер: pop.newmail.ru (pop.hotmail.ru, pop.nm.ru, pop.nightmail.ru)
SMTP-сервер: smtp.newmail.ru (smtp.hotmail.ru, smtp.nm.ru, smtp.nightmail.ru)
Имя пользователя: полный адрес Вашего почтового ящика
Пароль: Ваш пароль к почтовому ящику
Порт: POP3 — 110, SMTP — 25 SMTP сервер требует аутентификации

km.ru
POP3-сервер: pop.km.ru
SMTP-сервер: smtp.km.ru
Имя пользователя: полный адрес Вашего почтового ящика
Пароль: Ваш пароль к почтовому ящику
Порт: POP3 — 110, SMTP — 25 SMTP сервер требует аутентификации

gmail.com
POP3-сервер: pop.gmail.com
Соединение: Безопасное на спец.порт TLS. Порт: 995.
IMAP-сервер: imap.gmail.com
Соединение: Безопасное на спец.порт TLS. Порт: 993.
SMTP-сервер: smtp.gmail.com
Соединение: Безопасное на спец.порт TLS. Порт: 465 или 587.
Имя пользователя: полный адрес Вашего почтового ящика
Пароль: Ваш пароль к почтовому ящику Для начала работы необходимо зайти в веб-интерфейс gmail.com и в настройках разрешить получение почты по pop3 и сохранить изменения
SMTP сервер требует аутентификации

PHP: Интернет-сокеты: TCP, UDP, SSL и TLS

Интернет-сокеты: TCP, UDP, SSL и TLS

PHP 4, PHP 5.
ssl:// & tls:// начиная с версии PHP 4.3.0
sslv2:// & sslv3:// начиная с версии PHP 5.0.2

Замечание:

Если транспортный протокол не указан, будет использован tcp://.

  • 127.0.0.1
  • fe80::1
  • www.example.com
  • tcp://127.0.0.1
  • tcp://fe80::1
  • tcp://www.example.com
  • udp://www.example.com
  • ssl://www.example.com
  • sslv2://www.example.com
  • sslv3://www.example.com
  • tls://www.example.com

Интернет-сокеты требуют указания порта в дополнение к адресу. В
случае fsockopen(), порт передается вторым параметром и
не затрагивает строку адреса. При работе с
stream_socket_client() и другими близкими функциями, как
и в случае со стандартными URL, порт указывается в конце адреса, отделенный
двоеточием.

  • tcp://127.0.0.1:80
  • tcp://[fe80::1]:80
  • tcp://www.example.com:80

Замечание:
IPv6 численные адреса с указанием порта
Во втором примере выше, в то время как IPv4 и имя хоста
не изменились, за исключением добавления номера порта после
двоеточия, адрес IPv6 заключен в квадратные скобки:
[fe80::1]. Это сделано для того, чтобы отличить
двоеточие в адресе от двоеточия при указании порта.

Протоколы ssl:// и tls://
(доступны, только если поддержка openssl включена в PHP) являются
расширениями tcp://, дополняющими его SSL-шифрованием.
Начиная с PHP 4.3.0, для работы с ssl-протоколами, PHP должен
быть статически собран с поддержкой OpenSSL, а с версии PHP 5.0.0
он также может быть представлен и как модуль.

ssl:// будет пытаться использовать соединение SSL V2
или SSL V3, в зависимости от возможностей и настроек удаленного хоста.
sslv2:// и sslv3://
позволяют явно указать использование SSL V2 или SSL V3.

SSL против TLS против STARTTLS — Hjälpcentral

Часто возникает путаница в отношении различных терминов SSL , TLS и STARTTLS .

SSL и TLS обеспечивают способ шифрования канала связи между двумя компьютерами (например, вашим компьютером и нашим сервером). TLS является преемником SSL, а термины SSL и TLS взаимозаменяемы, если вы не имеете в виду конкретную версию протокола.

STARTTLS — это способ использовать существующее небезопасное соединение и обновить его до безопасного соединения с использованием SSL / TLS.Обратите внимание, что, несмотря на наличие TLS в имени, STARTTLS не означает, что вам нужно использовать TLS, вы можете использовать SSL.

Номера версий SSL / TLS

Нумерация версий несовместима между версиями SSL и TLS. Когда TLS заменил SSL в качестве предпочтительного имени протокола, он начал использовать новый номер версии, а также начал использовать подверсии. Таким образом, протоколы отсортированы от самых старых к новейшим: SSL v2, SSL v3, TLS v1.0, TLS v1.1, TLS v1.2.

Когда вы подключаетесь к зашифрованному порту SSL / TLS или используете STARTTLS для обновления существующего соединения, обе стороны будут согласовывать, какой протокол и какую версию использовать, в зависимости от того, что было настроено в программном обеспечении и что поддерживает каждая сторона.

Поддержка SSL / TLS в наши дни практически универсальна, однако, какие версии поддерживаются, варьируется. Практически все поддерживает SSL v3 (за исключением нескольких очень старых устройств Palm Treo, как мы обнаружили). Большинство вещей поддерживает TLS v1.0. По состоянию на май 2012 года поддержка TLS v1.1 и TLS v1.2 более ограничена.

TLS против проблемы именования STARTTLS

Одним из существенных осложняющих факторов является то, что некоторые программы электронной почты неправильно используют термин TLS, хотя им следовало использовать STARTTLS.Более старые версии Thunderbird, в частности, использовали «TLS» для обозначения «принудительного использования STARTTLS для обновления соединения и отказа, если STARTTLS не поддерживается» и «TLS, если доступно» для обозначения «использовать STARTTLS для обновления соединения, если сервер объявляет поддержка для этого, иначе просто используйте небезопасное соединение «.

SSL / TLS против номеров портов открытого текста / STARTTLS

Вышеупомянутое особенно проблематично в сочетании с необходимостью настройки номера порта для каждого протокола.

Для повышения безопасности некоторых существующих протоколов (например,грамм. IMAP, POP и т. Д.) Было решено просто добавить шифрование SSL / TLS в качестве уровня под существующим протоколом. Однако, чтобы различать, что программное обеспечение должно использовать версию протокола с шифрованием SSL / TLS, а не версию с открытым текстом, для каждого протокола использовался другой номер порта. Итак, у вас есть:

  • IMAP использует порт 143 , но IMAP с шифрованием SSL / TLS использует порт 993 .
  • POP использует порт 110 , но протокол POP с шифрованием SSL / TLS использует порт 995 .
  • SMTP использует порт 25 , но SMTP с шифрованием SSL / TLS использует порт 465 .

В какой-то момент было решено, что наличие 2 портов для каждого протокола было расточительным, и вместо этого у вас должен быть 1 порт, который начинается с открытого текста, но клиент может обновить соединение до зашифрованного SSL / TLS. Для этого был создан STARTTLS.

Однако с этим было несколько проблем. Уже существовало программное обеспечение, которое использовало альтернативные номера портов с чистыми соединениями SSL / TLS.Клиентское программное обеспечение может быть очень долгим, поэтому вы не можете просто отключить зашифрованные порты, пока все программное обеспечение не будет обновлено.

К каждому протоколу были добавлены механизмы, сообщающие клиентам, что протокол открытого текста поддерживает обновление до SSL / TLS (т. Е. STARTTLS), и что им не следует пытаться войти в систему без обновления STARTTLS. Это создало две неудачные ситуации:

  1. Некоторое программное обеспечение просто проигнорировало сообщение «Вход в систему отключено до обновления» и просто попыталось войти в систему, отправив имя пользователя и пароль в виде открытого текста.Даже если сервер затем отклонил вход в систему, данные уже были отправлены через Интернет в виде открытого текста.
  2. Другое программное обеспечение обнаружило сообщение «вход в систему отключено до обновления», но затем не обновляло соединение автоматически и, таким образом, сообщало об ошибках входа обратно пользователю, что вызывало путаницу в том, что было не так.

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

Теперь он фактически стал стандартом де-факто, который используют все. IMAP SSL / TLS, зашифрованный через порт 993 или POP SSL / TLS, зашифрованный через порт 995 . Многие сайты (включая FastMail) теперь полностью отключают простой IMAP (порт 143 ) и простой POP (порт 110 ), поэтому люди должны использовать зашифрованное соединение SSL / TLS. Отключение портов 143 и 110 полностью удаляет STARTTLS даже как вариант для соединений IMAP / POP.

SMTP STARTTLS как исключение

Единственным реальным исключением из вышеперечисленного является SMTP. Однако это опять же по другой причине. Большинство почтовых программ использовали SMTP на порте 25 для отправки сообщений на почтовый сервер для дальнейшей передачи по назначению. Однако изначально SMTP был разработан для передачи, а не для отправки. Итак, еще один порт ( 587 ) был определен для отправки сообщения. Хотя порт 587 не требует наличия STARTTLS, использование порта 587 стало популярным примерно в то же время, когда стало понятно, что шифрование SSL / TLS при обмене данными между клиентами и серверами является важной проблемой безопасности и конфиденциальности.

В результате в большинстве случаев системы, предлагающие отправку сообщений через порт 587 , требуют, чтобы клиенты использовали STARTLS для обновления соединения, а также запрашивали имя пользователя и пароль для аутентификации. У этого подхода также было дополнительное преимущество. Отводя пользователей от использования порта 25 для отправки электронной почты, интернет-провайдеры теперь могут блокировать исходящие соединения через порт 25 с компьютеров пользователей, которые были значительным источником спама из-за заражения вирусами, рассылающими спам.

В настоящее время кажется, что все относительно случайно разделено между людьми, использующими SMTP SSL / TLS, зашифрованными через порт 465 , и людьми, использующими SMTP с обновлением STARTTLS через порт 587 .

SSL, TLS и STARTTLS | Fastmail

Это информационная страница об истории SSL, TLS и STARTTLS и различиях между этими протоколами. Если вы ищете информацию о настройке своего почтового клиента , перейдите сюда.

Часто возникает путаница в отношении различных терминов SSL , TLS и STARTTLS .

SSL и TLS — это стандартная технология для шифрования соединений между двумя компьютерами.
Это предотвращает слежку за этими сообщениями третьими лицами.

TLS является преемником SSL. Он поддерживается всеми современными и безопасными системами, обрабатывающими интернет-трафик, включая Fastmail. Термины SSL и TLS часто переключаются и используются взаимозаменяемо.

STARTTLS отличается от SSL и TLS. До того, как шифрование стало стандартом, многие соединения между почтовым клиентом и сервером
были сделаны небезопасно.Это подвергает личную информацию опасности быть украденной. STARTTLS помог снизить этот риск, взяв существующее небезопасное соединение и обновив его.
к безопасному соединению, использующему SSL / TLS. STARTTLS работает с SSL или TLS.

Номера версий SSL / TLS

Номера версий SSL и TLS в порядке от самых старых к новейшим:

.

  1. SSL версии 2
  2. SSL версии 3
  3. TLS версии 1.0
  4. TLS версии 1.1
  5. TLS версии 1.2
  6. TLS v1.3.

Когда соединение выполняется с портом, имеющим SSL или TLS, или когда небезопасное соединение повышается до безопасного с помощью STARTTLS, обе стороны соединения соглашаются на конкретное
версия в зависимости от того, что поддерживается. Это может означать, что если сервер поддерживает новейшую версию TLS v1.3, но почтовый клиент, подключающийся к серверу, поддерживает только
TLS v1.1, обе стороны могут использовать TLS v1.1.

Хотя сегодня почти все онлайн-сервисы поддерживают SSL / TLS, не все сервисы поддерживают новейшую версию TLS v1.3. SSL официально устарел (по состоянию на май 2018 г.) и больше не используется.
современными онлайн-сервисами. Текущее программное обеспечение поддерживает TLS v1.0, TLS v1.1 и TLS v1.2, и многие сайты и службы теперь настоятельно рекомендуют как минимум TLS v1.2 для общего
улучшенный профиль безопасности.

TLS против проблемы именования STARTTLS

Одна из причин путаницы в названиях этих различных технологий заключается в том, что некоторые программы электронной почты неправильно используют термин TLS, хотя им следовало использовать STARTTLS.

Более старые версии Thunderbird, в частности, использовали «TLS», чтобы обозначить, что STARTTLS следует использовать для обновления соединения, и соединение должно завершиться неудачей, если STARTTLS не поддерживается.

В этих версиях также использовался термин «TLS, если доступен». «TLS, если доступен» означает, что программа попытается использовать STARTTLS для обновления соединения, если сервер поддерживает это, но в противном случае будет использовать небезопасное соединение.

История аутентификации электронной почты

Чтобы понять SSL / TLS и STARTTLS, необходимо понять историю, лежащую в основе этих стандартов, и то, как отрасль развивалась для борьбы с существующим поведением пользователей и клиентов и новыми угрозами.SSL / TLS и STARTTLS еще не были изобретены, когда IMAP, POP и SMTP уже были хорошо развиты. Добавление к ним надлежащего шифрования без нарушения существующего поведения было серьезной проблемой.

SSL / TLS против номеров портов открытого текста / STARTTLS

В зависимости от типа подключения и поддерживаемого шифрования могут потребоваться разные номера портов.

Поскольку технологии электронной почты, такие как IMAP, POP и SMTP, уже существовали, когда был изобретен SSL / TLS, ожидались соединения с обычным текстом через стандартные порты 143 , 110 и 25 .Хотя многие службы поддерживали использование STARTTLS для обновления соединения на этих портах, если клиент также не поддерживал это, существовал риск получения конфиденциальной информации, такой как
пароли передаются в виде обычного текста. Это подвергало пароли значительному риску кражи, если злоумышленник наблюдал за соединением.

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

Обычный протокол Протокол с неявным TLS
IMAP Порт 143 Порт 993
ПОП Порт 110 Порт 995
SMTP Порт 25 Порт 465

Проблема с несколькими номерами портов

Через некоторое время после того, как были согласованы эти новые порты для поддержки неявного TLS, было решено, что наличие двух портов для каждого протокола было расточительным.Только для того, чтобы поддерживать
Один порт, STARTTLS был создан как способ для клиента подключаться через обычный текст, а затем обновлять соединение до безопасного, использующего SSL / TLS.

Это тоже не было идеальным решением. Уже были реальные пользователи, которые использовали новые номера портов со своими почтовыми клиентами. Почтовые клиенты могут быть очень долговечными, поэтому
отключение новых портов было неудобным для пользователя вариантом.

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

Другое программное обеспечение проигнорировало инструкцию сервера об обновлении соединения и просто отправило пользователю в ответ ошибку входа в систему.Это вызвало много путаницы в том, что было не так.

Поскольку обе эти проблемы вызвали серьезные проблемы для существующих клиентов, большинство служб продолжали использовать соединения с обычным текстом на одном номере порта и предлагали
безопасные неявные соединения SSL / TLS на втором номере порта.

Сегодня многие почтовые службы, в том числе Fastmail, теперь полностью отключают вход по протоколу IMAP и POP с открытым текстом на портах 143 и 110 , оставляя зашифрованные соединения.
на портах 993 и 995 как единственный вариант.Это гарантирует, что все клиенты используют зашифрованные соединения SSL / TLS для защиты конфиденциальных данных.

SMTP STARTTLS как исключение

Есть одно исключение из этого спора об использовании SSL / TLS и STARTTLS: SMTP.

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

Только позже SMTP начал использоваться для передачи сообщения , а также для передачи сообщений. На заре создания почтовых клиентов, настроенных для отправки с использованием SMTP, эти
использовал порт 25 , тот же порт, который использовался для пересылки внутри самих почтовых систем. В более крупных системах пересылки почты можно было заблокировать порт 25 , чтобы он
может использоваться только доверенными IP-адресами. Конечно, это было невозможно сделать для многих тысяч домашних IP-адресов, использующих SMTP в своих почтовых клиентах для электронной почты.
отправка, и поэтому порт 587 был определен для отправки сообщения.

Использование порта 587 вместо 25 для отправки сообщений стало популярным примерно в то же время, когда важность использования шифрования для защиты конфиденциальных данных стала
хорошо известные и определялись расширения шифрования для SMTP. Порт 587 , определенный специально для отправки сообщений, поддерживается
переход на безопасное соединение с помощью STARTTLS.

Порт 465 также был определен для отправки SMTP, и в отличие от порта 587 , 465 специально поддерживал неявный TLS, как порт 993 для IMAP и 995 для POP.В настоящее время,
однако отрасль ожидала, что все соединения для IMAP, POP и SMTP будут безопасно обновляться с использованием STARTTLS вместо предпочтительного неявного TLS.
Cегодня. По этой причине вскоре после определения порта 465 он был отозван. Ожидалось, что все клиенты перейдут на использование STARTTLS на порту 587 .

Программное обеспечение почтового клиента

может прослужить очень долго, и большинству пользователей может быть сложно самостоятельно вносить изменения в порты и настройки сервера.Многие почтовые клиенты также
в настоящее время разработан для работы только с неявным SSL / TLS на порту 465 . Это сделало очень трудным удаление порта 465 в качестве опции для клиентов, даже если это было
официально отозван.

Службы

, поддерживающие SMTP для отправки сообщений, теперь требуют, чтобы клиенты, подключающиеся через стандартный порт 587 , обновили соединение с помощью STARTTLS и вошли в систему.
с именем пользователя и паролем.

В 2018 году официальная рекомендация снова изменилась на использование неявного TLS через порт 465 .Из-за долгожительства
клиентское программное обеспечение электронной почты, ожидается, что пройдет очень много времени, прежде чем порт 587 может быть прекращен.

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

В настоящее время существует равномерное распределение пользователей, использующих неявный SSL / TLS с портом 465 , и пользователей, обновляющих свое соединение с помощью STARTTLS, используя порт 587 .
Fastmail продолжит предлагать оба варианта в обозримом будущем.

Networking 101: Безопасность транспортного уровня (TLS)
Сеть через браузер (O’Reilly)

Введение

Протокол SSL был первоначально разработан в Netscape для обеспечения
безопасность транзакций электронной торговли в Интернете, которая требует шифрования для
защищать личные данные клиентов, а также аутентификацию и целостность
гарантии для обеспечения безопасной транзакции.Для этого SSL
протокол был реализован на уровне приложений, непосредственно поверх TCP
(Рисунок 4-1), что позволяет
протоколы над ним (HTTP, электронная почта, обмен мгновенными сообщениями и многие другие) для
работать без изменений, обеспечивая безопасность связи, когда
общение по сети.

При правильном использовании SSL сторонний наблюдатель может только сделать вывод
конечные точки подключения, тип шифрования, а также частоту и
приблизительный объем отправленных данных, но не может читать или изменять какие-либо
фактические данные.Рисунок 4-1. Безопасность транспортного уровня (TLS)

Когда протокол SSL был стандартизирован IETF, он был переименован.
к безопасности транспортного уровня (TLS). Многие используют имена TLS и SSL
взаимозаменяемы, но технически они разные, поскольку каждый
описывает другую версию протокола.

SSL 2.0 был первой публично выпущенной версией протокола, но
он был быстро заменен на SSL 3.0 из-за ряда обнаруженных средств защиты
недостатки.Поскольку протокол SSL был проприетарным для Netscape, IETF
предприняли попытку стандартизировать протокол, в результате чего появился RFC 2246,
который был опубликован в январе 1999 года и стал известен как TLS 1.0. С
затем IETF продолжил итерацию протокола для решения
недостатки безопасности, а также расширение ее возможностей: TLS 1.1 (RFC 4346)
был опубликован в апреле 2006 г., TLS 1.2 (RFC 5246) в августе 2008 г. и работает
сейчас ведется определение TLS 1.3.

При этом не позволяйте обилию номеров версий вводить вас в заблуждение:
ваши серверы всегда должны отдавать предпочтение и согласовывать последнюю стабильную версию
протокола TLS для обеспечения максимальной безопасности, возможностей и
гарантии исполнения.Фактически, некоторые критически важные для производительности функции, такие как
как HTTP / 2, явно требует использования TLS 1.2 или выше и прерывает
в противном случае связь. Хорошая безопасность и производительность идут рука об руку.

TLS был разработан для работы поверх надежного транспортного протокола.
типа TCP. Однако он также был адаптирован для работы с дейтаграммами.
протоколы, такие как UDP. Безопасность на транспортном уровне дейтаграмм (DTLS)
протокол, определенный в RFC 6347, основан на протоколе TLS и может
предоставить аналогичные гарантии безопасности при сохранении дейтаграммы
модель доставки.

§Шифрование, аутентификация и целостность

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

Шифрование

Механизм скрытия того, что отправляется с одного хоста на другой.

Аутентификация

Механизм проверки действительности предоставленной идентификации
материал.

Целостность

Механизм обнаружения фальсификации и подделки сообщений.

Чтобы установить криптографически безопасный канал данных,
одноранговые узлы должны договориться о том, какие наборы шифров будут использоваться, и
ключи, используемые для шифрования данных.Протокол TLS определяет четко определенный
последовательность рукопожатия для выполнения этого обмена, которую мы рассмотрим в
подробно в TLS Handshake.
Гениальная часть этого рукопожатия и причина, по которой TLS работает в
На практике это связано с использованием криптографии с открытым ключом (также известной как
криптография с асимметричным ключом), что позволяет одноранговым узлам согласовывать
общий секретный ключ без необходимости устанавливать какие-либо предварительные знания о каждом
другое, и сделать это по незашифрованному каналу.

В рамках рукопожатия TLS протокол также позволяет обоим одноранговым узлам
подтвердить свою личность. При использовании в браузере это
механизм аутентификации позволяет клиенту проверить, что сервер
кем он себя называет (например, ваш банк), а не просто притворяется
быть получателем, подделав его имя или IP-адрес. Этот
проверка основана на установленной цепочке доверия — см.
Цепочка доверия и
Центры сертификации.Кроме того, сервер также может опционально
проверить личность клиента — например, прокси-сервер компании может
аутентифицировать всех сотрудников, каждый из которых может иметь свой уникальный
сертификат, подписанный компанией.

Наконец, с шифрованием и аутентификацией, протокол TLS
также предоставляет собственный механизм кадрирования сообщений и подписывает каждое сообщение
с кодом аутентификации сообщения (MAC). Алгоритм MAC является односторонним.
криптографическая хеш-функция (фактически контрольная сумма), ключи к которой
согласовываются обоими одноранговыми узлами.Всякий раз, когда отправляется запись TLS,
Значение MAC создается и добавляется к этому сообщению, а получатель
затем сможет вычислить и проверить отправленное значение MAC, чтобы гарантировать, что сообщение
целостность и подлинность.

Вместе все три механизма служат основой для безопасного
общение в сети. Все современные веб-браузеры поддерживают
множество наборов шифров, способных аутентифицировать как клиента, так и
сервер, и прозрачно выполнять проверки целостности сообщений для каждого
записывать.

§Прокси, посредники, TLS и новые протоколы на
Интернет

Расширяемость и успех HTTP создали яркую
экосистема различных прокси и посредников в сети: кеш
серверы, шлюзы безопасности, веб-ускорители, фильтры содержимого и многие другие
другие. В некоторых случаях мы знаем об их присутствии (явное
прокси), а в других полностью прозрачны до конца
Пользователь.

К сожалению, сам успех и наличие этих серверов
создал проблему для всех, кто пытается отклониться от HTTP / 1.Икс
протокол любым способом: некоторые прокси-серверы могут просто передавать новый HTTP
расширения или альтернативные форматы проводов, которые они не могут интерпретировать, другие
могут продолжать слепо применять свою логику, даже если они не должны этого делать, и
некоторые, такие как устройства безопасности, могут предполагать злонамеренный умысел, когда
здесь ничего нет.

Другими словами, на практике отклонение от четко определенного
семантика HTTP / 1.x на порту 80 часто приводит к ненадежным развертываниям:
у некоторых клиентов нет проблем, у других же возникают непредсказуемые и непредсказуемые проблемы.
трудно воспроизводимое поведение — e.g., один и тот же клиент может видеть разные
поведения при перемещении между разными сетями.

Из-за такого поведения появились новые протоколы и расширения HTTP, такие как
поскольку WebSocket, HTTP / 2 и другие должны полагаться на установку HTTPS
туннель для обхода промежуточных прокси и обеспечения надежного
модель развертывания: зашифрованный туннель скрывает данные от всех
посредники. Если вы когда-нибудь задумывались, почему большинство руководств по WebSocket
скажет вам использовать HTTPS для доставки данных мобильным клиентам, это
Зачем.

§HTTPS Везде

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

HTTPS защищает целостность веб-сайта

Шифрование предотвращает несанкционированное вмешательство злоумышленников в обмен
данные — например, переписывание контента, внедрение нежелательных и вредоносных
контент и так далее.

HTTPS защищает конфиденциальность и безопасность пользователя

Шифрование не позволяет злоумышленникам прослушивать обмен
данные. Каждый незащищенный запрос может раскрыть конфиденциальную информацию о
пользователь, и когда такие данные собираются во многих сеансах, может
использоваться для деанонимности их личности и раскрытия других конфиденциальных
Информация.Вся активность в браузере с точки зрения пользователя,
следует считать конфиденциальными и конфиденциальными.

HTTPS обеспечивает широкие возможности в Интернете

Растущее число новых функций веб-платформы, таких как доступ
геолокация пользователей, фотографирование, запись видео, включение офлайн
взаимодействие с приложением и многое другое требует явного согласия пользователя, что в
очередь, требует HTTPS. Предоставляемые гарантии безопасности и целостности
по HTTPS — важные компоненты для обеспечения безопасности пользователя
разрешение рабочего процесса и защита своих предпочтений.

Чтобы продолжить, как Internet Engineering Task Force (IETF)
Совет по архитектуре Интернета (IAB) выпустил руководство для
разработчиков и разработчиков протоколов, которые настоятельно рекомендуют внедрение
HTTPS:

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

Стандарт только для HTTPS
опубликованный Управлением управления и бюджета Белого дома, является
отличный ресурс для получения дополнительной информации о необходимости HTTPS, и
практические советы по его развертыванию.

§Давайте
Зашифровать

Распространенное возражение и препятствие на пути к широкому внедрению
HTTPS был требованием для покупки сертификатов у одного из
доверенные органы — см. Цепь доверия и
Центры сертификации.Проект Let’s Encrypt запущен в 2015 году.
решает эту конкретную проблему:

«Let’s Encrypt — бесплатный, автоматизированный и открытый сертификат.
авторитет, предоставленный вам Исследовательской группой по интернет-безопасности
(ISRG). Цель Let’s Encrypt и протокола ACME —
позволяют настроить HTTPS-сервер и получить его автоматически
получить сертификат, доверенный браузеру, без участия человека
вмешательство.»

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

§TLS
Рукопожатие

Прежде, чем клиент и сервер смогут начать обмен данными приложения
через TLS необходимо согласовать зашифрованный туннель: клиент и
сервер должен согласовать версию протокола TLS, выберите
ciphersuite и при необходимости проверьте сертификаты.К сожалению, каждый из
для этих шагов требуются новые пакеты (рис. 4-2) между клиентом и
server, что увеличивает задержку запуска для всех TLS-подключений.

Рисунок 4-2. Протокол рукопожатия TLS

Рисунок 4-2 предполагает то же
(оптимистично) Задержка одностороннего «света в волокне» 28 миллисекунд между Новым
Йорк и Лондон, как использовалось в предыдущем установлении TCP-соединения
Примеры; см. Таблицу 1-1.

0 мс

TLS работает через надежный транспорт (TCP), что означает, что мы должны
сначала завершите трехстороннее рукопожатие TCP, которое занимает одно полное
поездка в оба конца.

56 мс

Установив TCP-соединение, клиент отправляет несколько
спецификации в виде обычного текста, такие как версия протокола TLS
он запущен, список поддерживаемых шифровальных наборов и другие TLS
параметры, которые он может захотеть использовать.

84 мс

Сервер выбирает версию протокола TLS для дальнейшего
связи, выбирает набор шифров из списка, предоставленного
клиент, прикрепляет свой сертификат и отправляет ответ обратно
клиент.При желании сервер также может отправить запрос на
сертификат клиента и параметры для других расширений TLS.

112 мс

Предполагая, что обе стороны могут согласовать общую версию и
cipher, и клиент доволен сертификатом, предоставленным
сервер, клиент инициирует либо RSA, либо ключ Диффи-Хеллмана
обмен, который используется для установления симметричного ключа для
следующая сессия.

140 мс

Сервер обрабатывает параметры обмена ключами, отправленные
клиент, проверяет целостность сообщения, проверяя MAC, и возвращает
encrypted Завершено сообщение клиенту.

168 мс

Клиент расшифровывает сообщение согласованным симметричным ключом,
проверяет MAC, и если все в порядке, то туннель установлен
и данные приложения теперь могут быть отправлены.

Как видно из приведенного выше обмена, для новых подключений TLS требуется два
обходы для «полного рукопожатия» — это плохие новости. Однако в
практика, оптимизированные развертывания могут работать намного лучше и обеспечивать
согласованное рукопожатие 1-RTT TLS:

  • False Start — это расширение протокола TLS, которое позволяет клиенту и
    сервер, чтобы начать передачу зашифрованных данных приложения, когда
    рукопожатие завершено только частично — i.э., однажды
    ChangeCipherSpec и Finished сообщений
    отправлено, но не дожидаясь, пока другая сторона сделает то же самое. Этот
    оптимизация снижает накладные расходы на рукопожатие для новых подключений TLS к
    одна поездка туда и обратно; см. Включение ложного запуска TLS.

  • Если клиент ранее связывался с сервером,
    может использоваться «сокращенное рукопожатие», которое требует одного обращения и
    также позволяет клиенту и серверу снизить накладные расходы ЦП на
    повторное использование ранее согласованных параметров для безопасного сеанса;
    см. сеанс TLS
    Возобновление.

Комбинация обеих вышеупомянутых оптимизаций позволяет нам
обеспечить согласованное рукопожатие TLS 1-RTT для новых и вернувшихся посетителей,
плюс экономия вычислений для сеансов, которые могут быть возобновлены на основе
предварительно согласованные параметры сеанса. Обязательно воспользуйтесь преимуществами
эти оптимизации в ваших развертываниях.

Одна из целей разработки TLS
1.3 заключается в уменьшении накладных расходов на задержку при настройке безопасного
соединение: 1-RTT для новых и 0-RTT для возобновленных сеансов!

§RSA,
Диффи-Хеллман и прямая секретность

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

Рукопожатие RSA работает, но имеет критический недостаток: то же самое.
пара открытого и закрытого ключей используется как для аутентификации сервера, так и для
зашифровать симметричный сеансовый ключ, отправленный на сервер. В результате, если
злоумышленник получает доступ к закрытому ключу сервера и прослушивает
обмен, то они могут расшифровать весь сеанс.Даже хуже
если злоумышленник в настоящее время не имеет доступа к закрытому ключу, он
все еще может записать зашифрованный сеанс и расшифровать его позже
как только они получат закрытый ключ.

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

Для любопытных: статья в Википедии об обмене ключами Диффи-Хеллмана — это
отличное место, чтобы узнать об алгоритме и его свойствах.

Лучше всего то, что обмен ключами Диффи-Хеллмана может использоваться для уменьшения
риск компрометации прошлых сеансов связи: мы можем создать
новый «эфемерный» симметричный ключ как часть каждого обмена ключами
и отбросьте предыдущие ключи. В результате, поскольку эфемерные ключи
никогда не сообщаются и активно пересматриваются для каждого нового
сеанса, в худшем случае злоумышленник может скомпрометировать
клиент или сервер и получить доступ к ключам сеанса текущего и
будущие сессии.Однако зная закрытый ключ или текущий
эфемерный ключ, не помогает злоумышленнику расшифровать любой из предыдущих
сеансы!

Комбинированный, использование обмена ключами Диффи-Хеллмана и эфемерный
ключи сеансов обеспечивают «совершенную прямую секретность» (PFS): компромисс
долгосрочных ключей (например, закрытого ключа сервера) не ставит под угрозу прошлые
ключи сеанса и не позволяет злоумышленнику расшифровать ранее
записанные сеансы. Очень желанная недвижимость, мягко говоря!

В результате, и это не должно вызывать удивления, RSA
рукопожатие сейчас активно отменяется: все популярные браузеры
предпочитают шифры, которые обеспечивают прямую секретность (т.е., положитесь на
Обмен ключами Диффи-Хеллмана), и в качестве дополнительного стимула может
включать определенные оптимизации протокола только тогда, когда прямая секретность
доступно — например, Рукопожатие 1-RTT через TLS False Start.

То есть обратитесь к документации по серверу, чтобы узнать, как включить
и разверните прямую секретность! Еще раз, хорошая безопасность и производительность
идти, держась за руки.

§Производительность открытого и симметричного ключа
Криптография

Криптография с открытым ключом используется только во время начальной настройки
Туннель TLS: сертификаты аутентифицируются и обмен ключами
алгоритм выполняется.

Криптография с симметричным ключом, в которой используется установленный симметричный ключ.
затем используется ключ для дальнейшего взаимодействия между клиентом и
сервер в сеансе. В основном это делается для того, чтобы
повысить производительность — криптография с открытым ключом — это гораздо больше
вычислительно дорого. Чтобы проиллюстрировать разницу, если у вас есть
OpenSSL установлен на вашем компьютере, вы можете запустить следующие тесты:

  • $> скорость openssl ecdh

  • $> скорость openssl aes

Обратите внимание, что единицы между двумя тестами не являются напрямую
сравнимо: тест Диффи-Хеллмана на эллиптических кривых (ECDH) дает
сводная таблица операций в секунду для разных размеров ключей, а
Производительность AES измеряется в байтах в секунду.Тем не менее, это
должно быть легко увидеть, что операции ECDH намного больше
вычислительно дорого.

Точные значения производительности значительно различаются в зависимости от используемого
оборудование, количество ядер, версия TLS, конфигурация сервера и
другие факторы. Не поддавайтесь устаревшим тестам! Всегда запускайте
тесты производительности на вашем собственном оборудовании и обратитесь к разделу «Уменьшение вычислительных ресурсов».
Затраты на дополнительный контекст.

§ Согласование протокола уровня приложений (ALPN)

Два сетевых узла могут захотеть использовать собственный протокол приложения для
общаться друг с другом.Один из способов решить эту проблему — определить
заранее назначьте ему известный порт (например, порт 80 для
HTTP, порт 443 для TLS) и настройте все клиенты и серверы для использования
Это. Однако на практике это медленный и непрактичный процесс: каждый
назначение портов должно быть одобрено и, что еще хуже, межсетевые экраны и другие
посредники часто разрешают трафик только на порты 80 и 443.

В результате, чтобы обеспечить простое развертывание пользовательских протоколов, мы должны
повторно использовать порты 80 или 443 и использовать дополнительный механизм для согласования
протокол приложения.Порт 80 зарезервирован для HTTP, а HTTP
спецификация предоставляет специальный поток обновления для этого
очень цель. Однако использование Upgrade может добавить дополнительные
сетевой обход задержки, и на практике часто ненадежен в
наличие множества посредников; см. Прокси,
Посредники, TLS и новые протоколы в Интернете.

Решение, как вы уже догадались, использовать порт 443, который зарезервирован.
для безопасных сеансов HTTPS, работающих через TLS.Использование сквозного
зашифрованный туннель скрывает данные от промежуточных прокси и
обеспечивает быстрый и надежный способ развертывания новых протоколов приложений.
Однако нам все еще нужен другой механизм для согласования протокола, который
будет использоваться в сеансе TLS.

Application Layer Protocol Negotiation (ALPN), как следует из названия,
— это расширение TLS, которое удовлетворяет эту потребность. Расширяет TLS
рукопожатие (рисунок 4-2) и позволяет партнерам
согласовывать протоколы без дополнительных обходов.В частности,
процесс выглядит следующим образом:

  • Клиент добавляет новое поле ProtocolNameList ,
    содержащий список поддерживаемых протоколов приложений, в
    Сообщение ClientHello .

  • Сервер проверяет поле ProtocolNameList и
    возвращает поле ProtocolName , указывающее выбранный
    протокол как часть сообщения ServerHello .

Сервер может ответить только одним именем протокола, и если он
не поддерживает то, что запрашивает клиент, тогда он может выбрать
прервать соединение. В результате, когда рукопожатие TLS завершается,
оба безопасного туннеля установлены, и клиент и сервер находятся в
соглашение о том, какой протокол приложения будет использоваться; клиент и
сервер может немедленно начать обмен сообщениями через согласованный
протокол.

§История и взаимосвязь NPN и ALPN

Next Protocol Negotiation (NPN) — это расширение TLS, которое
разработан в рамках программы SPDY в Google, чтобы обеспечить эффективную
согласование протокола приложения во время рукопожатия TLS. Звук
знакомый? Конечный результат функционально эквивалентен ALPN.

ALPN — это пересмотренная и одобренная IETF версия расширения NPN.
В NPN сервер объявлял, какие протоколы он поддерживает, а
Затем клиент выбрал и подтвердил протокол.В ALPN этот обмен
было отменено: теперь клиент указывает, какие протоколы он поддерживает,
Затем сервер выбирает и подтверждает протокол. Обоснование
изменение состоит в том, что это приводит к более близкому согласованию ALPN с
другие стандарты согласования протоколов.

Короче говоря, ALPN является преемником NPN.

§Имя сервера
Индикация (SNI)

Зашифрованный туннель TLS может быть установлен между любыми двумя TCP
одноранговые узлы: клиенту необходимо знать только IP-адрес другого однорангового узла.
чтобы установить соединение и выполнить рукопожатие TLS.Однако что, если
сервер хочет разместить несколько независимых сайтов, каждый со своим
Сертификат TLS на том же IP-адресе — как это работает? Обманывать
вопрос; это не так.

Для решения предыдущей проблемы используется указание имени сервера (SNI).
было введено расширение для протокола TLS, которое позволяет клиенту
чтобы указать имя хоста, к которому клиент пытается подключиться как часть
рукопожатия TLS. В свою очередь, сервер может проверять SNI.
имя хоста, отправленное в сообщении ClientHello , выберите
соответствующий сертификат и завершите рукопожатие TLS для желаемого
хозяин.

§TLS, HTTP и
Выделенные IP-адреса

Рабочий процесс TLS + SNI идентичен заголовку Host
реклама в HTTP, где клиент указывает имя хоста
сайт, который он запрашивает: один и тот же IP-адрес может содержать много разных
домены, и SNI и Host необходимы для
устранить неоднозначность между ними.

К сожалению, некоторые старые клиенты (например, большинство версий IE, работающих
в Windows XP, Android 2.2 и другие) не поддерживают SNI. Как
результат, если вам нужно предоставить TLS таким клиентам, то вам может понадобиться
выделенный IP-адрес для каждого хоста.

§ Возобновление сеанса TLS

Дополнительная задержка и вычислительные затраты полного рукопожатия TLS
налагают серьезное снижение производительности на все приложения, требующие
безопасное общение. Чтобы снизить некоторые затраты, TLS предоставляет
механизм для возобновления или обмена данными согласованного секретного ключа между
несколько подключений.

§Идентификаторы сеанса

Первый механизм возобновления идентификаторов сеанса (RFC 5246) был
представленный в SSL 2.0, который позволял серверу создавать и отправлять
32-байтовый идентификатор сеанса как часть его ServerHello
сообщение во время полного согласования TLS, которое мы видели ранее. С
идентификатор сеанса на месте, и клиент, и сервер могут хранить
предварительно согласованные параметры сеанса — с ключом по идентификатору сеанса — и повторное использование
их для последующего сеанса.

В частности, клиент может включить идентификатор сеанса в
ClientHello сообщение, чтобы указать серверу, что он
все еще помнит согласованный набор шифров и ключи из предыдущих
рукопожатие и может использовать их повторно. В свою очередь, если сервер может
найти параметры сеанса, связанные с объявленным идентификатором, в его
cache, тогда может произойти сокращенное рукопожатие (рис. 4-3). В противном случае полный
требуется согласование нового сеанса, которое приведет к созданию нового сеанса
Я БЫ.Рисунок 4-3. Сокращенное рукопожатие TLS
протокол

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

Возобновление сеанса — важная оптимизация как для HTTP / 1.Икс
и развертывания HTTP / 2. Сокращенное рукопожатие исключает полное
круговая задержка и значительно снижает вычислительные затраты
для обеих сторон.

Фактически, если браузеру требуется несколько подключений к одному и тому же
хост (например, когда используется HTTP / 1.x), он часто намеренно ждет
для завершения первого согласования TLS перед открытием дополнительных
подключения к одному серверу, чтобы их можно было «возобновить» и
повторно использовать те же параметры сеанса.Если вы когда-нибудь смотрели в сети
проследить и задаться вопросом, почему вы редко видите несколько TLS на одном хосте
переговоры в полете, вот почему!

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

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

§Билеты на сеанс

Для решения этой проблемы при развертывании сеанса TLS на стороне сервера.
кеши, механизм замены «Session Ticket» (RFC 5077) был
введено, что устраняет требование к серверу сохранять
состояние сеанса для каждого клиента.Вместо этого, если клиент указывает, что он
поддерживает билеты сеанса, сервер может включать новый сеанс
Запись билета
, которая включает все согласованные данные сеанса
зашифровано секретным ключом, известным только серверу.

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

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

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

§Цепь
Доверительных и Сертификационных Центров

Аутентификация является неотъемлемой частью установления каждого TLS.
связь.Ведь можно вести разговор за
зашифрованный туннель с любым партнером, включая злоумышленника, и если мы не сможем
убедитесь, что хозяин, с которым мы говорим, тот, которому мы доверяем, тогда все
работа по шифрованию могла быть напрасной. Чтобы понять, как мы можем проверить
идентичность партнера, давайте рассмотрим простой рабочий процесс аутентификации
между Алисой и Бобом:

  • И Алиса, и Боб генерируют свои собственные открытый и закрытый ключи.

  • И Алиса, и Боб скрывают свои закрытые ключи.

  • Алиса делится своим открытым ключом с Бобом, а Боб — с
    Алиса.

  • Алиса создает новое сообщение для Боба и подписывает его.
    закрытый ключ.

  • Боб использует открытый ключ Алисы для проверки предоставленного сообщения.
    подпись.

Доверие — ключевой компонент предыдущего обмена.Конкретно,
шифрование с открытым ключом позволяет нам использовать открытый ключ отправителя для
убедитесь, что сообщение было подписано правильным закрытым ключом, но
решение об утверждении отправителя по-прежнему основано на доверии. В
только что показанный обмен, Алиса и Боб могли бы обменяться своими общедоступными
при личной встрече, и поскольку они хорошо знают друг друга, они
уверены, что их обмен не был скомпрометирован
самозванец — возможно, они даже подтвердили свою личность через другого,
секретное (физическое) рукопожатие, которое они установили ранее!

Затем Алиса получает сообщение от Чарли, которого она никогда не видела,
но который утверждает, что является другом Боба.Фактически, чтобы доказать, что он
дружив с Бобом, Чарли попросил Боба подписать свой открытый ключ с помощью
закрытый ключ и прикрепил эту подпись к своему сообщению (рис. 4-4). В этом случае Алиса сначала проверяет
Подпись Боба на ключе Чарли. Она знает открытый ключ Боба и поэтому
возможность проверить, действительно ли Боб подписал ключ Чарли. Потому что она доверяет
Решение Боба проверить Чарли, она принимает сообщение и выполняет
аналогичная проверка целостности сообщения Чарли, чтобы убедиться, что это так,
действительно, от Чарли.Рисунок 4-4. Цепочка доверия для Алисы, Боб,
и Чарли

Мы только что создали цепочку доверия: Алиса доверяет
Боб, Боб доверяет Чарли, и в результате транзитивного доверия Алиса решает доверять
Чарли. Пока никто в цепочке не скомпрометирован, это позволяет нам
создавать и расширять список доверенных лиц.

Аутентификация в Интернете и в вашем браузере выполняется точно так же
процесс, как показано. Это означает, что на этом этапе вы должны спросить:
кому доверяет ваш браузер и кому вы доверяете, когда используете
браузер? На этот вопрос есть как минимум три ответа:

Сертификаты, указанные вручную

Каждый браузер и операционная система предоставляет вам механизм для
вручную импортируйте любой сертификат, которому вы доверяете.Как получить
сертификат и проверка его целостности полностью зависит от вас.

Центры сертификации

Центр сертификации (ЦС) — это доверенная третья сторона, которая
доверяет как субъект (владелец) сертификата, так и сторона
полагаясь на сертификат.

Браузер и операционная система

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

На практике было бы непрактично хранить и вручную проверять каждый
и каждый ключ для каждого веб-сайта (хотя вы можете, если так
наклонный). Следовательно, наиболее распространенным решением является использование сертификата.
органы (ЦС), которые выполняют эту работу за нас (рис. 4-5): браузер указывает, каким ЦС доверять
(корневые центры сертификации), а затем на них ложится бремя проверки каждого сайта, который они
подписать, а также проверить и убедиться, что эти сертификаты не используются неправомерно или
скомпрометирован.Если безопасность любого сайта с сертификатом ЦС
нарушено, то этот ЦС также обязан отозвать
скомпрометированный сертификат.

Рисунок 4-5. Подписание ЦС цифровых
сертификаты

Каждый браузер позволяет вам проверять цепочку доверия вашего безопасного
соединение (рис. 4-6), обычно доступное, щелкнув
на значке замка рядом с URL-адресом.

Рисунок 4-6. Цепочка сертификатов доверия для
igvita.com (Google Chrome, версия 25)

  • igvita.com сертификат подписан StartCom Class 1 Primary
    Промежуточный сервер.

  • Сертификат первичного промежуточного сервера StartCom класса 1 подписан
    Центром сертификации StartCom.

  • StartCom Certification Authority — это признанный корневой сертификат
    власть.

«Якорем доверия» для всей цепочки является корневой сертификат.
полномочия, которым в только что показанном случае является Сертификат StartCom
Власть.Каждый браузер поставляется с предварительно инициализированным списком доверенных
центры сертификации («корни»), и в этом случае браузер доверяет
и может проверить корневой сертификат StartCom. Следовательно, через
транзитивная цепочка доверия к браузеру, поставщику браузера и
Центр сертификации StartCom, мы расширяем доверие до места назначения
сайт.

§Прозрачность сертификата

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

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

§ Отзыв сертификата

Иногда издателю сертификата необходимо отозвать или
признать сертификат недействительным по ряду возможных причин:
закрытый ключ сертификата был скомпрометирован, сертификат
сам авторитет был скомпрометирован, или из-за множества более мягких
такие причины, как заменяющий сертификат, изменение принадлежности и т. д.
на. Для решения этой проблемы сами сертификаты содержат инструкции
(Рисунок 4-7) о том, как
проверьте, не были ли они отозваны.Следовательно, чтобы гарантировать, что цепочка доверия
не скомпрометирован, каждый одноранговый узел может проверить статус каждого сертификата с помощью
следуя встроенным инструкциям вместе с подписями, так как это
проверяет цепочку сертификатов.

Рисунок 4-7. Инструкции CRL и OCSP для
igvita.com (Google Chrome, версия 25)

§Сертификат
Список отзыва (CRL)

Список отозванных сертификатов (CRL) определен RFC 5280 и
определяет простой механизм проверки статуса каждого сертификата:
каждый центр сертификации ведет и периодически публикует список
серийных номеров отозванных сертификатов.Любой, кто пытается подтвердить
сертификат затем может загрузить список отзыва, кэшировать его и
проверьте наличие в нем определенного серийного номера — если он
присутствует, то он был отозван.

Этот процесс прост и понятен, но он имеет ряд
ограничения:

  • Растущее число отзывов означает, что список CRL будет
    становятся только длиннее, и каждый клиент должен получить весь список
    серийные номера.

  • Нет механизма мгновенного уведомления о сертификате.
    отзыв — если CRL был кэширован клиентом до
    сертификат был отозван, то CRL будет считать отозванным
    сертификат действителен до истечения срока действия кеша.

  • Необходимость получить последний список CRL из CA может блокировать
    проверка сертификата, которая может значительно увеличить задержку
    Рукопожатие TLS.

  • Получение CRL может завершиться ошибкой по разным причинам, и в таких
    случаях поведение браузера не определено. Большинство браузеров рассматривают такие
    случаев как «мягкий сбой», позволяя продолжить проверку — да,
    ой.

§Онлайн
Протокол статуса сертификата (OCSP)

Чтобы устранить некоторые ограничения механизма CRL, Online
Протокол статуса сертификата (OCSP) был введен RFC 2560, который
предоставляет механизм для выполнения проверки в реальном времени статуса
сертификат.В отличие от файла CRL, который содержит все отозванные серийные номера
номеров, OCSP позволяет клиенту запрашивать базу данных сертификатов CA
непосредственно для только серийного номера, о котором идет речь, при проверке
цепочка сертификатов.

В результате механизм OCSP потребляет меньше полосы пропускания и может
для обеспечения проверки в реальном времени. Однако требование выполнить
Запросы OCSP в реальном времени создают свой собственный набор проблем:

  • CA должен быть в состоянии обрабатывать нагрузку запросов в реальном времени.

  • Центр сертификации должен гарантировать, что служба работает и доступна по всему миру.
    всегда.

  • Запросы OCSP в реальном времени могут нарушить конфиденциальность клиента, поскольку
    CA знает, какие сайты посещает клиент.

  • Клиент должен блокировать запросы OCSP во время проверки
    цепочка сертификатов.

  • Поведение браузера снова не определено и обычно
    приводит к «мягкому сбою», если выборка OCSP завершается неудачно из-за сети
    тайм-аут или другие ошибки.

В качестве реальной точки данных телеметрия Firefox показывает, что OCSP
время ожидания запросов составляет 15% времени, и добавьте примерно
350 мс до подтверждения TLS в случае успеха — см. Hpbn.co/ocsp-performance.

§ОССПСшивание

По причинам, указанным выше, ни отзыва CRL, ни OSCP
механизмы предлагают гарантии безопасности и производительности, которые мы желаем
для наших приложений.Однако не отчаивайтесь, ведь сшивание OCSP
(RFC 6066, расширение «Запрос статуса сертификата») адресовано большинству
проблемы, которые мы видели ранее, разрешив выполнение проверки
сервер и будет отправлен («скреплен») как часть рукопожатия TLS на
клиент:

  • Вместо клиента, отправляющего запрос OCSP, это сервер
    который периодически извлекает подписанный OCSP с отметкой времени
    ответ от CA.

  • Затем сервер добавляет (т. Е. «Скрепляет») подписанный OCSP.
    ответ как часть рукопожатия TLS, позволяя клиенту
    проверить как сертификат, так и прикрепленный отзыв OCSP
    запись, подписанная CA.

Эта смена ролей безопасна, поскольку скрепленная запись подписана
ЦС и может быть проверен клиентом, и предлагает ряд
важные преимущества:

  • Клиент не пропускает историю переходов.

  • Клиенту не нужно блокировать и запрашивать сервер OCSP.

  • Клиент может завершить обработку отзыва, если сервер
    opts-in (путем рекламы флага OSCP «Must-Staple») и
    проверка не удалась.

Короче говоря, чтобы получить как лучшую безопасность, так и гарантии производительности,
не забудьте настроить и протестировать сшивание OCSP на своих серверах.

Протокол записи TLS

В отличие от уровней IP или TCP ниже, все данные обмениваются внутри
Сеанс TLS также создается с использованием четко определенного протокола (рис. 4-8). Запись TLS
протокол отвечает за идентификацию различных типов сообщений
(рукопожатие, предупреждение или данные через поле «Тип содержимого»), а также
обеспечение безопасности и проверка целостности каждого сообщения.

Рисунок 4-8. Структура записи TLS

Типичный рабочий процесс для доставки данных приложения выглядит следующим образом:

  • Протокол записи принимает данные приложения.

  • Полученные данные разбиты на блоки: максимум 2 14
    байт или 16 КБ на запись.

  • Код аутентификации сообщения (MAC) или HMAC добавляется к каждой записи.

  • Данные в каждой записи зашифрованы с использованием согласованного шифра.

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

Хорошая новость заключается в том, что вся только что показанная работа выполняется TLS.
сам слой и полностью прозрачен для большинства приложений. Тем не мение,
протокол записи вводит несколько важных выводов, которые мы
нужно знать:

  • Максимальный размер записи TLS составляет 16 КБ.

  • Каждая запись содержит 5-байтовый заголовок, MAC (до 20 байтов для
    SSLv3, TLS 1.0, TLS 1.1 и до 32 байтов для TLS 1.2) и заполнение
    если используется блочный шифр.

  • Чтобы расшифровать и проверить запись, вся запись должна быть
    имеется в наличии.

Выбор правильного размера записи для вашего приложения, если у вас есть
возможность сделать это может быть важной оптимизацией. Небольшие записи влекут за собой
большие накладные расходы ЦП и байтов из-за кадрирования записи и проверки MAC,
тогда как большие записи должны быть доставлены и собраны заново
Уровень TCP, прежде чем они могут быть обработаны уровнем TLS и доставлены в
ваше приложение — перейдите к разделу «Оптимизация размера записи TLS, чтобы получить полный доступ»
подробности.

§Оптимизация для TLS

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

§Сокращение вычислений
Стоит

Создание и поддержание зашифрованного канала вводит
дополнительные вычислительные затраты для обоих партнеров. В частности, сначала
существует асимметричное (с открытым ключом) шифрование, используемое во время TLS
рукопожатие (объяснение TLS Handshake). Затем, когда общий секрет
установлен, он используется как симметричный ключ для шифрования всех записей TLS.

Как мы уже отмечали ранее, криптография с открытым ключом требует больше вычислений.
дорого по сравнению с криптографией с симметричным ключом, а в
первые дни Интернета часто требовали дополнительного оборудования для выполнения
«Разгрузка SSL.»Хорошая новость в том, что в этом больше нет необходимости и
то, что когда-то требовало специального оборудования, теперь можно сделать прямо на
ПРОЦЕССОР. Крупные организации, такие как Facebook, Twitter и Google, которые
предлагать TLS миллиардам пользователей, выполнять все необходимые TLS
переговоры и вычисления в программном обеспечении и на серийном оборудовании.

В январе этого года (2010) Gmail перешел на использование HTTPS для
все по умолчанию. Ранее он был представлен как
вариант, но теперь все наши пользователи используют HTTPS для защиты своей электронной почты
между их браузерами и Google, все время.Для этого
нам не пришлось развертывать никаких дополнительных машин и специального оборудования. На
на наших производственных интерфейсных машинах SSL / TLS составляет менее 1%
загрузки ЦП, менее 10 КБ памяти на одно соединение и менее
более 2% накладных расходов сети. Многие считают, что SSL / TLS требует
много процессорного времени, и мы надеемся, что предыдущие цифры (общедоступны для
первый раз) поможет это развеять.

Если вы перестанете читать сейчас, вам нужно запомнить только одно:
SSL / TLS больше не требует больших вычислительных затрат.

Адам Лэнгли (Google)

Мы развернули TLS в большом масштабе, используя как оборудование, так и
программные балансировщики нагрузки. Мы обнаружили, что современные программные TLS
реализации, работающие на обычных процессорах, достаточно быстры, чтобы справиться с
высокая нагрузка HTTPS-трафика без необходимости использования выделенных
криптографическое оборудование. Мы обслуживаем весь наш HTTPS-трафик, используя
программное обеспечение, работающее на серийном оборудовании.

Дуг Бивер (Facebook)

Эллиптическая кривая Диффи-Хеллмана (ECDHE) — это всего лишь немного больше.
дороже RSA для эквивалентного уровня безопасности… На практике
развертывания, мы обнаружили, что включение и определение приоритета шифра ECDHE
наборы фактически вызвали незначительное увеличение загрузки ЦП. HTTP
сообщения поддержки активности и возобновление сеанса означают, что большинство запросов не
требуется полное рукопожатие, поэтому операции рукопожатия не доминируют в нашем
Использование процессора.Мы обнаружили, что 75% клиентских запросов Twitter пересылаются
соединения установлены с помощью ECDHE. Остальные 25% составляют
в основном это старые клиенты, которые еще не поддерживают шифр ECDHE
апартаменты.

Джейкоб Хоффман-Эндрюс (Twitter)

Чтобы добиться наилучших результатов в собственных развертываниях, извлеките максимум из
Сессия TLS
Возобновление — разверните, оцените и оптимизируйте процент успеха.
Устранение необходимости выполнять дорогостоящую криптографию с открытым ключом
операции при каждом рукопожатии значительно уменьшат как
вычислительные затраты и время ожидания TLS; нет причин тратить CPU
циклы работы, которую вам не нужно делать.

Говоря об оптимизации циклов ЦП, убедитесь, что ваши серверы
в актуальном состоянии с последней версией библиотек TLS! Кроме того
к улучшениям безопасности, вы также часто будете видеть производительность
преимущества. Безопасность и производительность идут рука об руку.

§Включение 1-RTT TLS
Рукопожатия

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

Хорошо настроенное развертывание TLS должно добавить не более дополнительных
туда и обратно
для согласования TLS-соединения, независимо от
независимо от того, является ли он новым или возобновленным, и избегайте всех других ловушек, связанных с задержкой:
настроить возобновление сеанса и включить прямую секретность, чтобы включить TLS
Фальстарт.

Чтобы получить наилучшую сквозную производительность, обязательно проведите аудит обоих
собственные и сторонние сервисы и серверы, используемые вашим приложением,
включая вашего провайдера CDN. Для быстрого обзора табеля успеваемости
популярные серверы и CDN, посетите istlsfastyet.com.

§Оптимизировать повторное использование подключения

Лучший способ минимизировать задержку и вычислительные затраты
установка новых соединений TCP + TLS предназначена для оптимизации повторного использования соединений.Таким образом снижаются затраты на установку по запросам и обеспечивается значительная
более быстрый опыт для пользователя.

Убедитесь, что настройки вашего сервера и прокси-сервера позволяют
соединения keepalive и аудит настроек тайм-аута соединения. Многие
популярные серверы устанавливают агрессивные тайм-ауты соединения (например, некоторые Apache
версии по умолчанию имеют таймаут 5 секунд), что заставляет много ненужных
повторные переговоры. Для достижения наилучших результатов используйте свои журналы и аналитику, чтобы
определить оптимальные значения тайм-аута.

§Предприятие Раннее
Прекращение действия

Как мы обсуждали в Primer on Latency and
Пропускная способность, мы не сможем ускорить передачу наших пакетов,
но мы можем заставить их пройти меньшее расстояние. Разместив наш «край»
серверов ближе к пользователю (рис. 4-9), мы можем значительно сократить
время приема-передачи и общая стоимость рукопожатий TCP и TLS.

Рисунок 4-9. Досрочное увольнение клиента
связи

Простым способом добиться этого является использование услуг
сеть доставки контента (CDN), которая поддерживает пулы пограничных серверов
по всему миру или развернуть свой собственный.Позволяя пользователю
разорвать соединение с ближайшим сервером, вместо того, чтобы пересекать
через океаны и континентальные ссылки на вашу страну происхождения, клиент получает
преимущество «досрочного прекращения» с более короткими поездками туда и обратно. Эта техника
одинаково полезен и важен как для статического, так и для динамического контента: static
контент также может кэшироваться и обслуживаться пограничными серверами, тогда как
динамические запросы могут быть перенаправлены по установленным соединениям из
край к исходной точке.

§ Некэшированный исходный запрос

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

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

Фактически в качестве дополнительного уровня оптимизации некоторые CDN
провайдеры будут использовать соседние серверы на обеих сторонах соединения!
Клиентское соединение разрывается на ближайшем узле CDN, который затем
передает запрос узлу CDN, расположенному близко к источнику, и
затем запрос направляется к источнику.Переход в сети CDN
позволяет маршрутизировать трафик по оптимизированной магистрали CDN,
что может помочь еще больше уменьшить задержку между клиентом и источником
серверы.

§Настройка кэширования сеанса и возобновления без сохранения состояния

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

Идентификаторы сеанса, от которых зависит кеширование сеанса TLS, были
введены в SSL 2.0 и имеют широкую поддержку среди большинства клиентов и
серверы. Однако, если вы настраиваете TLS на своем сервере, не
Предположим, что поддержка сеанса будет включена по умолчанию. На самом деле это больше
Обычно он отключен на большинстве серверов по умолчанию, но вам виднее!
Дважды проверьте и проверьте конфигурацию вашего сервера, прокси и CDN:

  • Серверы с несколькими процессами или рабочими должны использовать общий
    кеш сеанса.

  • Размер общего кеша сеанса должен быть настроен в соответствии с вашими уровнями
    трафика.

  • Должен быть указан период ожидания сеанса.

  • В конфигурации с несколькими серверами маршрутизация одного и того же IP-адреса клиента или одного и того же
    Идентификатор сеанса TLS на один и тот же сервер — это один из способов обеспечить
    использование кеша сеанса.

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

  • Проверяйте и отслеживайте статистику кеширования сеансов TLS для наилучшего
    представление.

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

§Включение ложного запуска TLS

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

Чтобы получить лучшее из обоих миров — рукопожатие в оба конца для новых и
повторных посетителей и экономия вычислительных ресурсов для повторных посетителей — мы можем
используйте TLS False Start, которое является необязательным расширением протокола,
позволяет отправителю отправлять данные приложения (рис. 4-10), когда рукопожатие
только частично завершено.Рисунок 4-10. Рукопожатие TLS с False
Начинать

False Start не изменяет протокол установления связи TLS, а скорее
влияет только на время протокола, когда данные приложения могут быть
послал. Интуитивно понятно, как только клиент отправил
ClientKeyExchange запись, она уже знает шифрование
ключ и может начать передачу данных приложения — остальную часть
рукопожатие проводится для подтверждения того, что никто не вмешивался в
записи рукопожатия и могут выполняться параллельно.В результате False
Пуск позволяет нам сохранить рукопожатие TLS за один проход независимо от того,
от того, выполняем ли мы полное или сокращенное рукопожатие.

§Развертывание TLS Ложь
Старт

Потому что False Start только изменяет время рукопожатия
протокол, он не требует никаких обновлений самого протокола TLS
и может быть реализован в одностороннем порядке, то есть клиент может просто начать
передача зашифрованных данных приложения раньше.Ну вот и
теория.

На практике, даже если TLS False Start должен быть обратным
совместим со всеми существующими клиентами и серверами TLS, что позволяет
по умолчанию для всех подключений TLS оказалось проблематичным из-за некоторых
плохо реализованные сервера. В результате все современные браузеры
может использовать ложный запуск TLS, но будет делать это только при определенных
условия выполняются сервером:

  • Chrome и Firefox требуют объявления протокола ALPN для
    присутствовать в рукопожатии сервера, и что набор шифров
    выбранный сервером обеспечивает прямую секретность.

  • Safari требует, чтобы набор шифров, выбранный сервером
    обеспечивает прямую секретность.

  • Internet Explorer использует комбинацию черного списка известных
    сайты, которые ломаются при включении TLS False Start, и тайм-аут
    для повторения рукопожатия, если квитирование TLS False Start не удалось.

Чтобы включить ложный запуск TLS во всех браузерах, сервер должен
рекламировать список поддерживаемых протоколов через расширение ALPN — e.грамм.,
«h3, http / 1.1» — и должен быть настроен для поддержки и предпочтения наборов шифров.
которые обеспечивают прямую секретность.

§Оптимизировать размер записи TLS

Все данные приложения, доставляемые через TLS, передаются в
протокол записи (рисунок 4-8). Максимальный размер каждого
размер записи составляет 16 КБ, и в зависимости от выбранного шифра каждая запись будет
добавить от 20 до 40 байтов служебных данных для заголовка, MAC и
необязательная прокладка.Если запись затем умещается в один TCP-пакет,
тогда мы также должны добавить служебные данные IP и TCP: 20-байтовый заголовок для
IP и 20-байтовый заголовок для TCP без параметров. В результате есть
Потенциально от 60 до 100 байтов накладных расходов для каждой записи. Для
типичный максимальный размер блока передачи (MTU) 1500 байт на
провод, эта структура пакета переводит как минимум 6% кадрирования
накладные расходы.

Чем меньше запись, тем выше накладные расходы на кадрирование.Тем не мение,
просто увеличить размер записи до максимального размера (16 КБ) — это
не обязательно хорошая идея. Если запись охватывает несколько пакетов TCP,
тогда уровень TLS должен дождаться прибытия всех пакетов TCP, прежде чем
он может расшифровать данные (рис. 4-11). Если какой-либо из этих пакетов TCP получит
потерян, переупорядочен или задросселирован из-за перегрузки, тогда
отдельные фрагменты записи TLS необходимо буферизовать перед
они могут быть декодированы, что приводит к дополнительной задержке.На практике,
эти задержки могут создать значительные узкие места для браузера, которые
предпочитает использовать данные в потоковом режиме.

Рисунок 4-11. WireShark захватывает
11211-байтовая запись TLS, разделенная на 8 сегментов TCP

Маленькие записи несут накладные расходы, большие записи вызывают задержку, и там
нет единственного значения для «оптимального» размера записи. Вместо этого для Интернета
приложения, которые использует браузер, лучшая стратегия —
для динамической регулировки размера записи в зависимости от состояния TCP
связь:

  • Если соединение новое и окно перегрузки TCP низкое, или
    когда соединение какое-то время простаивало (см. Медленный старт
    Restart), каждый пакет TCP должен содержать ровно одну запись TLS,
    и запись TLS должна занимать полный максимальный размер сегмента
    (MSS), выделенный TCP.

  • Когда окно перегрузки соединения велико, и если мы
    передача большого потока (например, потокового видео), размер
    запись TLS может быть увеличена для охвата нескольких пакетов TCP (до
    16 КБ), чтобы снизить нагрузку на кадры и ЦП на клиенте и сервере.

Если TCP-соединение было в режиме ожидания, и даже если медленный запуск
На сервере отключен перезапуск, лучшая стратегия — уменьшить
размер записи при отправке нового пакета данных: условия могут
изменились с момента последней передачи, и наша цель — свести к минимуму
вероятность буферизации на прикладном уровне из-за потери
пакеты, переупорядочивание и повторные передачи.

Использование динамической стратегии обеспечивает максимальную производительность для
интерактивный трафик: небольшой размер записи исключает ненужную буферизацию
задержка и улучшает время до первого — {HTML-байт,…, видео
frame}
, а больший размер записи оптимизирует пропускную способность за счет
минимизация накладных расходов TLS для долгоживущих потоков.

Чтобы определить оптимальный размер записи для каждого состояния, начнем с
начальный случай нового или незанятого TCP-соединения, когда мы хотим избежать
Записи TLS из нескольких пакетов TCP:

  • Выделите 20 байтов для служебных данных кадрирования IPv4 и 40 байтов для
    IPv6.

  • Выделите 20 байтов для служебных данных кадрирования TCP.

  • Выделите 40 байтов для служебных данных опций TCP (отметки времени, SACK).

Если исходный MTU составляет 1500 байт, остается 1420 байт.
для записи TLS, доставленной по IPv4, и 1400 байт для IPv6. Быть
в будущем используйте размер IPv6, который оставляет нам 1400 байт для
каждую запись TLS и при необходимости отрегулируйте, если ваш MTU ниже.

Затем решение о том, когда следует увеличить размер записи.
и сбросить, если соединение было бездействующим, может быть установлено на основе
предварительно настроенные пороги: увеличьте размер записи до 16 КБ после
X КБ данных были перенесены, и сбросить запись
размер после Y миллисекунд простоя.

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

§ Оптимизация TLS
в Google

По состоянию на начало 2014 г. серверы Google используют небольшие записи TLS, которые подходят
в один сегмент TCP для первого 1 МБ данных, увеличьте запись
размер до 16 КБ после этого для оптимизации пропускной способности, а затем сбросить
размер записи обратно в один сегмент после одной секунды
бездействие — вспенить, сполоснуть, повторить.

Аналогично, если ваши серверы обрабатывают большое количество TLS
подключений, то минимизация использования памяти для каждого подключения может быть
жизненная оптимизация. По умолчанию популярные библиотеки, такие как OpenSSL
будет выделять до 50 КБ памяти на каждое соединение, но, как и в случае
размер записи, возможно, стоит проверить документацию или источник
код для настройки этого значения. Серверы Google сокращают свои
Буферы OpenSSL уменьшаются примерно до 5 КБ.

§Оптимизировать
Цепочка сертификатов

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

Как браузер узнает, откуда брать недостающие
сертификаты? Каждый дочерний сертификат обычно содержит URL-адрес для
родитель. Если URL-адрес опущен, а требуемый сертификат не указан
включен, то проверка не удастся.

И наоборот, не включайте ненужные сертификаты, такие как
доверенные корни в вашей цепочке сертификатов — они добавляют ненужные байты.
Напомним, что цепочка сертификатов сервера отправляется как часть TLS.
рукопожатие, которое, вероятно, происходит через новое TCP-соединение, которое
на ранних этапах своего алгоритма медленного старта.Если сертификат
размер цепочки превышает начальное окно перегрузки TCP, тогда мы
непреднамеренно добавить дополнительные обходы к рукопожатию TLS:
длина сертификата переполнит окно перегрузки и вызовет
сервер, чтобы остановить и дождаться подтверждения клиента, прежде чем продолжить.

На практике размер и глубина цепочки сертификатов были очень значительными.
большие проблемы и проблемы со старыми стеками TCP, которые инициализировали свои
начальное окно перегрузки до 4 сегментов TCP — см. Медленный запуск.Для новее
развертываний, начальное окно перегрузки увеличено до 10 TCP
сегментов и должно быть более чем достаточно для большинства сертификатов
цепи.

Тем не менее, убедитесь, что ваши серверы используют последний стек TCP
и настройки, а также оптимизировать и уменьшить размер вашего сертификата
цепь. Отправка меньшего количества байтов — это всегда хорошо и стоит
оптимизация.

§Настройка сшивания OCSP

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

Для проверки статуса сертификата браузер может использовать один из
несколько методов: Список отозванных сертификатов
(CRL), Статус онлайн-сертификата
Протокол (OCSP) или OCSP
Сшивание. У каждого метода есть свои ограничения, но OCSP Stapling
обеспечивает, безусловно, лучшие гарантии безопасности и производительности — см.
подробности в предыдущих разделах.Обязательно настройте свои серверы на
включить (скрепить) ответ OCSP от CA к предоставленному
цепочка сертификатов. Это позволит браузеру выполнить
проверка отзыва без дополнительных сетевых обходов и с улучшенными
гарантии безопасности.

  • ответов OCSP могут иметь размер от 400 до 4000 байт.
    Привязка этого ответа к вашей цепочке сертификатов увеличит его
    size — обратите особое внимание на общий размер сертификата
    цепочка, чтобы она не переполняла начальное окно перегрузки
    для новых TCP-соединений.

  • Текущие реализации OCSP Stapling допускают только один OCSP
    ответ должен быть включен, что означает, что браузеру, возможно, придется
    откат к другому механизму отзыва, если ему нужно проверить
    другие сертификаты в цепочке — сократите длину своего
    цепочка сертификатов. В будущем OCSP Multi-Stapling должен
    решить эту конкретную проблему.

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

§Включить строгую транспортную безопасность HTTP (HSTS)

HTTP Strict Transport Security — важная политика безопасности
механизм, который позволяет источнику объявлять правила доступа совместимому
браузер через простой HTTP-заголовок, например « Strict-Transport-Security:
max-age = 31536000
«.В частности, он инструктирует пользовательского агента, чтобы
соблюдать следующие правила:

  • Все запросы к источнику следует отправлять по HTTPS. Этот
    включает как навигацию, так и все другие подресурсы того же происхождения
    запросы — например, если пользователь вводит URL без префикса https
    пользовательский агент должен автоматически преобразовать его в запрос https;
    если страница содержит ссылку на не-https ресурс, пользователь
    агент должен автоматически преобразовать его, чтобы запросить версию https.

  • Если безопасное соединение не может быть установлено, пользователь не
    разрешено обойти предупреждение и запросить версию HTTP, т.е.
    источник только HTTPS.

  • max-age указывает время жизни указанного HSTS
    набор правил в секундах (например, max-age = 31536000 равно 365-дневному
    время жизни для рекламируемой политики).

  • includeSubdomains указывает, что политика должна
    применяется ко всем субдоменам текущего происхождения.

HSTS преобразует источник в пункт назначения, поддерживающий только HTTPS, и помогает
защитить приложение от множества пассивных и активных сетей
атаки. В качестве дополнительного бонуса он также предлагает хорошую производительность.
оптимизация за счет устранения необходимости перенаправления HTTP-to-HTTPS:
клиент автоматически перезаписывает все запросы в безопасный источник перед
они отправлены!

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

Список предварительной загрузки §HSTS

Механизм HSTS оставляет самый первый запрос источнику
незащищены от активных атак — e.грамм. злонамеренная сторона могла
понизить рейтинг запроса клиента и предотвратить регистрацию
Политика HSTS. Чтобы решить эту проблему, большинство браузеров предоставляют отдельный HSTS
список предварительной загрузки «, который позволяет источнику запрашивать
включен в список сайтов с поддержкой HSTS, которые поставляются с
браузер.

Когда вы будете уверены в развертывании HTTPS, подумайте
добавление вашего сайта в список предварительной загрузки HSTS через hstspreload.appspot.com.

§Включить HTTP
Закрепление открытого ключа (HPKP)

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

Компрометация центра сертификации DigiNotar является одним из
несколько громких примеров, когда злоумышленник смог выдать и
использовать поддельные, но действительные сертификаты против сотен известных
места.

Public Key Pinning позволяет сайту отправлять HTTP-заголовок, который
указывает браузерам запомнить (закрепить) один или несколько сертификатов в
свою цепочку сертификатов. Поступая таким образом, он может определить, какие
сертификаты или эмитенты должны приниматься браузером на
последующие посещения:

  • Источник может закрепить свой листовой сертификат.Это самый
    безопасная стратегия, потому что вы, по сути, жестко кодируете небольшой набор
    специальных подписей сертификатов, которые должны быть приняты
    браузер.

  • Источник может закрепить один из родительских сертификатов в
    цепочка сертификатов. Например, начало координат может закрепить промежуточный
    сертификат своего ЦС, который сообщает браузеру, что для этого
    конкретного происхождения, он должен доверять только сертификатам, подписанным этим
    конкретный центр сертификации.

Выбор правильной стратегии, какие сертификаты закреплять, какие и
сколько резервных копий предоставить, продолжительность и другие критерии для развертывания
HPKP важны, детализированы и выходят за рамки нашего обсуждения.
Проконсультируйтесь с вашей любимой поисковой системой или вашим местным гуру безопасности, чтобы узнать,
больше информации.

HPKP также предоставляет режим «только отчет», который не обеспечивает принудительное выполнение
предоставлен PIN-код, но может сообщать об обнаруженных сбоях.Это может быть
отличный первый шаг к валидации вашего развертывания и служит
механизм выявления нарушений.

§Обновить содержимое сайта
на HTTPS

Для обеспечения максимальной безопасности и производительности критически важно
что сайт фактически использует HTTPS для получения всех своих ресурсов.
В противном случае мы столкнемся с рядом проблем, которые поставят под угрозу оба или
хуже, сломайте сайт:

  • Смешанное «активное» содержимое (напр.грамм. поставлены скрипты и таблицы стилей
    через HTTP) будет заблокирован браузером и может нарушить
    функциональность сайта.

  • Смешанный «пассивный» контент (например, изображения, видео, аудио и т. Д.,
    доставляется через HTTP) будет получен, но позволит злоумышленнику
    наблюдать и делать выводы о действиях пользователей, а также снижать производительность
    требующие дополнительных подключений и рукопожатий.

Проверяйте свой контент и обновляйте ресурсы и ссылки, в том числе
сторонний контент, чтобы использовать HTTPS.Механизм политики безопасности контента (CSP) может
окажут здесь большую помощь, как для выявления нарушений HTTPS, так и для обеспечения соблюдения
желаемая политика.

Content-Security-Policy: обновления-небезопасные-запросы
Content-Security-Policy-Report-Only: default-src https :;
  report-uri https://example.com/reporting/endpoint
 
  1. Указывает браузеру обновить все (собственные и сторонние)
    запросы к HTTPS.

  2. Указывает браузеру сообщать о любых нарушениях, не связанных с HTTPS, на
    назначенная конечная точка.

CSP предоставляет настраиваемый механизм для управления
активам разрешено использовать, и как и откуда они могут быть
доставлено. Используйте эти возможности, чтобы защитить свой сайт и
пользователей.

§ Контрольный список для выполнения

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

Имея это в виду, краткий контрольный список для включения в повестку дня:

  • Получите максимальную производительность от TCP; см. Оптимизация для
    TCP.

  • Обновите библиотеки TLS до последней версии и (пере) соберите серверы
    против них.

  • Включите и настройте кэширование сеанса и возобновление без сохранения состояния.

  • Отслеживайте процент попаданий в кэширование сеанса и настраивайте конфигурацию
    соответственно.

  • Настройте шифры прямой секретности, чтобы включить ложный запуск TLS.

  • Завершайте сеансы TLS ближе к пользователю, чтобы минимизировать круговые обходы
    задержки.

  • Используйте динамическое изменение размера записи TLS для оптимизации задержки и
    пропускная способность.

  • Проверяйте и оптимизируйте размер вашей цепочки сертификатов.

  • Настройте сшивание OCSP.

  • Настройте HSTS и HPKP.

  • Настроить политики CSP.

  • Включить HTTP / 2; см. HTTP / 2.

§Тестирование и проверка

Наконец, чтобы проверить и протестировать вашу конфигурацию, вы можете использовать онлайн
сервис, такой как Qualys SSL Server
Протестируйте общедоступный сервер на предмет общей конфигурации и безопасности.
недостатки. Кроме того, вам следует ознакомиться с
openssl интерфейс командной строки, который поможет вам проверить
все рукопожатие и конфигурация вашего сервера локально.

    $> openssl s_client -state -CAfile root.ca.crt -connect igvita.com:443 

  ПОДКЛЮЧЕНО (00000003)
  SSL_connect: до инициализации / подключения
  SSL_connect: SSLv2 / v3 пишет клиенту привет A
  SSL_connect: SSLv3 читает сервер привет A
  глубина = 2 / C = IL / O = StartCom Ltd./OU=Secure Digital Certificate Signing
          / CN = Центр сертификации StartCom
  проверить возврат: 1
  глубина = 1 / C = IL / O = StartCom Ltd./OU=Secure Digital Certificate Signing
          / CN = ЦС первичного промежуточного сервера StartCom класса 1
  проверить возврат: 1
  глубина = 0 / описание = ABjQuqt3nPv7ebEG / C = США
          / CN = www.igvita.com/[email protected]
  проверить возврат: 1
  SSL_connect: SSLv3 читать сертификат сервера A
  SSL_connect: сервер чтения SSLv3 выполнен A
  SSL_connect: SSLv3 записывает обмен ключами клиента A
  SSL_connect: спецификация шифра изменения записи SSLv3 A
  SSL_connect: запись SSLv3 завершена A
  SSL_connect: данные сброса SSLv3
  SSL_connect: чтение SSLv3 завершено A
  ---
  Цепочка сертификатов
   0 с: / description = ABjQuqt3nPv7ebEG / C = US
       /CN=www.igvita.com/[email protected]
     i: / C = IL / O = StartCom Ltd./OU=Secure Digital Certificate Signing
       / CN = ЦС первичного промежуточного сервера StartCom класса 1
   1 с: / C = IL / O = StartCom Ltd./ OU = Безопасная подпись цифрового сертификата
       / CN = ЦС первичного промежуточного сервера StartCom класса 1
     i: / C = IL / O = StartCom Ltd./OU=Secure Digital Certificate Signing
       / CN = Центр сертификации StartCom
  ---
  Сертификат сервера
  ----- НАЧАТЬ СЕРТИФИКАТ -----
  ... отрезать ...
  ---
  Имена ЦС сертификатов клиента не отправлены
  ---
  Рукопожатие SSL прочитало 3571 байт и записало 444 байта
  ---
  Новый, TLSv1 / SSLv3, шифр RC4-SHA
  Открытый ключ сервера - 2048 бит
  Поддерживается безопасное повторное согласование
  Сжатие: НЕТ
  Расширение: НЕТ
  SSL-сессия:
      Протокол: TLSv1
      Шифр: RC4-SHA
      Идентификатор сеанса: 269349C84A4702EFA7...
      Идентификатор сеанса-ctx:
      Мастер-ключ: 1F5F5F33D50BE6228A ...
      Key-Arg: Нет
      Время начала: 1354037095
      Тайм-аут: 300 (сек)
      Проверить код возврата: 0 (ок)
  ---
 
  1. Клиент завершил проверку полученной цепочки сертификатов.

  2. Цепочка полученных сертификатов (два сертификата).

  3. Размер полученной цепочки сертификатов.

  4. Выданный идентификатор сеанса для возобновления TLS с отслеживанием состояния.

В предыдущем примере мы подключаемся к igvita.com через порт TLS по умолчанию (443) и
выполните рукопожатие TLS. Поскольку s_client не делает
предположения об известных корневых сертификатах, вручную указываем путь
к корневому сертификату, который на момент написания является StartSSL
Центр сертификации для домена примера.В вашем браузере уже есть
общие корневые сертификаты и, таким образом, может проверить цепочку, но
s_client не делает таких предположений. Попробуйте опустить корень
сертификат, и вы увидите в журнале ошибку проверки.

Проверка цепочки сертификатов показывает, что сервер отправил два
сертификаты, которые в сумме составляют 3571 байт. Также мы можем видеть
согласованные переменные сеанса TLS — выбранный протокол, шифр, ключ — и мы можем
также убедитесь, что сервер выдал идентификатор сеанса для текущего
сессия, которая может быть возобновлена ​​в будущем.

Какой порт SMTP мне использовать? Изучите порты 25, 465 и 587 | Mailgun

Это частый вопрос, который мы получаем здесь, в Mailgun, о номерах портов SMTP . Чтобы обеспечить подключение к нашей конечной точке SMTP, Mailgun предлагает несколько вариантов порта SMTP , но какой из них следует использовать для отправки сообщений электронной почты? Мы рассмотрим каждый порт SMTP в прошлом, а затем обсудим сегодняшнюю методологию использования исходящей почты. Если вы не любитель истории, перейдите в раздел «Какой порт SMTP вам следует использовать?» для наиболее распространенных портов SMTP.

Что такое порт SMTP?

Перед тем, как отправиться в путешествие по истории, мы уточним некоторые основные определения.

SMTP расшифровывается как Simple Mail Transfer Protocol — проще говоря, это процесс, с помощью которого электронные письма отправляются через Интернет. Компьютерные порты — это то, как отдельные компьютеры подключаются к сети и завершают электронные процессы. Порт SMTP представляет собой комбинацию обоих: порт, предназначенный для отправки электронной почты через сеть и ее получателю.

Конечно, как и несколько компьютерных портов, есть много SMTP-портов, которые можно использовать.Давайте посмотрим на их развитие.

Порты SMTP: историческая перспектива

В 1982 году Университет Южной Калифорнии представил предложение Инженерной группе Интернета (IETF). Был опубликован запрос комментариев (RFC) 821 , в котором порт 25 был установлен в качестве канала передачи по умолчанию для электронной почты в Интернете. 30 лет спустя мы все еще используем порт 25 в качестве основного средства передачи электронной почты между двумя почтовыми серверами. Несколько RFC устарели первоначальный SMTP RFC.Однако основа для SMTP-подключений остается прежней или похожей.

В декабре 1998 г. Р. Гелленс и Дж. Кленсин представили RFC 2476 в поддержку добавления новой спецификации для электронной почты в Интернете. RFC предложил разделить традиционную концепцию представления сообщений и ретрансляции сообщений. RFC определил, что отправка сообщения должна происходить через порт 587, чтобы новые требования к политике и безопасности не мешали традиционному ретрансляционному трафику через порт ретрансляции сообщений 25.

А как насчет порта 465?

Интересно, что порт 465 никогда не был опубликован IETF в качестве официального канала передачи или представления SMTP. Вместо этого Управление по присвоению номеров в Интернете (IANA), которое обслуживает большую часть базовой инфраструктуры Интернета, зарегистрировало порт 465 для SMTPS. Целью было установить порт для SMTP для работы с использованием Secure Sockets Layer (SSL). SSL обычно используется для шифрования сообщений через Интернет.

Порт был назначен примерно на один год после того, как он был отозван для поддержки защиты SMTP-коммуникаций с помощью Transport Layer Security (TLS).Гвоздем в гробу стала новая команда протокола «STARTTLS», представленная в RFC 2487 . Эта команда позволяет SMTP-серверам обмениваться данными через существующие порты, сообщая, поддерживает ли целевой сервер шифрование TLS. В этом случае отправляющий сервер может обновить соединение с помощью SMTP-команды «STARTTLS».

Mailgun поддерживает соединения TLS, которые вы можете проверить, подключившись и выдав «ehlo» из интерфейса командной строки. Результирующее «250 STARTTLS» подтверждает, что конечная точка принимает запросы на соединение TLS.] ‘.

5220 ak47 Готовность к ESMTP

6> ehlo blog.mailgun.com

7250-ak47

8250-AUTH PLAIN LOGIN

9250-SIZE 52428800

10250-8BITMIME 9000-RU 9000CODE

000 9000CODAN

Вы можете протестировать, используя ту же последовательность команд на любом SMTP-сервере. Попробуйте Gmail или Yahoo, «telnet gmail-smtp-in.l.google.com 25» или «telnet mta7.am0.yahoodns.net 25».

Какой порт SMTP следует использовать?

А как насчет сегодняшнего дня? Чем отличаются эти стандартные порты? Были ли какие-либо устаревшие со временем?

Порт 25:

Порт 25 SMTP продолжает использоваться в основном для ретрансляции SMTP.Ретрансляция SMTP — это передача электронной почты с сервера электронной почты на сервер электронной почты.

В большинстве случаев современные почтовые клиенты SMTP (Microsoft Outlook, Mail, Thunderbird и т. Д.) Не должны использовать этот порт. Традиционно он блокируется домашними интернет-провайдерами и провайдерами облачного хостинга, чтобы ограничить объем спама, который пересылается со взломанных компьютеров или серверов. Если вы специально не управляете почтовым сервером, у вас не должно быть трафика, проходящего через этот порт на вашем компьютере или сервере.

Порт 465:

IANA переназначила новую службу этому порту, и она больше не должна использоваться для связи по протоколу SMTP.

Однако, поскольку он когда-то был признан IANA действительным, могут существовать устаревшие системы, которые могут использовать только этот метод подключения. Обычно вы будете использовать этот порт только в том случае, если этого требует ваше приложение. Быстрый поиск в Google, и вы найдете множество статей поставщиков услуг почтового ящика для потребителей (ISP), в которых рекомендуется использовать порт 465.Однако мы не рекомендуем его, поскольку он не соответствует требованиям RFC.

Порт 587:

Это порт отправки почты по умолчанию. Когда почтовый клиент или сервер исходящей почты отправляет электронное письмо для маршрутизации надлежащим почтовым сервером, он всегда должен использовать SMTP-порт 587 в качестве порта по умолчанию.

Этот порт в сочетании с шифрованием TLS гарантирует, что электронная почта будет отправляться безопасно и в соответствии с рекомендациями, изложенными IETF.

Всем клиентам Mailgun следует рассмотреть возможность использования порта 587 в качестве порта SMTP по умолчанию, если только вы явно не заблокированы вышестоящей сетью или хостинг-провайдером.

Порт 2525:

Этот порт не одобрен IETF или IANA. Вместо этого Mailgun предоставляет его в качестве альтернативного порта, который является зеркалом порта 587, на случай, если указанные выше порты заблокированы. Поскольку 2525 — нетрадиционный высокий номер порта, он обычно разрешен интернет-провайдерами и поставщиками облачного хостинга, такими как Google Compute Engine. Если вы пробовали указанные выше порты, но у вас возникли проблемы с подключением, попробуйте порт 2525. Этот порт также поддерживает шифрование TLS.

Подождите, а как насчет POP и IMAP?

POP (протокол почтового отделения, последняя версия — POP3) и IMAP (протокол доступа к сообщениям в Интернете) — два из самых первых протоколов, разработанных в потребительском Интернете, которые позволили почтовым клиентам, таким как Outlook, Thunderbird и другим, получать почта с почтового сервера.

Порты, обычно используемые для POP, — это порты TCP 110 и 995, а для IMAP — порты TCP 143 и 993, соответственно для незащищенных и безопасных сеансов. Каждый из них умел делать разные вещи, например, отражать состояние электронного письма обратно на сервер (было ли оно прочитано, помечено или помечено как нежелательное) или для сохранения копии сообщения на локальном компьютере для легкого автономного доступа. . Последнюю версию POP, POP3, можно использовать как с SMTP, так и без него.

Это не влияет на то, какой порт вы можете использовать с Mailgun.Mailgun не поддерживает почтовые ящики, поэтому мы не поддерживаем эти протоколы.

Использование SMTP с Mailgun

SMTP существует уже много лет, и многие люди спрашивают нас, следует ли им использовать SMTP или конечную точку API Mailgun. Решение о том, следует ли вам использовать для отправки электронных писем API электронной почты или SMTP, может быть нелегким выбором.

Мы определенно осознаем, что существует определенный уровень привязки к поставщику, связанный с построением вокруг API. Однако SMTP очень «болтливый» и может привести к менее производительной отправке почты в Mailgun.

Например, рассмотрим типичный почтовый диалог TLS между моим компьютером и конечной точкой SMTP Mailgun:

1> openssl s_client -starttls smtp -crlf -connect smtp.mailgun.org:587

2250 STARTTLS

3> ehlo blog .mailgun.com

4250-ak47

5250-AUTH РАВНИНА ВХОД

6250-РАЗМЕР 52428800

7250-8BITMIME 8250-ENHANCEDSTATUSCODES

9> AUTH РАВНИНА AHBvc3RtYXN0ZXJAc2FtcGxlcy5tYWlsZ3VuLm9yZwAza2g5dW11am9yYTU =

10235 2.0.0 OK

11> ПОЧТА ОТ:

12250 Адрес отправителя принят

13> RCPT TO:

14250 Адрес получателя принят

15> ДАННЫЕ

16354 Продолжить

17> Это тест SMTP через порт 587.

18>.

19250 Большой успех

20> ВЫЙТИ

21221 Увидимся позже. С уважением, Mailgun

Как вы можете видеть, вышеупомянутая коммуникация довольно громоздка с большим количеством обменов между отправителем и получателем.Мы открываем соединение с SMTP-сервером, вводим команду EHLO, аутентифицируемся, устанавливаем MAIL FROM, устанавливаем RCPT TO, команду DATA, отправляем данные, период закрытия и, наконец, получаем подтверждение того, что сообщение было поставлено в очередь.

Сравните это с полезной нагрузкой HTTP:

1> openssl s_client -connect api.mailgun.net:443

2> POST /v2/samples.mailgun.org/messages HTTP / 1.1

3> Авторизация: Базовая YXBpOmtleS0zYXg2eG5qcDI5amQ2ZmRzNGdjMzczc2d2anh0ZW9sMA ==

4> Content-Type: application / x-www-form-urlencoded

5> Content-Length: 126

6> 9000mailgun.org & to = recipient% 40samples.mailgun.org & subject = Testing &

8> text = Это + тест + HTTP + через + порт + 443!

9HTTP / 1.1 200 OK

Здесь мы инициируем соединение, передаем полезные данные HTTP POST и получаем 200 OK от конечной точки API. Нам не нужно выдавать последовательность команд и ждать ответа от сервера после каждой команды.

Что нужно помнить о портах SMTP?

Таким образом, если требуется производительность, Mailgun рекомендует использовать нашу конечную точку API .Количество разговоров вперед и назад намного меньше. А с нашими API SDK подключиться довольно просто. Если вы не заинтересованы в подключении через API, наши конечные точки SMTP готовы для вашей почты . Только не забывайте — порт 587 — это то место, где находится сторона, когда речь идет о безопасных SMTP!

Чтобы узнать больше, ознакомьтесь с нашей документацией для получения дополнительной информации или свяжитесь с нами , и мы ответим на любые ваши вопросы о портах SMTP или наших почтовых службах.

STARTTLS против SSL против TLS за 5 минут

С таким количеством аббревиатур, связанных с шифрованием электронной почты, нетрудно заблудиться. Вряд ли электронная почта отправляется без SSL или TLS. STARTTLS часто ассоциируется с ними, а STLS то и дело появляется. Как насчет ECC и RSA? Оставим их на следующий раз. Присоединяйтесь к нам на этот раз, чтобы обсудить роль SSL / TLS и STARTTLS в шифровании электронной почты.

SSL и TLS — о чем они все?

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

SSL (Secure Socket Layer) и его преемник TLS (Transport Layer Security) — это два криптографических протокола, используемых при передаче электронной почты. Оба используют набор закрытых и открытых ключей для превращения сообщений в бесполезные строки символов. Если на каком-либо этапе такое электронное письмо будет перехвачено, оно не принесет никакой пользы тем, кто поставил под угрозу вашу безопасность.

SSL был первоначально разработан Netscape в 1995 году и быстро был реализован в популярных в то время почтовых клиентах (включая их собственный клиент). Четыре года спустя был представлен новый стандарт — TLS — с более надежным профилем безопасности.

SSL с тех пор устарел, но все еще широко используется вместе со своим младшим братом. Фактически, оба имени используются взаимозаменяемо, и вы часто можете найти ссылку на SSL, когда упоминается TLS.Термин «SSL / TLS» также широко используется.

Какова роль STARTTLS?

STARTTLS — это не протокол, а команда протокола электронной почты. Он используется, чтобы сообщить почтовому серверу, что почтовый клиент (например, Gmail, Outlook и т. Д.) Хочет обновить существующее небезопасное соединение до безопасного, используя SSL или TLS.

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

STARTTLS, за исключением SMTP, также используется с протоколом IMAP, традиционно используемым для получения писем с почтового сервера.POP3, другой протокол для получения электронных писем, использует аналогичную команду под названием STLS.

Как работают TLS / SSL и STARTTLS?

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

Когда электронное письмо отправлено, клиент обращается к серверу, чтобы проверить его надежность.В нем указаны совместимые версии SSL / TLS, а также метод шифрования, который можно от него ожидать. Сервер отвечает своим цифровым сертификатом, чтобы подтвердить свою личность. После проверки обе стороны генерируют и обмениваются уникальным ключом, который теперь будет использоваться для расшифровки сообщений.

Чтобы произошло «рукопожатие», сначала необходимо установить соединение между клиентом и сервером. По умолчанию SMTP-соединение не защищено и, как таковое, уязвимо для атак. Вот почему обе стороны будут пытаться установить безопасное соединение.Есть два подхода:

  • с оппортунистическим SSL / TLS (также известным как явный SSL / TLS), клиент выполнит команду STARTTLS, чтобы обновить соединение до зашифрованного. Если сервер совместим и ошибок не возникает, будет установлено защищенное соединение TLS или SSL. Если что-то не удается, будет установлена ​​передача в виде обычного текста.
  • с принудительным SSL / TLS (он же неявный SSL / TLS), клиент попытается установить безопасное соединение, не спрашивая сервер о его совместимости.В случае успеха будет установлено безопасное соединение, и последует рукопожатие. Если сервер несовместим или время ожидания соединения истекло, передача будет прервана.

Оба широко используются в наши дни и используют выделенные порты для этих передач.

Какие порты используются для неявного и явного SSL / TLS?

В течение многих лет порт 25 использовался по умолчанию как для отправки электронных писем на MTA (почтовые серверы), так и для их ретрансляции между MTA. Со временем это привело к тому, что через этот порт было отправлено огромное количество спама (и так оно и есть).

С тех пор было анонсировано

новых портов, а 25 были ограничены в основном для целей ретрансляции SMTP. Порт 587 стал самым популярным вариантом для отправки по протоколу SMTP.

Хотя для использования этого порта STARTTLS не требуется, платформы, использующие его, в основном требуют. Кроме того, они также требуют имени пользователя и пароля для аутентификации, что еще больше затрудняет подделку реальных учетных записей. Если вы хотите использовать явный SSL / TLS, вам следует выбрать порт 587. В качестве альтернативы также обычно используется порт 2525.

В течение короткого периода времени порт 465 был рекомендованным портом для отправки электронной почты. Это решение было быстро отменено в пользу порта 587, но многие клиенты и серверы уже реализовали его. Таким образом, он стал распространенной альтернативой 587 для тех, кто желает использовать неявный SSL / TLS (форсирование зашифрованного соединения, а не попытки обновить его с помощью STARTTLS).

В наши дни многие почтовые клиенты, Gmail и Yahoo! включены, используйте порт 465 (для неявного SSL / TLS) и 587 (для явного SSL / TLS), в то время как другие ограничивают себя только 587.

Однако все должно измениться, поскольку предпринимаются дальнейшие попытки принудительно использовать TLS как на клиентах, так и на серверах. В 2018 году Инженерная группа Интернета (IETF) рекомендовала использовать неявный TLS через порт 465. Время покажет, станет ли STARTTLS излишним в один прекрасный день или оба подхода будут использоваться рука об руку в ближайшие годы.

Подробнее о портах SMTP читайте в другой нашей статье.

IMAP и POP (в основном POP3) также используют разные порты для неявного и явного SSL / TLS.IMAP получает электронные письма через порт 143, когда STARTTLS установлен, и через порт 993, когда используется неявный SSL / TLS. POP использует порты 110 и 995 соответственно.

История версий SSL / TLS

Как мы упоминали ранее, протокол SSL устарел уже несколько лет, и TLS считается наиболее надежным средством шифрования электронной почты. Несмотря на это, некоторые платформы по-прежнему используют SSL, несмотря на его уязвимости.

Как вы уже знаете, SSL и TLS взаимозаменяемы.Таким образом, нередко можно увидеть, что клиент или сервер предлагает своим пользователям новейшее шифрование SSL. Но не стоит отчаиваться. Вероятно, это TLS, который обеспечивает их передачу. Однако быстрое исследование не повредит.

Вот сводка всех версий SSL / TLS, опубликованных на сегодняшний день:

Протокол Год публикации Текущий статус
SSL 1.0 Никогда не публиковался Никогда не публиковался
SSL 2.0 1995 Устарело с 2011 г.
SSL 3.0 1996 Устарело с 2015 г.
TLS 1.0 1999 Будет прекращено в 2006 г. Будет объявлено устаревшим в 2020 году
TLS 1.2 2008 Активно поддерживается
TLS 1.3 2018 Активно поддерживается

SSL 1.0 никогда не публиковался, так как серьезные недостатки безопасности были обнаружены еще до того, как о нем было объявлено. В результате SSL 2.0 стал первым широко доступным протоколом.

С выпуском TLS 1.3 в 2018 году первые две версии TLS должны быть устаревшими. Если вы собираетесь выбрать поставщика и сравниваете разные предложения, убедитесь, что ваш сервис работает на TLS 1.2 или новее.

Завершение

Имейте в виду, что даже с такой древней технологией, как SMTP, все может измениться довольно быстро.Может быть представлена ​​новая версия TLS или даже совершенно другой протокол. Некоторые порты могут стать избыточными, в то время как другие станут популярными. Когда это произойдет, мы обязательно обновим статью, но постараемся всегда быть в курсе последних новостей и тенденций в отрасли.

Следите за нашим блогом, и вы узнаете много нового об отправке электронной почты, протоколах и подходах. Кроме того, попробуйте Mailtrap бесплатно и никогда больше случайно не спамите своих клиентов. Заботиться!

Шифрование соединения

— SSL, TLS и STARTTLS

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

К сожалению, терминология, связанная с настройками, не всегда ясна, и программы электронной почты не всегда используют эту терминологию последовательно. Это особенно верно, когда речь идет о настройках службы исходящей почты с использованием SMTP (см. Каков наилучший вариант для SMTP?).

SSL — уровень защищенных сокетов

SSL — это наиболее распространенный термин, с которым люди сталкиваются при настройке почтовой программы или приложения.Это так, даже если SSL был заменен TLS (см. Ниже). Поскольку между SSL и TLS есть сходство, оба часто называют SSL , хотя технически неверно .

SSL позволяет зашифровать соединение между вашей почтовой программой / приложением и нашими серверами. Он также предоставляет способ проверить, что вы подключены к Runbox, а не к другому серверу, который перехватил ваше соединение.

Когда устанавливается SSL-соединение, ваша почтовая программа подключается к нашим серверам, и они устанавливают безопасное соединение, которое зашифровано, а затем данные передаются по этому соединению.

SSL не является предпочтительным протоколом безопасности (стандартом связи), поскольку он был улучшен.

TLS — безопасность транспортного уровня

TLS работает аналогично SSL, но является более современным протоколом и более безопасным, чем SSL. Как и SSL, с вашей почтовой программой устанавливается безопасное соединение, а затем данные передаются по этому соединению.

По сравнению с SSL, TLS является предпочтительным протоколом для шифрования и безопасности соединения, и многие почтовые программы будут использовать TLS вместо SSL, даже если поддерживаются оба протокола.

STARTTLS

STARTTLS отличается тем, что это не протокол, а фактически команда, передаваемая между почтовой программой и сервером. Это буквально означает «Запустить TLS» и запускает процесс, в котором почтовая программа и сервер превращают незашифрованное соединение в соединение, которое защищено и зашифровано с помощью SSL или TLS.

Терминология и сокращения

IMAP — Протокол доступа к сообщениям в Интернете
POP — Протокол почтового отделения
SMTP — Простой протокол передачи почты

С технической точки зрения, если вы используете IMAP с TLS / SSL на порту 993, то на самом деле это IMAPS .Дополнительная буква «S» означает «безопасный».

Это может быть не то, что вы слышали раньше, но это точно так же, как и с веб-сайтами. Большинство людей знают, что веб-сайты, начинающиеся с https: //, безопасны (ваш интернет-банкинг должен быть таким), тогда как веб-сайты, начинающиеся с http: //, не используют безопасное соединение. Так же, как у нас есть HTTP и HTTPS, у нас также есть IMAP и IMAPS. То же самое верно для POP / POPS и SMTP / SMTPS.

Несмотря на то, что может быть технически правильным, в большинстве случаев эти протоколы называются IMAP, POP и SMTP, независимо от того, безопасны они или нет.

Порты и шифрование

Некоторые порты указаны как используемые для IMAPS, POPS и SMTPS,

Например:

IMAPS порт 993
POPS порт 995
SMTPS порт 465

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

Например:

IMAP порт 143
POP порт 110
SMTP порта 25, 26 и 587

Порт 25 обычно используется службами электронной почты для передачи электронной почты между серверами в рамках обычного процесса доставки электронной почты.Этот порт заблокирован многими поставщиками интернет-услуг, которые предоставляют потребительские / бытовые услуги, поэтому вирусы и вредоносные программы не могут отправлять почту напрямую на почтовые серверы с помощью зараженного компьютера. Поэтому отправка почты потребителями на почтовый сервер для дальнейшей доставки обычно осуществляется через порт 26 или 587.

Порт 465 был официально назначен защищенным портом для отправки почты (SMTPS) с использованием SSL / TLS в 1997 году, но он был отменен через год после того, как STARTTLS стал более стандартизированным.Однако порт 465 с TLS предлагал некоторые преимущества по сравнению с STARTTLS (см. Следующий раздел) и продолжал предлагаться почтовыми службами и почтовыми клиентами даже после того, как его назначение для безопасной отправки почты было отменено.

В январе 2018 года было признано, что порт 465 будет по-прежнему использоваться для отправки почты и что он предлагает те же преимущества, что и POPS и IMAPS. Поэтому теперь он снова предназначен для отправки зашифрованной почты.

Какой вариант для SMTP лучше всего?

При использовании TLS на порту 465 соединение между почтовой программой и сервером защищается до того, как через соединение будут отправлены какие-либо важные данные.Это имеет большой смысл и согласуется с использованием TLS с портом 993 или 995 при получении электронной почты с почтовых серверов.

С портом 587 и STARTTLS небольшой объем данных SMTP обменивается без шифрования, пока серверы устанавливают безопасное зашифрованное соединение. Обычно это не является поводом для беспокойства, так как оно не должно включать никаких ваших личных данных.

Вы можете обнаружить, что , поскольку порт 587 со STARTTLS был официальным стандартом в течение многих лет , что разработчики почтовых программ ранее обеспечили совместимость своих программ с этими настройками в качестве приоритета и будут меньше беспокоиться о совместимости порта 465 с широкий спектр провайдеров электронной почты.В некоторых случаях это может означать , вы можете найти порт 587 с STARTTLS более надежным с некоторыми почтовыми программами.

Какую настройку выбрать в почтовых клиентах

Чтобы еще больше запутать ситуацию, некоторые программы электронной почты используют терминологию непоследовательно или меняют терминологию от одной версии к другой.

Самая распространенная проблема с терминологией — когда SSL используется для обозначения TLS / SSL, а TLS используется для обозначения STARTTLS.

Если вы выберете TLS и порт автоматически изменится на 587, вы можете быть уверены, что TLS означает STARTTLS.

Вообще говоря, настройки для POP / POPS и IMAP / IMAPS просты.

Получение помощи с настройками

Мы надеемся, что эта страница поможет вам принять решение, если вы не хотите использовать настройки по умолчанию, которые использует ваша почтовая программа.

Однако, если вам нужна помощь в выборе настроек, обратитесь в службу поддержки Runbox.

Безопасность транспортного уровня — Веб-безопасность

Безопасность любого соединения, использующего протокол TLS, во многом зависит от выбранных наборов шифров и параметров безопасности.Цель этой статьи — помочь вам принять эти решения, чтобы обеспечить конфиденциальность и целостность связи между клиентом и сервером. Команда Mozilla Operations Security (OpSec) ведет вики-запись со справочными конфигурациями серверов.

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

Когда был представлен протокол HTTPS, он был основан на Secure Sockets Layer (SSL) 2.0, технологии, представленной Netscape. Вскоре после этого он был обновлен до SSL 3.0, и по мере расширения его использования стало ясно, что необходимо указать общую стандартную технологию шифрования для обеспечения взаимодействия между всеми веб-браузерами и серверами. Инженерная группа Интернета (IETF) указала TLS 1.0 в RFC 2246 в январе 1999 года. Текущая версия TLS — 1.3 (RFC 8446).

Несмотря на то, что Интернет теперь использует TLS для шифрования, многие люди по-прежнему называют его «SSL».

Хотя TLS можно использовать поверх любого низкоуровневого транспортного протокола, первоначальной целью протокола было шифрование HTTP-трафика. HTTP, зашифрованный с использованием TLS, обычно называется HTTPS. Зашифрованный TLS веб-трафик по соглашению обменивается по порту 443 по умолчанию, в то время как незашифрованный HTTP использует по умолчанию порт 80.HTTPS остается важным вариантом использования TLS.

TLS предоставляет три основных сервиса, которые помогают обеспечить безопасность и безопасность данных, которыми он обменивается:

Аутентификация
Аутентификация позволяет каждой стороне связи подтвердить, что другая сторона является тем, кем они себя называют.
Шифрование
Данные шифруются при передаче между пользовательским агентом и сервером, чтобы предотвратить их чтение и интерпретацию неавторизованными сторонами.
Целостность
TLS гарантирует, что между шифрованием, передачей и дешифрованием данных никакая информация не будет потеряна, повреждена, подделана или фальсифицирована.

TLS-соединение начинается с фазы подтверждения, когда клиент и сервер согласовывают общий секрет и согласовываются важные параметры, такие как наборы шифров. Один раз параметры и режим обмена данными, в котором происходит обмен данными приложения, например HTTP.

Наборы шифров

Основными параметрами, которые согласовывает рукопожатие TLS, является набор шифров.

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

Набор шифров в TLS 1.3 в первую очередь управляет шифрованием данных, для согласования ключей и аутентификации используются отдельные методы согласования.

Разное программное обеспечение может использовать разные имена для одних и тех же наборов шифров.Например, имена, используемые в OpenSSL и GnuTLS, отличаются от имен в стандартах TLS. В таблице соответствия имен шифров в статье команды Mozilla OpSec о конфигурациях TLS перечислены эти имена, а также информация об уровнях совместимости и безопасности.

Настройка сервера

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

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

  • Apache
  • Nginx
  • Lighttpd
  • HAProxy
  • Amazon Web Services CloudFormation Elastic Load Balancer

Использование конфигуратора — рекомендуемый способ создания конфигурации в соответствии с вашими потребностями; затем скопируйте и вставьте его в соответствующий файл на своем сервере и перезапустите сервер, чтобы изменения вступили в силу.В файл конфигурации может потребоваться некоторая корректировка для включения пользовательских настроек, поэтому обязательно просмотрите сгенерированную конфигурацию перед ее использованием; установка файла конфигурации без проверки правильности ссылок на доменные имена и т.п. приведет к тому, что сервер просто не будет работать.

RFC 8446: TLS 1.3 — это основная версия TLS. TLS 1.3 включает множество изменений, повышающих безопасность и производительность. Цели TLS 1.3:

  • Удалите неиспользуемые и небезопасные функции TLS 1.2.
  • Включите в дизайн строгий анализ безопасности.
  • Повышение конфиденциальности за счет большего количества шифрования протокола.
  • Сократите время, необходимое для завершения рукопожатия.

TLS 1.3 изменяет большую часть основ протокола, но сохраняет почти все базовые возможности, как в предыдущих версиях TLS. Для Интернета можно включить TLS 1.3, не влияя на совместимость, за некоторыми редкими исключениями (см. Ниже).

Основные изменения в TLS 1.3:

  • TLS 1.В большинстве случаев 3 рукопожатия завершаются за один круговой обход, что сокращает задержку установления связи.
  • Сервер может включить квитирование 0-RTT (нулевое время приема-передачи). Клиенты, которые повторно подключаются к серверу, могут отправлять запросы немедленно, полностью устраняя задержку установления связи TLS. Хотя прирост производительности от 0-RTT может быть значительным, он сопряжен с некоторым риском атаки повторного воспроизведения, поэтому перед включением этой функции необходимо проявить некоторую осторожность.
  • TLS 1.3 поддерживает только режимы прямой защиты, если соединение не возобновлено или не используется предварительный общий ключ.
  • TLS 1.3 определяет новый набор наборов шифров, который является эксклюзивным для TLS 1.3. Все эти комплекты шифров используют современные алгоритмы аутентифицированного шифрования со связанными данными (AEAD).
  • Рукопожатие TLS 1.3 зашифровано, за исключением сообщений, необходимых для установления общего секрета. В частности, это означает, что сертификаты сервера и клиента зашифрованы. Однако обратите внимание, что идентификатор сервера (имя_сервера или расширение SNI), который клиент отправляет на сервер, не зашифрован.
  • Многие механизмы были отключены: повторное согласование, общее сжатие данных, сертификаты алгоритма цифровой подписи (DSA), обмен статическими ключами RSA и обмен ключами с настраиваемыми группами Диффи-Хеллмана (DH).

Доступны реализации черновых версий TLS 1.3. TLS 1.3 включен в некоторых браузерах, включая режим 0-RTT. Веб-серверам, поддерживающим TLS 1.3, может потребоваться изменить конфигурацию, чтобы обеспечить успешную работу TLS 1.3.

TLS 1.3 добавляет только один важный новый вариант использования. Рукопожатие 0-RTT может обеспечить значительный прирост производительности для чувствительных к задержкам приложений, таких как Интернет. Включение 0-RTT требует дополнительных шагов, как для обеспечения успешного развертывания, так и для управления рисками атак повторного воспроизведения.

Удаление повторного согласования в TLS 1.3 может повлиять на некоторые веб-серверы, которые полагаются на аутентификацию клиента с использованием сертификатов. Некоторые веб-серверы используют повторное согласование, чтобы либо гарантировать, что сертификаты клиентов зашифрованы, либо запрашивать сертификаты клиентов только при запросе определенных ресурсов.Для конфиденциальности клиентских сертификатов шифрование подтверждения TLS 1.3 гарантирует, что клиентские сертификаты зашифрованы; однако для этого могут потребоваться некоторые изменения программного обеспечения. Реактивная аутентификация клиента с использованием сертификатов поддерживается TLS 1.3, но не широко применяется. В настоящее время разрабатываются альтернативные механизмы, которые также будут поддерживать HTTP / 2.

Чтобы способствовать созданию более современного и безопасного Интернета, поддержка TLS 1.0 и 1.1 будет удалена из всех основных браузеров в первом квартале 2020 года.Вам нужно будет убедиться, что ваш веб-сервер поддерживает TLS 1.2 или 1.3 в будущем.

Начиная с версии 74 Firefox будет возвращать ошибку Secure Connection Failed при подключении к серверам с использованием более старых версий TLS (ошибка 1606734).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *