Урок 2 из 4 · 9 мин
Цифровые подписи, сертификаты и TLS
Как браузер узнаёт, что действительно общается с вашим банком, почему значок замка означает нечто конкретное — и чего он не означает.
Предыдущий урок оставил один вопрос открытым: асимметричное шифрование позволяет отправить секрет тому, чей открытый ключ у вас есть, — но откуда вам знать, что этот открытый ключ действительно принадлежит именно ему, а не злоумышленнику посередине? На этот вопрос отвечают цифровые подписи и сертификаты, и вместе они делают возможным TLS — протокол, стоящий за каждым адресом https://.
Цифровые подписи: доказательство происхождения, а не секретности
Цифровая подпись использует асимметричное шифрование в обратную сторону. Вместо того чтобы шифровать сообщение открытым ключом получателя, чтобы прочитать его мог только он, отправитель подписывает сообщение своим собственным закрытым ключом, а проверить подпись может кто угодно с помощью открытого ключа отправителя. Если проверка проходит успешно, верны два утверждения: сообщение исходит от того, кто владеет этим закрытым ключом, и оно не было изменено впоследствии — то же свойство устойчивости к коллизиям из обсуждения хеширования в предыдущем уроке делает вмешательство обнаружимым. Подпись доказывает подлинность и целостность; сама по себе она не сохраняет сообщение в секрете.
Сертификаты: подпись, ручающаяся за открытый ключ
Цифровой сертификат решает проблему «чей это на самом деле открытый ключ». Как поясняет Learning Center компании Cloudflare, сертификат SSL/TLS — это «файл данных, размещённый на исходном сервере веб-сайта», содержащий доменное имя, открытый ключ, срок действия и — что критично — «цифровую подпись удостоверяющего центра». Удостоверяющий центр (CA) — доверенная третья сторона, которая проверяет, что сайт контролирует домен, для которого запрашивается сертификат, а затем подписывает этот сертификат собственным закрытым ключом. Ваш браузер поставляется со встроенным списком удостоверяющих центров, которым он доверяет, поэтому, получив сертификат, подписанный одним из них, он может доверять содержащемуся в нём открытому ключу, ни разу не встретившись с оператором сайта. Самоподписанный сертификат — тот, который сайт подписывает сам, а не получает от CA, — не имеет такого внешнего поручительства, поэтому браузеры по умолчанию считают его ненадёжным.
TLS: как оба инструмента работают вместе
RFC 8446, спецификация TLS 1.3, описывает рукопожатие как последовательность этапов: обмен ключами, на котором обе стороны устанавливают общий секретный материал; затем аутентификация, на которой, по словам самого RFC, «серверная сторона канала аутентифицируется всегда; клиентская сторона аутентифицируется опционально» — обычно личность подтверждает только сайт, а не посетитель. Сервер доказывает, кем он является, с помощью своего сертификата и подписи, которую мог создать только он, обладая закрытым ключом. Как только обе стороны доверяют соединению, они получают быстрые симметричные ключи (обычно AES из предыдущего урока) для самих данных. RFC 8446 прямо заявляет, что это даёт: конфиденциальность и целостность обмениваемых данных, а также аутентификацию сервера. Он так же прямо указывает и на ограничение: «TLS не скрывает длину передаваемых данных», а такие метаданные, как то, к какому серверу вы подключились и когда, остаются видимыми для любого, кто способен наблюдать за соединением.
Что означает и чего не означает значок замка
| Замок / https:// означает | Это не означает |
|---|---|
| Соединение с этим сервером зашифровано, а его целостность защищена | Что сайт заслуживает доверия, честен или безопасен в использовании |
| Вы разговариваете именно с тем, кто контролирует это доменное имя | Что это доменное имя действительно то, за что вы его принимаете, — убедительный домен-двойник тоже получает действительный сертификат |
| Никто на пути прохождения трафика не может прочитать или незаметно изменить данные | Что никто не может увидеть, что вы посетили этот сайт, когда и как часто |
Фишинговый сайт на домене-двойнике может иметь совершенно действительный сертификат: TLS подтверждает подлинность домена, а не намерения того, кто его зарегистрировал. Именно поэтому более ранний урок о том, как разворачиваются атаки, рассматривает поддельную страницу входа, замок и всё прочее, как реальную угрозу, а не как противоречие.
Главное
- Цифровая подпись доказывает, кто отправил сообщение и что оно не было изменено, — сама по себе она не сохраняет сообщение в секрете.
- Сертификат — это подписанное заявление удостоверяющего центра, которому уже доверяет браузер, о том, что данный открытый ключ принадлежит данному домену.
- Рукопожатие TLS (RFC 8446) всегда аутентифицирует сервер; посетитель тем же способом аутентифицируется редко.
- TLS защищает конфиденциальность и целостность при передаче и подтверждает, что вы попали именно на нужный домен, — но не скрывает сам факт соединения и не гарантирует, что сайт за этим соединением заслуживает доверия.
- Фишинговый сайт на домене-двойнике может показывать совершенно действительный замок; сертификат подтверждает домен, а не намерения его оператора.
Проверьте себя
1. Что доказывает действительная цифровая подпись под сообщением?
- Что сообщение секретно для всех, кроме получателя
- Что сообщение исходит от владельца конкретного закрытого ключа и не было изменено — Верно.
- Что сообщение было отправлено по TLS
- Что в сообщении нет ничего вредного
Подписи подтверждают подлинность и целостность с помощью пары ключей подписывающего; они не шифруют сообщение ради секретности.
2. Какую роль играет удостоверяющий центр (CA) в TLS?
- Он хранит ваши пароли от вашего имени
- Он ручается собственной подписью, что открытый ключ принадлежит данному домену — Верно.
- Он шифрует весь трафик в интернете
- Он автоматически блокирует фишинговые сайты
CA проверяет контроль над доменом и подписывает сертификат, позволяя браузерам, уже доверяющим этому CA, доверять открытому ключу в сертификате, не связываясь напрямую с оператором сайта.
3. Согласно RFC 8446, какая сторона типичного TLS-соединения аутентифицируется всегда?
- Только клиент (ваш браузер)
- Сервер — Верно.
- По умолчанию ни одна из сторон
- Всегда обе стороны, без исключений
RFC 8446 указывает, что серверная сторона аутентифицируется всегда, тогда как аутентификация клиента опциональна и гораздо реже встречается при обычном просмотре сайтов.
4. Почему фишинговый сайт всё же может показывать действительный значок замка?
- Значки замка чисто декоративны и ничего не значат
- Сертификат подтверждает доменное имя, а не честность того, кто его зарегистрировал — Верно.
- Браузеры больше не проверяют сертификаты
- Фишинговые сайты вообще не могут использовать HTTPS
Сертификаты TLS подтверждают, что вы общаетесь с настоящим владельцем данного домена; убедительный домен-двойник может получить собственный совершенно действительный сертификат.
Примените на практике в FireAI
Примените этот урок на своём Mac.
- Глубокая проверка без расшифровки чего-либо — Получайте реальные подробности о защищённом соединении, при этом FireAI никогда не читает то, что внутри него.
- Что остаётся на вашем Mac и когда именно FireAI сам выходит в сеть — Прочитайте полный список того, что отправляет FireAI, вместо того чтобы просто верить файрволу на слово.
Источники
- RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3
- Cloudflare Learning Center: What is an SSL certificate?
Примените это на своём Mac
Все функции бесплатно на 17 дней, без банковской карты.