Хабрахабр

Стандарт Encrypted SNI реализован в Firefox Nightly

Firefox стал первым браузером, который реализовал шифрование TLS Server Name Indication (SNI). Поддержку ESNI внедрили в последнюю версию Firefox Nightly, на которой обкатывают все нововведения перед их добавлением в основную ветку.

Если вкратце, то благодаря ESNI шифруется информация о том, к какому домену вы отправляете запрос. О важности этого стандарта месяц назад рассказывал CDN-провайдер Cloudflare. Теперь он видит только IP-адрес. В стандартном HTTPS заголовки с именами доменов не шифруются и доступны для просмотра провайдеру или другому «человеку посередине». Поскольку в современном интернете на одном IP-адресе могут располагаться сотни доменов, то ESNI эффективно скрывает информацию, на какой домен заходит пользователь.

Цензорам придётся блокировать IP-адреса, а это сомнительная практика. Таким образом, блокировки по именам перестают работать, а цензура в интернете сильно усложнится. Дело в том, что перед началом шифрования серверу необходимо знать, к какому домену обращается клиент, чтобы предъявить нужный сертификат. Такая блокировка может затронуть непричастные сайты, а блокируемый сервис легко (автоматически) переключается на другой IP-адрес.
Почему в обычном TLS SNI «светятся» имена хостов? По этой причине имя хоста передаётся открытым текстом (ниже иллюстрации из блога Cloudflare).

В зашифрованном SNI (ESNI) эта проблема решена так: клиент берет публичный ключ сервера из DNS и шифрует им все данные до установления TLS сессии.


Поддержка браузером Firefox Nightly означает, что ESNI будет работать с каждым сайтом/провайдером, который его поддерживает.

Разработчики из Mozilla объясняют, что существует четыре основных способа утечки истории посещённых страниц:

  1. сообщение сертификата TLS,
  2. разрешение имен DNS,
  3. IP-адрес сервера,
  4. TLS Server Name Indication.

К настоящему времени они добились хорошего прогресса в закрытии первых двух каналов утечки: новый стандарт TLS 1.3 шифрует сертификат сервера по умолчанию (канал 1), а в течение последних нескольких месяцев Mozilla изучает использование DNS по HTTPS для защиты трафика DNS (канал 2). Результаты тестирования неплохие, и в ближайшие месяцы функцию выкатят для всех пользователей Firefox. IP-адрес остаётся проблемой, но во многих случаях несколько сайтов совместно используют тот же IP-адрес, так что главным каналом утечки является SNI.

В этом случае поле SNI сообщает серверу, к какому хосту вы пытаетесь подключиться, позволяя ему выбрать правильный сертификат. В своё время технологию Server Name Indication (SNI) начали использовать именно потому, что на одном IP-адресе располагается несколько хостов. То есть эту функцию вводили ради безопасности, а теперь приходится с ней бороться как с каналом утечки данных. Другими словами, SNI помогает обеспечить работу крупномасштабного TLS-хостинга.

Но каждый дизайн, какой они пробовали, включал какой-то компромисс производительности. О проблеме SNI было известно давно, пишут разработчики Mozilla, и было понятно, что это поле нужно зашифровать. В конце концов было решено выпустить стандарт TLS 1. Был ещё один важный недостаток: сам факт, что конкретный сайт переходит на ESNI, являлся сигналом, что ему «есть, что скрывать», то есть у цензоров появлялась возможность банально фильтровать трафик по ESNI. 3 без ESNI.

Если они согласятся перевести на ESNI сразу всех клиентов, то внезапно ESNI перестаёт быть полезным сигналом для злоумышленника. Только в начале 2018 года разработчики поняли, что существует довольно хороший вариант: большие сети распространения контента (CDN) хостят много сайтов на одних и тех же физических серверах. 3, путём массовой настройки множества сайтов на имеющемся наборе серверов. Таким образом появилась возможность реализовать ESNI в TLS 1.

Чтобы активировать её в Firefox Nightly, следует совершить следующие действия: ESNI — совершенно новая технология, и Firefox является первым браузером, который её реализовал.

  1. Убедиться, что у вас есть включен DNS по HTTPS (DoH):
    • about:config
    • установить network.trr.mode в значение 2

    • выставить network.trr.uri на сервер DoH (например, https://mozilla.cloudflare-dns.com/dns-query).

    • about:config
    • установить network.security.esni.enabled в значение true

Это должно автоматически включить ESNI для любого сайта, который его поддерживает. В данный момент из крупных хостеров и CDN это только Cloudflare, но разработчики Firefox надеются, что вскоре подключатся и другие провайдеры. Проверить работу шифрования можно по этой ссылке.

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

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

Кнопка «Наверх»
Закрыть