«Фейсбук» правда не работает из-за «ключей шифрования»? Кажется — нет

 

Азамат Шамузафаров написал в Виртуальную приемную президента письмо. Он хотел выяснить, почему Youtube и Facebook не открываются без VPN. Мининфоком прислал ответ — оказывается, проблема «в смене криптографического ключа на стороне владельцев сайтов».

Создатель профессионального комьюнити «IT-профсоюз», системный администратор Серж Каракишьян решил разобраться. Он провел небольшой эксперимент и рассказал Hook.report, что происходит.

 

Читая новости, я обнаружил фотографию официального письма Мининфокома. В письме говорилось, что «Фейсбук» и «Ютуб» недоступны из-за «смены криптографического ключа, который служит защитой для системы доменных имен (DNS)». Этот ответ не на шутку удивил меня и коллег. Такая формулировка не просто не ответила на поставленный вопрос, но и оставила целый ряд новых.

 

 

Начало начал

──────────

 

Предположим, вы хотите посмотреть новогодний ролик с котами. Набираете в браузере youtube.com, долго ждете. Ждете еще немного. И еще… Наконец, браузер выдаст не до конца прогруженный контент, пустую страницу или вообще ошибку:

 

Вот что будет, если зайти на Youtube без VPN через браузер Mozilla

 

С VPN сайт откроется без проблем. Мининфоком говорит, что проблема в «криптографическом ключе, защищающем DNS». Я расскажу, что это такое.

У всех серверов в интернете есть свои адреса — их называют IP-адресами. Это как почтовый адрес, только вместо «Узбекистан, г. Ташкент, ул. Низомий, д. 28/5» это числа через точку, вроде 173.194.44.32.

Поскольку на одном сервере может находиться сколько угодно сайтов, да и просто, чтобы проще запоминать, придумали технологию DNS — Domain Name Service (службу доменных имен). DNS связывает имя сайта и его адрес. Набираете youtube.com — вас перенаправляют к 173.194.44.32 или другому адресу (их может быть несколько).

 

IP-адрес Hook Report. Наберите его в браузере, и DNS направит вас на сайт www.hook.report

 

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

Данные с сайта шифруются криптографическими ключами. Ключей два — открытый и закрытый: открытый ключ шифрует данные, закрытый расшифровывает.

Криптографический ключ работает как ЭЦП, который выдают в налоговой. Например, у бухгалтеров есть два ЭЦП, которыми подписывают платежку в банк-клиенте: один ключ директора, второй — главного бухгалтера. Оба ключа закрытые.

С криптографическими ключами все так же. Только закрытый ключ принадлежит сайту, а открытый он высылает вам. Ключи — это односторонняя (необратимая) математическая функция; если в руки хакеру попал шифрованный трафик, расшифровать его обратно без закрытого ключа практически нереально.

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

 

Как выглядело бы шифрование, если бы сайт и ваш компьютер «переписывались» смсками

 

Сайты, на которых используются криптографические ключи, называются защищенными. Браузеры помечают такие сайты зеленым значком, они начинаются на https:// вместо обычного http://.

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

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

 

 

Переходим к письму

──────────

 

Мининфоком говорит, что Facebook и Youtube не открываются из-за смены криптографического ключа. Если обычному человеку ничего не понять, то у специалистов сразу появились вопросы:

 

1. Каким образом смена ключей, защищающих от подмены ответов, влияет на работоспособность конкретных интернет-ресурсов в конкретной стране?

Если бы ключи поменял «Фейсбук», проблемы были бы по всему миру, а не только в Узбекистане.

2. Если проблема из-за смены ключей, то почему работает Google и все его сервисы, кроме Youtube? Разве ключи поменяли только на нем одном?

3. О чем Мининфоком ведет переговоры с представителями вышеупомянутых ресурсов? Чтобы министерству передали закрытые ключи «Фейсбука» и «Ютуба»?

Я очень хочу увидеть лицо сотрудника, который получил такую «скромную» просьбу. Ответ от представителей этих сервисов очевиден — это невозможно.

4. Из письма Мининфокома напрямую следует: где-то между конечным пользователем в Узбекистане и интернетом установлен сервер, который перехватывает все запросы на трансляцию DNS-имен и заменяет их на фальшивые, чему мешает новый криптографический ключ. Мы что-то неправильно поняли?

 

Последнее утверждение насчет «перехватчика» можно проверить на практике.

 

 

Эксперимент и проверка

──────────

 

Следующие действия вряд ли опишешь простым и понятным языком. Но их может повторить любой продвинутый пользователь, если у него есть VPN-сервер за пределами Узбекистана, а также минимальные знания о протоколе DNS и управлении маршрутизацией.

Сначала нам понадобился DNS-сервер, к которому можно обратиться, минуя все возможности перехвата и подмены ответов. Выбираем сервер от Google с IP-адресом 8.8.8.8.

 

 

Дальше устанавливаем защищенное туннельное соединение с тестовым сервером в Европе и пробрасываем через этот туннель маршрут до публичных DNS-серверов (8.8.8.8, 8.8.4.4).

 

 

Весь остальной трафик маршрутизировался как обычно, через шлюз провайдера. Таким образом, пытаясь открыть адрес facebook.com, мы обращаемся напрямую к тем серверам, у которых с ключами точно все в порядке.

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

Делаем трассировку до youtube.com, чтобы убедиться в том, что маршрут до этого сервера пойдет через провайдер.

 

 

Судя по распечатке промежуточных узлов маршрута, все стоит так, как нужно для эксперимента.

А теперь пробуем открыть «Фейсбук». Через минуту стало ясно, что использование контрольного DNS-сервера ничего не изменило, ресурс все также не открывается.

 

 

Проделав этот эксперимент, можно убедиться, что DNS тут вообще не причем. Радует то, что, видимо, никакого «перехватчика» DNS-запросов нет.

Теперь кидаем всю остальную маршрутизацию через туннель, минуя все блокировки.

 

 

Все открывается и прекрасно работает!

 

Что в итоге? Эксперимент показал: проблема с «Фейсбуком» лежит не на уровне DNS-серверов, а на уровне прохождения самих данных, где службе DNS со всей ее криптографией просто нечего делать.

 

──────────

Над материалом работали: Сергей Мамаджанов — текст и иллюстрации, Серж Каракишьян — технические данные и скриншоты, Борис Жуковский — редактор. Иконки: Freepik, Cole Bemis (Creative Commons BY 3.0)

 

Расскажите друзьям: