Когда мы отправляем по сети какие-то данные, их нужно защищать от попадания не в те руки. Поэтому информацию принято передавать в зашифрованном виде. За это отвечают специальные протоколы шифрования.
TLS, или Transport Layer Security, — один из таких протоколов. В современном интернете его можно встретить на каждом шагу. Рассказываем, что это за протокол, чем он отличается от SSL и почему обрел такую популярность.
Какие функции выполняет TLS
Протокол TLS отвечает за безопасность данных, которые передаются по сети. А именно — выполняет три основных задачи:
- аутентификация — проверка, точно ли к сети подключились нужные устройства или пользователи;
- шифрование — защита доступа к данным от посторонних;
- целостность — защита информации от повреждений или подмены.
По сетевой модели OSI протокол TLS находится на четвертом, или транспортном уровне. Именно на этом уровне происходит передача данных по сети. Задача TLS — создать безопасное соединение между сервером и клиентом, то есть браузером пользователя.
Проверить, используется ли TLS на каком-то сайте, очень легко. Посмотрите на адресную строку в браузере. Если адрес ресурса начинается с HTTPS — значит, на нем работает защищенный протокол. И сейчас таких сайтов большинство.
TLS и SSL: отличия
Еще один протокол защиты данных — SSL, или Secure Sockets Layer. Он действует примерно по тому же принципу, что TLS, а в разговорной речи их названия даже используют как синонимы. Поговорим, чем же TLS отличается от SSL.
На самом деле TLS — усовершенствованная версия SSL:
- Оригинальный SSL придумали еще в 90-х годах прошлого века. Со временем он серьезно устарел: обнаружились слабые места в безопасности протокола, которыми пользовались хакеры.
- На замену старому протоколу создали новый — TLS. Процессы в нем несколько изменили — добавили больше проверок и закрыли уязвимости. Но принцип работы остался схожим.
- Сейчас новый протокол TLS используют практически везде. Но по старой памяти его по-прежнему называют SSL, хотя старый протокол в чистом виде уже почти не применяется.
Как работает TLS
Протокол состоит из двух основных компонентов:
- TLS handshake protocol, или протокол рукопожатия — отвечает за установку безопасного соединения между клиентом и сервером;
- TLS record protocol, или протокол записи — отвечает за шифрование и передачу данных между сторонами.
Когда TLS-клиент, то есть браузер, соединяется с сервером сайта, TLS сначала устанавливает соединение и только после этого начинает обмен данными. Вот как выглядит принцип работы TLS пошагово.
Сертификация. Этот шаг можно назвать нулевым. Чтобы использовать на сервере TLS, сайт должен получить TLS-сертификат — электронный документ, подтверждающий подлинность. Его еще называют SSL-сертификатом. Это своего рода «паспорт» сайта.
- Сертификат можно оформить в специальном центре. Для этого владелец сайта должен указать информацию о нем и подождать, пока сайт проверят. В зависимости от уровня проверки сертификат может быть платным или бесплатным.
- Когда сайт получает сертификат, владельцу приходит вся информация о нем. Эту информацию нужно по инструкции скопировать к себе на сервер — обычно это делается через административную панель сайта.
- После получения и установки сертификата сайт сможет использовать протокол шифрования TLS и защищенный протокол HTTPS. А браузер пользователя будет «видеть», что подлинность сайта подтверждена.
Установка TLS-соединения. Когда пользователь заходит на сайт и протокол TCP устанавливает соединение между клиентом и сервером, начинается процесс TLS-рукопожатия. Он позволяет проверить, что и сайт, и браузер — те, за кого себя выдают. Точные действия сторон могут различаться в зависимости от версии TLS, которую использует сайт. Но основных шагов три:
- приветствие и обмен возможностями. Клиент и сервер делятся друг с другом информацией о протоколах, которые используют;
- TLS-аутентификация. Сервер отправляет браузеру свой сертификат, чтобы подтвердить подлинность сайта. А браузер, в свою очередь, проверяет актуальность документа;
- обмен ключами. Сервер и клиент генерируют криптографические ключи, с помощью которых будут шифровать соединение в рамках этой сессии.
После этого стороны подтверждают, что рукопожатие прошло успешно. Выполнением всех этих шагов занимается TLS handshake protocol.
Иногда аутентификация требуется не только от сервера, но и от клиента. Это называется двусторонней аутентификацией. Клиент в таком случае тоже должен предоставить свой цифровой сертификат.
Поддержка безопасности. Кроме TLS-рукопожатия, протокол может применять еще несколько инструментов аутентификации. Они не заменяют, а дополняют рукопожатие:
- False Start, или фальстарт — возобновляет сессию, например если пользователь перешел с сайта в другую вкладку браузера, а потом вернулся. Этот механизм позволяет не повторять рукопожатие и быстрее перейти к обмену сообщениями;
- Chain of Trust, или цепочка доверия — многократно проверяет подлинность сертификата. Если окажется, что сертификат скомпрометирован, протокол прервет соединение в целях безопасности.
Шифрование сообщений. После завершения рукопожатия стороны начинают обмениваться информацией. Например, у пользователя загружается страница его аккаунта. А сайт получает от браузера тексты сообщений, которые пользователь отправляет в чат. Вся эта информация защищена шифрованием TLS.
- Перед отправкой данные разбиваются на несколько маленьких пакетов. Каждый из пакетов сжимается и шифруется отдельно от других, но ключ шифрования у них общий.
- Ключи шифрования генерируются отдельно для каждой сессии. Если сессия закончилась и пользователя, например, разлогинило — то, когда он снова войдет, соединение установится уже с новыми ключами.
- В разных версиях протокола могут использоваться разные методики шифрования. Обычно чем моложе версия, тем более современные методы в ней используются и тем сложнее взломать такое шифрование.
- Кроме шифрования, пакеты данных подписывают цифровой подписью, чтобы доказать их подлинность.
Поговорим подробнее о том, как работает шифрование в протоколе TLS.
Шифрование в протоколе TLS
И во время TLS-рукопожатия, и при обмене данными протокол шифрует всю информацию, которой обмениваются стороны. Но алгоритмы для этого используются разные.
Асимметричное шифрование. Так называют способ шифрования, при котором ключи для зашифровки и расшифровки сообщения разные:
- для зашифровки используется публичный ключ — его можно разглашать, ведь с его помощью не получится расшифровать информацию;
- для расшифровки применяется приватный ключ — он не разглашается.
Асимметричное шифрование считается более надежным, но работает медленнее симметричного. Поэтому TLS использует его только при рукопожатии — стороны генерируют секретный ключ в рамках сессии.
Также асимметричное шифрование используется при выдаче и установке TLS-сертификата. Вместе с сертификатом владелец сайта получает пару из публичного и приватного ключа. Приватный ключ нужно сохранить на сервере — он используется при проверке подлинности сертификата.
Примеры асимметричных алгоритмов шифрования в TLS:
- RSA — алгоритм обмена ключами, который использовался до версии 1.3, но сейчас считается небезопасным;
- Diffie-Hellman — более современный и безопасный способ обмена ключами;
- DSA — еще один устаревший алгоритм из старых версий TLS, отвечает за проверку цифровой подписи;
- ECDSA — более новый алгоритм проверки цифровой подписи.
Симметричное шифрование. В этом случае ключ для зашифровки и расшифровки один. Перед началом передачи данных стороны должны обменяться этим ключом, поэтому такие алгоритмы считаются чуть более рискованными: ключ могут перехватить. Зато они работают быстро и эффективно, поэтому TLS использует их во время передачи сообщений в рамках сессии.
Примеры симметричных алгоритмов шифрования в TLS:
- AES — использует ключи длиной 128, 192 или 256 бит. Более длинные ключи лучше защищают, но уменьшают скорость обмена данными;
- ChaCha20-Poly1305 — состоит из двух компонентов. Первый генерирует сами ключи, второй создает коды для аутентификации сообщений;
- Triple DES — последовательно шифрует данные тремя разными ключами. Использовался в версиях TLS до 1.2, но в версии 1.3 его поддержку прекратили.
Хеширование. Это не совсем шифрование — скорее дополнительный инструмент, с помощью которого протокол проверяет целостность данных. Во время хеширования массив информации преобразуется в строку заранее известной длины — хеш, или хеш-сумму. Если исходные данные изменятся хотя бы на один символ, хеш-сумма поменяется целиком. И это свойство используют для проверки:
- когда сервер или клиент отправляет данные, он также вычисляет и пересылает их хеш;
- вторая сторона получает данные и снова вычисляет их хеш;
- затем получатель сравнивает хеш, который ему передали, и хеш, который он вычислил самостоятельно.
Если полученные хеш-суммы совпадают — значит, данные не повреждены. А вот если хеши различаются, значит, информация изменилась. Кто-то мог перехватить ее и поменять или она могла просто повредиться при передаче.
Примеры алгоритмов хеширования в TLS: SHA-256, SHA-512 и SHA-384. Они похожи и различаются только длиной хеша в битах — именно ее означают цифры в названии.
Версии TLS и чем они различаются
Существует четыре версии протокола:
- TLS 1.0 и TLS 1.1 считаются устаревшими — их поддержку уже отключили многие браузеры и сетевые службы. В этих версиях нашли несколько критических уязвимостей. К тому же в них используются алгоритмы, которые по сегодняшним меркам легко взломать. Так что использовать их не рекомендуется.
- TLS 1.2 вышла около десяти лет назад и используется до сих пор. Это не самая новая версия, но ею все еще пользуются многие сайты. Некоторые применяют ее, потому что она проще и привычнее, некоторые — из-за функций, которых нет в версии 1.3.
- TLS 1.3 появилась в 2018-м и считается самой современной версией. В ней отказались от устаревших алгоритмов, добавили механизм возобновления сессии и оптимизировали рукопожатие. Впрочем, на эту версию перешли еще не все.
Скорее всего, вы вряд ли встретите современный сайт, который будет работать на TLS 1.0 или 1.1. Большинство ресурсов пользуется как минимум версией 1.2. А если будете создавать собственный ресурс — можете сами выбрать, какую версию использовать: 1.2 или 1.3.
Преимущества и недостатки TLS
Протокол защищает информацию куда надежнее устаревшего классического SSL. А ряд его преимуществ делает TLS еще и довольно удобным, что и стало причиной его популярности:
- данные защищены сквозным шифрованием — шифруются на одной стороне и расшифровываются, только когда достигнут другой. В течение всего времени передачи они зашифрованы;
- для защиты не нужна отдельная аппаратура или ПО — все нужные действия могут выполнить сами клиент и сервер;
- в протоколе есть возможность вести журналы событий, и это облегчает отладку;
- протокол поддерживает преобразование сетевых адресов — можно более гибко настраивать инфраструктуру сети.
Впрочем, есть у протокола и минусы. Как и любое средство защиты информации, TLS не может быть безопасным на 100% — об этом нужно помнить и не забывать об осторожности при веб-серфинге. Даже у TLS 1.3 уже есть известные уязвимости. Кроме того, TLS может незначительно замедлять работу сайта, но пользователю это незаметно.
И все-таки преимуществ у TLS больше, не зря его использует почти весь интернет. Даже пока вы читаете эту статью, информация передается в ваш браузер с помощью защищенного соединения.
Краткие выводы
- TLS — это протокол шифрования данных и аутентификации. Он защищает информацию, которой клиент обменивается с сервером. Например, браузер с сайтом.
- Протокол используют на большинстве современных сайтов — везде, где применяется соединение по HTTPS. Чтобы включить его на своем ресурсе, владелец сайта должен выпустить TLS-сертификат в специальном центре.
- Когда клиент обращается к серверу, TLS сначала идентифицирует обе стороны и подтверждает, что они те, кем представляются. Затем шифрует информацию, которой обмениваются стороны.
- Актуальные версии TLS — 1.2 и 1.3. Более ранние версии считаются уязвимыми и устаревшими.