Transport Layer Security (TLS) - это протокол безопасности, обеспечивающий конфиденциальность и целостность данных при интернет-коммуникациях. Внедрение TLS является стандартной практикой для создания безопасных веб-приложений.
Что такое безопасность транспортного уровня (TLS)?
Transport Layer Security, или TLS, - это широко распространенный протокол безопасности, предназначенный для обеспечения конфиденциальности и защиты данных при обмене данными через Интернет. Основное применение TLS - шифрование связи между веб-приложениями и серверами, например, веб-браузерами, загружающими веб-сайт. TLS также может использоваться для шифрования других коммуникаций, таких как электронная почта, обмен сообщениями и передача голоса по IP (VoIP). В этой статье мы рассмотрим роль TLS в безопасности веб-приложений.
Протокол TLS был предложен международной организацией по стандартизации Internet Engineering Task Force (IETF), и первая версия протокола была опубликована в 1999 году. Последней версией является TLS 1.3, которая была опубликована в 2018 году.
В чем разница между TLS и SSL?
TLS развился из предыдущего протокола шифрования под названием Secure Sockets Layer (SSL), который был разработан компанией Netscape. На самом деле TLS версии 1.0 начал разрабатываться как SSL версии 3.1, но перед публикацией название протокола было изменено, чтобы указать, что он больше не связан с Netscape. Из-за этой истории термины TLS и SSL иногда используются как взаимозаменяемые.
В чем разница между TLS и HTTPS?
HTTPS - это реализация шифрования TLS поверх протокола HTTP, который используется всеми веб-сайтами, а также некоторыми другими веб-службами. Таким образом, любой сайт, использующий HTTPS, применяет шифрование TLS.
Что делает протокол TLS?
Протокол TLS включает в себя три основных компонента: Шифрование, аутентификация и целостность.
- Шифрование: скрывает передаваемые данные от третьих лиц.
- Аутентификация: гарантирует, что стороны, обменивающиеся информацией, являются теми, за кого себя выдают.
- Целостность: подтверждает, что данные не были подделаны или фальсифицированы.
Что такое сертификат TLS?
Чтобы веб-сайт или приложение использовали TLS, на его исходном сервере должен быть установлен сертификат TLS (сертификат также известен как «сертификат SSL» из-за путаницы в названиях, описанной выше). Сертификат TLS выдается центром сертификации лицу или компании, владеющей доменом. Сертификат содержит важную информацию о владельце домена, а также открытый ключ сервера, что важно для проверки подлинности сервера.
Как работает TLS?
Соединение TLS инициируется с помощью последовательности, известной как рукопожатие TLS. Когда пользователь переходит на веб-сайт, использующий TLS, между устройством пользователя (также известным как клиентское устройство) и веб-сервером начинается рукопожатие TLS.
Во время рукопожатия TLS устройство пользователя и веб-сервер:
- указывают, какую версию TLS (TLS 1.0, 1.2, 1.3 и т. д.) они будут использовать.
- решить, какие наборы шифров (см. ниже) они будут использовать
- Проверка подлинности сервера с помощью его TLS-сертификата
- Генерировать сеансовые ключи для шифрования сообщений между ними после завершения рукопожатия.
В ходе рукопожатия TLS устанавливается набор шифров для каждого сеанса связи. Набор шифров - это набор алгоритмов, который определяет, какие общие ключи шифрования, или сеансовые ключи, будут использоваться для данного сеанса. TLS может устанавливать соответствующие сеансовые ключи по незашифрованному каналу благодаря технологии, известной как криптография с открытым ключом.
В ходе рукопожатия также выполняется аутентификация, которая обычно заключается в том, что сервер подтверждает свою личность клиенту. Для этого используются открытые ключи. Открытые ключи - это ключи шифрования, использующие одностороннее шифрование, то есть любой человек, имеющий открытый ключ, может расшифровать данные, зашифрованные закрытым ключом сервера, чтобы убедиться в их подлинности, но только оригинальный отправитель может зашифровать данные с помощью закрытого ключа. Открытый ключ сервера является частью его сертификата TLS.
После того как данные зашифрованы и аутентифицированы, они подписываются кодом аутентификации сообщения (MAC). Получатель может проверить MAC, чтобы убедиться в целостности данных. Это похоже на фольгу для защиты от вскрытия, которая находится на бутылочке с аспирином; потребитель знает, что никто не подделывал его лекарство, потому что фольга остается целой, когда он его покупает.
Как TLS влияет на производительность веб-приложений?
Последние версии TLS практически не влияют на производительность веб-приложений.
Из-за сложного процесса, связанного с установкой TLS-соединения, приходится тратить некоторое время на загрузку и вычислительные мощности. Клиент и сервер должны несколько раз обменяться данными, прежде чем будут переданы какие-либо данные, и это съедает драгоценные миллисекунды времени загрузки веб-приложений, а также некоторое количество памяти как у клиента, так и у сервера.
Однако существуют технологии, которые помогают уменьшить потенциальную задержку, создаваемую рукопожатием TLS. Одна из них - TLS False Start, которая позволяет серверу и клиенту начать передачу данных до завершения рукопожатия TLS. Еще одна технология, ускоряющая работу TLS, - TLS Session Resumption, которая позволяет клиентам и серверам, ранее общавшимся между собой, использовать сокращенное рукопожатие.
Эти усовершенствования позволили сделать TLS очень быстрым протоколом, который не должен заметно повлиять на время загрузки. Что касается вычислительных затрат, связанных с TLS, то по сегодняшним меркам они в основном незначительны.
TLS 1.3, выпущенный в 2018 году, сделал TLS еще быстрее. Рукопожатия TLS в TLS 1.3 требуют только одного раунда (или обмена данными «туда-обратно») вместо двух, что сокращает процесс на несколько миллисекунд. Если пользователь уже подключался к веб-сайту ранее, рукопожатие TLS не требует никаких раундов, что еще больше ускоряет процесс.