Что такое SSL-сертификат и как он защищает данные

Что такое SSL-сертификат и как он защищает данные

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

Как раз поэтому еще в середине 90-х появилась технология, которая шифрует трафик между браузером и сервером. Мне давно хотелось разобраться с этим по-человечески: что такое SSL, при чем тут знакомый всем «замочек» в адресной строке и почему без него современный сайт практически не имеет шансов на доверие — ни со стороны живых людей, ни со стороны поисковиков.

В этой статье:

Что прячется за тремя буквами SSL

Если совсем просто,

SSL (Secure Sockets Layer) — это криптографический протокол, который отвечает за шифрование, целостность и аутентификацию данных при их путешествии по сети. Место его обитания в модели OSI — где-то между транспортным и прикладным уровнями: он забирает информацию у приложения (того же браузера), упаковывает ее в зашифрованный вид и отправляет дальше по маршруту.

Сам протокол придумали в компании Netscape еще в 1994 году. Последней версией стала SSL 3.0 — она вышла в 1996-м, после чего эстафету подхватил уже более надежный наследник. И все же аббревиатура прижилась настолько крепко, что я по привычке называю так любую похожую технологию шифрования, хотя технически речь давно идет уже не о ней.

Кстати, применяют его не только для сайтов. С помощью такого шифрования защищают почтовые соединения, IP-телефонию, VPN-туннели — словом, любой обмен данными, где для меня важна конфиденциальность.

SSL и TLS: в чем разница и почему их часто путают

Чтобы понять, что такое SSL TLS и почему два названия постоянно ходят парой, я обычно смотрю на хронологию. В 1999 году на базе SSL 3.0 вышел новый протокол — TLS (Transport Layer Security). По сути, это та же самая технология, только переработанная: с более стойкими алгоритмами, расширенным набором кодов предупреждений и закрытыми дырами предшественника.

Сегодня все «живые» соединения, к которым я подключаюсь, работают именно через TLS — актуальная версия 1.3 появилась еще в 2018 году. А вот SSL официально считается устаревшим и небезопасным: в нем обнаружили целый букет громких уязвимостей вроде POODLE, BEAST и Heartbleed, через которые можно было атаковать вроде бы зашифрованный трафик.

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

Ключевые отличия двух протоколов я для удобства собрал в табличку:

Параметр SSL TLS
Год выпуска 1995–1996 1999–2018
Актуальность устарел, не используется актуальный стандарт
Алгоритмы шифрования DES, RC4 AES, ChaCha20
Безопасность есть критические уязвимости устранены и продолжают улучшаться
Скорость handshake медленнее быстрее, особенно в TLS 1.3

Зачем сайту SSL-сертификат

С идеей разобрались — теперь о том, что такое SSL сертификат на практике и какие задачи он реально закрывает.

Сертификат — это электронный документ, привязанный к конкретному домену. Он подтверждает, что сайт и правда принадлежит заявленному владельцу или организации. Без него браузер просто не сможет установить защищенное соединение и будет встречать меня грозным предупреждением «Подключение не защищено».

Основные задачи сертификата я для себя сформулировал так:

  • Шифрование трафика. Логины, пароли, номера карт, переписка — все это идет по сети в зашифрованном виде и недоступно посторонним.
  • Аутентификация сайта. Я точно знаю, что попал на настоящий ресурс, а не на фишинговую подделку.
  • Целостность данных. Любая попытка подменить пакет «на лету» будет замечена, и соединение тут же оборвется.
  • Работа по HTTPS. Без сертификата перейти с HTTP на защищенный HTTPS попросту не получится.

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

Рукопожатие: как клиент и сервер договариваются о шифровании

Самый интересный этап в работе протокола — так называемое «рукопожатие» (handshake). Это короткая, но насыщенная переписка между браузером и сервером, во время которой они договариваются, как именно будут шифровать дальнейший разговор.

Если упростить, выглядит это так:

  1. Запрос на соединение. Браузер обращается к серверу и перечисляет, какие версии протокола и алгоритмы шифрования он поддерживает.
  2. Отправка сертификата. Сервер в ответ отправляет свой сертификат — с публичным ключом и подписью центра сертификации.
  3. Проверка подлинности. Браузер придирчиво сверяет сертификат: не истек ли срок действия, выдал ли его доверенный центр, совпадает ли домен.
  4. Обмен сеансовым ключом. Браузер генерирует симметричный ключ, шифрует его публичным ключом сервера и отправляет обратно.
  5. Расшифровка ключа сервером. Сервер своим приватным ключом достает сеансовый ключ — теперь он есть только у двух участников разговора.
  6. Шифрованный обмен данными. Все дальнейшее общение идет уже под этим общим ключом.

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

Два типа шифрования внутри одного протокола

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

Асимметричное шифрование использует пару ключей: публичный и приватный. Публичный ключ доступен кому угодно — им шифруют сообщение. А расшифровать его можно только парным приватным, который хранится на сервере и никуда не передается. Самый известный алгоритм этого семейства — RSA. На взлом 2048-битного ключа перебором уйдут миллионы лет даже на современных вычислительных мощностях.

Симметричное шифрование устроено проще: один ключ и для зашифровки, и для расшифровки. Минус очевиден — этот ключ нужно как-то безопасно передать второй стороне. Плюс не менее весомый: симметричные алгоритмы вроде AES работают на порядок быстрее асимметричных.

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

Параллельно протокол использует хеш-функции — они превращают любой объем данных в короткую строку фиксированной длины. По этому «отпечатку» я могу мгновенно убедиться, что пакет в пути никто не подменил.

Протокол и сертификат — не одно и то же

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

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

Виды сертификатов: по проверке и по охвату доменов

Сертификаты различаются по двум основным критериям — насколько строго центр сертификации проверяет владельца и сколько доменов один документ может прикрыть.

По уровню проверки я выделяю три типа:

  1. DV (Domain Validation) — самый простой вариант: подтверждается только факт владения доменом. Выдается буквально за несколько минут и подходит для блогов, лендингов и тестовых сред.
  2. OV (Organization Validation) — здесь центр сертификации дополнительно убеждается, что за сайтом стоит реально зарегистрированная организация.
  3. EV (Extended Validation) — высшая ступень доверия с полной проверкой юридических документов. Такой вариант традиционно выбирают банки и крупные интернет-магазины.

По охвату доменов картина такая:

  • Single — защищает один конкретный домен и больше ничего.
  • Wildcard — закрывает основной домен и все его поддомены любого уровня.
  • Multi-Domain (SAN) — позволяет одним сертификатом покрыть до 100 разных доменов.
  • UCC — отдельный подвид Multi-Domain, заточенный под почтовые сервисы Microsoft Exchange.

Чем выше уровень проверки и шире покрытие, тем дороже выходит документ — но и доверия к сайту он вызывает у меня заметно больше.

Платные сертификаты против бесплатных

На рынке спокойно сосуществуют как коммерческие сертификаты, так и бесплатные. Самая известная инициатива второго типа — Let’s Encrypt, некоммерческий центр сертификации, который выдает сертификаты автоматически и без копейки оплаты.

Бесплатные сертификаты обычно ограничиваются уровнем DV, действуют 90 дней и требуют автоматического продления. При этом они полностью обеспечивают шифрование трафика и тот самый «замочек» в адресной строке — мне этого вполне хватает для блога, портфолио или небольшого корпоративного сайта.

Платные сертификаты дают заметно больше: расширенные уровни проверки (OV и EV), финансовую гарантию на случай компрометации, поддержку специалистов центра и срок действия до года. Будь я на месте владельца интернет-магазина, финансового сервиса или любого проекта, где пользователи оставляют платежные данные, я бы выбрал именно платный вариант — повышенный кредит доверия здесь напрямую конвертируется в конверсию.

Влияние SSL на позиции в поисковой выдаче

Помимо очевидной пользы для безопасности, защищенное соединение давно превратилось в самостоятельный фактор поискового продвижения. Еще в 2014 году Google официально объявил HTTPS сигналом ранжирования: при прочих равных сайт с сертификатом будет показан в выдаче выше, чем сайт без него. Яндекс придерживается похожей логики, хотя формулирует ее мягче.

Помимо прямого влияния на ранжирование я вижу и косвенное. Современные браузеры открыто помечают незащищенные сайты предупреждениями, и процент отказов на таких страницах закономерно растет — а поведенческие факторы поисковики тоже учитывают. К тому же без HTTPS не получится использовать целый ряд современных веб-технологий: HTTP/2, сервис-воркеры, push-уведомления. В сумме все это превращает наличие сертификата уже не в опцию, а в гигиенический минимум для любого серьезного проекта.

Что в итоге

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

Установить сертификат сейчас можно буквально за несколько минут, а бесплатные варианты вроде Let’s Encrypt доступны любому владельцу домена. Учитывая, как мало это стоит и как много дает, аргументов остаться на незащищенном HTTP я для себя так и не нашел.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Скопировано