2.2. TLS

TLS (Transport Layer Security) — это просто обновлённая, более безопасная версия SSL. Многие хостинг-провайдеры называют такие сертификаты безопасности SSL, потому что это более используемый термин. Но на самом деле все «SSL-сертификаты», которые вы видите у хостинг-провайдеров, являются сертификатами SSL/TLS, в том числе и бесплатные SSL-сертификаты.

Не существует просто сертификата SSL или просто сертификата TLS, и не нужно беспокоиться о замене сертификата SSL на сертификат TLS.

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

Как появился TLS

Для начала посмотрим историю возникновения TLS и выхода версий.

SSL 2.0 был впервые выпущен в феврале 1995 года: SSL 1.0 никогда не выпускался публично из-за недостатков безопасности. При этом у SSL 2.0 тоже были проблемы с безопасностью, поэтому в 1996 году его заменили на SSL 3.0.

В 1999 году появилась первая версия TLS (1.0) как обновление до SSL 3.0. С тех пор было выпущено ещё три версии TLS, последней из которых является TLS 1.3. Она появилась в августе 2018 года.

Сейчас обе общедоступные версии SSL устарели и имеют уязвимости безопасности (подробнее об этом позже).

Полная история выпусков SSL и TLS:

  • SSL 1.0 — никогда не выпускался публично из-за проблем с безопасностью.
  • SSL 2.0 — выпущен в 1995 году. Не рекомендуется в 2011 году. Известны проблемы с безопасностью.
  • SSL 3.0 — выпущен в 1996 году. Не рекомендуется в 2015 году. Известны проблемы с безопасностью.
  • TLS 1.0 — выпущен в 1999 году как обновление до SSL 3.0. Поддержка прекращена.
  • TLS 1.1 — выпущен в 2006 году. Поддержка прекращена.
  • TLS 1.2 — выпущен в 2008 году.
  • TLS 1.3 — выпущен в 2018 году.

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

Протокол TLS предоставляет три услуги:

  1. Шифрование: сокрытие данных, передаваемых от одного компьютера к другому.
  2. Аутентификация: проверка подлинности сервера и клиента.
  3. Целостность: обнаружение подмены.

Как TLS и SSL работают для защиты данных?

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

«Ваше подключение не защищено»

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

Здесь также появляется HTTPS. HTTPS означает «HTTP через SSL/TLS».

При использовании обычного HTTP эта информация уязвима для атак. Но когда вы используете HTTP через SSL/TLS, вы шифруете и аутентифицируете эти данные во время транспортировки. Это делает их безопасными.

Чтобы «рукопожатие» сработало, обе стороны должны поддерживать один и тот же протокол. Главное преимущество наличия нескольких протоколов — это совместимость. Например, Chrome и Firefox добавили поддержку TLS 1.3 почти сразу после его выпуска в 2018 году. Компаниям Apple и Microsoft потребовалось чуть больше времени, чтобы добавить в свои браузеры поддержку TLS 1.3.

Как видите, даже в 2022 году не все браузеры поддерживают TLS 1.3:

Поддержка TLS 1.3 браузерами

TLS 1.2 поддерживают все браузеры:

Поддержка TLS 1.2 браузерами

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

Если вы хотите проверить, какую версию SSL/TLS использует ваш браузер, можете использовать инструмент How’s My SSL:

Инструмент How's My SSL

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

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

В это же время «SSL сертификаты» поддерживают SSL и TLS протоколы. Поэтому вам не нужно беспокоиться о «замене» сертификата SSL на сертификат TLS. Если вы уже установили «SSL-сертификат», можете быть уверены, что он также поддерживает TLS.

Далее при упоминании SSL или TLS мы будем иметь в виду связку SSL/TLS.

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

SSL/TLS и OSI

Где находится SSL/TLS в модели OSI? Вспомним основные моменты:

  1. TLS — это сокращённое от Transport Layer Security и переводится как «Безопасность транспортного уровня», то есть это транспортный уровень.
  2. HTTPS — это HTTP поверх TLS, опять транспортный уровень.
  3. Поскольку он реализует идентификацию сеанса, целостность, запуск, разрыв и управление, он в значительной степени принадлежит ещё и сеансовому уровню.

Таким образом, на самом деле TLS в основном относится к сеансовому уровню, поскольку обеспечивает безопасность сеанса для транспорта (TCP). Другими способами он предоставляет функции аутентификации, которые явно относятся к прикладному уровню.

Так что SSL/TLS обеспечивает безопасность слоя 5 и немного слоя 7.

Практическое применение

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

Допустим, вы максимально обеспечили безопасность процессов передачи данных, защитили уровень приложения — транспортный. И при этом использовали вредоносный npm-пакет. Здесь уже проделанная безопасность не поможет.

Примеры таких пакетов и их версий можно посмотреть в статьях «В популярных NPM-пакетах coa и rc обнаружен вредоносный код» и «Вредоносное ПО crossenv в реестре npm».


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