Открыть сервис

SSL/TLS

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

История развития

Разработка SSL компанией Netscape

Протокол SSL (Secure Sockets Layer) был разработан компанией Netscape Communications в середине 1990-х годов для обеспечения безопасности электронной коммерции и других онлайн-транзакций. Первая версия SSL 1.0, созданная в 1994 году, никогда не публиковалась из-за серьёзных уязвимостей. В 1995 году вышла SSL 2.0, которая также содержала недостатки, в том числе отсутствие защиты от атак типа «человек посередине» (MITM). В 1996 году была представлена SSL 3.0, значительно улучшившая безопасность и ставшая основой для последующих стандартов.

Стандартизация TLS

В 1999 году Инженерный совет Интернета (IETF) опубликовал RFC 2246, описывающий протокол TLS 1.0, который базировался на SSL 3.0, но с рядом изменений и улучшений. Фактически, TLS 1.0 можно рассматривать как SSL 3.1, однако название было изменено из-за юридических соображений (Netscape не передала права на торговую марку SSL). Последующие версии протокола развивались следующим образом:

Устаревание SSL

Начиная с 2015 года, все версии SSL (2.0, 3.0) были официально признаны устаревшими и небезопасными. Основные браузеры и серверы прекратили поддержку SSL 3.0 в 2014–2015 годах после обнаружения уязвимости POODLE. В настоящее время (2024 год) рекомендуется использовать TLS 1.2 или TLS 1.3.

Архитектура и принцип работы

Протокол SSL/TLS работает на транспортном уровне модели OSI (между транспортным и прикладным уровнями), обеспечивая защиту для протоколов более высокого уровня, таких как HTTP, FTP, SMTP. Он состоит из двух основных подуровней: протокола записи (Record Protocol) и протоколов рукопожатия (Handshake Protocol).

Протокол рукопожатия (Handshake)

Рукопожатие — это последовательность обмена сообщениями между клиентом и сервером, в ходе которой они договариваются о параметрах защищённого соединения. В TLS 1.3 процесс рукопожатия значительно упрощён и занимает всего один сетевой обход (round-trip), а при возобновлении сессии — 0-RTT (Zero Round Trip Time). Основные этапы рукопожатия в TLS 1.2:

  1. ClientHello — клиент отправляет серверу список поддерживаемых версий TLS, набор шифров (cipher suites), методы сжатия и случайное число.
  2. ServerHelloсервер выбирает версию TLS, шифр и метод сжатия из предложенных клиентом, отправляет свой сертификат X.509 (содержащий открытый ключ) и случайное число.
  3. Аутентификация сервера — клиент проверяет сертификат сервера на подлинность, используя цепочку доверенных центров сертификации (CA).
  4. Обмен ключами — клиент генерирует предварительный ключ (pre-master secret), шифрует его открытым ключом сервера и отправляет обратно. Сервер расшифровывает его своим закрытым ключом.
  5. Вычисление сессионных ключей — обе стороны на основе предварительного ключа и случайных чисел генерируют симметричные ключи (сессионные ключи) для шифрования данных.
  6. Завершение — стороны обмениваются сообщениями ChangeCipherSpec (указывает, что дальнейшие данные будут шифроваться) и Finished (проверка целостности рукопожатия).

Протокол записи (Record)

После установления защищённого соединения все данные передаются с помощью протокола записи. Он выполняет следующие функции:

Криптографические алгоритмы

SSL/TLS использует комбинацию асимметричной и симметричной криптографии, а также хеш-функций.

Асимметричная криптография

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

Симметричная криптография

Применяется для шифрования передаваемых данных после установления соединения. Основные алгоритмы:

Хеш-функции

Используются для создания кодов аутентичности сообщений (MAC) и в процессе рукопожатия. Основные алгоритмы:

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

Для аутентификации сервера (и, опционально, клиента) в SSL/TLS используются цифровые сертификаты, соответствующие стандарту X.509. Сертификат содержит:

Центры сертификации (CA) — это доверенные организации, которые выпускают и подписывают сертификаты. Браузеры и операционные системы имеют встроенные списки доверенных корневых CA. Если сертификат сервера подписан неизвестным или самоподписанным CA, браузер выдаёт предупреждение о небезопасном соединении.

Применение

SSL/TLS является основой для защиты множества интернет-протоколов и сервисов:

Уязвимости и атаки

За время существования протокола было обнаружено несколько серьёзных уязвимостей, которые привели к обновлению стандартов:

Большинство этих атак были устранены в последующих версиях TLS (1.2, 1.3) и путём обновления криптографических библиотек.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →