Подделать SNI

SNI обозначает идентификацию по имени сервера.

Мы можем использовать подмену SNI, когда Tor заблокирован. Вы можете добавлять сайты, которые не заблокированы, в качестве SNI. И Вы сможете подключаться к сети Tor с помощью мостов vanilla или даже вообще без мостов. Нет смысла использовать SNI с другими типами мостов, так как это не даст никакого эффекта.

Представьте, что Вы отправляете письмо в большое здание с множеством компаний внутри. Без SNI это все равно что адресовать письмо только самому зданию, а не конкретной компании. Но с помощью SNI можно указать, какой именно компании Вы отправляете письмо.

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

Проблема с SNI, шифрованием HTTPS и цензурой похожа на попытку спрятать книгу, просто не давая ее открыть. Даже если закрыть обложку книги на надежный замок (зашифровать данные), любой человек все равно сможет увидеть название книги, потому что оно не спрятано. Аналогично, шифрование HTTPS шифрует содержимое, но оставляет видимым «название» (SNI) сайта.

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

Обойти цензуру с помощью подмены SNI — это как замаскировать название книги, чтобы она казалась чем-то другим. В этом случае, когда браузер связывается с сервером с помощью SNI, он отправляет сообщение: «Эй, я хочу посетить сайт X». Но при подмене SNI браузер отправляет другое сообщение: «Я хочу посетить сайт Y», хотя на самом деле Вы хотите посетить сайт X.

Цензоры блокируют доступ к сайтам, отслеживая эти сообщения. Если они видят запрос на посещение запрещенного сайта (сайта X), они блокируют его. Однако если SNI подделан и говорит, что Вы посещаете другой, разрешенный сайт (сайт Y), цензор может не распознать это и пропустить соединение.

Таким образом, подделывая SNI, Вы обманываете цензора, заставляя его разрешить доступ к нужному сайту, хотя он должен быть заблокирован. Это все равно что пробраться мимо охранника, надев маскировку.