Pull to refresh
130.55

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

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

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

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

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

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

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

  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 взаимодействует с разными типами файрволов и других сетевых устройств. Если вы включили шифрование и что-то сломалось — просьба сообщить разработчикам через баг-трекер.





Tags:
Hubs:
Total votes 23: ↑23 and ↓0+23
Comments33

Articles

Information

Website
www.globalsign.com
Registered
Founded
1996
Employees
501–1,000 employees
Location
Япония