SSL vs TLS: в чем разница и история протоколов

Повышению доверия в интернете способствовало появление в 1995 году протокола SSL (Secure Socket Layer) от Netscape для защищённого обмена информацией. Его первая версия, SSL 1.0, осталась на компьютерах Netscape и никогда не была публично выпущена. SSL 2.0 просуществовал менее года, после чего был взломан и заброшен. Netscape разработали SSL 3.0, но параллельно компания Microsoft создала свою версию для Internet Explorer.

К 1999 году браузерные войны достигли апогея, и ситуация начала напоминать проприетарный кошмар. Тогда протокол решили сделать открытым и передать управление над ним IETF (Internet Engineering Task Force), переименовав его.

Возникновение TLS

Так появился TLS (Transport Layer Security), часто путаемый с SSL. Версии TLS 1.0 и 1.1 признаны устаревшими, сейчас используют только 1.2 и 1.3.

TLS обеспечивает три вещи при обмене данными:

  • Конфиденциальность: никто не сможет прочитать перехваченные данные. Например, перехваченный рецепт крабсбургера будет выглядеть как набор нечитаемых символов.
  • Целостность: никто не сможет изменить данные. Например, количество съеденных хинкалей останется неизменным.
  • Аутентификация: сайт, с которым вы общаетесь, действительно тот, за кого себя выдаёт. Это обеспечивается сертификатом и центром сертификации. Любой надёжный сайт должен иметь сертификат, гарантирующий безопасность данных.

Для обеспечения этих условий в TLS используются механизмы шифрования: симметричное и ассиметричное.

  • Симметричное шифрование: для шифрования и расшифровки используется один ключ. Это как сундучок на замке: ключ нужен как для закрытия, так и для открытия. Проблема в сложности безопасного обмена ключами.
  • Ассиметричное шифрование: используются два ключа – публичный и приватный. Публичный ключ можно распространять свободно, а приватный нужно хранить в секрете. Данные шифруются публичным ключом получателя, а расшифровываются его приватным ключом.

Процесс шифрования в TLS

Рассмотрим процесс обмена данными между клиентом (браузером) и сервером (сайтом):

  1. Client Hello: Браузер отправляет запрос на установление безопасного соединения, указывая поддерживаемые версии TLS и алгоритмы шифрования.
  2. Server Hello: Сайт отвечает, выбирая версию TLS и алгоритм, отправляет свой сертификат и публичный ключ.
  3. Client Key Exchange: Браузер проверяет сертификат и генерирует общий секретный ключ (pre-master key), шифруя его публичным ключом сайта.
  4. Обмен ключами: Сайт расшифровывает pre-master key своим приватным ключом и генерирует сеансовый ключ (shared secret), которым будет шифроваться дальнейшее общение.
  5. Change Cipher Spec & Finished: Браузер шифрует тестовое сообщение сеансовым ключом, и сайт отвечает, подтверждая работу шифрования.

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

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

Сертификаты, которыми хвастаются сайты, выдаются центрами сертификации (Certificate Authority). Эти организации:

  • Выпускают сертификаты.
  • Подтверждают личность владельца сертификата.
  • Подтверждают валидность сертификата.

Важна цепочка доверия. Сертификаты могут выпускать многие, но замочек в адресной строке вы увидите только если сертификат связан с доверенным центром сертификации или корневым центром (Root Certificate Authority). Браузер проверяет цепочку доверия, начиная с сертификата сайта и заканчивая корневым центром.

Что будем искать? Например,программа