256-бит AES - тот же стандарт, что защищает банковские транзакции

0%

SNI

SNI (Server Name Indication) — поле в первом сообщении TLS, где клиент называет сайт, к которому обращается. Оно нужно из-за простой вещи: на одном IP-адресе живут сотни сайтов, и сервер должен понять, чей сертификат предъявлять, ещё до того как шифрование установлено. Получается порядок, который удивляет многих: соединение по HTTPS начинается с того, что имя сайта отправляется открытым текстом. Само содержимое страницы потом надёжно зашифровано, но факт обращения именно к этому домену виден любому по пути. Это не ошибка, а следствие того, что выбор сертификата не может произойти позже.

Коротко

Практический вывод: HTTPS скрывает, что вы читаете, но не скрывает, куда пришли. Закрывает это ECH (Encrypted Client Hello) — расширение TLS 1.3, которое шифрует и первое сообщение тоже, но работает лишь там, где его поддерживают обе стороны и настроен DNS. Протоколы вроде Reality решают ту же задачу иначе: не прячут SNI, а подставляют настоящее имя стороннего сайта.

Частые вопросы

Зачем понадобилось передавать имя сайта до шифрования?

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

ECH уже можно использовать?

Местами. Расширение требует поддержки и на стороне браузера, и на стороне сервера, а параметры для него публикуются в DNS — значит, нужен ещё и шифрованный DNS, иначе имя утечёт там. Крупные сети доставки контента его включили, но общей картины это пока не изменило.

Рядом по теме